Hab mich jetzt entschieden diese überprüfungen wegzulassen. Mein Quellcode sieht jetzt so aus und es gibt auch keien fehler mehr beim compilieren:
Aber irgendwie tuts das ganze trotzdem nicht. Ich möchte damit gerne den ersten Servo von einem SD20 in die Mittelstellung bringen aber es passiert einfach garnix.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*/ 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*/ } 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*/ } void i2c_stop(void) { TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); /*Stopbedingung senden*/ } int main(void) { i2c_start(SD20_W); i2c_data(0x01); i2c_data(0x7F); i2c_stop(); }







Zitieren

Lesezeichen