Autor Tema: Resetear el PIC con pulsador para variar configuración inicial  (Leído 1996 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado xexijreil

  • PIC10
  • *
  • Mensajes: 10
Resetear el PIC con pulsador para variar configuración inicial
« en: 03 de Abril de 2014, 07:59:14 »
Hola,

Como ya conté en otro hilo estoy intentando sacar un PWM de ciclo variable a partir de una referencia analógica, eso ya está conseguido. Ahora el problema que tengo es que he hecho dos configuraciones, una para sacar el PWM con 8 bits a una frecuencia de 70 KHz y otra para sacar el PWM con 10 bits a una frecuencia de 19,5 KHz, y quiero resetear el pic mediante un pulsador para que, en función de un interruptor, escoja una configuración u otra. No soy capaz de hacer que funcione la simulación en PROTEUS, por más que pruebo distintos puertos de entrada para la señal del interruptor al dar a MCLR no cambia la configuración sino que saliendo la misma señal PWM, es más, ni siquiera parando la simulación o cerrando el PROTEUS cambia la señal, sólo cambia si establezco una configuración u otra desde código como predeterminada.

El código es el siguiente:
Código: [Seleccionar]
//Programa que recibiendo un voltaje lo convertimos a PWM mediante el módulo ADC
float valor;     //valor al que asignare los 10 bits del ADC del primer caso
int temp_res;  // valor al que asignare los 10 bits del ADC del segundo caso
unsigned short CU = 255;

void main() {
TRISB1_bit=1;  //RB1 como entrada
PORTC=0X00;                  //Inicializacion
TRISC2_bit=0;                //RC2 como salida
if (RB1 == 0) {
   PR2 = 0b11111111;            //PR2 = 255
   T2CON = 0b00000100;          //Timer2 on; Prescaler = 1; Postscaler = 1:1

   while(1) {
   valor = ADC_read(2);        //Obtengo 10 bits del canal 2
   CCP1CON = ((valor/4) - floor(valor/4))*4*16+12; //Divido entre 4 para separar
 //los 8 bits mas significativos de los 2 menos significativos, resto el entero
 //de la division para quedarme con el valor decimal y vuelvo a multiplicar por
 //cuatro para sacar el valor decimal de los 2LSB. Multiplico por 16 para desplazar
 //cuatro posiciones a la izquierda y sumo 12 para establecer el modo PWM
   CCPR1L = floor(valor/4);      //Asigno los 8MSB al registro CCPR1L
   }
} else {
  PWM1_Init(70000); // Frecuencia PWM
  PWM1_Set_duty(CU);
  PWM1_Start();
  while (1) {
        temp_res = ADC_read(2);
        CU = temp_res/4;
        PWM1_Set_Duty(CU);
}
}
//
}
¿Alguna idea por favor?

Desconectado xexijreil

  • PIC10
  • *
  • Mensajes: 10
Re: Resetear el PIC con pulsador para variar configuración inicial
« Respuesta #1 en: 03 de Abril de 2014, 11:47:51 »
He cambiado RB1 por PORTB.F1 y ha funcionado, veremos si al montarlo sigue funcionando.

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: Resetear el PIC con pulsador para variar configuración inicial
« Respuesta #2 en: 03 de Abril de 2014, 15:54:15 »
Necesitas que cuando pulses un botón, el pwm modifique sus características?
Para lo que quieres hacer, no es necesario resetear el pic
con el comando switch lo puedes hacer pin problemas
Por ejemplo, cuando una variable de tipo int1 tenga el valor 1, que configure el timer2 de una forma, cuando pulses el botón, añade un retardo, cambia el valor de la variable y el comando switch ejecutará la otra opción, configurará el timer2 para que trabaje de la otra forma
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...