mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega-8, ein/ausschalten nur per Reset.pin?


Autor: nachdenklicher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: oldmax (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd M. (bernd_m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
100000 Schreibzyklen pro EEPROM Zelle.

Gruss
Bernd

Autor: aaaa (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: nachdenklicher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das geht dabei um das Löschen. Auslesen kann man das so oft wie man 
will.

mfg.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Das musst du für diese
>
> "Merkzelle" umgehen; wie das geht, sagt dir die Dokumentation deines
>
> C-Entwicklungssystems.

Das ist aber sicherlich die komplizierteste Variante.

mfg.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Eckmann schrieb:

>> "Merkzelle" umgehen; wie das geht, sagt dir die Dokumentation deines
>>
>> C-Entwicklungssystems.
>
> Das ist aber sicherlich die komplizierteste Variante.

Allemal weniger kompliziert als die mit dem EEPROM, zumal ein
Reset während des EEPROM-Programmierens tödlich ist für die
programmierte Zelle.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Reset während des EEPROM-Programmierens tödlich ist für die
>
> programmierte Zelle.

Das ist allerdings richtig.

mfg.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Eckmann schrieb:
> Jörg Wunsch schrieb:
>
>> Reset während des EEPROM-Programmierens tödlich ist für die
>
>>
>
>> programmierte Zelle.
>
>
>
> Das ist allerdings richtig.
>
>
>
> mfg.

Allerdings kann man das E²PROM auch gleich beim Programmstart toggeln.

mfg.

Autor: nachdenklicher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Eckmann schrieb:

> Allerdings kann man das E²PROM auch gleich beim Programmstart toggeln.

Das verhindert trotzdem nicht, dass der ungeschickte Nutzer (man muss
ja immer mit dem schlimmsten rechnen ;-) nicht in diesem Moment erneut
Reset drückt.

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Thomas Eckmann schrieb:
>
>> Allerdings kann man das E²PROM auch gleich beim Programmstart toggeln.
>
> Das verhindert trotzdem nicht, dass der ungeschickte Nutzer (man muss
> ja immer mit dem schlimmsten rechnen ;-) nicht in diesem Moment erneut
> Reset drückt.

An solche Trottel denke immer erst dann wenn es zu spät ist.


mfg.

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas Eckmann schrieb:
> An solche Trottel denke immer erst dann wenn es zu spät ist.

naja, schon wenn die Taste prellt hat man verloren.

Autor: bzt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was würde denn mit der zelle passieren wenn während des schreibens ein 
reset kommt? mehr als corrupted kanns ja ned werden oder

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und warum nicht einfach ein delay? z.B. 1s nach Loslassen der Taste und 
dann erst im EEPROM spielen...

Autor: Marcel Papst (phpmysqlfreak)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobi schrieb:
> Und warum nicht einfach ein delay? z.B. 1s nach Loslassen der Taste und
> dann erst im EEPROM spielen...

Und dann drückt der Benutzer in gerade diesem Moment wieder die 
"Reset"-Taste. ;)

Autor: Thomas Eckmann (Firma: Thomas Eckmann Informationst.) (thomase)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marcel Papst schrieb:
> Und dann drückt der Benutzer in gerade diesem Moment wieder die
>
> "Reset"-Taste. ;)

Dann kriegt der ein paar auf die Schnauze...

Irgendwann muß man ja mal riskieren, das E²PROM zu benutzen.

mfg.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.