Hallo,
Zur zeit versuche ich einen ATmega48PA in den Power Down - Sleep Mode zu
versetzen. Dies scheint mir auch zu gelingen. Jedoch ist der gemessene
Stromverbrauch viel höher als im Datenblatt angegeben.
Zum testen hab ich ein einfaches Testprogramm geschrieben welches den
Controller in den Power Down mode bringt.
1 | /*
|
2 | * PicoPowerTest.c
|
3 | *
|
4 | * Created: 13.02.2012 09:58:20
|
5 | */
|
6 |
|
7 | #ifndef F_CPU
|
8 | #define F_CPU 128000UL
|
9 | #endif
|
10 |
|
11 | #include <avr/io.h>
|
12 | #include <avr/sleep.h>
|
13 | #include <avr/power.h>
|
14 | #include <avr/wdt.h>
|
15 | #include <avr/interrupt.h>
|
16 | #include <util/delay.h>
|
17 |
|
18 |
|
19 | /*! \brief This is the main routine
|
20 | *
|
21 | *
|
22 | */
|
23 | int main(void)
|
24 | {
|
25 | wdt_disable();
|
26 |
|
27 | PRR = (1 << PRTWI) | (1 << PRTIM2 ) | (1 << PRTIM1 ) | \
|
28 | (1 << PRTIM0 ) | (1 << PRSPI ) | (1 << PRUSART0 ) | (1 << PRADC ) ;
|
29 |
|
30 | /* set pin input and pull up */
|
31 | DDRB = 0x00;
|
32 | PORTB = 0xFF;
|
33 | DDRC = 0x00;
|
34 | PORTC = 0xFF;
|
35 | DDRD = 0x00;
|
36 | PORTD = 0xFF;
|
37 |
|
38 | /* Disable digital input */
|
39 | DIDR1 = (1 << AIN1D) | (1 << AIN0D);
|
40 | DIDR0 = (1 << ADC5D) | (1 << ADC4D) | (1 << ADC3D) | (1 << ADC2D) | (1 << ADC1D) | (1 << ADC0D);
|
41 |
|
42 | /* Disable analog comparator */
|
43 | ACSR = 0x80;
|
44 |
|
45 | for(;;)
|
46 | {
|
47 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
48 | cli();
|
49 | sleep_enable();
|
50 | sleep_bod_disable();
|
51 | sei();
|
52 | sleep_cpu();
|
53 | sleep_disable();
|
54 | cli();
|
55 | /* Wake up from Power-Save mode */
|
56 | }
|
57 | }
|
Der ATmega48PA braucht zwar deutlich weniger Strom aber leider trodem
noch viel mehr als im Datenblatt angegeben.
Power Down (0.1-0.5uA @1,8V) -> laut Datenblatt
Power Down 49,2uA @1,8V -> gemessen
Active ~27uA -> laut Datenblatt
Active 71,5uA -> gemessen
Hardware:
nur Controller mit keramischen Stützkondensatoren, ohne jegliche
Peripherie.
Freue mich über alle hinweise und fehler die mich dem angegebenen
Stromverbrauch näher bringen.
schöne Grüße