;; ;; 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 . ;; ;; --- transmit byte and add it to csum com_tx_byte btfss PIR1,TXIF goto com_tx_byte movwf TXREG xorwf csum,f return ;; ---- wait for byte to be received com_rx_byte btfsc RCSTA,OERR goto uart_rx_oe btfss PIR1,RCIF goto com_rx_byte btfsc RCSTA,FERR goto uart_rx_fe movf RCREG,w return uart_rx_oe ; recover from overflow bcf RCSTA,CREN bsf RCSTA,CREN goto com_rx_byte uart_rx_fe ; recover from framing error movf RCREG,w goto com_rx_byte ;; ----- initialize com (this is called by bootmacro, it's not a subroutine - no return at the end) com_init ;; bank 3 bsf STATUS,RP0 bsf STATUS,RP1 ;; movlw b'00001000' ; TX non-inverted, 16bit Baudrate, no auto baud detect - TODO: enable this as soon Hardware is fixed movlw b'00011000' ; TX inverted, 16bit Baudrate, no auto baud detect movwf BAUDCTL ;; bank 1 bcf STATUS,RP1 movlw b'01110000' ; set internal OSC to 8MHz movwf OSCCON movlw b'00100100' ; Baudrate = High Speed, async mode, transmit enabled, 8bit movwf TXSTA movlw .34 ; Baudrate = 57600 (@ 8MHz) -> -0,79 % Error ;; movlw .51 ; Baudrate = 38400 (@ 8MHz) -> -0,002 % Error ;; movlw .103 ; Baudrate = 19200 (@ 8MHz) -> 0,16 % Error movwf SPBRG clrf SPBRGH ;; bank 0 bcf STATUS,RP0 movlw b'10010000' ; enable Serial Port, 8bit, enable continues receive, disable address detection movwf RCSTA