RFM12 Wakeup nIRQ

Gast #2461275
Lesenswert?
• ▲
▼
Hallo,

ich versuche seit 2 Tagen einen ATmega32 per nIRQ aus dem power_down 
modus zu wecken.

Benutzen tu ich den RFM12 von Beitrag "bidirektionale RS232 Funkbrücke mit RFM12" 
file: Beitrag "Re: bidirektionale RS232 Funkbrücke mit RFM12" .

Den Wakup versuch ich per
1
rf12_trans(0xEA08);    // Wakup Timer initialisieren 8192 ms
2
rf12_trans(0x820B);    // Wakeup Timer aktivieren, Clockoutput

einzuschalten.

Meine code sieht so aus
1
rf12.h
2

3
/******************************************************************
4
 RFM12 wakup einschalten  
5
 *****************************************************************/
6
void rf12_enable_wakeup(void)
7
{
8
  rf12_trans(0xEA08);    // Wakup Timer initialisieren 8192 ms
9
  rf12_trans(0x820B);    // Wakeup Timer aktivieren, Clockoutput
10
}
11

12
main.c
13

14
ISR(INT0_vect) 
15
{
16
}
17

18
void init(void)
19
{
20
  cli();
21
  
22
  /***********************************************
23
  Initialisierung
24
  ***********************************************/
25
  DDRA   = 0x00;
26
  PORTA   = 0x00;
27
  DDRB   = 0x00;
28
  PORTB   = 0x00;
29
  DDRC   = 0xFF;
30
  PORTC   = 0xFF;
31
  DDRD   = 0xFB;          // PD2 = INT0 = Eingang
32
  PORTD   = 0x04;         // Pull Up aktivieren
33

34
  MCUCR &= ~0x3;
35
  
36
  sei();
37
        
38
  rf12_init();
39
  rf12_config(RF_BAUDRATE, CHANNEL, 7, NORMAL);
40
  rf12_rxmode();
41
}
42

43
int main()
44
{
45
   for (;;)
46
   {  
47
    init();
48

49
    rf12_enable_wakeup();
50
      
51
    GICR |= (1 << INT0);
52
 
53
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
54
    sleep_mode();                  
55
 
56
    GICR &= ~(1 << INT0);          
57
   }
58
}


Nun zum Problem:
- Der wakuptimer scheint nicht zu laufen.
- nIRQ ist immer LOW

Wer hat das Problem lösen können den Wakuptimer des RFM12 zu benutzen 
und einen ATmega aus dem power_down Modus zu holen?

Gerry
Gast #2461614
Lesenswert?
• ▲
▼
okay Problem gelöst.

Für alle die es noch interessiert.
Ich musste das Statusregister noch auslesen.

1
/******************************************************************
2
 RFM12 wakup einschalten  
3
 *****************************************************************/
4
void rf12_enable_wakeup(void)
5
{
6
  rf12_trans(0xE730);    // Wakup-Timer 6144 ms
7
  rf12_trans(0x820B);    // Wakeup aktivieren, Clockoutput aus
8
  rf12_trans(0x0000);    // Statusregister auslesen;
9
}

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.