keine übertragung mit nrf24l01

Gast #4618892
Lesenswert?
• ▲
▼
Hallo,
ich möchte mit den nrf24l01 daten übertragen. Dabei komme ich aber schon 
ewig nicht weiter und verstehe auch das Problem nicht ganz. Ich möchte 
die Daten von einem Atmega328p (Arduino) zu einem Attiny2313 übertragen.
Wenn ich beide als Sender erstelle (ohne gegenstelle), bekomme ich vom 
Atmega die Nachricht, dass die Nachricht verloren gegangen ist. Beim 
ATtiny (selber Code) bekomme ich die Nachricht, dass die Übertragung 
geglückt ist. Auch wenn ich das Modul entferne, bekomme ich die Positive 
Nachricht.
Der einzige Unterschied beim Code ist das SPI, da das beim ATtiny über 
USI gemacht wird.
Hardwaremäßig liegt der Unterschied daran, dass der Atmega über USB mit 
meinem Computer verbunden ist und der Attiny noch am ISP-Programmer 
angeschlossen ist. Dies dürfte allerdings nicht das Problem sein (selbst 
wenn ich den Programmer entferne, wird die Nachricht erfolgreich 
übertragen (zumindest der nachricht nach)).

Wenn ich den Atmega als empfänger geschaltet habe, kommen auch keine 
Nachrichten an.
1
uint8_t spi_temp;
2
uint8_t spi_q = 0;
3
char spi_itoabuffer[33];
4
uint8_t spi_var =0;
5
uint8_t spi_data_rx_array[4];
6
uint8_t spi_data_array[4];
7
uint8_t spi_tx_address[5] = {0xE7,0xE7,0xE7,0xE7,0xE7};
8
uint8_t spi_rx_address[5] = {0xD7,0xD7,0xD7,0xD7,0xD7};
9

10
int main(void){
11
  usart_init(USART_MYUBRR);
12
  spi_init();
13
  nrf24_init(); // initialize hardware pins
14
  nrf24_config(2,4); // channel #2, payload length: 4
15

16
  /* Set the device addresses */
17
  nrf24_tx_address(spi_tx_address);
18
  nrf24_rx_address(spi_rx_address);
19

20
  /* Fill the data buffer */
21
  spi_data_array[0] = 0x00;
22
  spi_data_array[1] = 0xAA;
23
  spi_data_array[2] = 0x55;
24
  //spi_data_array[3] = spi_q; // upgrading in while-loop
25
    while (1){
26
      spi_data_array[3] = spi_q++;
27

28
      /* Automatically goes to TX mode */
29
      nrf24_send(spi_data_array);
30
      
31
      /* Wait for transmission to end */
32
      while(nrf24_isSending());
33

34
      /* Make analysis on last transmission attempt */
35
      spi_temp = nrf24_lastMessageStatus();
36
      if(spi_temp == NRF24_TRANSMISSON_OK)
37
      {
38
        usart_transmit_string( " > Tranmission OK\n");
39
      }
40
      else if(spi_temp == NRF24_MESSAGE_LOST)
41
      {
42
        usart_transmit_string("> Message is lost ...\n");
43
      }
44

45
    _delay_ms(2000);
46
    
47
    }
48
}

Frank

Die zugehörigen header und c-files habe ich von 
Beitrag "NRF24L01 und Atmega328P" . Die SPI.c habe ich 
für den attiny abgeändert. Dieses funktioniert aber ansich.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.