MOV a, #active_clock
MOV clkmd, a ; switch to IHRC
- ;; .org 0x46 ; comment out on 2nd iteration
- ; calibration placeholder:
- AND a, #'R'
- AND a, #'C'
- AND a, #1 ; IHRC
- AND a, #( calib_freq )
- AND a, #( calib_freq>>8 )
- AND a, #( calib_freq>>16 )
- AND a, #( calib_freq>>24 )
- AND a, #( calib_vdd )
- AND a, #( calib_vdd>>8 )
- AND a, #ihrcr
- ;; .org 0x5a
+ ;; .org 0xe8 ; comment out on 2nd iteration
+ ;; ; calibration placeholder:
+ ;; AND a, #'R'
+ ;; AND a, #'C'
+ ;; AND a, #1 ; IHRC
+ ;; AND a, #( calib_freq )
+ ;; AND a, #( calib_freq>>8 )
+ ;; AND a, #( calib_freq>>16 )
+ ;; AND a, #( calib_freq>>24 )
+ ;; AND a, #( calib_vdd )
+ ;; AND a, #( calib_vdd>>8 )
+ ;; AND a, #ihrcr
+ .org 0xfc
;stack setup:
MOV a, #stack_start
MOV tm2c, a ; timer2: IHRC, PA4, PWM, not inverted
MOV a, #(( 0<<7 | 1<<5 | 0<<0 ))
MOV tm2s, a ; 8bit, /4 prescaler, divide by (0+1)
+ ;XXX: increase pwm base frequency (/1) -> (4*4.096mhz)/(2^8) = 64khz
;timer16/ivr setup
- ;mov a, #(( 0<<0 | 1<<3 | 4<<5 )) ; ovf@bit8 (512cy; §9.2.5), clk/4, ihrc
- MOV a, #(( 1<<0 | 1<<3 | 4<<5 )) ; ovf@bit9 (???cy; §9.2.5), clk/4, ihrc
- ;XXX: datasheet §5.10.1 says bit8 = 256cycles, 9.2.5 says bit8=512cy
- ; note: ovf@bit9 causes 4khz isr => we need ovf@bit8.
+ MOV a, #(( 0<<0 | 1<<3 | 4<<5 )) ; ovf@bit8 (512cy; §9.2.5), clk/4, ihrc
MOV t16m, a
MOV a, #(1<<2) ; enable timer16 int, disable all others
MOV inten, a
ADDC i1
ADDC i2
- SET1 pa, #6 ; debug
+ SET0 pa, #6 ; debug
ivr_end:
POP af
RETI