PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hilfe sleep.h



leon20
10.09.2007, 21:23
hallo,

hab nen atmega64l und möcht jetzt endlich einmal die sleep funktion haben.

und zwar so das er z.b alle 250ms einmal aufwacht schaut ob eine taste betätigt wurde wenn ja soll er die aktion ausführen und wenn nicht....

nur leider bin ich noch nicht so schlau :)

also soweit kenn ich mich schon aus.
=D>
#include <avr/sleep.h>

und was mach ich weiter?


mfg leon

izaseba
10.09.2007, 21:46
und was mach ich weiter
Dattenblatt lesen?
und das hier (http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html)

Im ernst, so ein AVR hat mehrere sleep modes, je nachdem, wie tief er pennen soll ;-)
Je tiefer er pennt, um so weniger Strom verbraucht er,um so schlechter ist er aufzuwecken, irgendwie klar...
Also entscheide Dich, wie tief er schlafen soll.
Wenn er alle **mS aufwachen soll, kannst Du den Systemtakt nicht abschalten, es sei den Du nimmst einen Asynchronen Timer,der wiederum einen Uhrenquarz benötigt...
Willst Du nur eine Taste Abfragen ? dann leg sie auf einen Externen Interrupt, damit kannst Du den wecken, ohne die Taste zu prüfen.

leon20
10.09.2007, 22:08
also ich hab drei tasten
ich möcht halt soweit es geht strom sparen (weil der betrieb geht über ein solar modul und akku) daweil bin ich mit dem 3,686Mhz quarz auf einen strom verbrauch von 10mA ich würd gern 2mA haben.

abgesehen davon muss alles weitere software technisch gehen für weiter elektronik bauteile hab ich keinen platz mehr.

leon20
10.09.2007, 22:09
achso funktioniert der sleep modus auch in zusammenhang mit einem bootloader?

izaseba
10.09.2007, 22:32
Du kannst an der Hardware nichts mehr ändern ?
schade wie gesagt, das meiste spart man im powerdown/powersave Modus, nur da wieder rauszukommen wird schwierig.
Wenn Du also "nur" Software zu verfügung hast, bleibt Dir wohl nur Idle Modus, weil da zuminsest der Timer0 läuft.
Ob es sich lohnt mußt Du schon selber rausfinden.
Lies Dir dazu "Power Management and Sleep Modes" im Dattenblatt, da steht alles gelistet, wie man den µC wecken kann.

Sonst was? Spannungsregler ? bedenke, der brauch auch ein paar mA für sich, Spannungsteiler ?
Und ich denke, daß sich der Bootloader mit dem Sleepmodus nicht beissen wird.

Gruß Sebastian

leon20
10.09.2007, 22:49
hi izaseba,

also die 10mA sind nur bezogen auf denn atmega und denn quarz die restliche elektronik bezieht nochmal 4mA bei 4V des lässt sich aber nicht mehr reduzieren.

naja ich könnt schon eine neue platine machen wenn man mir versichert das ich zu meinem ziel komme (2mA) vieviel energie würd ich mir den schätzungsweise ersparen wenn ich im powerdown modus wäre?

PS.: das datenbaltt ist nicht gerade sehr einfach zu verstehen wenn man nicht perfekt english kann. :)

izaseba
10.09.2007, 23:26
das datenbaltt ist nicht gerade sehr einfach zu verstehen wenn man nicht perfekt english kann.
Soll das ein Witz sein?
Ich kann Dattenblätter lesen und glaub mir, letztens hat mich ein Engländer nach dem Weg gefragt und ich hatte Probleme ihm zu helfen(soviel zu Thema man muß perfekt englisch können)
Aber egal:
Hier eine Kleine Auflistung bei 4MHz(alles maximalwerte)
Aktivemode bei 3V 5 mA
5V 20 mA
Idle Mode bei 3V 2 mA
bei 5 V 12 mA
Powerdown 3V ohne Watchdog 10 µA

Also Idlemode fast die Hälfte.
Bei 3V kämst Du dann auf Deine 2 mA ;-)

Also doch Idle ? Aber bevor Du sie aktivierst, stelle sicher daß:
ADC deaktiviert ist
Analog Komparator deaktiviert ist
Broun-out, wenn nicht benötigt
Interne Ref Spannung aus ist
Watchdog, wenn nicht benötigt
Dann stellst Du den Timer 0 auf den größten Prescaller und läßt den laufen
Der µC müßte in der ISR aufwachen, fertig
Achso, pennenlegen geht wohl mit:
sleep_enable();
set_sleep_mode(SLEEP_MODE_IDLE);
sleep_cpu();
...pennt...

Das kannst Du nochmal in dem Link nachlesen, den ich oben gepostet habe.

Alle Angaben, ohne Gewähr und soweiter...

leon20
11.09.2007, 20:03
Danke izaseba,

für die tipps.

wie schalte ich die interne referenz spannung ab? *confused*

izaseba
11.09.2007, 20:28
wie schalte ich die interne referenz spannung ab?

Wenn Du schon nach fragst, weißt Du Wohl auch nicht, wie man die einschaltet, oder ;-)

Das ist dann Ok. weil, was nicht eingeschaltet wurde, braucht man nicht abzuschalten O:)
Aber die Refspannung hat was mit ADC zu tun, nutzt Du ADC ?

Gruß Sebastian

P.S. Hast Du schon ausprobiert, wieviel Strom der im Idlemode zieht ?

leon20
11.09.2007, 20:42
hi

bin grad vor einer stunde heimgekommen.

bin gerade am probieren.

nein ich verwende nicht ADC

nachdem mein horizont beim prog. einwenig beschränkt ist. :)
würdest du eventuel das programmieren gegen eine gebühr oder vieleicht kann ich dir ein paar bauteile zukommen lassen.
sonst sitz ich noch eine woche da bis ich das auf die reihe kriege.

ps.: heute hab ich mal denn atmega64L mit dem 3.686Mhz quarz gemessen und hab nicht schlecht gestaunt bei 3,3V eingang zieht er 11,2mA wie gibts denn das?


mfg leon

izaseba
11.09.2007, 20:56
und hab nicht schlecht gestaunt bei 3,3V eingang zieht er 11,2mA wie gibts denn das?

Hast Du noch was angeschlossen, oder zieht der nackte Chip 11 mA ?
Meine Angaben oben, habe ich dem Dattenblatt entnommen.

würdest du eventuel das programmieren gegen eine gebühr oder vieleicht kann ich dir ein paar bauteile zukommen lassen.
Was klappt denn nicht ?
Das Programm schreiben, oder das brennen ?
Schreib mir eine PN , was Du vorhast, dann guck ich, wie ich Dir helfen kann ;-)

Gruß Sebastian