slave_main_loop
call wait_for_i2c_interrupt ; wait for 1st (address) byte
+ call led_green
call wait_for_i2c_interrupt ; wait for 2nd (data) byte
- btg TRISD,2,0 ; toggle LED on/off
+ call led_black
goto slave_main_loop
;----------------------------------------
call wait_for_i2c_interrupt
debug 'e'
+ call panic
movlw 0x41 ; transmit address 0100 0001
movwf SSPBUF,0
goto i2c_setup_if_slave
i2c_setup_if_master
- movlw 0x08
- movwf SSPCON1,0 ; set to master mode, clear top 4 bits
+ movlw 0x08 ; clear top 2 status bits; disable SSP;
+ movwf SSPCON1,0 ; CKP unused, set to 0; master mode.
; set baud rate
movlw 100-1
goto i2c_setup_endif_master_slave
i2c_setup_if_slave
- movlw 0x06
- movwf SSPCON1,0 ; set to 7bit slave mode, clear top 4 bits
- ; (no extra start/stop interrupts)
- !!fixme probably want to set SSPCON2:SEN "clock stretching"
+ movlw 0x16 ; clear top 2 status bits; disable SSP;
+ movwf SSPCON1,0 ; release clock; 7bit slave mode with
+ ; no extra start/stop interrupts.
+; !!fixme probably want to set SSPCON2:SEN "clock stretching"
; set slave address
banksel PIC_NO ; set BSR=i2c BSR (4)