Hey der code vom Master wäre auch mal toll und wie ich das sehe fehlt die lib für die interruptts
Hallo Leute,
ich arbeite zurzeit daran meinen Atmega zu einem I2C Slave zu machen, er soll am Ende die UART Ausgaben verschiedener Geräte parsen und per I2C zur Verfügung stellen, hierzu benutze ich das Code beispiel aus dem Wiki:http://www.rn-wissen.de/index.php/TWI_Slave_mit_avr-gcc
Problem ist, es funktioniert nicht, wenn ich die Register mit dem Master auslese sind sie immer leer.
Hiermal meine Code: (Ist die vereinfachte Test version, schreibt nur etwas ins 0. Register)
Achja, i2cslave und i2cmaster entsprechen dem Wiki.Code:#ifndef F_CPU /* Definiere F_CPU, wenn F_CPU nicht bereits vorher definiert (z. B. durch Übergabe als Parameter zum Compiler innerhalb des Makefiles). Zusätzlich Ausgabe einer Warnung, die auf die "nachträgliche" Definition hinweist */ #warning "F_CPU war noch nicht definiert, wird nun mit 14745600 definiert" #define F_CPU 8000000UL /* Quarz mit 14.7456 Mhz */ #endif #include <util/delay.h> #include <avr/io.h> #include "uart.h" #include "twimaster.h" #include "twislave.h" #include <stdio.h> uint8_t I2C_Adress = 0x20; void long_delay(uint16_t ms) { for(; ms>0; ms--) _delay_ms(1); } void setLED(bool value){ if(value) PORTB &= ~(1 << PB2); else PORTB |= (1 << PB2); } int main(void) { DDRB |= (1 << DDB2); setLED(true); init_twi_slave(I2C_Adress); sei(); i2cdata[0]= 5; }
Was mache ich falsch? Für Hilfe wäre ich sehr dankbar,
Viele Grüße
Geändert von Sebas (18.02.2013 um 15:40 Uhr) Grund: hab was vergessen
Hey der code vom Master wäre auch mal toll und wie ich das sehe fehlt die lib für die interruptts
Bin gerene bereit Hilfe zu leisten, freue mich wenn auch mir geholfen werden kann.
Entschuldigt bitte Rechtschreibfehler falls welche vorkommen
Lesezeichen