www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Feldvariabeln in EEprom abspeichern


Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich hätte da mal eine Frage...

Ich programmiere zur zeit eine Zutrittskontrolle per RFID System 
(Transponder). Nun habe ich alles soweit doch möchte ich die letzten 
Eingänge speichern. ich habe mir eine eigene Platine angefertigt mit 
ATMega32. Zudem verwende ich noch eine Echtzeituhr. nun möchte ich die 
10 letzten Benutzer (Eintritte) mit Uhrzeit und Datum im EEprom 
abspeichern. Nur habe ich noch nie mit Feldvariabeln oder EEprom 
gearbeitet. kann mir jemand helfen?

Ich dachte es wie folgt zu machen: Variable (Schlüsselnummer, 
Stunde,Minute,Sekunde,Tag,Monat,Jahr)

schöne Grüsse

Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe die Hilfe von Bascom durchgestöbert und sämtliche 
Beispielprojekte... ist es überhaupt möglich mehr dimensionale Arrays in 
Bascom herzustellen? wenn ja wie?

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie viel speicher brauchst du da? wieviel stellen mit wieviel ziffern 
gibts ?
für
buchstaben ist ascii ja nicht so gut <(und für zahlen erstrecht nicht )
also eigenes format, braucht weniger speicher und wird dann zur ausgabe 
umgewandelt.
kann man die variabklen nicht byte für byte in den eeprom schreiben?

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

Bewertung
0 lesenswert
nicht lesenswert
AT32_Bascom_Programmierer schrieb:
> ich habe die Hilfe von Bascom durchgestöbert und sämtliche
> Beispielprojekte... ist es überhaupt möglich mehr dimensionale Arrays in
> Bascom herzustellen? wenn ja wie?

Keine Ahnung.
Aber zur Not kannst du ja den Inhalt des Arrays auch in Einzelschritten 
ins EEPROM transferieren.

Laut Bascom Hilfe

DIM V AS ERAM BYTE

Legt eine Variable V an, auf die du ganz normal zugreifen kannst, nur 
dass diese Variable im EEPROM residiert.
Du kannst ja jetzt mal probieren, welche Datentypen anstelle von BYTE 
erlaubt sind, bzw. ob du V als Array ausführen darfst.

Edit:
Steht doch da in der Hilfe

> You may also use ERAM variables as indexes. Like :
> Dim ar(10) as Eram Byte

Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Philipp schrieb:
> wie viel speicher brauchst du da? wieviel stellen mit wieviel ziffern
> gibts ?

Also da ich nichts über mehrdimensionale Array's gefunden habe dachte 
ich es wie folgt zu machen: Ein Array mit mit 8 "Stufen".

Dim Testarray(8) as Byte
Dim Key as Byte         'gibt an welcher Schlüssel es ist
Dim Zahl as Byte        'gibt an der wievielte Eintritt es ist

Testarray(1) = Key
Testarray(2) = Zahl
Testarray(2) = _hour          '24 Zahlen
Testarray(3) = _min           '60 Zahlen
Testarray(4) = _sec           '60 Zahlen
Testarray(5) = _day           '31 Zahlen
Testarray(6) = _month         '12 Zahlen
Testarray(7) = _year          '100Zahlen

> Aber zur Not kannst du ja den Inhalt des Arrays auch in Einzelschritten
> ins EEPROM transferieren.

wie meinst du das genau ? habe bisher noch nie mit EEprom gearbeitet.
Wichtig ist das ich nur eine bestimmte Anzahl Beiträge abspeichern 
möchte (bsp 10)

> You may also use ERAM variables as indexes. Like :
> Dim ar(10) as Eram Byte

das heist ja dann das ich an stelle von "V" ein Array einsetzen kann. 
kann diese Variable denn später genau so gebraucht werden sie eine 
normale Variable? (Array)

Danke schonmal

Autor: weinbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, Bascom erlaubt egal ob SRAM oder EEPROM keine mehrdimmensionale 
Arrays, aber Arrays sehr wohl.

Du kannst also einfach

dim uhrzeit (10) as eram Word
dim Datum (10) as eram word etc.

und dann einfach wie aus dem SRAM drauf zugreifen.
Einziger Hemmschuh, bei manchen Operationen muss man ggf. für 
Rechenoperationen
die ERAM-Variable erst in ne SRAM-Variable lesen um sie weiter 
verarbeiten zu können.
ist etwas doof, aber gewöhnungssache halt.

Autor: AT32_Bascom_Programmierer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werde es jetzt noch anders machen... da ich die myTWI Echtzeituhr 
verwende erhalte ich die komplette Zeit und das Komplette Datum.

Diese werde ich zusammensetzten dann erhalte ich einen String von 
mindestens 16.Zeichen den geb ich dann in den array... und durch die 
Adresse des Array geb ich die Schlüsselnummer an... somit sehe ich dann 
den letzten eingang von jedem Schlüssel...

was denkt ihr? ist das besser?

werde jetzt versuchen ein beispiel programm zu schreiben und dann 
veröffentlichen

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.