mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Daten auf EEPROM speichern


Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe ein Problem. Ich habe mir die anderen Beiträge zwar schon
angeschaut, aber irgendwie verstehe ich das trotzdem nicht.
Also:
Ich möchte ein Programm in C (CV AVR) erstellen, welches die Uhrzeit
und das Datum von einer Echtzeituhr holt (DS1302)und dann auf dem
EEPROM des ATmega8L speichert.
Die Uhrzeit und das Datum holen ist kein Problem. Aber wie speichere
ich diese Daten auf dem EEPROM und lese diese wieder aus.

Ih hoffe, ich nerve euch nicht.
Ich würde mich auf eine schnelle Antwort sehr freuen.

MfG
Christoph

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Das steht wirklich alles im Datenblatt, unter EEPROM. Genauer ausführen
kann man es wirklich nicht. Ich würde mal dort nachschauen.

Gruss

Michael

Autor: Thomas O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In CodeVision ist der Zugriff aufs EEPROM ziemlich einfach:

Du deklarierst eine (globale!) Variable (oder für Deine Anwendung ein
Array oder einen struct [ist für die Uhrzeit vielleicht das
sinnvollste]) mit der Speicherklassenangabe eeprom, z.B.:

eeprom struct
{
char stunde;
char minute;
char sekunde;
} uhrzeit;

Den Rest macht der Compiler automatisch beim Zugriff. Ich weiß nicht,
in welchem Format Deine RTC die Zeit ausgibt, aber das sollte zumindest
so ähnlich funktionieren.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmal,
ich bekomme jetzt immer die Fehlermeldung "must be Ivalue". (bin halt
Anfänger) die Uhrzeit bzw. das Datum bekomme ich durch den Befehl
 rtc_get_time(&hour,&min,&sec);
und
rtc_get_date(&date,&month,&year;
So steht es auf jeden Fall in der Gebrauchsanweisung.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte poste etwas mehr Code rund um die Zeile mit
der Fehlermeldung. Denk immer daran: Wir können Deinen
Code nicht sehen.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte die Uhrzeit und ds datum von der Ds1302 abfragen. das macht
man laut User Manual von CV AVR mit diesen beiden besfehle und sonst
nichts.
char hour,min,sec,date,month,year;
void main (void)
{
rtc_get_time(&hour,&min,&sec);
rtc_get_date(&date,&month,&year);
}
jetzt möchte ich die uhrzeit und das datum auf dem eeprom vom ATmega8L
speichern.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ne, is schon klar.

Aber wie hast Du jetzt Dein Minimalprogram veraendert
und welche Fehlermeldung erhälts Du in welcher Zeile?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bevor das jetzt ausartet:
Mit 'wie hast Du .... veraendert' meine ich:
Zeig doch mal den Code der nicht funktioniert.
Und zwar vollstaendig.

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich raste auf keinen fall aus. ich dachte, da meine idee bestimmt völlig
falsch ist, gibt es vielleicht eine ganz andere lösung. das wird jetzt
bestimmt einige zum lachen bringen.

#include <mega8.h>
#include <stdio.h>
#include <delay.h>
#include <stdlib.h>
#include <string.h>
// DS1302 Real Time Clock functions
#asm
   .equ __ds1302_port=0x18 ;PORTB
   .equ __ds1302_io=1
   .equ __ds1302_sclk=0
   .equ __ds1302_rst=7
#endasm
#include <ds1302.h

char hour,min,sec,date,month,year;
eeprom struct
        {
        int stunde;
        int minute;
        int sekunde;
        }eeprom uhrzeit;
eeprom struct
        {
        int tag;
        int monat;
        int jahr;
        }eeprom datum;
void main(void)
{
// DS1302 Real Time Clock initialization
// Trickle charger: On
// Trickle charge resistor: 8K
// Trickle charge diode(s): 1
rtc_init(1,1,3);
ds1302_write (0x84,~(1<<7));   // Auf 24 Stundenbetrieb setzen
rtc_set_time (14,43,00);       // Uhrzeit einstellen
rtc_set_date (8,3,06);         // Datum einstellen

          delay_ms (1000);
          rtc_get_time(&hour,&min,&sec)= uhrzeit.stunde,
uhrzeit.minute,uhrzeit.sekunde;
          delay_ms (1000);
          rtc_get_date(&date,&month,&year)=
datum.tag,datum.monat,datum.jahr;
          delay_ms (2000);
}

dann kommt die fehlermeldung: "must be Ivalue" für die zeilen
rtc_get_time und rtc_get_date.
danke für deine bemühungen.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
rtc_get_time(&hour,&min,&sec)= uhrzeit.stunde,
uhrzeit.minute,uhrzeit.sekunde;

Das ist kein C.

Besser funktioniert das so:

   rtc_get_time(&hour,&min,&sec);

   uhrzeit.stunde = hour;
   uhrzeit.minute = min;
   uhrzeit.sekunde = sec;

Die Fehlermeldung heißt übrigens "must be lvalue" (das ist ein
kleines L, kein großes "I").

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey keine fehlermeldung mehr. aber wie bekomme ich denn jetzt heraus, ob
das überhaupt gespeicher ist?

Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
auslesen wäre nen versuch wert...

Autor: Christoph (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hatte tomaten auf den augen!
vielen Dank für eure hilfe. es funktioniert wuderbar.
ich hoffe ich darf euch die tage noch ein paar fragen stellen!

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.