www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Strings dauerhaft speichern


Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte ein paar strings dauerhaft abspeichern.
will heißen, wenn ich mein STK300(ATMega103) ausschalte, und dann wieder 
einschalte, sollen die strings immernoch im speicher sein.

ich arbeite mit CodeVision.
bis jetzt habe ich strings immer so deklariert

unsigned char string[10];

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenn mich mit CodeVision nicht aus - aber den String einfach im EEprom 
ablegen und beim Start wieder auslesen.

Grüße
Steffen

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke erstmal.

aber na ja, hab ich noch nie gemacht.
wie geht das?

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh, ich hab glaub ich schon was gefunden.
einfach "eeprom" vor die variable schreiben

eeprom unsigned char string[10];

gleich mal testen.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt, kenn mich mit CodeVision nicht aus, aber ich denke, dass ist 
die einfachste Lösung sowas zu realisieren. Musst halt nur noch 
beachten, dass ein EEPROM je nach Typ des uC nur 10000 oder 100000 Mal 
beschrieben werden kann. Je nachdem, wozu du das Speichern der Variablen 
brauchst und wie oft das Gerät nachher ein und ausgeschaltet werden 
soll.

Eine gute Möglichkeit wäre (hab ich hier vor kurzem gelesen und find ich 
gut) den uC mit einem großen Elko zu blocken und nur die Variable in den 
EEPROM zu sichern, wenn der Strom ausfällt. Dazu reicht dann die Energie 
des Elkos noch (dauret nur ein paar ms).

Grüße
Steffen

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt es eigentlich auch andere möglich keiten, außer den eeprom zu 
benutzen?

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, mir fällt gerade noch ein batteriegepufferter RAM ein. Du kannst den 
Flash nehmen (was aber viel ungünstiger ist, weil der sich nur etwa 1000 
Mal beschreiben lässt).

EEPROM ist schon am besten, weil der schon direkt mit im uC drin ist 
(nehm ich mal an).
Am besten du schriebst Mal um was für Daten es sich handelt, die nicht 
verloren gehen dürfen. Dann kann ich dir vielleicht mehr dazu sagen.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich meine, das ding, was ich basteln soll, soll ganz ganz viele jahre 
funktionieren. und ich müsste vielleicht 10 stings mit rund 100 zeichen 
abspeichern, die halt nach einen stromausfall wieder da sein sollen.
die strings werden öfters einmal geändert, manchmal täglich.

ich mein 100.000 mal beschreiben ist sicherlich nicht wenig, aber so 
etwas entgültiges berschert mir schon kopfzerbrechen. in 50 jahren kann 
viel passieren.
und ich müsst ja noch ein bisschen mit rumexperimentieren.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibts nicht was, was man öfters mal leicht und bequem wechseln könnte. 
irgend so ein externer speicher zum draufstecken?

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also wenn es sich nur um Stromausfall handelt würde ich folgendes 
Vorschlagen.

Du verwendest normale Variablen (also im RAM). An die Stromversorgung 
des uC hängst du einen Elko hin und einen Portpin hängst du vor den 
Elko. Bricht die Spannung zusammen (Stromausfall) registriert dies der 
uC und schreibt mit Hilfe der Energie des Elkos die Strings in den 
Eeprom. Und es wird ja nicht jeden Tag mehrere Stromausfälle geben. 
Wichtig ist nur, dass der Elko lang genug Energie liefert, damit der uC 
noch alles abspeichern kann.

Die Alternative wäre dann der batteriegepufferte RAM. Funktioniert wie 
ein normaler SRAM und die Daten bleiben dank interner Batterie laut 
Hersteller über 10 Jahre erhalten. Den kannst du so oft beschreiben wie 
du willst. Nur dazu musst du dann eben die Ansteuerung implementieren.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar, du kannst auch einen externen EEPROM verwenden. Zum Beispiel 
einen, der über I2C anzusteueren ist oder seriell. Das geht natürlich 
auch. Aber ich denke, es wäre besser etwas zu nehmen, dass nicht 
ausgetauscht werden muss. (Die Möglichkeit, dass es verreckt besteht ja 
trotzdem).

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, ich werds wohl mitdem eeprom machen, und bei stromausfall sichern, 
hab gerade mit dem verantwortlichen telefoniert.
100000 mal dürfte definitv reichen ;)

ich kuck nun also nach einem ELKO, der ein paar ms lang den strom hält.

aber die stromversorgung. das ist doch 12 Volt wechselspannung. wie mach 
ich die an ein portpin, welcher doch high 3,3 volt gleichspannung haben 
will?

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst ja sowieso erst die 12V gleichrichten und anschließend auf 3,3 
V runterprügeln. und nach diesen 3,3V würde ich den Elko ransetzen und 
davor die Spannung für den Protpin abzweigen und zwischen V+ des 
Spannungsreglers und der Anode des Elkos noch ne Diode vorsehen und die 
Spannung für den Protpin vor (!!) der Diode abnehmen, sonst würde ja der 
Elko den Protpin die Spannung geben und dieser erst Stromausfall melden, 
wenns schon zu spät is. Wenn willst, kann ich dir nen kleinen Schaltplan 
online stellen.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das wäre echt net, dann kann ich bestimmt auch besser rausfinden, wo der 
elko hinmuss.
da ich doch so ein vorgefertigtes STK300 benutze, und kein plan hab, was 
da wo drauf steckt.
hab quasi noch nie was selber zusammengelötet, außer meine 2 DTMF 
erkennungen, von denen eine nicht funktioniert.

Autor: Steffen Burr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So, im Attachment ist jetzt Mal die Schlatung. Ist zwar für 5 V aber 
wenn du den entsprechenden Spannungsregler verwendest wird das auch mit 
3,3 V funktionieren.
Die 12 V musst du erst Mal über nen Brückengleichrichter gleichrichten 
und anschließend mit einem Kondensator glätten. Am besten ausprobieren 
und mit Oszilloskop überprüfen.

Ob du das so aber auf deinem STK300 machen kannst weiß ich leider nicht. 
Ich hab das Teil nicht und glaub auch nicht, dass man da einfach 
irgendwo nen ELKO reinstecken kann und dann gehts.

Da du ja später das Teil auch ohne STK laufen lassen willst empfehle ich 
dir ein Steckbrett, mit dem solche Schaltungen super einfach auzubauen 
sind und anschließend die Schaltung (wenn alles funktioniert) entweder 
auf einer Lochrasterplatine oder auf einer selbst geätzten Platine 
aufbauen.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der STK soll gleich so mit reinkommen, ist nicht meiner, hab ich für die 
aufgabe bekommen.

aber ich könnte ja bestimmt so eine art weiche für mein netzteil bauen.
eine kleine platine, wo ich die schaltung mit dem ELKO aufbaue, und das 
netzteil anstecke, und von dort aus aber auch gleich die 12 Volt an die 
spannungsversorgung des STK weiterleide.
so stecker und buchsen gibts ja bestimmt.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du vielleicht das STK gleich mit diesen 3,3 V betreiben, dann 
wärs kein Problem.

VEILLEICHT JEMAND DA, DER SICH MIT DEM STK 300 AUSKENNT?

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich glaub der wird mit 5 volt betrieben, nur der ausgangspegel, wenn ich 
ein port high schalte, ist 3,3.
ich denke, mit der weiche wird schon so funktionieren.
den STK kann ich bestimmt nicht gleich mit 3,3 volt betreiben, da könnt 
ich auch gleich den elko zwischen löten ;)

übrigens seh ich die schaltung auch grad im tutorial hier.
trotzdem danke für die mühe.

nein nein, ich werds mit so ner weiche machen. is ja kein großer 
aufwand, und am ende ist alles sauber und haltbar verlötet.

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also, ich dank dir für die schnelle und ausführliche hilfe Steffen.
ich bin mit der lösung so ganz zufrieden.
das wird schon funktionieren.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Schaltung im Tutorial enthält aber nicht das, was ich dir zeigen 
wollte. Das mit den 3,3 V war Blödsinn, hab gar nicht gelesen, was für 
nen uC du verwendest.

Wie genau willst du das jetzt machen?

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab gern geholfen!

Viele Grüße
Steffen

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach verdammt, riesen denkfehler meinerseits. so gehts ja garnicht.

hast recht, ich muss mit den 5 volt dann direkt ran.

na da werd ich einfach die stromversorgung neu aufbauen, nach deiner 
schaltung, mit dem großen elko drin, und der leitung zu einem portpin.

dann schau ich wo die stromversorgung auf dem STK ist. löt die raus, daß 
ich platz habe für die 5 Volt von der shaltung, und fertig.

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau, wenns nicht drauf passt einfach ne Lochrasterplatine nehmen, da 
drauflöten, von STK alle Stromversorgungsteile runter löten und dann die 
Spannung da drauf geben, vo vorher beim STK die Spannung war (also 
hinterm Spannungsregler).

Habs übrigens grade ausprobiert ne 12V Wechselspannung zu glätten. 
Einfach nen Brückengleichrichter nehmen, und danach nen 
Keramikkondensator mit ca 47 uF parallel schalten. Hat bei mir sehr gut 
funktioiert. Die Spannung bleibt bis auf 400 mV geglättet. Wenn ne 
stärkere Glättung brauchst einfach nen größeren Kerko nehmen.

So, jetzt bin ich auch zufrieden. So funktioniert das bestimmt!

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
alles klar, ich denke, wenn jemand mal das gleiche problem hat, ist das 
ein nützlicher thread! :)

ich verabschiede mich
und danke

Dieter

Autor: Steffen Burr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Problem!

Viele Grüße
Steffen

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.