summaryrefslogtreecommitdiff
path: root/software
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2012-01-28 15:44:06 +0000
committerChristian Pointner <equinox@mur.at>2012-01-28 15:44:06 +0000
commit37b5fe39f23067e6a3fc0beb9e40457298bfcba0 (patch)
treee0258f23d934a06c87801caf3877e6ba372011bf /software
parentcleanup (diff)
added aknowledge pulse to ihu-ttx communication
git-svn-id: https://svn.spreadspace.org/mur.sat@239 7de4ea59-55d0-425e-a1af-a3118ea81d4c
Diffstat (limited to 'software')
-rw-r--r--software/ihu/ihu.asm72
-rw-r--r--software/ihu/ttx.inc23
-rw-r--r--software/ttx/ttx.asm12
3 files changed, 100 insertions, 7 deletions
diff --git a/software/ihu/ihu.asm b/software/ihu/ihu.asm
index cec3e51..c213698 100644
--- a/software/ihu/ihu.asm
+++ b/software/ihu/ihu.asm
@@ -369,6 +369,78 @@ uart_rx_fe
main
; sleep
; nop
+ ;; --------------------
+ ;; TTX Test
+ movf TMP,w
+ btfsc STATUS,Z
+ goto main
+
+ movwf BUF
+ clrf TMP
+ movlw BUF+1
+ movwf FSR
+
+ movlw .1
+ movwf TTX_BYTE_CNT
+main_read_bytes
+ movf TMP,w
+ btfsc STATUS,Z
+ goto main_read_bytes
+ movwf INDF
+ incf FSR,f
+ clrf TMP
+ decfsz TTX_BYTE_CNT,f
+ goto main_read_bytes
+
+ movlw BUF
+ movwf FSR
+ movlw 0xA2
+ call ttx_send
+
+ xorlw .0
+ btfss STATUS,Z
+ goto main_error
+
+ movlw 'O'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw 'K'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw '\r'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw '\n'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ goto main
+
+main_error
+ movlw 'E'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw 'R'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw 'R'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw '\r'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ movlw '\n'
+ movwf TXREG
+ movlw .1
+ call wait_ms
+ goto main
;; --------------------
;; ADC Test
diff --git a/software/ihu/ttx.inc b/software/ihu/ttx.inc
index b9f45e7..2098340 100644
--- a/software/ihu/ttx.inc
+++ b/software/ihu/ttx.inc
@@ -108,7 +108,7 @@ ttx_send_frame
movf TTX_BYTE_CNT,f
btfsc STATUS,Z
- return
+ goto ttx_get_csum
ttx_next_byte
call ttx_break
@@ -119,16 +119,31 @@ ttx_next_byte
decfsz TTX_BYTE_CNT,f
goto ttx_next_byte
+ttx_get_csum
call ttx_break
call ttx_recv_byte
movf TTX_BYTE,w
xorwf TTX_CSUM,w
btfss STATUS,Z
goto ttx_csum_error
- return
+ retlw .0
ttx_csum_error
- ;; TODO: react to comm error
- return
+ retlw .1
;; -------------------------------------
+ttx_send
+ call ttx_send_frame
+ movwf TTX_BYTE
+ call ttx_break
+ btfsc TTX_BYTE,0
+ bcf PORTD,TTX_SDA
+ btfss TTX_BYTE,0
+ bsf PORTD,TTX_SDA
+ bsf PORTD,TTX_SCL
+ nop
+ nop
+ nop
+ bcf PORTD,TTX_SCL
+ return
+ ;; -------------------------------------
diff --git a/software/ttx/ttx.asm b/software/ttx/ttx.asm
index 6e974c9..0f75420 100644
--- a/software/ttx/ttx.asm
+++ b/software/ttx/ttx.asm
@@ -76,7 +76,7 @@ RX_BIT_CNT EQU H'004E'
RX_BYTE_CNT EQU H'004F'
RX_CMD EQU H'0050'
RX_D_START EQU H'0051'
-RX_D_END EQU H'0060'
+RX_D_END EQU H'005F'
;; all pages
BEACON_INT EQU H'0070'
@@ -136,7 +136,9 @@ ext_int
movwf RX_STATE
btfsc STATUS,Z
goto ext_int_send_csum
+
ext_int_next
+ incf FSR,f
call rx_byte
decfsz RX_BYTE_CNT,f
goto ext_int_next
@@ -148,6 +150,10 @@ ext_int_send_csum
swapf RX_CMD,w
andlw b'00001111'
movwf RX_CMD
+ext_int_wait_ack
+ btfss GPIO,SCLK
+ goto ext_int_wait_ack
+ btfss GPIO,SDAT
bsf RX_STATE,complete
bsf STATUS,RP0
movlw OSC_LOW
@@ -425,7 +431,6 @@ rx_byte_clk_high
movf INDF,w
xorwf RX_CSUM,f
- incf FSR,f
return
rx_byte_next
@@ -451,7 +456,7 @@ rx_send_clk_high
bsf STATUS,RP0
bsf TRISIO,SDAT
- bcf STATUS,RP0
+ bcf STATUS,RP0
return
rx_send_next
@@ -792,6 +797,7 @@ seccnt_zero
;; this gets called whenever a message was received from ihu
msg_received
call send_ack
+ bcf RX_STATE,complete
clrf RX_STATE
powerdown