Atmega-8, ein/ausschalten nur per Reset.pin?

Gast #2087468
Lesenswert?

Hallo zusammen,

Folgendes Problem/Überlegung zu dem ich gerne Eure Meinung hören würde:

-Ein batt.betriebenes Gerät mit MEGA-8.
-Auf einer Folientastatur ist noch 1 Taste frei,
 das Gerät soll über diese Taste ein/ausgeschaltet werden.
-Am AVR KEIN Portpin mehr verfügbar.

Idee:
Die Taste wird an den RESET des AVR gelegt.
In einem Bit im EEPROM speichere ich den aktuellen Zustand (an/aus) ab.
Bei jedem Reset (software-entprellt oder auch per rc-glied nur ein 
impuls) wird das an/aus-Bit getoggelt und der AVR geht dann nach dem 
Reset eben entweder in den Betrieb oder den Powerdown-Modus.

So könnte ich bei jedem Tastendruck abwechselnd EIN/AUS schalten.
Kann das so in dieser Art bzw. mit diesem Ansatz klappen?

Gruss
Joe
Gast #2087510
Lesenswert?

Hi
Solange du dies nicht öftes wie 100000x machst.
Der EEprom unterliegt einem "Verschleiß" und es sind soweit ich weiß, 
nur 100000 schreibzyklen garantiert. Aber ich denke, das es schon damit 
gehen wird. Mußt diese Routine in den Initialisierungsbereich legen, 
also nicht in die Programmschleife.
Gruß oldmax
Gast #2087561
Lesenswert?

Reset als normalen IO-Pin definieren per Fuse (ACHTUNG: DANN KANNST DU 
MIT NORMALEN PROGRAMMERN NICHT MEHR PROGGEN!)

du kannst du µC dann in den Power-Down Modus oder so setzen. Musst 
schaunw as passt
#2087592
Lesenswert?

aaaa schrieb:
> du kannst du µC dann in den Power-Down Modus oder so setzen. Musst
>
> schaunw as passt

Und wie soll er da wieder raus kommen? Mit der Taste an jetzt PC6 wird 
das nichts.

Das mit Reset und dem Toggle im E²Prom ist schon OK.

Und um die 100000 Löschzyklen braucht man sich keine Gedanken machen. 
Das dauert so lange, da geht vorher was anderes kaputt. Und für ein 
Raumschiff ist das auch nicht.


mfg.
Gast #2087688
Lesenswert?

Ok, also das hilft schonmal, danke.
Ist wirklich nicht für ein Raumschiff, und mit 100k Zyklen
lebt das Dingt stat. wirklich 15 Jahre..

Trotzdem noch eine Nachfrage wegen der max. EEProm-Schreibzyklen,
wie ist die Angabe eigentlich zu verstehen?

Wenn ich einen Wert schreibe, der SCHON DRIN steht,
also zwar schreibe, aber nichts ändere, wird das auch angerechnet?

Wenn ich ein Byte auslese, EIN BIT ändere und zurückschreibe,
wird dann auch die Lebendauer der restlichen Bits tangiert?
(Gleiche Frage wie oben, nur etwas konkreter)

Nur mal so zur Vermehrung meines Wissens...

Joe
Moderator Persönliche Seite #2087696
Lesenswert?

Ein RESET löscht den RAM-Inhalt nicht.  Du brauchst also gar keinen
EEPROM, um dir zu merken, aus welchem Zustand du kommst: das kannst
du prima im RAM machen.  Allerdings musst du natürlich sicherstellen,
dass bei einem Power-On-Reset der Zustand ordentlich initialisiert
wird.

Wenn du mit C arbeitest, dann werden dort die normalen Variablenbereiche
beim Start des Programms initialisert.  Das musst du für diese
"Merkzelle" umgehen; wie das geht, sagt dir die Dokumentation deines
C-Entwicklungssystems.
Gast #2087727
Lesenswert?

Jörg, Danke sehr.

Oh je, das die Zelle leidet, wenn ein Reset beim schreiben kommt, hatte 
ich garnicht bedacht. Und das ist ja im Betrieb kaum zu vermeiden.
Das ist also das KO für die Lösung über EEProm.

Werde es also im SRAM machen, was auch kein Prob ist, denn ich arbeite 
bei dem Projekt rein in Assembler.
Macht es sogar einfacher, es per SRAM zu machen.

Joe.

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