Forum: Compiler & IDEs Probleme mit I2C - lib


von Peter (Gast)


Lesenswert?

Hallo!!
Ich möchte gerne Daten auf meinen seriellen EEPROM schreiben bzw. diese 
Daten auch lesen. Hierzu habe ich die Files von Peter Fleury 
heruntergeladen. Beim compilieren treten allerdings unendlich viele 
Fehler auf ( anscheinend im .S - File). Kann mir jemand weiterhelfen???
Vielen Dank - Peter

von Peter Fleury (Gast)


Lesenswert?

Hallo Peter,

Hast du sicher meine neueste Version von http://jump.tp/fleury
heruntergeladen ?
Welche AVR-GCC Version verwendest du ?

Gruss Peter

von Peter Fleury (Gast)


Lesenswert?

Sorry Tipfehler,. richtige URL ist: http://jump.to/fleury

von Peter (Gast)


Lesenswert?

Hallo Peter Fleury!!
Ja, ich habe deine neueste Version heruntergeladen. Ich verwende * 
binutils - 20020614
* avrgcc 3.2 - 20020610
* avr-libc - 20020612
(von AVRFreaks)

Die Ausgabe vom Compiler sieht wie folgt aus:

i2cmaster.S:Assembler messages:
i2cmaster.S:80 Error: number must be less than 32
i2cmaster.S:81 Error: number must be less than 32
i2cmaster.S:82 Error: number must be less than 32
i2cmaster.S:83 Error: number must be less than 32
i2cmaster.S:99 Error: number must be less than 32
i2cmaster.S:118 Error: number must be less than 32
i2cmaster.S:120 Error: number must be less than 32
i2cmaster.S:122 Error: number must be less than 32
... und so weiter

Der Fehler tritt überall dort auf, wo entweder SDA oder SCL vorkommt.
Muss ich irgendetwas im header-file ider sonst wo ändern??

vielen Dank im Voraus!
Peter

von Peter Fleury (Gast)


Lesenswert?

Ich verwende immer noch die avr-gcc 3.0 Version von AVRfreaks.
Meine Assembler Source verwendet C-style defines, deshalb muss der 
Assembler mit dem C-Preprocessor aufgerufen werden mittels
avr-gcc -x assembler-with-cpp

Gruss
Peter

von Peter Fleury (Gast)


Lesenswert?

In der AVR-GCC Version 3.2 hat sich offenbar die Syntax der include 
Files geändert.
Füge mal folgende Zeile in i2cmaster.S

#define __SFR_OFFSET 0

vor "#include <io-avr.h>

und compiliere es neu.

Gruss  Peter

von Peter (Gast)


Lesenswert?

Danke für deine Hilfe!!!

von Der T. (Gast)


Lesenswert?

Hallo Peter!

Ich habe AVR-GCC V3.4.3

Hier meckert er bereits bei "#include <io-avr.h>".
Ändere ich diese zeile in "#include <avr/io.h>" ab, und füge die
"#define __SFR_OFFSET 0" davor ein, bringt er trotzdem noch diesen
Fehler (i2cmaster.S:122 Error: number must be less than 32)! :-(

Was könnte ich da noch ändern?

Danke!

von Der T. (Gast)


Lesenswert?

Hallo!

Habe den Fehler eingrenzen können!

Im i2cmaster.S werden die Pins folgendermassen definiert:
---------------
#define SDA     0
#define SCL  1
#define SDA_PORT        PORTD
#define SCL_PORT        PORTD
---------------

Das EEPROM hängt bei mir jedoch an Port G!
Als PORTD lässt sich der Code compilieren, aber nicht als PORTG! :-(

Wie muß ich was ändern, damit es funktioniert?

Bitte gebt mir einen Tipp! - Danke! :-)

von Fritz G. (fritzg)


Lesenswert?

PORTG ist für sbi usw. nicht erreichbar, verwende wenn möglich die
anderen Ports.
Sonst musst die in/out durch LD und ST Befehle ersetzen.

von Der T. (Gast)


Lesenswert?

:-/

Hab ich grade auch in einem anderen Thread gefunden.. (die "neue"
Suche per Google ist bescheiden, die Originalsuche war viel
übersichtlicher)

Leider kann ich nicht mehr aus. EEPROM ist fix an Pin 0 und 1 von Port
G.

Kennst du evtl. eine C-Lib, die nicht die Hardware-TWI verwendet? Ist
I2C eigendlich zeitkritisch?

von Fritz G. (fritzg)


Lesenswert?

Irgendwo im Forum gibt es ein Makro, das die verschiedenen I/O Bereiche
berücksichtigt. Ich glaub Hagen verwendet das, viel Spass beim suchen
:-)

von Peter Fleury (Gast)


Lesenswert?

Bitte meine Original Software von meiner Homepage verwenden:
http://homepage.sunrise.ch/mysunrise/peterfleury/avr-software.html

In meiner Source gibt kein #include <ioavr.h> !

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.