diff options
Diffstat (limited to 'software/ihu/ttx.inc')
-rw-r--r-- | software/ihu/ttx.inc | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/software/ihu/ttx.inc b/software/ihu/ttx.inc new file mode 100644 index 0000000..db53f89 --- /dev/null +++ b/software/ihu/ttx.inc @@ -0,0 +1,137 @@ + ;; + ;; mur.sat + ;; + ;; Somewhen in the year 2011, mur.at will have a nano satellite launched + ;; into a low earth orbit (310 km above the surface of our planet). The + ;; satellite itself is a TubeSat personal satellite kit, developed and + ;; launched by interorbital systems. mur.sat is a joint venture of mur.at, + ;; ESC im Labor and realraum. + ;; + ;; Please visit the project hompage at sat.mur.at for further information. + ;; + ;; + ;; Copyright (C) 2011 Christian Pointner <equinox@mur.at> + ;; + ;; This file is part of mur.sat. + ;; + ;; mur.sat 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. + ;; + ;; mur.sat 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 mur.sat. If not, see <http://www.gnu.org/licenses/>. + ;; + + ;; ------------------------------------- +ttx_send_byte + bsf STATUS,RP0 + bcf TRISD,TTX_SDA + bcf STATUS,RP0 + movwf TTX_BYTE + xorwf TTX_CSUM,f + movlw .8 + movwf TTX_BIT_CNT +ttx_send_next_bit + btfsc TTX_BYTE,7 + bsf PORTD,TTX_SDA + btfss TTX_BYTE,7 + bcf PORTD,TTX_SDA + bsf PORTD,TTX_SCL + nop + nop + nop + bcf PORTD,TTX_SCL + nop + nop + nop + nop + rlf TTX_BYTE,f + decfsz TTX_BIT_CNT,f + goto ttx_send_next_bit + bsf STATUS,RP0 + bsf TRISD,TTX_SDA + bcf STATUS,RP0 + return + + ;; ------------------------------------- +ttx_recv_byte + movlw .8 + movwf TTX_BIT_CNT +ttx_recv_next_bit + bsf PORTD,TTX_SCL + nop + nop + nop + bcf PORTD,TTX_SCL + nop + nop + nop + nop + nop + rlf TTX_BYTE,f + btfsc PORTD,TTX_SDA + bsf TTX_BYTE,0 + btfss PORTD,TTX_SDA + bcf TTX_BYTE,0 + decfsz TTX_BIT_CNT,f + goto ttx_recv_next_bit + return + + ;; ------------------------------------- +ttx_break + movlw .13 + movwf TTX_BIT_CNT +ttx_wait_octet + decfsz TTX_BIT_CNT,f + goto ttx_wait_octet + return + + ;; ------------------------------------- +ttx_send_frame + movwf TTX_BYTE + andlw b'00001111' + movwf TTX_BYTE_CNT + bsf PORTD,TTX_SCL + movlw .3 + bcf PORTD,TTX_SCL + call wait_ms + + clrf TTX_CSUM + movf TTX_BYTE,w + call ttx_send_byte + + movf TTX_BYTE_CNT,f + btfsc STATUS,Z + return + +ttx_next_byte + call ttx_break + movf INDF,w + call ttx_send_byte + + incf FSR,f + decfsz TTX_BYTE_CNT,f + goto ttx_next_byte + + call ttx_break + call ttx_recv_byte + movf TTX_BYTE,w + xorwf TTX_CSUM,w + btfss STATUS,Z + goto ttx_csum_error + movlw '.' + movwf TXREG + return + +ttx_csum_error + movlw 'E' + movwf TXREG + return + + ;; ------------------------------------- |