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
Hallo Peter, Hast du sicher meine neueste Version von http://jump.tp/fleury heruntergeladen ? Welche AVR-GCC Version verwendest du ? Gruss Peter
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
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
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
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!
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! :-)
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.
:-/ 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?
Irgendwo im Forum gibt es ein Makro, das die verschiedenen I/O Bereiche berücksichtigt. Ich glaub Hagen verwendet das, viel Spass beim suchen :-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.