diff --git a/avr/devices/all/hw_m644p.asm b/avr/devices/all/hw_m644p.asm index ccb7f71..f681530 100644 --- a/avr/devices/all/hw_m644p.asm +++ b/avr/devices/all/hw_m644p.asm @@ -103,13 +103,11 @@ systemSetupTimer0: ; setup timer for IRQ every 100ms ldi r16, 1 sts baseTimerModuleReloadValue, r16 sts baseTimerModuleTickCounter, r16 -.endif -; ; Settings for clock 8Mhz ; use timer0 with OCR0=78 (irq every 9.984 millisecs), baseTimerModuleReloadValue 10 ; -.if clock == 8000000 +.elif clock == 8000000 ; CMP interrupt about every 10ms ldi r16, 78-1 outr OCR0A, r16 @@ -117,6 +115,24 @@ systemSetupTimer0: ; setup timer for IRQ every 100ms ldi r16, 10 sts baseTimerModuleReloadValue, r16 sts baseTimerModuleTickCounter, r16 +.elif clock == 10000000 + ; CMP-A interrupt about every 10ms + ldi r16, 98-1 ; (10,000,000/1024)/10 = 97.65625 + outr OCR0A, r16 + + ldi r16, 10 + sts baseTimerModuleReloadValue, r16 + sts baseTimerModuleTickCounter, r16 +.elif clock == 20000000 + ; CMP-A interrupt about every 5ms + ldi r16, 98-1 + outr OCR0A, r16 + + ldi r16, 20 + sts baseTimerModuleReloadValue, r16 + sts baseTimerModuleTickCounter, r16 +.else + .error "Unhandled clock frequency" .endif ldi r16, (1<