;----------------------------------------
vector_reset @
-
- set_f qqTRISA
- set_f qqTRISB
- set_f qqTRISC
- set_f qqTRISD
- set_f qqTRISE
- mov_lw 0xaa
- mov_wf qqLATA
- mov_wf qqLATB
- mov_wf qqLATC
- mov_wf qqLATD
- mov_wf qqLATE
-
clr_f INTCON
bs_f RCON, IPEN ; interrupt priorities
call idlocs_init
- clr_f flags
bt_f_if0 idloc1,idloc1_master
call slave_init
;----------------------------------------
master_init
; Master-specific initialisation.
+ call memory_erase
+ clr_f flags
call serial_init
call i2cm_init
call serialtxbuf_init
call serialtxfc_init
call mascan_init
call tick_init
+ call cdu_init
call power_polarising_init
call power_fault_init
+ call watchdog_init
return
;----------------------------------------
master_interrupt_low @
enter_interrupt_low
+ Dl 0x80
+ Df INTCON
+ Df INTCON2
+ Df INTCON3
+ Df PIR1
+ Df PIR2
+ Df PIR3
+ Dl 0x8d
call tick_intrl
call nmra_serialrx_intrl
call power_fault_intrl
call serialtx_intrl
call points_local_intrl
call i2cm_intrl
+ Dl 0x8e
+ Df INTCON
+ Df INTCON2
+ Df INTCON3
+ Df PIR1
+ Df PIR2
+ Df PIR3
+ Dl 0x8f
panic morse_IL
;----------------------------------------------------------------------
serialrx_table_section code 0x2000
+;--------------------
+command_tellmode
+ mov_lw 0x09
+ goto serial_addbyte
+
;--------------------
serialrx_generalmsg @
;command_<something> has same calling convention:
bra_n serialrx_if_multibyte
bra_z command_crashed
- xor_lw 0x21
+ xor_lw 0x11
bra_z command_power_on
- xor_lw 0x01
+ xor_lw 0x10 ^ 0x11
bra_z command_power_off
+ xor_lw 0x0a ^ 0x10
+ bra_z command_tellmode
bra serialrx_bad
;-----
goto serialrx_bad ; 1 0000 xxx
goto command_ping ; 1 0001 xxx
goto command_polarity ; 1 0010 xxx
- goto serialrx_bad ; 1 0011 xxx
+ goto command_watchdog ; 1 0011 xxx
goto command_point ; 1 0100 xxx
goto serialrx_bad ; 1 0101 xxx
goto serialrx_bad ; 1 0110 xxx
;----------------------------------------
slave_init
; Slave-specific initialisation.
+ clr_f flags
+
mov_fw picno
call i2cs_init