sleep-mode nur mit low-level ISR "verlassbar"?

OP #3784388
Lesenswert?

Hallo zusammen,

im Datenblatt des ATtiny44 steht meiner Ansicht nach, dass nicht nur low 
level sondern auch pin_change geht...aber irgendwie läuft das nicht. Low 
level geht 1A. Bevor ich nun weiterforsche: Ist der power down auch mit 
einem anderen ext trigger als low_level an INT0 verlassbar? Am liebsten 
wäre mir pin change.

Klaus.
Gast #3784407
Lesenswert?

Beide sollte funktionieren, aber:

Note that if a level triggered interrupt is used for wake-up the changed 
level must be held for some time to wake up the MCU (and for the MCU to 
enter the interrupt service routine). See “External Interrupts” on page 
49 for details.

sagt das Datenblatt. Und bei PowerDown ist der Takt gestopped und muß 
erst wieder anlaufen. Das kann dauern. Bei externem Quarz bis zu 16k 
Takte.
Gast #3784411
Lesenswert?

Bastler schrieb:
> Beide sollte funktionieren, aber:
>
> Note that if a level triggered interrupt is used for wake-up the changed
> .
> .

Mit INT0 und low level geht es doch bei Klaus R.

@Klaus R.: Mit Pin Change Interrupt geht es auch. Zeig mal dein Pin 
Change Programm mit dem es nicht klappt.
OP #3784433
Lesenswert?

Pin change ging, wenn ich mich gut an gestern 02:30 erinnere :) Eine LED 
in der ISR toggelt. Aber wenn er einmal schlief, schlief er...naja, ist 
nur ein Feinschliff, low level geht auch.

Ich hatte nur die Bits ISC01/00

MCUCR |= (1<<SM1)|(0<<SM0)|(0<<ISC01)|(1<<ISC00);

geändert, das reicht - oder?

Danke, Klaus.
Gast #3784439
Lesenswert?

Wenn ich im DB 9.2.2 "Pin Change Interrupt Timing" die Schaltung 
betrachte, dann braucht die einen Takt. Und der ist bei PowerDown 
angehalten. Und bei 9.2.1 steht zum INT0, das er async arbeitet, d.h. 
Auch bei sleep > IDLE.
Also aufwachen aus Tiefschlaf per Level oder Change, aber nur async, 
also nicht bei PinChange.
Genau so steht's aber auch beim mega169 und der kann das definitiv in 
all den Heizungsreglern.
Gast #3784454
Lesenswert?

ISC01/0 sind nur für INT0 zuständig. PinChange ist was anderes. Damit 
können Änderungen an allen Port-Pins erkannt werden. Aber dazu muß man 
die je Port den zugehörenden Vector verwenden, den jeweilige Int 
freigegeben werden, die PinChangeMask gesetzt sein. Alles im Handbuch 
nachzulesen.
OP #3784681
Lesenswert?

Hallo Bastler,

ja, das hatte ich auch schon beim Überfliegen vermutet - da lässt sich 
leider viel konfigurieren. Muss ich mir in Ruhe mal ansehen. Ein Problem 
wäre es für mich auch nur bei hängender Taste - im Moment.

Sin dbeim Feld-Wald-Wiesen PowerDown 20uA OK? Ohne jetzt groß die 
Schaltung optimiert zu haben...die Anwendung hat einen LiIon Akku, der 
wird damit ne Weile halten, ergo kein Problem für mich - wobei die 
0.1uA@1.8V aus dem DB schon reizen :)

@Schläfer: 0 shift ist mir klar, stört aber auch nicht. Ist halt ne 
Bastelmaske. Den Rest hat Bastler ja erklärt (und nicht nur kritisiert 
:) )

Klaus.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren