Autor Tema: Ayuda pic16f1937 a 32Mhz pwm y interrupcion del timer en C  (Leído 2024 veces)

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

Desconectado pnej

  • PIC10
  • *
  • Mensajes: 4
Ayuda pic16f1937 a 32Mhz pwm y interrupcion del timer en C
« en: 15 de Julio de 2011, 17:24:04 »
Hola,
Estoy intentado hacer un programa en C para el 16f1937 de forma que cada 1ms se dispare una interrupcion que compruebe un sensor y en funcion de ese sensor parpade un LED se habilite una salida PWm de un valor u otro para un motor DC.
El tema es el siguiente si solo configuro el PWM sin la interrupcion del TIMER0 la cosa funciona, vamos que puedo tener dos velocidades en el motor. Si uso solo la interrupcion para hacer parpadear el LED la cosa tambien funciona, pero si meto todo a la vez solo consigo que parpadee el led y que se dispare de vez en cuando el motor (parece que de manera aleatoria). Uso el CCS 4.114.
Otra pregunta en teoría el 16f1937 se puede configurar mediante el pll para que trabaje a 32Mhz pero yo he sido incapaz de hacerlo alguien me puede ayudar.

Muchas gracias por la ayuda.
Os adjunto el código del programa:

#include "16f1937.h"

#USE DELAY (clock=16000000)

#FUSES NOFCMEN,NOIESO,NOCLKOUT,BROWNOUT,BORV25,NOPROTECT,NOCPD,MCLR,PUT,NOWRT,INTRC_IO,NOLVP,STVREN,PLL_SW,NOVCAP,NOWDT
.
.
.
void M1(unsigned long ciclo);
long int ciclo;

void M1(unsigned long ciclo){
   set_pwm4_duty(ciclo);
      MotDerIn1=0;
      MotDerIn2=1;
}

#INT_TIMER0
void  TIMER0_isr(void)
{
set_TIMER0(190);
LED=!LED;
if (Pulsador=1){
   M1(200);//avanzar con una velocidad
  }
else {
 M1(100);//avanzar con menos velocidad
       
 }
}



void main(){
   //configuracion
   OSCCON=0b01111010; //16MHz
.
.
.
.

   //PWM
setup_timer_2(T2_DIV_BY_1,399,1);   // Señal PWM
   setup_ccp4(CCP_PWM);            // Genera PWM con el CCP4                     
   set_pwm4_duty(ciclo);               


//Timer_0
enable_interrupts(INT_TIMER0);
   enable_interrupts(GLOBAL);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32);
    set_TIMER0(190);

   while(true) {

   }
}


 

anything