HAllo, ich bin gerade dabei, 2 STück RFM70 von HOPERF via Arduino anzusteuern. Arduino Nano (ATMEGA 328) mit 5V. RFM70 an Nanos 3V, Digi pins sind 5V-tolerant. Code habe ich vom Referenzcode nach Arduino transponiert. Die SPI-Kommunikation mit den Chips funktioniert ohne Probleme. Alle RFM70-Register werden gesetzt und ich kann die auch ändern. Aber ich habe folgende Probleme: 1: Sende ich ein Packet, welches Autoacknowlege verlangt, dann geht der IRQ korrekt auf active low aber der AutoRetryCounter instant auf 15. Der Autoretry-Delay wird nicht berücksichtigt, obwohl im Register eingestellt. 2: Schicke ich Pakete mit W_TX_PAYLOAD_NOACK, dann bleibt der IRQ aus und auch der Retry-Counter bleibt auf 0. Ob verschickt wird, weiss ich nicht. 3: Ich empfange in keinem Fall etwas am 2. RFM70 an anderem Arduino. Ist auch egal, wer Sender oder Empfänger spielt. Der Empfänger detected auch keinen Carrier. Ich habe verschiede Kanäle und Registereinstellungen probiert. So initialisiere ich im Moment díe RFM70-Register. Bank0: 00: 0x0F //reflect RX_DR\TX_DS\MAX_RT,Enable CRC ,2byte,POWER UP,PRX 01: 0x3F //Enable auto acknowledgement data pipe5\4\3\2\1\0 02: 0x3F //Enable RX Addresses pipe5\4\3\2\1\0 03: 0x03 //RX/TX address field width 5 byte 04: 0xFF //auto retransmission delay (4000us),auto retransmission count(15) 05: 0x17 //channel 23 06: 0x17 //air data rate-1M,out power 0dbm,setup LNA gain 11: 0x20 //Number of bytes in RX payload in data pipe0(32 byte) 12: 0x20 //Number of bytes in RX payload in data pipe1(32 byte) 13: 0x20 //Number of bytes in RX payload in data pipe2(32 byte) 14: 0x20 //Number of bytes in RX payload in data pipe3(32 byte) 15: 0x20 //Number of bytes in RX payload in data pipe4(32 byte) 16: 0x20 //Number of bytes in RX payload in data pipe5(32 byte) 17: 0x00 //fifo status 1C: 0x3F //Enable dynamic payload length data pipe5,4,3,2,1,0 1D: 0x07 //Enables Dynamic Payload Length,Enables Payload with ACK,Enables the W_TX_PAYLOAD_NOACK command Der Sender hat in Bank 0, Register 0: 00: 0x0E //reflect RX_DR\TX_DS\MAX_RT,Enable CRC ,2byte,POWER UP,PTX Bank 1: 00: 0x404b01e2 01: 0xc04b0000 02: 0xd0fc8c02 03: 0x99003941 04: 0xf99e860b // Alternativ 0xd9... statt 0xf9... 05: 0x24067fa6 06: 0x00000000 07: 0x00000000 08: 0x00000000 09: 0x00000000 0A: 0x00000000 0B: 0x00000000 0C: 0x00731200 0D: 0x0080b436 0E: 0xFFFFFEF7CF208104082041 Als Adressen nutze ich: RX_ADDR_P0 = TX_ADDR. Die anderen Receive-Adresses RX_ADDR_Pn (n=1..5) unterscheiden sich im LSB Hat jemand eine Idee, was das Problem ist? Es wirkt auf mich so, als wären zwar SPI-Interface und Registerbänke aktiv, aber die State-Control nicht. Interessant ist auch: Der CE-Pin (Chip-Enable) macht nicht, was ich erwartet habe. Egal ob ich den Pin vom Atmega aus beschalte oder nicht, immer bekomme ich obiges Verhalten. Ud das bei 4 Chips, die ich hier liegen habe. Hat jemand eine Idee? Gruß Odo
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.