Moin, kann ich beim Attiny2313 den Zustand von PORTB im eeprom
speichern, damit wenn ich ihn aus- und wiedereinschalte, der Zustand an
den Pins gleichbleibt. Ich hab einfach Taster an PORTD hängen, die ich
per Software entprellt habe und dann auf PORTB ausgegeben werden.
Ich möchte aber gerne den Zustand gespeichert haben, wenn ich den Strom
abschalte.
Ist das so ohne Weiteres möglich?
Gruß stefan
@Feissy, @Daniel
Das geht eine gewisse Zeit gut, aber dann ????
1
–128BytesIn-SystemProgrammableEEPROM
2
Endurance:100,000Write/EraseCycles
Besser: VCC mit Diode Entkoppeln und mit "großem" Elko
buffern, Spannung vor Diode abfragen und bei Spannung aus
Zustand speicher (keine Verbraucher mit durchfüttern z.B.LEDs).
avr
avr schrieb:
> @Feissy, @Daniel>> Das geht eine gewisse Zeit gut, aber dann ????
Die Frage ist: Was ist eine gewisse Zeit?
Da der TO da Taster drann hängen hat, kann man mit großer
Wahrscheinlichkeit davon ausgehen, dass dieser Taster nicht alle 2
Sekunden, 24 Stunden am Tag, 7 Tage die Woche betätigt wird.
Wenn er jede halbe Stunde einen Taster betätigt, 24-7, reicht das
immerhin für ~2080 Tage oder rund 5.5 Jahre
Wenn er dann noch in der Nacht schläft anstatt auf den Taster zu
drücken, sind wir bei 10 Jahren ....
.... bis die garantierte Nutzungsdauer abgelaufen ist. Was ja nicht
automatisch heißt, dass das EEPROM mit dem 100001 Schreibzugriff
ausfällt.
Will man auf Nummer sicher gehen, kann man ja immer noch die Anzahl der
bisherigen Schreibzyklen im EEPROM selbst vermerken (als uint16_t) und
bei Bedarf auf die nächsten 3 Bytes ausweichen, 128/3 = ~42, womit wir
bei 420 Jahren wären, wenn die angenommene Nutzungsgewohnheits-Schätzung
halbwegs zutreffend ist.
@Karl heinz
Das stimmt, aber wenn er in der Main/while(1) einfach
immer speichert (evtl. sogar ohne Zeitfenster) dann geht es
340 Sekunden und die Grenze ist erreicht.
Ich wollte nur zur Vorsicht mahnen!
avr
avr schrieb:
> @Karl heinz>> Das stimmt, aber wenn er in der Main/while(1) einfach> immer speichert (evtl. sogar ohne Zeitfenster) dann geht es> 340 Sekunden und die Grenze ist erreicht.
Das da oben war ja auch nur ein Codefragment, welches den Zugriff auf
das EEPROM zeigt. Da fehlt doch das meiste, zb die Hauptschleife, die
Tastenauswertung, das eigentliche Portsetzen, etc. Ich gehe schon davon
aus, dass der TO so schlau ist, den Zustand am Port nur dann neu zu
setzen bzw. im EEPROM zu verändern, wenn sich der Zustand auch geändert
hat.
Ok also wenn der es nur 2 jahre tut reicht vollkommen dann gibts eben
einen neuen Attiny. ;-) danke für die Antworten.
Aber wo genau muss ich diese Funktion einfügen??
In der for schleife ??? Hier ist mein Code aber so funzt das nich so
ganz.
1
#include<avr/io.h>
2
#include<inttypes.h>
3
#include<stdint.h> //Variablen
4
#include<avr/eeprom.h> //EEPROM
5
#include<util/delay.h>
6
7
uint8_tfooEEMEM=0;
8
9
/* Einfache Funktion zum Entprellen eines Tasters */