myStart: ; Configuración del reloj del PWM MOVW r0, #0xE000 MOVT r0, #0x400F; dirección base MOVW r2, #0x640; offset de RCGCPWM MOVW r1, #0x0002; solo el modulo 1 del pwm MOVT r1, #0x0000 STR r1, [r0, r2] ; Configuración del reloj del puerto F MOVW r2, #0x108; offset de RCGC2 MOVW r1, #0x0020 MOVT r1, #0x0000; modificación a RCGC2 STR r1, [r0, r2] ; Seleccionar el pin del PWM MOVW r0, #0x5000 MOVT r0, #0x4002; dirección base puerto F MOVW r2, #0x528; offset de GPIOAMSEL MOVW r1, #0x0000; deshabilita entradas analogicas STR r1, [r0, r2] MOVW r2, #0x51C; offset de GPIODEN MOVW r1, #0x0008; habilita entradas digitales en pin 2 STR r1, [r0, r2] MOVW r2, #0x400; offset de GPIODIR STR r1, [r0, r2] ; bit 2 como salida MOVW r2, #0x420; offset de GPIOAFSEL STR r1, [r0, r2] ; bit 2 con funciones alternas ; Seleccionar el PWM del puerto F MOVW r2, #0x052C; offset de GPIOPCTL MOVW r1, #0x5000; código de M1PWM6 STR r1, [r0, r2] ; configurar RCC MOVW r0, #0xE000 MOVT r0, #0x400F; dirección base MOVW r2, #0x060; offset LDR r1, [r0, r2] MOVW r3, #0xFFFF MOVT r3, #0xFFF1 AND r1, r1, r3; borra bits 17:19 MOVW r3, #0x0000 MOVT r3, #0x0014 ORR r1, r1, r3; pone bit 20 en 1 y 2 en bits 17:19 STR r1, [r0, r2] ; configuración PWM1CTL MOVW r0, #0x9000 MOVT r0, #0x4002; dirección base modulo 1 MOVW r2, #0x0100; offset del PWM3 MOVW r1, #0x0000 MOVT r1, #0x0000; STR r1, [r0, r2] MOVW r2, #0x0120; offset del PWM3GENA MOVW r1, #0x008C STR r1, [r0, r2] MOVW r2, #0x0124; offset del PWM3GENB MOVW r1, #0x080C STR r1, [r0, r2] MOVW r2, #0x0110; offset del PWM3LOAD MOVW r1, #399 STR r1, [r0, r2] MOVW r2, #0x0118; offset del PWM3CMPA MOVW r1, #300 STR r1, [r0, r2] MOVW r2, #0x011C; offset del PWM3CMPB MOVW r1, #100 STR r1, [r0, r2] MOVW r2, #0x0100; offset del PWM3CTL MOVW r1, #1 STR r1, [r0, r2] MOVW r2, #0x8; offset del PWMENABLE MOVW r1, #0x00C0 STR r1, [r0, r2]
2. PRENDER LED ROJO
myStart: ; Configuración del reloj del PWM MOVW r0, #0xE000 MOVT r0, #0x400F; dirección base MOVW r2, #0x640; offset de RCGCPWM MOVW r1, #0x0002; solo el modulo 1 del pwm MOVT r1, #0x0000 STR r1, [r0, r2] ; Configuración del reloj del puerto F MOVW r2, #0x108; offset de RCGC2 MOVW r1, #0x0020 MOVT r1, #0x0000; modificación a RCGC2 STR r1, [r0, r2] ; Seleccionar el pin del PWM MOVW r0, #0x5000 MOVT r0, #0x4002; dirección base puerto F MOVW r2, #0x528; offset de GPIOAMSEL MOVW r1, #0x0000; deshabilita entradas analogicas STR r1, [r0, r2] MOVW r2, #0x51C; offset de GPIODEN MOVW r1, #0x0002; habilita entradas digitales en pin 2 STR r1, [r0, r2] MOVW r2, #0x400; offset de GPIODIR STR r1, [r0, r2] ; bit 2 como salida MOVW r2, #0x420; offset de GPIOAFSEL STR r1, [r0, r2] ; bit 2 con funciones alternas ; Seleccionar el PWM del puerto F MOVW r2, #0x052C; offset de GPIOPCTL MOVW r1, #0x0050; código de M1PWM6 STR r1, [r0, r2] ; configurar RCC MOVW r0, #0xE000 MOVT r0, #0x400F; dirección base MOVW r2, #0x060; offset LDR r1, [r0, r2] MOVW r3, #0xFFFF MOVT r3, #0xFFF1 AND r1, r1, r3; borra bits 17:19 MOVW r3, #0x0000 MOVT r3, #0x0014 ORR r1, r1, r3; pone bit 20 en 1 y 2 en bits 17:19 STR r1, [r0, r2] ; configuración PWM1CTL MOVW r0, #0x9000 MOVT r0, #0x4002; dirección base modulo 1 MOVW r2, #0x00C0; offset del PWM3 MOVW r1, #0x0000 MOVT r1, #0x0000; STR r1, [r0, r2] MOVW r2, #0x00E0; offset del PWM3GENA MOVW r1, #0x008C STR r1, [r0, r2] MOVW r2, #0x00E4; offset del PWM3GENB MOVW r1, #0x080C STR r1, [r0, r2] MOVW r2, #0x00D0; offset del PWM3LOAD MOVW r1, #399 STR r1, [r0, r2] MOVW r2, #0x00D8; offset del PWM3CMPA MOVW r1, #300 STR r1, [r0, r2] MOVW r2, #0x00DC; offset del PWM3CMPB MOVW r1, #380 STR r1, [r0, r2] MOVW r2, #0x00C0; offset del PWM3CTL MOVW r1, #1 STR r1, [r0, r2] MOVW r2, #0x8; offset del PWMENABLE MOVW r1, #0x0020 STR r1, [r0, r2]
Los cambios sustanciales esta resaltados en amarillo, en el segundo caso, para encender el led Rojo donde los offset del PWM3 se cambian para los del PWM2.