From 2cd30b5702576a2a5d1c08aa0973a7406db95e57 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Sat, 25 Feb 2012 23:57:20 +0000 Subject: splitted code info include files added i2c code (not tested yet) git-svn-id: https://svn.spreadspace.org/mur.sat@253 7de4ea59-55d0-425e-a1af-a3118ea81d4c --- software/ttx_crx/i2c.inc | 148 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 software/ttx_crx/i2c.inc (limited to 'software/ttx_crx/i2c.inc') diff --git a/software/ttx_crx/i2c.inc b/software/ttx_crx/i2c.inc new file mode 100644 index 0000000..52c90e3 --- /dev/null +++ b/software/ttx_crx/i2c.inc @@ -0,0 +1,148 @@ + ;; + ;; mur.sat + ;; + ;; Somewhen in the year 2012, 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 + ;; + ;; 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 . + ;; + + ;; ------------------------------------- +i2c_start + movlb .1 + bcf TRISB,I2C_SDA + nop + bcf TRISB,I2C_SCL + movlb .0 + return + + ;; ------------------ +i2c_restart + movlb .1 + bsf TRISB,I2C_SDA + nop + bsf TRISB,I2C_SCL + nop + nop + nop + bcf TRISB,I2C_SDA + nop + bcf TRISB,I2C_SCL + movlb .0 + return + + ;; ------------------ +i2c_stop + movlb .1 + bsf TRISB,I2C_SCL + nop + bsf TRISB,I2C_SDA + movlb .0 + return + + ;; ------------------ +i2c_send_byte + movwf I2C_BYTE + movlw .8 + movwf I2C_BIT_CNT + movlb .1 +i2c_send_byte_next + btfss I2C_BYTE,7 + bcf TRISB,I2C_SDA + btfsc I2C_BYTE,7 + bsf TRISB,I2C_SDA + nop + bsf TRISB,I2C_SCL + nop + nop + bcf TRISB,I2C_SCL + rlf I2C_BYTE,f + decfsz I2C_BIT_CNT,f + goto i2c_send_byte_next + + nop + nop + bsf TRISB,I2C_SDA + bsf TRISB,I2C_SCL + movlb .0 + movf PORTB,w + movlb .1 + bcf TRISB,I2C_SCL + bcf TRISB,I2C_SDA + movlb .0 + andlw b'00010000' + movwf I2C_BYTE + swapf I2C_BYTE,f + return + + ;; ------------------ +i2c_recv_byte + clrf I2C_BYTE + movlw .8 + movwf I2C_BIT_CNT + movlb .1 + bsf TRISB,I2C_SDA +i2c_recv_byte_loop + bsf TRISB,I2C_SCL + movlb .0 + btfsc PORTB,I2C_SDA + bsf I2C_BYTE,0 + movlb .1 + bcf TRISB,I2C_SCL + decfsz I2C_BIT_CNT,f + goto i2c_recv_byte_next + + bcf TRISB,I2C_SDA + movlb .0 + return + +i2c_recv_byte_next + bcf STATUS,C + rlf I2C_BYTE,f + goto i2c_recv_byte_loop + + ;; ------------------ +i2c_ack + movlb .1 + bcf TRISB,I2C_SDA + bsf TRISB,I2C_SCL + nop + nop + bcf TRISB,I2C_SCL + movlb .0 + return + + ;; ------------------ +i2c_nack + movlb .1 + bsf TRISB,I2C_SDA + bsf TRISB,I2C_SCL + nop + nop + bcf TRISB,I2C_SCL + bcf TRISB,I2C_SDA + movlb .0 + return + + ;; ------------------------------------- -- cgit v1.2.3