Okay, das hatte ich vermutet, war mir aber nicht sicher. Trotzdem funktioniert irgendetwas an meinem Code nicht richtig, und ich weiß nicht was... Das Ganze soll einfach nur permanent das "Nutzbyte" 0xAA übertragen - das ist alles. nIRQ des RFM12 geht hierzu an INT0.
Hier ist mal der Code:
Das Modul geht korrekt auf Sendung und überträgt ein einziges mal die Bytes (kann man bei 0,6 kbps mit einem Empfänger hören), aber dann nichts mehr, nur noch Träger. Auch die ISR wird nicht angesprungen (zu erkennen an der LED). nIRQ bleibt auf 0, obwohl der doch 1 werden müsste, sobald die ersten 2 Bytes den internen Puffer gefüllt haben, oder?Code:$regfile = "m8def.dat" $crystal = 1000000 Ddrb.1 = 1 Portb.1 = 1 Led Alias Portb.1 Portd.2 = 1 'PullUp für INT0 Config Int0 = Falling On Int0 Tx_ready Enable Int0 Enable Interrupts Config Spi = Soft , Din = Portc.5 , Dout = Portc.2 , Clock = Portc.3 , Ss = Portc.4 Spiinit Dim A(12) As Byte Dim Flag As Bit Flag = 1 Waitms 100 '"Aufwärmpause" für RFM12 A(1) = &B10000000 '1.: Configuration Setting Command A(2) = &B10010000 A(3) = &B10000010 '2.: Power Management Command A(4) = &B00111000 A(5) = &B10100110 '3.: Frequency Setting Command (434,000 MHz) A(6) = &B01000000 A(7) = &B10011000 '10.: TX Configuration Control Command A(8) = &B00000111 ' -21dB Sendeleistung, Hub = 15 kHz A(9) = &B11000110 '4.: Data rate command (0,6 kbps) A(10) = &B10111111 A(11) = &B10111000 '11.:Transmitter Register Write Command A(12) = &B10101010 '"Nutzbyte" Spiout A(1) , 10 Do If Flag = 1 Then Spiout A(11) , 2 'Daten an Puffer übertragen Spiout A(11) , 2 Flag = 0 End If Loop Tx_ready: Toggle Portb.1 Flag = 1 Return
Weiß irgendjemand, wo mein Fehler liegt??







Zitieren

Lesezeichen