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