mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Lesen und Schreiben des EEprom bei Atmega8


Autor: Bastian Teichmann (bastianue)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich habe mir auf der Seite von Stegem (www.stegem.de)

den Selbsbaulötkolben nachgebaut, wenn ich das fertige Programm in den
Atmega8 einspiele hab ich aber das Problem das die eingestellte 
Temperatur nicht gespeichert wird, ich hab das jetzt mal darauf zurück 
geführt das nicht auf den EEprom geschrieben/gelesen werden kann!

gibt es in dem AvrStudio eine einstellung die ich machen muss um den 
EEprom
benutzen zu können ?

das Programm liegt auf der Webseite von "stegem"
http://stegem.de/Elektronik/Loetkolben/c-programm.txt

MFG Bastian

Autor: Frankl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Brauchst nur in der Simulation im "Memory" "EPROM" anwählen und dort 
kannst du den sehen ob das Programm falls richtig stimuliert dort etwas 
reinschreibt.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>gibt es in dem AvrStudio eine einstellung die ich machen muss um den
>EEprom
>benutzen zu können ?

Nein.

Brown-Out-Fuse aktiviert?

Oliver

Autor: Bastian_UE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja hab ich aktiviert, aber wenn ich im Simulator in den EEprom schaue 
sieht es gut aus, da liegt was drinne

wenn ich das programm in den Atmega8 überspiele dann greift er nicht auf 
den EEprom zu, das merk ich daran das ein wert der sonnst gesetzt werden 
soll, nicht auf dem Display erscheint
#include <avr/io.h>
#include <avr/interrupt.h>
#include <stdlib.h>
#include <stdint.h>
#include <Stdio.h>
#include <avr/eeprom.h>
#include "BinaryNr.h"
#include "lcd.h"


#define F_CPU            1000000    // Interner Takt 1MHz
#define Prescaler 1024;             // Timer 1 Vorteiler
#define startwert 65537-F_CPU/Prescaler; //Zähler Startwert, Überlauf bei 65536

#define u8 unsigned char
#define u16 unsigned int

/* Variablen */
char s[4];                          // Hilfsvariable  
u16 adWert;                         // AD-Wert 
u16 Tist;                           // IstTemperatur 
u16 Tsoll;                          // Solltemperatur 
u16 eeFooWord EEMEM = 280;          // EEprom Speicher

deklariert ist der EEMEM ja, oder ist das so nicht richtig

/* Unterprogramme */

//lies den Temperatur-Startwert aus EEPROM
int Lese_Starttemp(void){
  u16 startTemp;
  startTemp = eeprom_read_word(&eeFooWord); // lese aus EEPROM in startTemp
  if (startTemp==0){
    startTemp=280;
  }   
  return startTemp; 
}

//schreibe den Temperatur-Tsoll ins EEPROM
void Schreibe_Startemp(u16 wert){
   eeprom_write_word(&eeFooWord, wert); // schreibe in EEPROM
}

und in den beiden unterprogrammen wird das Schreiben und lesen des 
EEprom ja auch aufgerufen, ist das so richtig, oder sieht jemand einen 
fehler ?

hab jetzt nur nen paar zeilen kopiert, der link zum quelltext steht ja 
schon ganz oben im thread

MFG Bastian

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>das merk ich daran das ein wert der sonnst gesetzt werden
>soll, nicht auf dem Display erscheint

Daran kannst du eigentlich nur feststellen, daß nichts auf dem Display 
erscheint.

Lies doch mal das eeprom aus, und schau nach, ob da was drinsteht.

Beitrag "AVRDUDE Eeprom auslesen"

Oliver

Autor: Bastian_UE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich muss sagen das ich relativ neu in der ganzen Materie bin,

ich hab hier das AVR studio in der neusten version installiert, sowie 
das WinAVR, der zugriff auf den Controller wird mit einem STK500 adapter 
USB/ISP hergestellt

MFG Bastian

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann probiers mal mit AVRProg. Das steckt irgendwo in den Menus. Damit 
sollte man auch auslesen können.

Oliver

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Will man EEP-Zugriffe im Simulator beobachten, dann muss man die 
EEP-Datei auch in den Sim-Speicher laden, das macht AVR-Studio leider 
nicht von selbst.

EEP auslesen mit AVR-Studio und STK500 ist kein Problem, ist in der 
Oberfläche zum Flashen enthalten, der Dialog befindet sich einen Frame 
tiefer, also direkt unter dem Dialog für die Flash-Datei.

...

Autor: Bastian_UE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK ich hab es gefunden,

hab dann mit den mir zur verfügung stehenden tastern den wert geändert, 
beim auslesen das EEprom danach ist eine veränderung zu sehen, also 
schreibt das Programm in den EEprom

also muss der fehler im Programm liegen, wenn ich das jetzt richtig 
verstanden habe ist es so das wenn das Programm startet und im EEprom 
nix findet dann den Wert auf 280 setzt und diesen speichert.

doch wenn ich das Programm starte hab ich immer das Problem das der wert 
welcher dann 280 sein sollte immer -1 ist und dies wird mir auch auf dem 
display ausgegeben

MFG Bastian

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>doch wenn ich das Programm starte hab ich immer das Problem das der wert
>welcher dann 280 sein sollte immer -1 ist und dies wird mir auch auf dem
>display ausgegeben

Der Fehler ist uralt, und der Effekt bekannt. Und damit sind wir wieder 
bei Frage 1:

BROWN-OUT-FUSE gesetzt?

Oliver

Autor: Bastian_UE (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe im Avr-Studio unter Fuses DODLEVEL auf 4,0V gestellt

und auch einen Haken bei BODEN gesetzt, ich habe leider immer wieder 
probleme das mein Programmer den ATmega mal mehr mal weniger erkennt,

kann es daran liegen das ich bis jetzt noch kein richtiges ergebniss 
bekomme und die Fuses nicht richtig gesetzt werden

MFG Bastian

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch die Fuses kann man auslesen...

Oliver

Autor: Knut Ballhause (Firma: TravelRec.) (travelrec) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast Du auch die EESave-Fuse programmiert? Ansonsten wird das EEPROM bei 
jedem Programmiervorgang gelöscht.

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.