PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : TWI Slave aus RN-Wissen



testerjoe
30.06.2010, 10:33
Zuerst muss ich gestehen, dass ich noch keine Erfahrung mit WinAvr habe, da ich bisher immernoch mit meinem alten CodeVision zurechtgekommen bin.
Jetzt möchte ich allerdings einen Mega8 als Slave in einen bestehenden I2C-Bus einhängen, und vorerst nur Werte annehmen und per RS232 überprüfen.
Da binn ich doch auf dieses schöne Beispiel im RN-Wissen gestoßen:
http://www.rn-wissen.de/index.php/TWI_Slave_mit_avr-gcc
doch leider bekomme ich beim compillieren des original-codes schon Warnungen und Fehler..




------- begin --------
avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling C: slavetest.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./slavetest.lst -std=gnu99 -MMD -MP -MF .dep/slavetest.o.d slavetest.c -o slavetest.o
slavetest.c: In function 'uart_puti':
slavetest.c:21: warning: implicit declaration of function 'itoa'
slavetest.c:21: warning: passing argument 1 of 'uart_puts' makes pointer from integer without a cast

Compiling C: twislave.c
avr-gcc -c -mmcu=atmega8 -I. -gdwarf-2 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./twislave.lst -std=gnu99 -MMD -MP -MF .dep/twislave.o.d twislave.c -o twislave.o
twislave.c: In function '__vector_17':
twislave.c:77: error: 'I2C_reg_Schreibschutz' undeclared (first use in this function)
twislave.c:77: error: (Each undeclared identifier is reported only once
twislave.c:77: error: for each function it appears in.)
make.exe: *** [twislave.o] Error 1


Liegt das noch an irgendwelchen Makefile Einstellungen oder Versionsproblemen, oder ist der code doch fehlerhaft??

TobiKa
30.06.2010, 11:37
Du benutzt "I2C_reg_Schreibschutz" die er nicht kennt.

testerjoe
30.06.2010, 14:17
habe übersehen, dass in der Disskusion zum Artikel schonmal darauf hingewiesen wurde, und wenn ich I2C_reg_Schreibschutz als Array definiere, dann giebs auch keinen Fehler mehr.

Schade ist es trotsdem, dass der code in der Wissensdatenbank nicht direkt übersetzungsfähig ist, obwohl die letzte Bearbeitung noch gar nicht all zu lang her ist..

BurningWave
01.07.2010, 19:07
slavetest.c:21: warning: implicit declaration of function 'itoa'

Außerdem findet er itoa() nicht. stdlib.h eingebunden?

testerjoe
02.07.2010, 14:32
Danke für den Hinnweis.
(stdlib wahr auch nicht eingebunden..)

Binn aber noch nicht dazu gekommen, mir das mal genauer anzuschauen und zu probieren!

uwegw
02.07.2010, 15:35
Oh, das mit dem Schreibschutz ist mir bei den letzten Änderungen durch die Lappen gegangen. Ich hatte in meinem Testprojekt nämlich die Definition von I2C_reg_Schreibschutz in einer anderen Datei stehen. Ich habe es jetzt einfach komplett entfernt, es verkompliziert die Sache nur. Wenn jemand einen Schreibschutz haben will, ist der ja schnell wieder eingebaut. Wirklich sinnvoll ist die Funktion auch eigentlich nur, wenn man als Benutzer (z.B. über die serielle Schnittstelle) von Hand Adressen eingeben kann...
Ich habe außerdem noch stdlib.h inkludiert.

Könntest du jetzt bitte noch mal den Code aus dem Wiki kopieren und testen? ich habe gerade leider keine AVR-Platine greifbar...

testerjoe
05.07.2010, 09:29
hallo uwegw,

der code lässt sich nun problemlos kopieren und compilieren..
(vielen dank für die arbeit)

PS: funktionieren tut's auch