Hi,
ich habe (eventuell) ein Problem mit dem Schlafmodus vom Attiny 2313.
Ich bin mir nicht sicher, ob er wirklich im Schlafmodus ist, denn die
Zielschaltung verbraucht leider eine Knopfzelle innerhalb von 3 Tagen.
Ich habe kein µAmpermeter um festzustellen, ob der Attiny nun den Strom
zieht, oder eine andere Komponente (in dem Fall ein Funkmodul, aber das
sollte auch schlafen).
Zwei Pins, PB3 und PB5 sollen den Controller jeweils wieder kurz
aufwecken (was auch funktioniert).
Anbei der Code, evtl. kann mir jemand sagen, ob es so geht, oder ob ich
etwas vergessen habe.
Oh, der Handler ist da, hatte ihn nur beim abspecken vom Code gerade
rausgeschmissen.
Wenn die Pullups für die zwei Pins gemeint sind, die sind auch da.
Aber ja, sorry, hätte ich mit reinpacken sollen, aber wegen
undefinierten Pinstates wacht er nicht auf.
Mike Mike schrieb:> Achso, ist Brownoutdetection, Watchdog und der ADC standardmäßig an?
Der AC ist es. Ich sehe aber grad, dass er es im Sleep nicht ist. ADC
hat der 2313 nicht.
Die anderen können per Fuses an sein, wenn du das so eingestellt hast.
Okay, werde mal die Fuses schnell ansehen.
Und ich habe gerade mal mit dem Amperemeter gemessen -> 3mA
Hätte nur gedacht, es wäre im µA Bereich... Hätte wohl lieber gleich
messen sollen.
Ich schaue mal nach, was sich ändert, muss aber erst ein paar Kabel
anlöten, um den Controller wieder programmieren zu können.
Diese Funkmodule (z.B. nRF) sicher schlafen zu legen ist nicht so
einfach. Die wachen gerne mal durch einen Brownout auf, und sitzen dann
wach da, wartend und Elektronen fressend.
Ich kappe denen inzwischen komplett die Stromversorgung um sicher zu
sein.
LG, Sebastian
Auch gut zu wissen, danke.
Ich sehe gerade, er geht garnicht in den Schlafmodus!
Nach dem Schlafmodus werden dennoch Befehle ausgeführt...
Habe gerade mal eine LED angelötet, und die blinkt fröhlich, obwohl er
schlafen sollte ...
Toll,
wenn ich GIMSK |= 1<<PCIE setze, schläft er und es klappt auch alles...
Muss natürlich die anderen Masken noch anpassen, aber so schläft er.
Verstehe ich nicht ganz, aber okay? Kann mir das wer erklären?
Setze ich INT0 und INT1, schläft er nicht.
Mike Mike schrieb:> Ich sehe gerade, wenn ich die im GIMSK Register INT0 und INT1 setze,> wacht er direkt wieder auf.
Welche Art des Triggers konfigurierst du denn für INT0 und INT1 mit
ISC11, ISC10, ISC01, ISC00 in MCUSR? Der Default scheint ein
LOW-interrupt zu sein. Hast du externe Pullups an PD2 und PD3?
Ausserdem: Wieso PB3 und PB5?
LG, Sebastian
Sorry, PB3 und PB0
Da ist einiges durcheinander geraten, bin gerade etwas unkonzentriert.
Also ich habe die Interruptmask auf PCIE gestellt, und bei PCMSK war
auch ein Fehler, habe die Falschen Pins im Kopf gehabt.
Hier gehörten PCINT0 und PCINT3 im PCMSK gesetzt.
So klappt es, und ich habe nun 0mA (habe leider kein µAmperemeter)
Aber viel besser als 3mA.
So sieht der Code aus, der auch funktioniert: