Forum: Mikrocontroller und Digitale Elektronik Feldvariabeln in EEprom abspeichern


von AT32_Bascom_Programmierer (Gast)


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

von AT32_Bascom_Programmierer (Gast)


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?

von Philipp (Gast)


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?

von Karl H. (kbuchegg)


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

von AT32_Bascom_Programmierer (Gast)


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

von weinbauer (Gast)


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.

von AT32_Bascom_Programmierer (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.