kann mir jemand sagen was ich hier vergessen oder falsch mache? #include <avr/sleep.h> //PowerDown set_sleep_mode(SLEEP_MODE_IDLE); sleep_mode(); while(1);
> kann mir jemand sagen was ich hier vergessen...?
Ja, Du hast vergessen, uns mitzuteilen, was das Programm machen soll
und was es Deiner Meinung nach nicht macht, und dass so ein
Codeschnipselchen wirklich nicht besonders aussagekräftig ist...
Außerdem hast Du anscheinend vergessen, dass es hier ein extra
GCC-Forum gibt...
ok nächstes mal im GCC-Forum. Ich möchte den atmega 128 in den idlemode versetzen. Stromaufnahme ändert sich aber nicht, also gehe ich davon aus dass das so nicht geht.
Wenn irgendein Ereignis den Mega wieder aufweckt, tut sich an der Stromaufnahme auch nix. Deshalb solltest Du vielleicht mal das komplette Programm schicken, damit man sieht, was da evtl. reinhauen kann!
Soviel ich weiß, spart Sleep-Mode IDLE keinen Strom, denn es wird nur die ALU angehalten, Timer, I/O, ADC usw. erhalten weiter ihren Takt. Inzwischen nutze ich in fast allen meinen Programmen Sleep, allerdings in ASM. ...
wenn ich in den Power Down mode schalte bleibt die Stromaufnahme trotzdem gleich. Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt.
Mit Mega8 arbeite ich nicht, aber wenn ich den Mega48 in den Power-Down-Mode schalte, dann ist die Stromaufnahme mit einem Billig-DVM nicht mehr messbar. http://www.hanneslux.de/avr/mobau/7ksend/7ksend02.html ...
.....//gewünschten Sleep-mode wählen (ist bei dir //NICHT Power-Down mode!) .....//Sleep-enable setzen asm volatile ("sleep"::); //uc in den Sleepmode schicken zzzZZZ :) Funktioniert zumindest beim AtMega48 so :) Grüße
Autor: ...HanneS... Lux (HanneS) Datum: 25.08.2006 15:19 Mit Mega8 arbeite ich nicht, aber wenn ich den Mega48 in den Power-Down-Mode schalte, dann ist die Stromaufnahme mit einem Billig-DVM nicht mehr messbar. Ohne Brown-Out detection warens bei mir so um die 10 - 20 uA. Die Brown out detection zieht ca 25uA.
ich glaube der controller geht auch in den power down mode, wacht aber sofort wieder auf. Beim Power Down Mode kann er ja nur über TWI oder ext. Interrupt aufwachen. TWI ist disabled. Kann ich die Interrupts mit cli() vor dem sleep befehl ausschalten? Wenn ja dürfte er nicht mehr aufwachen oder?
Lohnt sich das beim Mega128 überhaupt? Die älteren ATmegas sind noch nicht so auf Stromsparen optimiert. ...
<<Ohne Brown-Out detection warens bei mir so um die 10 - 20 uA. Die
Brown
out detection zieht ca 25uA.
>>
Tach zusammen.
Ein Mega168 nimmt bei 1.8Volt und 128Khz internem Takt 12.5uA im
aktiven Betrieb. Zum Test hatte ich die demo.c aus der WINAVR
Distribution und zur Kontrolle ein Oszi drann (PWM hochrunter). Bei
2.8Volt waren es dann schon 320uA.
Nächste Woche schreibe ich, was im Sleep passiert. (habe schon
Feierabend und das hier zu spät gelesen...:-)
Gruß
Axel
Nein, mein Messgerät im Labor ist bestimmt nicht defekt gg
Michael wrote: > wenn ich in den Power Down mode schalte bleibt die Stromaufnahme > trotzdem gleich. > Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt. Datenblatt, Seite 49:
1 | If the On-chip debug system is enabled by the OCDEN Fuse and the chip enter Power down or |
2 | Power save sleep mode, the main clock source remains enabled. In these sleep modes, this will |
3 | contribute significantly to the total current consumption. There are three alternative ways to |
4 | avoid this: |
5 | • Disable OCDEN Fuse. |
6 | • Disable JTAGEN Fuse. |
7 | • Write one to the JTD bit in MCUCSR. |
PS. Ich habe gestern den ganzen Tag dran mit dem ATmega128 im Sleep-Modus gesessen, man musste einfacht JTAG abschalten, dann läuft der Hauptoszillator nicht mehr und der Stromverbrauch sinkt drastisch ab.
Hallo sleep_mode(); // Wie sieht die Routine aus? // Verlässt er die obige Routine, so verweilt er in einer Endlosschleife while(1);
Hallo, was machen die Ports eines XMEGA im Sleepmode -Power-Down -Power Save Behalten diese ihre Zustände, oder gehen die auf LOW/High Wie ist dieser Zustand definiert. Grüsse Jan
Vlad S. schrieb: > Michael wrote: >> wenn ich in den Power Down mode schalte bleibt die Stromaufnahme >> trotzdem gleich. >> Atmega128 8Mhz 3,3V = 8mah entspricht auch dem Datenblatt. > > Datenblatt, Seite 49: > >
1 | If the On-chip debug system is enabled by the OCDEN Fuse and the |
2 | > chip enter Power down or |
3 | > Power save sleep mode, the main clock source remains enabled. In these |
4 | > sleep modes, this will |
5 | > contribute significantly to the total current consumption. There are |
6 | > three alternative ways to |
7 | > avoid this: |
8 | > • Disable OCDEN Fuse. |
9 | > • Disable JTAGEN Fuse. |
10 | > • Write one to the JTD bit in MCUCSR. |
> > PS. Ich habe gestern den ganzen Tag dran mit dem ATmega128 im > Sleep-Modus gesessen, man musste einfacht JTAG abschalten, dann läuft > der Hauptoszillator nicht mehr und der Stromverbrauch sinkt drastisch > ab. Habe das gleiche Problem beim Mega328P. Ich versetze ihn in Idle-Modus und am Strom ändert sich jedoch nichts.
1 | set_sleep_mode(SLEEP_MODE_IDLE); |
2 | sleep_mode(); |
Bin deutlich über 1mA. Takt ist intern (1MHz) + Asynchroner Timer2 mit Uhrenquarz für Sekunden-Interrupt. Alle besonderen Fuses sind aus (siehe Bild). Kann man noch was optimieren?
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.