; rfm12/stk500.asm ; ; Funkmodul rfm12 ; senden: ; auf negative Flanke auf steckbrett ; empfangen ; auf STK500 ; siehe Oszi Bild ; senden: 5 mal Prolog, 3 mal Daten (1 Länge, 2 Nutzdaten) ; empfangen: 3 mal Daten (1 Länge, 2 Nutzdaten) ; in den isr Routinen für Senden/ empfangen werden bei Start und Ende Ports gesetzt ; ; Takt 14.7456MHz .LIST ; Listing ausschalten .INCLUDE "m32def.inc" ; Deklaration für mega32 .LIST ; Listing einschalten ; Softwaretimer .EQU TIM_TMP = 0b_0001_0000 ; tmp-Timer ; USART Baudrate .EQU USART_BAUDRATE = 23 ; USART: Baudrate 38400 ;*************************************** ;********** CSEG: Codesegment ********** ;*************************************** .CSEG ; Programm Flash rjmp prgReset ; Reset Einsprung .ORG INT0addr ; Einsprung INT0, externer Interrupt rjmp isrRFM12 ; RFM12 senden/ empfangen .ORG OVF0addr ; Timer 0 Überlauf Einsprung rjmp isrTIMER0 ; nach Interrupt Service Programm .ORG INT_VECTORS_SIZE ; weitere Interrupt Einsprünge übergehen ;******************************************** ;********** Hauptprogramm Hochlauf ********** ;******************************************** prgReset: ldi r16,LOW(RAMEND) ; Stapel anlegen out SPL,r16 ldi r16,HIGH(RAMEND) out SPH,r16 call subRegisterIni ; PORTS definieren ; Debug ; cbi DDRD,PIND7 ; Eingang: Taster sbi DDRD,PORTD3 ; Ausgang: LED grün sbi DDRD,PORTD4 ; Ausgang: LED gelb sbi DDRD,PORTD5 ; Ausgang: LED rot sbi DDRD,PORTD6 ; Ausgang: debug senden sbi DDRD,PORTD7 ; Ausgang: debug empfangen sbi DDRB,PORTB0 ; Ausgang: debug isr senden/ empfangen sbi DDRB,PORTB2 ; Ausgang: debug isr senden sbi DDRB,PORTB3 ; Ausgang: debug isr empfangen ; RFM12 cbi DDRB,PINB6 ; Eingang MISO <- SDO cbi DDRD,PIND2 ; Eingang PIND2 <- nIRQ sbi DDRB,PORTB4 ; Ausgang nSS (muß gesetzt sein, wegen SPI Masterbetrieb) sbi DDRB,PORTB5 ; Ausgang MOSI -> SDI sbi DDRB,PORTB7 ; Ausgang SCK -> SCK sbi DDRB,PORTB1 ; Ausgang PORTB1 -> nSEL ; Ports setzen ; Debug sbi PORTD,PORTD3 ; LED grün aus sbi PORTD,PORTD4 ; LED gelb aus sbi PORTD,PORTD5 ; LED rot aus cbi PORTD,PORTD6 ; Ausgang: debug senden cbi PORTD,PORTD7 ; Ausgang: debug empfangen cbi PORTB,PORTB0 ; Ausgang: debug isr senden/ empfangen cbi PORTB,PORTB2 ; Ausgang: debug isr senden cbi PORTB,PORTB3 ; Ausgang: debug isr empfangen cbi PORTB,PORTB4 ; Ausgang: debug isr senden/ empfangen ; RFM12 sbi PORTB,PORTB4 ; Ausgang nSS (muß gesetzt sein, wegen SPI Masterbetrieb) sbi PORTB,PORTB1 ; Ausgang nSEL setzen ; SPI init ldi r16,(1<