www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90CAN128, GCC und EEPROM


Autor: Anton Wert (antonwert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jens D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Anton Wert (antonwert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

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.