PWM con micro HC08 de Freesclae

Alguien podría darme algun ejemplo de generacion de PWM en assembler para micros 08 de Freescale. En algo le estoy errando. Busque en el buscador y no encontré ejemplos de esto.
Gracias
 
Hoy en la tarde-noche subo uno que funciona ok con un GP32...

Código pwm para el Gp32...

Tiene una interrupción....
Asumí que sabes cómo se activan es Asm.
El código está hecho en Codewarrior...



;**************************************************************
;* *
;* PWM para el micro Gp32 *
;* *
;**************************************************************


; export symbols
XDEF Entry, main,INTER_TCH1


; include derivative specific macros
Include 'gp32_registers.inc'


; variable/data section
MY_ZEROPAGE: SECTION SHORT

; Insert here your data definition. For demonstration, temp_byte is used.
temp_byte ds.b 1

; code section
MyCode: SECTION
main:
Entry:
RSP ;Reset al Stack Pointer
BSR Config_Uc ;Salto a subrutina de configuración del micro
BSR Config_PWM ;Salto a subrutina de PWM
BSR Config_TIM ;Salto a subrutina de configuración del modulo TIM
ciclo: WAIT
JMP ciclo;




Config_Uc: CLI ;Activación de interrupciones globales.
CLRA ;Limpia el registro A
CLRX ;Limpia el registro X
CLRH ;Limpia el registro H
MOV #09H, CONFIG1 ;Deshabilita Cop,Stop,Habilita LVI,5V
MOV #00H, CONFIG2 ;
RTS

Config_PWM: BSET 5,T1SC ;PARAR EL CONTADOR.
BSET 4,T1SC ;RESET AL TIMER.
BCLR 2,T1SC ;PREESCALER DE 1.
BCLR 1,T1SC ;PREESCALER DE 1.
BCLR 0,T1SC ;PREESCALER DE 1.
MOV #00CH,T1MODH ;VALORES PARA
MOV #80H,T1MODL ;PERIODO DE 1mS PWM.
MOV #09H,T1CH1H ;11.7mS PARA ENCENDIDO
MOV #0FFH,T1CH1L ;DE LED EN 3S.
BCLR 5,T1SC0 ;UNBUFFERED MS0B.
BSET 4,T1SC0 ;UNBUFFERED MS0A.
BSET 1,T1SC0 ;TOGGLE OUTPUT
BSET 3,T1SC0 ;CLEAR OUTPUT
BCLR 2,T1SC0 ;ON COMPARE.
RTS

Config_TIM: BCLR 5,T1SC1 ;UNBUFFERED MS0B.
BSET 4,T1SC1 ;UNBUFFERED MS0A.
BSET 1,T1SC1 ;TOGGLE OUTPUT
BSET 3,T1SC1 ;CLEAR OUTPUT
BCLR 2,T1SC1 ;ON COMPARE.
BSET 6,T1SC1 ;HABILITO INTERRUPCION T1CH1
MOV #00H,T1CH0L
MOV #00H,T1CH0H
BCLR 5,T1SC ;ACTIVO EL CONTADOR
RTS

INTER_TCH1: INC T1CH0L
LDA #0FFH
CMP T1CH0L
BEQ INI1
BCLR 7,T1SC1
RTI

INI1: INC T1CH0H
LDA #0F0H
CMP T1CH0H
BGE INI2
BCLR 7,T1SC1
RTI

INI2: BSET 5,T1SC
BCLR 7,T1SC1
RTI
 
Última edición:
Aunque hace 6 meses no le meten a esto, voy a hacer algunas preguntas, por si a alguien también ve esto, le interesa y de paso podría ayudarme jejejejeje.

Bueno, hace poco vengo leyendo sobre PWM, sé lo que es, también se que es una interrupción, pero no encuentro un solo ejemplo donde expliquen el código. Lo que necesito es un ejemplo para manejar cuatro servos con el MC68HC908JK3, pero un ejemplo algo así como PWM for Dummies.

De antemano muchas gracias a todos por su ayuda.
 
mira el pwm trabaja en varias formas si lo usaras en comparacion tendras un valor para comparar y otra para determinar el ciclo del pulso tambien en esta funcion comparas y la salida la puedes poner pata opcion togle ya sea de 0 a 1 o de 1 a cero segun tu configuracion y se interrumpe por el tiempo de comparacion y por el tiempo de ciclo 2 interrupciones en la misma configuracion
 
Última edición:
????? No entiendo, perdón por la ignorancia pero hasta ahora me inicio con estos micros y lo que sé de ellos es muy poco, he leído algo de Output compare pero no entiendo mucho. Aún así muchas gracias por tu respuesta.
 
Bueno, en vista de la inactividad de este tema, no me queda mas que decirles que al fin he logrado programar mi primer micro con PWM para control de servomotores, la verdad es muy sencillo, pero hay que estar muy concentrado al momento de programar el micro. Programé un HC08JK3 y funciona perfecto.
 
Atrás
Arriba