Hallo uffi;
danke für die Erklärung,ich hab genau geschrieben ,was du mir gesagt hast ,leider das Ergibniss ist immer das gleiche hier ist mein Code nochmal :
Danke und ich hoffe das du mir hilfen kannstCode:#include <avr/io.h> #include "i2cmaster.h" #define SRF 0xE0 #define F_CPU 8000000UL #include <util/delay.h> #define BAUD 9600 #include <avr/iom8515.h> #include <avr/sfr_defs.h> #define SDA 0 // SDA Port E, Pin 0 #define SCL 1 // SCL Port E, Pin 1 #define SDA_PORT PORTE // SDA Port E #define SCL_PORT PORTE // SCL Port E // USART_INIT-- void initusart(void) // Hauptfunktion { unsigned char x; //Hilfsvariable // #idef UBRRL //USART-Schnittstelle UBRRL = (F_CPU / (16UL*BAUD)) -1; //Baudrate mit TAKT und Baud UCSRB |= (1<<TXEN) | (1<<RXEN); //Sender und Empfänger ein UCSRC |= (1<< URSEL) | (1<< UCSZ1) | (1<<UCSZ0); //ansync 8bit x = UDR; } void sendeusart(int x) { while (!(UCSRA & (1<<UDRE))); // warten bis Senden moeglich { } UDR = x; } int distance; int main(void) { int distance =0; i2c_init(); initusart(); sendeusart(distance); unsigned char Lbyte,Hbyte; DDRE = 0xff; PORTE = 0xff; while(1) { i2c_init(); i2c_start(SRF); i2c_write(0x00); i2c_write(0x51); i2c_stop(); _delay_ms(70); i2c_start(SRF); i2c_write(0x02); i2c_stop(); i2c_start(0xE1); Hbyte=i2c_readAck(); Lbyte=i2c_readNak(); distance=(Hbyte*256)+Lbyte; sendeusart(distance); i2c_stop(); } }
Gruss Alexandra







Zitieren

Lesezeichen