www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8 Bascom Eeprom


Autor: Pascal H. (pase-h)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
Ich hab wieder mal ein Problem:
Ich wolle, dass der Compare1a Wert und ein byte in den Eeprom 
gespeichert werden.Dies Funktioniert ja mit writeeeprom Compare1a , X 
(für's Byte)
Wenn ich dann aber beim Neustert den Eeprom Abfragen will mit
Readeeprom Compare1a , X dann passiert nichts, doch laut Code sollte er 
einen Programmteil überspringen.
Nun Meine Frage:
Wie Schreibe ich sachen ins Eeprom? Und WIe kann ich diese Daten beim 
nächsten Start wieder auslesen, und benutzen? Meine Methode Funktioniert 
ja nicht! - Code im Anhang
Schonmal Danke Im Vorraus - Brauche dringend Hilfe!

Autor: Pascal H. (pase-h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir hier niemand helfen? Ich hätte schon gedacht, dass das Möglich 
ist. Oder hier will mir einfach keiner Helfen!

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pascal Haury schrieb:
> Kann mir hier niemand helfen? Ich hätte schon gedacht, dass das Möglich
> ist. Oder hier will mir einfach keiner Helfen!

Ein bischen mehr Eigeneinsatz wäre schon angebracht ;-).

Programmiere doch einfach mal einen 2 Zeile, in dem du schreibst und 
liest.
Natürlich funktioniert das mit Bascom, dann kann der Fehler doch nur auf 
Deiner Seite sein !

 Fusebits korrekt ?, Controller korrekt gesetzt ?????,

Autor: Pascal H. (pase-h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fusebits sind nur auf Externen 8Mhz Quarz gesetzt. Sonst nichts 
geändert.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn das für ein Programm ???
Ich zähle insgesamt 5 "DO ... LOOP" -Schleifen. Das ist meines Wissens 
nicht erlaubt; es darf nur eine Haupt-Schleife geben. Unter-Routinen 
sollte man als "Sub" oder "Function" deklarieren. Aber man springt 
keinesfalls bei Menü- Abfragen von einer "DO ... LOOP" Schleife in eine 
andere.
(Unter C hat man ja auch nur einen "main"-Programmblock, nicht 5 ...)

Ausserdem wird ein Programm besser lesbar, wenn man die Zeilen nach 
Kommandos einrückt ...

Zu der Frage nach dem EEPROM:

Die Routinen "Readeeprom ..." und "Writeeeprom ..." haben als letzten 
Wert einen Index (bei Dir "X"), der die Speicherstelle im EEPROM 
darstellt. Diese muss beim Schreiben und späteren Lesen GLEICH sein, 
sonst kann das nicht klappen. Das scheint bei Dir nicht der Fall zu sein 
(Einmal ist X=0 und einmal X=2).

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und ganz besonders durchdacht: das Writeeprom in eine Schleife zu 
setzen, damit können die maximal 100000 Schreibzyklen in kürzester Zeit 
erreicht werden :D

Autor: Heiko B. (dh2faa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ein gut gemeinter Tip:

ich würde an Deiner Stelle den Code gründlich überarbeiten.
Er sieht nicht nur sehr unstrukturiert aus, sondern
ist auch nicht ganz optimal was das eepromhandling angeht.

Bsp: Codeausschnitt
:
:
Do
Writeeeprom Compare1a , X

If Pinc.2 = 1 Then Gosub Incra

If Pinc.5 = 1 Then Gosub Cud
Loop
:
:
In der Schleife wird jedesmal das eeprom geschrieben,
damit kommst Du in kürzester Zeit an die Abnutzungsgrenze
des eeproms.

Besser und auch schneller wäre es den Wert um RAM zu puffern,
und in bestimmten Intervallen den Wert im eeprom zu persistieren.

Und noch ein Tip, bei strukturierter Programmierung braucht man keine 
gotos und es erleichtert die Lesbarkeit.

Gruß
Heiko
www.dh2faa.de

Autor: D. S. (jasmin)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein EEprom wird schon im Elektrohimmel sein.
Dein Code ist , sorry, Kappes.

Fang mit 2 Zeilen an ;-).

Autor: Pascal H. (pase-h)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ja ok....
Ich geb ja zu dass es kein perfekter Programmierstil ist, aber Es 
Funktioniert jetzt mit meinem überarbeiteten code. Und das ist die 
Haiptsache, dass der Code funktioniert!

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.