Hallo kann da mal einer drauf schauen ? Das senden Funktioniert bis auf 2 Eigenheiten 1. Die länge des Sync-wortes gebe ich mit 1 an aber es sendet beide 2. Es scheint als ob der crc code immer mitgesendet wird. Aber mein Hauptproblem ist der empfang. Es kommt nicht zum FifoNotEmpty signal am Dio 0 Beim RFM Das Programm bleibt beim label Empfan_1 hängen. ************************************************************************ ***** ; ; Teilcode ATmega88 ; ;----------------------------------------------------- ;----------------------------------------------------- .MACRO RFM_command ;adr. ,wert ldi RxTx_Hi, @0 ldi RxTx_Lo, @1 rcall SPI_W_16 .ENDMACRO ;----------------------------------------------------- ; ; RFM69 initialisierung ; ; RFM_command RegDataModul,0 ; FSK Packet RFM_command RegFdevMsb , $2 ; FM Hub 40KHz (40000Hz / 61Hz = 655 = 28F) RFM_command RegFdevLsb , $8F ; RFM_command RegRxBW , 0b01010011 ; bandbreite 41 KHz (DccFreq 7-5, RxBwMant 4-3, RxBwExp 2-0) rcall Frequenz RFM_command RegRxTimeout1 , 0 RFM_command RegRxTimeout2 , 0 RFM_command RegBitRateMsb ,$29 ;Datenrate (32000000Hz / 3000bit = 10666,7) =10666=$29ab = 2999,91 bit RFM_command RegBitRateLsb ,$AB RFM_command RegPreambleMsb , $0 RFM_command RegPreambleLsb , $4 ;4 byte preamble RFM_command RegSyncConfig ,0b10001000 ;SyncOn 7 , FifoFillCondition 6 , SyncSize 5-3 ,SyncTolleranz 2-0 RFM_command RegSyncValue_1 , $2D ; setze sync-wort pattern auf &H2DD4 RFM_command RegSyncValue_2 , $D4 ; RFM_command RegDIOMap1 , 0b00000000 ; RFM_command RegDIOMap2 , 0b00000111 RFM_command RegPacketConfig1 ,0b00001000 ;PacketFormat 7, DcFree 6-5, CrcOn 4, CrcAutoClearOff 3 AddressFiltering 2-1 , bit 0 unused RFM_command RegPacketConfig2 ,0b00000100 RFM_command RegPayloadLength ,0 RFM_command RegFifoThresh,0b10000000 ;TxStartCondition =1 RFM_command RegPaLevel, 0b10000000 RFM_command RegTestPa1, $55 RFM_command RegTestPa2, $70 RFM_command RegOpMode , 0b00001000 ;Frequency Synthesizer mode rjmp Empfang ;----------------------------------------------------- Senden: LED_an Warte_001_sec 200 ;warte 2 sec LED_aus RFM_command RegPaLevel, 0b01110000 ;+5dB RFM_command RegTestPa1, $5D RFM_command RegTestPa2, $7c cbi Port_SPI,SPI_CS ;setze burstwrite ldi RxTx_Lo,Fifo_access + 128 rcall SPI_R_W_Ohne_CS ldi RxTx_Lo, 'H' ;fülle Fifo mit "Hallo" rcall SPI_R_W_Ohne_CS ldi RxTx_Lo, 'a' rcall SPI_R_W_Ohne_CS ldi RxTx_Lo, 'l' rcall SPI_R_W_Ohne_CS ldi RxTx_Lo, 'l' rcall SPI_R_W_Ohne_CS ldi RxTx_Lo, '0' rcall SPI_R_W_Ohne_CS sbi Port_SPI,SPI_CS ;setze burstwrite zurück RFM_command RegOpMode , 0b00001100 ;Rfm_Tx_Start Senden_1: sbis PIND,2 ;warte bis packetsend (RFM69 DIO 0) rjmp Senden_1 RFM_command RegOpMode , 0b00001000 ;Frequency Synthesizer mode RFM_command RegPaLevel, 0b10000000 RFM_command RegTestPa1, $55 RFM_command RegTestPa2, $70 rjmp Senden ;----------------------------------------------------- ;----------------------------------------------------- Empfang: LED_an RFM_command RegIRQFlag2 ,0b00010000 ;clear Fifo RFM_command RegOpMode , 0b00010000 ;Rfm_Rx_On Empfang_1: sbis PIND,3 ;warte bis FifoNotEmpty (RFM69 DIO 2) rjmp Empfang_1 rcall Lese_Fifo ;"H" LED_aus Empfang_2: sbis PIND,3 rjmp Empfang_2 rcall Lese_Fifo ;"a" Empfang_3: sbis PIND,3 rjmp Empfang_3 rcall Lese_Fifo ;"l" Empfang_4: sbis PIND,3 rjmp Empfang_4 rcall Lese_Fifo ;"l" Empfang_5: sbis PIND,3 rjmp Empfang_5 rcall Lese_Fifo ;"o" RFM_command RegOpMode , 0b00001000 ;Frequency Synthesizer mode Warte_001_sec 100 ;warte 1 sec rjmp Empfang ;-----------------------------------------------------
Hallo, vielleicht etwasa spät aber vielleicht hilft es ja noch jemandem: 1. Länge des gesendeten Synchronwortes = Registerinhalt + 1; soll kein Synchronwort gesendet werden, muss das Bit "SyncOn" auf 0 gesetzt werden 2. Einfach das Bit "CrcOn" auf 0 setzen Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.