Irgendwie ist an dem Code noch was falsch, wenn der Attiny nach 3min in
den Sleep-Modus geht weckt er nicht mehr auf.
kann sich das mal einer anschauen?
Hab schon einiges versucht, komme aber nicht zurecht.
Jörg Schumann schrieb:> Hab schon einiges versucht, komme aber nicht zurecht.
Was ist denn an INT0 angeschlossen? Und wo ist der Pullup für den Pin?
mfg.
habe diePlatine mal hochgeladen,
an Grün ist ein Kontakt der gegen Masse schließt bei der Betätigung der
Wählscheibe.
Braun ist geschlossen gegen Masse und öffnet beim Wählen so oft wie der
Zahlenwert der Wählscheibe.
Jörg Schumann schrieb:> Braun ist geschlossen gegen Masse und öffnet beim Wählen so oft wie der> Zahlenwert der Wählscheibe.
Der braune liegt am INT0 und ist in Ruhe geschlossen. D.h. der INT0 wird
ausgelöst.
Denn:
>MCUCR = 0b00000000;
ICS0 = ICS1 = 0 = Low-Level-Interrupt
Genau das hast du in Ruhelage. Und beim Wählen wackelt der Pin auch
noch.
Jörg Schumann schrieb:> an Grün ist ein Kontakt der gegen Masse schließt bei der Betätigung der> Wählscheibe.
Der ist der richtige, um das Ganze in Gang zu setzen.
Entweder vertauscht du beiden Anschlüssen und wertest die Wählimpulse an
PB0 aus oder du guckst dir mal den Pin-Change-Interrupt an und weckst
den Controller über PB0 auf.
Und wenn PB0 1 ist, legst du ihn wieder schlafen. Da musst du keine 3
Minuten warten.
mfg.
So jetzt geht er nach 3min schlafen (ca. 100µA Verbrauch)
und weckt bei Betätigung wieder auf (ca. 830µA Verbrauch)
habe den Code nochmal raufgeladen, falls da noch was unfeines und
falsches zu sehen ist wäre ich für Hinweise dankbar, da ich nun halt
noch am lernen bin ^^.
Danke
@ Jörg Schumann (joschi1711)
>So jetzt geht er nach 3min schlafen (ca. 100µA Verbrauch)
Zuviel für PowerDown. Da zieht irgendwas noch Strom. Ein Pull-Up, der
auf Masse gezogen wird oder ein Eingang der offen ist ohne Pull-Up,
siehe Sleep Mode.
>und weckt bei Betätigung wieder auf (ca. 830µA Verbrauch)
Könnte passen.
MfG
Falk
Jörg Schumann schrieb:> Ja der Zählschalter der Wählscheibe an INT0 liegt in Ruhe auf Masse.> Nur wie soll mann das umgehen?
Wenn ich das richtig verstanden habe, brauchst Du den nsi
(Impulskontakt) ja nicht, während der Controller im Sleep-Mode ist. Also
kannst Du den Pull-Up des Portpins auch abschalten. Nach dem Aufwecken
mit dem nsa (Arbeitskontakt) schaltest Du dann den Pull-Up wieder dazu.
Wird das eine Geocaching-Station? Im grünen Forum geht's derzeit auch um
Wählscheiben.
ja richtig, es wird eine Geocaching-Station ^^.
Na das wird mir dann echt kompliziert^^ das ganze quasi so stricken, das
im sleep-mode der INT0 deaktiviert ist...
na mal schaun, ob ich das hinbekomme.
Was ist das grüne Forum?
Würde mich da auch mal umschaun.
Jörg Schumann schrieb:> sehe ich das richtig, das ich den PullUp an PB1 mitPORTB |= (0 << PB1);> deaktiviere?
Nö.
PORTB &= ~(1<<PB1);
> nur wo packe ich das hin, wenn es im SleepMode den PullUp deaktivieren> soll?
Direkt vor deine Befehlssequenz zur Einleitung des SleepModes.
Danke dir Magnetus...
PullUp Schaltet nun ab und die ganze Geschicht zeigt jetzt 0,1µA im
Ruhezustand.
Leider scheint es den PullUp jetzt nicht sofort nach dem Wecken wieder
anzuschalten.
Jörg Schumann schrieb:> nur wo packe ich das hin, wenn es im SleepMode den PullUp deaktivieren> soll?
Ohne High-Pegel wirds nichts mit dem Sleep, Du wachst sofort wieder auf.
Peter
@peda>
Also der weckt nicht sofort wieder auf, laut Messgerät fällt er nach
3min auf 0,1µA und steht dort solange, bis ich die Wählscheibe bewege.
Nur eben Scheint der PullUp nicht wieder anzuschalten, da beim ersten
Wählen der richtigen Zahlen nichts passiert, erst beim zweiten Versuch.
Jörg Schumann schrieb:> ja richtig, es wird eine Geocaching-Station ^^.
Wahrscheinlich nicht im Münchner Raum, sonst hätte ich mich schon mal
gefreut :-)
Jörg Schumann schrieb:> Na das wird mir dann echt kompliziert^^ das ganze quasi so stricken, das> im sleep-mode der INT0 deaktiviert ist...
Irgendwie habe ich den Verdacht, dass Du die beiden Kontakte genau
verkehrt herum verwendest. Es sind ja zwei Kontakte: Der eine (nsa)
schließt, wenn man die Wählscheibe aufzieht, und öffnet, wenn die
Wählscheibe wieder im Ausgangszustand ist. Der zweite Kontakt (nsi)
pulst so oft, wie man an der Wählscheibe gewählt hat. Den ersten Kontakt
musst Du zum Aufwecken nehmen, am zweiten Kontakt musst Du die Impulse
zählen. Weil der nsa ein Schließer ist (d. h. im Ruhezustand offen),
fließt im Ruhezustand auch kein Strom. Den nsi kannst Du hochohmig
machen, wenn der Controller im Ruhezustand ist, damit kein Strom fließt.
> na mal schaun, ob ich das hinbekomme.
Bestimmt.
> Was ist das grüne Forum?> Würde mich da auch mal umschaun.
Schau mal hier: http://www.geoclub.de/viewtopic.php?f=57&t=60705
>> Wahrscheinlich nicht im Münchner Raum, sonst hätte ich mich schon mal> gefreut :-)
im Dresdner Umland
>>> Irgendwie habe ich den Verdacht, dass Du die beiden Kontakte genau> verkehrt herum verwendest. Es sind ja zwei Kontakte: Der eine (nsa)> schließt, wenn man die Wählscheibe aufzieht, und öffnet, wenn die> Wählscheibe wieder im Ausgangszustand ist. Der zweite Kontakt (nsi)> pulst so oft, wie man an der Wählscheibe gewählt hat. Den ersten Kontakt> musst Du zum Aufwecken nehmen, am zweiten Kontakt musst Du die Impulse> zählen. Weil der nsa ein Schließer ist (d. h. im Ruhezustand offen),> fließt im Ruhezustand auch kein Strom. Den nsi kannst Du hochohmig> machen, wenn der Controller im Ruhezustand ist, damit kein Strom fließt.
Also die Kontakte sind schon richtig angeschlossen, sonst würde der
Kleine ja bei richtigem Wählvorgang nicht auslösen, das tut er ja aber.
mir geht es jetzt nur noch darum, im Ruhezustand den Stromverbrauch des
PullUps am NSI also PB1 durch dessen Deaktivierung abzuwenden (mit
PullUp 100µA ohne 0,1µA).
das funktioniert ja soweit, nur eben aktiviert es den PullUp nicht
sofort nach dem Wecken wieder.
> Schau mal hier: http://www.geoclub.de/viewtopic.php?f=57&t=60705
dort habe ich schonmal reingeschaut, aber irgendwie haben die Jungs dort
größere Probleme.
Ich betreibe auch kein Soundmodul, sonder eine Segmentanzeige mit Koos.
Jörg Schumann schrieb:>> Wahrscheinlich nicht im Münchner Raum, sonst hätte ich mich schon mal>> gefreut :-)> im Dresdner Umland
Schade :-(
Jörg Schumann schrieb:> das funktioniert ja soweit, nur eben aktiviert es den PullUp nicht> sofort nach dem Wecken wieder.
Wenn Du vor dem "sleep" den Pullup ausschaltest:
1
PORTB&=~(1<<PB1);
dann musst Du ihn nach dem "sleep" wieder dazuschalten:
1
PORTB|=(1<<PB1);
>> Schau mal hier: http://www.geoclub.de/viewtopic.php?f=57&t=60705> dort habe ich schonmal reingeschaut, aber irgendwie haben die Jungs dort> größere Probleme.> Ich betreibe auch kein Soundmodul, sonder eine Segmentanzeige mit Koos.
Ach so. In Deinem Plan (ganz am Anfang) steht "Sprachmodul", deshalb
habe ich auch gleich auf Geocaching getippt. :-)
>> im Dresdner Umland>> Schade :-(
nunja... Cacherurlaub in unserer Gengend lohnt sich immer, da gibts
einige gute Caches.
> Wenn Du vor dem "sleep" den Pullup ausschaltest:>
1
>PORTB&=~(1<<PB1);
2
>
> dann musst Du ihn nach dem "sleep" wieder dazuschalten:>
1
>PORTB|=(1<<PB1);
2
>
ja nur was ist nach dem Sleep^^
hab das nun schon probiert aber nix geht...
>> Ach so. In Deinem Plan (ganz am Anfang) steht "Sprachmodul", deshalb> habe ich auch gleich auf Geocaching getippt. :-)
ja ist ein Plan von nem Bekannten Cacher ^^
Hallo,
ich habe versucht den Quellcode nachzuvollziehen und bin über zwei Dinge
gestolpert:
Im Kommentar des Quellcodes steht PORTD2 für INT0, aber ich denke es ist
eher PORTB0 gemeint.
Und den Timer verstehe ich nicht ganz: Bei einem Systemtakt von 1 MHz
und einem Prescaler von 64 sind nach 10000 Inkrementen in der
Interrupt-Routine doch erst 0,64s vergangen?! Wie kommst du auf 3
Minuten?
Muss hier leider nochmal nachfragen...
Jetzt läuft das ganze fest, wenn ich eine falsche Zahlenkombi wähle,
oder falsche Anzahl an Zahlen wähle. der ganze Spass springt nicht mehr
zurück.
woran kann das nun wieder liegen?