Programación Específica > Microcontroladores MOTOROLA
Pwm, dudas sobre el tema
(1/1)
GPANGEL:
BUEN DIA
Hace poco realice una aplicaion de pwm con uno de estos microcontroladores sin embargo me quedaron varias dudas como son el calculo del pwm es decir su frecuencia y ciclo util para programarlos en el micro si alguien tiene infromacion al respecto se lo agredeceria de antemano.
fa61an:
La frecuencia depende de dos cosas..
1) El cristal que estés usando
2) La config del Timer
Ejemplo GP32 con un cristal de 10 MHz
10'000.000 / 4 = 2'500.000 // Cada instruccion se ejecuta a 4 ciclos del reloj por eso el 4
2'500.000 MHz ---> 0,4 uS
Entonces casa 0,4 uS ejecuta una instrucción
Ahora si se tiene un Preescaler de % 4 en el timer, el conteo del mismo se ejecuta cada
0.4 x 4 = 1.6 uS
Y lo ultimo que haría falta saber es el modulo del conteo para el Timer... para entener aun mas ver ejemplo
--- Código: Text --- #include <hidef.h> #include <MC68HC908GP32.h> interrupt 4 void rsi_t1ch0 (void);interrupt 6 void rsi_ov1 (void); void main(void) CONFIG1|=0x01; DDRD=0x10; T1SC =0b01110010; // Prescaler: Div entre 4 y se habilito T1SC0 =0b01010110; // Config del PWM // ****MODULOS DE CONTEO ********\\ T1MOD=0x186A; // 186A(6250)decimal x 1,6 us = 10 ms "periodo del PWM" T1CH0 =0x09C4; // 09C4(2500)decimal x 1,6 us = 4 ms "Ancho del pulso" T1SC&=~(0x20); EnableInterrupts; for(;;) { } } // VECTORES DE INTERRUPCION interrupt 4 void rsi_t1ch0 (void) { T1SC0&=(~0x80); }interrupt 6 void rsi_ov1 (void) { T1SC&=(~0x80); }
Ese codigo funciona para el Codewarrior version 3.0 que es la que uso...
Navegación
Ir a la versión completa