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.
...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
einfach keine Variable im EEPROM anlegen. Zugiffe auf den EEPROM nur mit eigener read/write routine durchführen.
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. ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.