Forum: Mikrocontroller und Digitale Elektronik Kalibrierungsbyte mit C aus EEprom lesen


von Markus (Gast)


Lesenswert?

Hallo,

ich möchte bei meinem Mega8 den internen RC-Oszillator verwenden. Doch
damit der genau arbeitet muss dieser kalibriert werden. AVR-Studio
schreibt dazu das Kalibrierungsbyte an eine bestimmte Stelle ins
EEPROM, die Adresse dafür kann ich angeben.

Mein Problem ist jetzt:
Wie kann ich unter C eine Adresse im EEPROM reservieren, so dass mir
andere Variablen das Kalibrierungsbyte nicht überschreiben, oder das
Kalibrierungsbyte die Variable nicht verändert. Zugreifen kann ich ja
problemlos über einen Pointerzugriff, aber wie reserviere ich die
Speicheradresse???
Hat das jemand eine schlaue idee.
Danke schon mal für Eure Hilfe.

von Markus (Gast)


Lesenswert?

...ich hab gerade im Datenblatt gelesen, dass beim Mega8 das Byte beim
start automatisch ins Register geladen wird. Hab ich das richtige
verstanden?
Aber trotztdem bleibt das Problem grundsätzlich bestehen, wie ich unter
C den Compiler anweisen, eine bestimmte Speicherzelle nicht zu
überschreiben.

Grüsse Markus

von mika (Gast)


Lesenswert?

einfach keine Variable im EEPROM anlegen.
Zugiffe auf den EEPROM nur mit eigener read/write routine durchführen.

von thkais (Gast)


Lesenswert?

Oder das AVR-GCC Tutorial lesen...

von Hannes L. (hannes)


Lesenswert?

Also ich lege das Calibrationsbyte nicht ins EEPROM sondern in die
letzte Zelle des Flash, da, wo es auch bei Auslieferung neuer
(calibrierbarer) AVRs steht. Ich nutze dabei der Einfachheit halber das
Low-Byte der letzten Zelle.

Der Mega8 braucht nur (von Hand) calibriert werden, wenn er mit dem
internen RC-Oszillator mit 2, 4 oder 8 MHz betrieben wird. Bei Betrieb
mit 1MHz erfolgt die Calibration beim Reset automatisch.

...

von Sonic (Gast)


Lesenswert?

Im EEPROM können einfach Variablen abgelegt werden, indem man die Länge
mit 'sizeof' abfragt. Dann wird die Jeweilige Länge der Variablen ab
Startadresse geschrieben, bzw. gelesen. Ob CHAR, INT DOUBLE oder was
auch immer ist ja bekannt (Initialisierung der Variablen). Für die
Einteilung im EEPROM (dass nix überschrieben wird) ist der
Programmierer selbst verantwortlich (man kann das auch automatisieren,
aber aufwändig).

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.