Ich hab mir mal den Artikel hier durchgelesen und wollte jetzt gerne die das ganze in meinem Programm verwenden. https://www.roboternetz.de/phpBB2/viewtopic.php?t=3447
Jetzt hab ich das ganze Fertig und es sieht so aus:
Naja jetzt bekomm ich nur leider einen ganzen haufen Fehlermeldungen:Code:#include <avr/io.h> #include <inttypes.h> #include <avr/interrupt.h> #include <avr/signal.h> #include <avr/delay.h> #include <stdlib.h> /*für exit*/ /*SD20 Adresse mit Lese- oder Schreibbit*/ #define SD20_W 0xC2 #define SD20_R 0xC3 typedef unsigned char BYTE; typedef unsigned short WORD; void i2c_start(BYTE ADRESSE) { TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); /*Startbedingung senden*/ while (!(TWCR & (1<<TWINT))); /*Darauf warten dass TWINT gesetzt wurde was aussagt das die Startbedingung gesendet wurde*/ if ((TWSR & 0xF8) != START) exit; /*Überprüfen ob START erfolgreich gesendet wurde sonst abbrechen*/ TWDR = ADRESSE; /*Slave Adresse in TWDR laden*/ TWCR = (1<<TWINT)|(1<<TWEN); /*TWINT und TWEN löschen damit die ADRESSE gesendet wird*/ while (! (TWCR & (1<<TWINT))); /*Darauf warten dass TWINT gesetzt wurde was aussagt dass die ADRESSE gesendet wurde*/ if ((TWSR & 0xF8) != MT_SLA_ACK) exit; /*Überprüfen ob ADRESSE erfolgreich gesendet wirde sonst abbrechen*/ } void i2c_data(BYTE DATA) { TWDR = DATA; /*DATA in TWDR laden*/ TWCR = (1<<TWINT)|(1<<TWEN); /*TWINT und TWEN löschen damit die DATA gesendet wird*/ while (! (TWCR & (1<<TWINT))); /*Darauf warten dass TWINT gesetzt wurde was aussagt dass die DATA gesendet wurde*/ if ((TWSR & 0xF8) != MT_DATA_ACK) exit; /*Überprüfen ob DATA erfolgreich gesendet wirde sonst abbrechen*/ } void i2c_stop(void) { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); /*Stopbedingung senden*/ } int main(void) { i2c_start(SD20_W); i2c_data(0x7F); i2c_stop(); }
Dass START, MT_SLA_ACK, MT_DATA_ACK Probleme machen würden hab ich mir schon direkt Gedacht als ich sie gelesen habe da sie ja nirgends vorher definiert werden. Nur wo bekomm ich die definition dafür her?Code:> "make.exe" all -------- begin -------- avr-gcc (GCC) 3.4.1 Copyright (C) 2004 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: Lauflicht.c avr-gcc -c -mmcu=atmega128 -I. -gstabs -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=Lauflicht.lst -std=gnu99 -Wp,-M,-MP,-MT,Lauflicht.o,-MF,.dep/Lauflicht.o.d Lauflicht.c -o Lauflicht.o Lauflicht.c: In function `i2c_start': Lauflicht.c:21: error: `START' undeclared (first use in this function) Lauflicht.c:21: error: (Each undeclared identifier is reported only once Lauflicht.c:21: error: for each function it appears in.) Lauflicht.c:25: error: `MT_SLA_ACK' undeclared (first use in this function) Lauflicht.c: In function `i2c_data': Lauflicht.c:34: error: `MT_DATA_ACK' undeclared (first use in this function) Lauflicht.c: In function `i2c_start': Lauflicht.c:21: warning: statement with no effect Lauflicht.c:25: warning: statement with no effect Lauflicht.c: In function `i2c_data': Lauflicht.c:34: warning: statement with no effect make.exe: *** [Lauflicht.o] Error 1 > Process Exit Code: 2
Würd mich freun wenn mir jemand von euch helfen könnte! THX schonmal für eure Mühe!







Zitieren

Lesezeichen