;; ;; spreadspace pic utils ;; ;; ;; Copyright (C) 2011-2013 Christian Pointner ;; ;; This file is part of spreadspace pic utils. ;; ;; spreadspace pic utils is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; any later version. ;; ;; spreadspace pic utils is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with spreadspace pic utils. If not, see . ;; #define INTPIN PORTA,4 ;; --- transmit byte and add it to csum com_tx_byte movwf SSPBUF bcf INTPIN xorwf csum,f bsf STATUS,RP0 com_tx_byte_wait btfss SSPSTAT,BF goto com_tx_byte_wait bcf STATUS,RP0 movf SSPBUF,w bsf INTPIN return ;; ---- wait for byte to be received com_rx_byte bsf STATUS,RP0 btfsc SSPSTAT,BF goto com_rx_got_byte bcf STATUS,RP0 btfss SSPCON,SSPOV goto com_rx_byte movf SSPBUF,w bcf SSPCON,SSPOV goto com_rx_byte com_rx_got_byte bsf STATUS,RP0 movf SSPBUF,w return ;; ----- initialize com (not a subroutine, com_init is called by generic_init com_init ;; bank 3 bsf STATUS,RP0 bsf STATUS,RP1 bcf ANSEL,ANS4 ; RA5/SS as digital input ;; bank 1 bcf STATUS,RP1 movlw b'01110000' ; set internal OSC to 8MHz movwf OSCCON movlw b'01000000' ; SMP=0,CKE=1 movwf SSPSTAT bcf TRISC,5 ; RC5(SDO) = out bcf INTPIN ; interrupt line to master ;; bank 0 bcf STATUS,RP0 movlw b'00100100' ; SSPEN=1,CKP=0,SSPM=0100(SPI Slave with SS) movwf SSPCON bsf INTPIN