Hallo Männers und Frauen, ich hab meinem Funkboard das "Sleepen" beigebracht. Die Stromaufnahme ist aber zu hoch! Habe alle für mich erkennbaren Einstellungen getätigt, welche den Sleepstrom beeinflussen. Trotzdem ist der Strom im Powerdown-Mode 2mA hoch. Das C-Programm hab ich angehängt. Sieht hier jemand vllt etwas was fehlt, bzw fehlerhaft ist???? Ich habe im Moment keine Idee mehr! für andere Controller wird empfohlen den Debugwire zu deaktivieren. Diese Option finde ich aber nicht für den Atmega8 Mein Board ist beschränkt auf das wesentlichste: Atmega8, RFM12, Taster an INT1, 10k an !RESET und Tasterentprellung mit 100k und 100nF gegen GND. Die einzigen beiden Wiederstände haben dann eine Stromaufnahmen von (3V/10000 Ohm) + (3V/100000 Ohm) = 0,00033 A Aufgeweckt wird der Atmega mittels Taster an INT1 KEIN Quartz, keine LED Stromversorgung erfolgt mittels 2 AAA Batterien, also 3 Volt bzw zum Strommessen aus dem Labornetzteil. Danke mfg
Alle Pullups enablen oder Alle nichbenutzten Eingänge auf Ausgang setzen.
Stimmt, das laß ich noch db gestern bevor ich schluss machte... danke. das kann ich doch so machren oder: ganz zu beginn einfach alle DDRx auf ausgang stellen. Alle Portx auf Pullup stellen. anschließen meine bisherige portinitialisierung, feddig! mehr ist das doch nciht oder?
doch der ist schon deaktiviert.. wollte ich auch eigentlich im quellcode als kommentar für sichtbar gemacht haben.. danke
Hi Schon mal nachgemessen, wer ist der Stromfresser ist? RFM12 oder uC ?
katastrophenheinz schrieb: > Hi > Schon mal nachgemessen, wer ist der Stromfresser ist? RFM12 oder uC ? Ah super einwand!! ne hab ich noch nicht... bin davon ausgegangen, das mein rfm_of() das dingen complettt auschaltet, aber die 2 mA laß ioch auch schon im RFM datenblatt. Das gilt zu überprüfen. Uwe schrieb: > Alle Pullups enablen oder Alle nichbenutzten Eingänge auf Ausgang > setzen. Dann sind ja alle Ausgänge auch auf HIGH... irgendwie paradox, dass das hilft strom zu sparen^^
Christian Peskov schrieb: >> Alle Pullups enablen oder Alle nichbenutzten Eingänge auf Ausgang >> setzen. > > Dann sind ja alle Ausgänge auch auf HIGH... irgendwie paradox, dass das > hilft strom zu sparen^^ Nein, weil die Ausgänge frei liegen. Wo soll der Strom den hin fließen? Anders ist es, wenn ein Eingang frei liegt, dann ist da eine Eingangsstufe, deren Halbbrücke aus MOSFETS nicht "weiß", was anliegt, so dass beide Transistoren ein wenig leiten, was irre Strom frisst. Wenn da ein Pullup ist, liegt ein klares Potential vor und die Transistoren sind sich einig: Einer leitet, einer sperrt. -> Es fließt kein Strom.
Moin, habe mehr oder weniger die gleiche Anordnung. ATTiny84, RFM12. Wie programmierst du ? Ich programmiere mit dem Dragon. Das bedeutet auch, dass er vor dem flashen DebugWire einschaltet. Und das führt auch zu erhöhtem Stromverbrauch. Wenn man also fertig ist mit debuggen usw., mit AVR-Studio DebugWire wieder abschalten. (Meine Schaltung verbraucht dann wenige Mikro-Amp.) siehe hier: Beitrag "Zu hoher Stromverbrauch im Sleep-Mode (Gefunden)" Gruß Andree
Philipp K. schrieb: > Nein, weil die Ausgänge frei liegen. Wo soll der Strom den hin fließen? Ich hatte mir vorstellen können, dass intern auch für den Augang irgendwelche "stufen" sind, welche dann intern einen stromfluss verursachen aber ok. Jetzt weiß ich wie es sich gehört. habe gerade mal den Tip mit den Ports versucht umzusetzten und anschließend, hatte ich eine vielfach größeren Strom als zuvor fast 40 mA. und das programm scheint aquch nciht mehr korrekt zu laufen... Da muss ich doch was falsch gemacht haben! habe in die main einfach folgendes hinzugefügt: int main(int args, char * argv[] ) { //alle Pins Pullup high und als ausgang PORTB = 0xff; PORTC = 0xff; PORTD = 0xff; DDRB = 0xff; DDRC = 0xff; DDRD = 0xff; //dann wie gehabt: init_usart(); init_spi(); init_port(); init_rfm(); client_statup(); .... ...
Andree S, schrieb: > Moin, > habe mehr oder weniger die gleiche Anordnung. ATTiny84, RFM12. > Wie programmierst du ? Ich programmiere mit dem Dragon. Das bedeutet > auch, dass er vor dem flashen DebugWire einschaltet. > Und das führt auch zu erhöhtem Stromverbrauch. Wenn man also fertig ist > mit debuggen usw., mit AVR-Studio DebugWire wieder abschalten. > (Meine Schaltung verbraucht dann wenige Mikro-Amp.) > > siehe hier: > Beitrag "Zu hoher Stromverbrauch im Sleep-Mode (Gefunden)" > > Gruß > Andree hi danke... also das mit dem Debugwire ausschaltenhab ich auch gefunden, aber im Studio ist der Menueintrag grau/nicht anwählbar :-/ wie bekommt ich das deaktiviert?
Im Studio (ich benutze 4.18) oben mit dem grünen Pfeil ("Start Debugging") Debug starten. Dann (und nur dann) ist im Menü "Debug" der Punkt "AVR Dragon Options" anklickbar. Und dort kannst du dann DW anschalten. A.
hab das mal versucht auf studio 6 zu übertragen... klappt leider nicht... hab sowohl als debugger einmal den simulator als auch meinen AVRISP mkII ausgewählt... und auch jeweil debugging gestartet.. das feld bleibt grau :-( siehe anhang mfg
Der AVRISP mkII ist, soweit ich weiß, ein reiner Programmer. Dann hast du DebugWire auch garnicht eingeschaltet .... ? Muss da aber jetzt passen. Mein Hinweis galt für den Einsatz des AVR Dragon und der Nutzung von DebugWire (d.h. der "Verbiegung" des Reset-Pins für das DW-Protokoll). A.
Uwe schrieb: > Alle Pullups enablen oder Alle nichbenutzten Eingänge auf Ausgang > setzen. Nicht ganz. In den Sleepmodes POWER_DOWN und POWER_SAVE werden die meisten Ports sowieso abgeschaltet. Trotzdem wird im Datenblatt empfohlen, nichtbenutzte Eingänge mit dem Pullup auf high zu legen. Auf Ausgang zu setzen ist unnötig. mfg.
Christian Peskov schrieb: > Diese Option finde ich aber nicht für den Atmega8 Einen Atmega8 kann man nicht debuggen. Da kannst du lange suchen. Im Debugwire wird der Sleepmode gar nicht aktiviert. Aber für den Atmega8 gilt das sowieso nicht. mfg.
Christian Peskov schrieb: > habe gerade mal den Tip mit den Ports versucht umzusetzten und > anschließend, hatte ich eine vielfach größeren Strom als zuvor fast 40 > mA. Das ist zu viel. Miss mal alle Pins aus Kurzschluss gegen GND. Vielleicht machst Du auch ein Bild von Deinem Aufbau, damit man die Kurzschluss-Wahrscheinlichkeit abschätzen kann? ;-) Thomas Eckmann hat Recht, dass unbenutzte Pins Eingänge bleiben können, wenn man den Pullup aktiviert, aber letztlich sollten sie als Ausgänge auch keinen Strom ziehen. Nur führt die Aussage "In den Sleepmodes POWER_DOWN und POWER_SAVE werden die meisten Ports sowieso abgeschaltet" ohne die Einschränkung "als Eingang" möglicherweise zu Verwirrung. Die Funktion als Ausgang bleibt erhalten. > und das programm scheint aquch nciht mehr korrekt zu laufen... > Da muss ich doch was falsch gemacht haben! Könnte vielleicht auch an kurzgeschlossenen Pins liegen, s.o. > habe in die main einfach folgendes hinzugefügt: > > int main(int args, char * argv[] ) > { > > //alle Pins Pullup high und als ausgang > PORTB = 0xff; > PORTC = 0xff; > PORTD = 0xff; > > DDRB = 0xff; > DDRC = 0xff; > DDRD = 0xff; > Ich würde schon selektiv nur die Pins entsprechend behandeln, die auch frei sind. PC7, PB6 und PB7 existieren z.B. gar nicht und PC6 würde ich in Ruhe lassen. Und wie erwähnt, DDRX = .. kannst Du weglassen.
danke allen. danke philipp! hatte mir manches von deinem TEILWEISE gedacht. aber du hast es sehr veständlich und überschaubar beschrieben! *thumbs up* also das rfm dingen will ich da wirklich nciht ablöten, da warte ich vllt noch auf die nun bestellten platinen. Die Kurzschlussmessung also den Widerstand zwischen den Leiterbahnen, werde ich aber vllt heute noch versuchen. danke noch mal.. wenn ich infos habe, werde ich berichten.
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.