AT90CAN128, GCC und EEPROM

OP #265999
Progrmmiere eben meinen CAN128 mit dem GCC. Leider sind die
vorgefertigten EEPROM Routinen ja nicht verwendbar (oder doch
irgendwie?). Nunja hab mir meine eigene Lese- und  Schriebroutine
gebastelt, nur muss ich nun feststellen, dass nichts im EEPROM
geschriben wird.
Hab mich dazu an das Beispiel auf Seite 24 des Datenblatts gehalten und

...
EECR |= (1<<EEMWE);
EECR |= (1<<EEWE);
implementiert.

So geht es aber nicht!
Hab festgestellt, das der GCC daraus macht:

lds R24, 0x003F
ori R24, 0x04
sts 0x003F, R24
lds R24, 0x003F
ori R24, 0x02
sts 0x003F, R24

Es gibt ja die Einschränkung mit den 4 Takten nach dem Setzen von
EEMWE, offensichtlich stört dies aber den GCC nicht - was kann ich nun
machen das ich (in C) dieses Bit schnell genug gesetz bekomme?
Oder muss ein inline Assebler ran?
Gast
Hallo,

schau mal in das AVR GCC Manual, da gibt es unter Modules einen EIntrag
"EEPROM handling" da sollte alles beschrieben sein

Aber warum sollten die EEPROM Routinen nicht verwendbar sein??

Gruss
OP
Aus der Doku zu AVR-LIBC:
Detailed Description
 #include <avr/eeprom.h>

This header file declares the interface to some simple library routines
suitable for handling the data EEPROM contained in the AVR
microcontrollers. The implementation uses a simple polled mode
interface. Applications that require interrupt-controlled EEPROM access
to ensure that no time will be wasted in spinloops will have to deploy
their own implementation.


Note:
All of the read/write functions first make sure the EEPROM is ready to
be accessed. Since this may cause long delays if a write operation is
still pending, time-critical applications should first poll the EEPROM
e. g. using eeprom_is_ready() before attempting any actual I/O.
This library will not work with the following devices since these
devices have the EEPROM IO ports at different locations:

AT90CAN128
ATmega48
ATmega88
ATmega165
ATmega168
ATmega169
ATmega325
ATmega3250
ATmega645
ATmega6450

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.