Forum: Mikrocontroller und Digitale Elektronik daten vom atmega328ß zum attiny2313 mit nrf24l01 übertragen


von Johannes (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich möchte gerne Daten von einem Arduino zu einem ATtiny2313 übertragen. 
Dazu sende ich zunächst vom Arduino jede Sekunde eine Nachricht zum 
ATtiny. Dieser soll beim Eingang einer Nachricht zunächst einfach nur 
eine LED Toggeln. Doch leider werden keine Daten übertragen.

Im Arduino lasse ich einen Timer hochlaufen und immer wenn eine Sekunde 
vorüber ist in der hauptschleife eine Nachricht mit einem Byte 
rausschicken.
1
int main(void){
2
  uint8_t k = 0;
3
  uint8_t l = 1;
4
  timer_interrupt_init(); // Timer0 -> 1ms
5
  mirf_init();
6
  _delay_ms(50);
7
  sei(); // Global Interrupts activate
8
  mirf_config();
9
  while (1){
10
    if(sekunde_over==1){ // sekunde_over wird in der Timer ISR gesetzt
11
      k++;
12
      mirf_send(k,l);
13
      sekunde_over = 0;
14
    }
15
  }
16
}

Im Attiny lasse ich bei eingehenden Daten den INT0 Interrupt auslösen 
und hole mir dort die Daten heraus
1
ISR(INT0_vect){
2
  TOGGLEBIT(PORTD, 5);
3
    uint8_t status;
4
     //If still in transmitting mode then finish transmission
5
    if (PTX) {
6
      
7
       //Read MiRF status
8
      mirf_CSN_lo;                                // Pull down chip select
9
      status = spi_fast_shift(NOP);               // Read status register
10
      mirf_CSN_hi;                                // Pull up chip select
11
12
      mirf_CE_lo;                             // Deactivate trans receiver
13
      RX_POWERUP;                             // Power up in receiving mode
14
      mirf_CE_hi;                             // Listening for packets
15
      PTX = 0;                                // Set to receiving mode
16
17
       //Reset status register for further interaction
18
      mirf_config_register(STATUS,(1<<TX_DS)|(1<<MAX_RT)); // Reset status register
19
  }
20
}

doch leider bleibt die LED aus.

Das Problem liegt denke ich schon am Arduino, dass dort nichts gesendet 
wird. Wenn ich an CSN (PB1 vom Atmega328p) noch eine LED hänge, leuchtet 
diese auf, und geht auch nicht kurz, während des sendens aus.

Könnt ihr über den Code gucken und sehen, was falsch ist?

Johannes

von veganer Metzger (Gast)


Lesenswert?

der interruptmode funktioniert m.E. bei den billigen chinadingern oft 
nicht richtig bzw. gar nicht, warum auch immer.

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
Noch kein Account? Hier anmelden.