PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit I2C Slave (uwegw)



sebwa2k
17.05.2009, 16:53
Hallo alle zusammen :)

ich versuche mich gerade an der kommunikation 2er Atmega8 über I2C Bus, ich verwende als Master die Lib von P. Fleury und als Slave das Beispiel aus der Codesammlung von Uwe Groß-Wortmann.
Die 4,7k Pullups sind ebenfalls vorhanden.

Der master Sendet auch fleißig doch nach 1-2 sekunden hängt sich der Slave auf, d.h. SCL wird auf Low gezogen.
Um das ganze weiter einzugrenzen hab ich auf dem Slave den code soweit gekürzt das bloß noch init_twi_slave(0x60) aufgerufen wird.
doch selbst hier tritt der fehler auf, erst wenn init_twi_slave(0x60) auskommentiert wird, bleiben die LEDs für SDA und SCL am blinken.

bei google konnte ich mein Problem nicht wiederfinden. Ich vermute es liegt an der Slave Lib doch google brachte nur Positives zu dieser lib.

Was könne ich falsch gemacht haben?


Das ist mein Master Code


/* Allgemeine Includes */
#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <i2cmaster.h>
#define slave 0x60

int main(void)
{
i2c_init();
_delay_ms(1000);
while(1)
{
i2c_start_wait(slave + I2C_WRITE);
i2c_write(0x00); //startadr
i2c_write(0x01); //Befehl
i2c_write(0x06); //port
i2c_write(0x01); //status
i2c_write(0x00);
i2c_stop();
_delay_ms(500);
}
}


und das mein Slave:


#include <avr/io.h>
#include <stdlib.h>
#include <avr/interrupt.h>
#include <util/delay.h>
#include <twislave.c>
#include <RS232.h>

int main(void)
{
init_USART();
init_twi_slave(0x60);
sendtext("Beginne mit Arbeitsschleife");
while(1)
{}
}

danke schonmal vorab für eure Hilfe!
MfG
Sebastian

Edit: es ist nicht SCL auf Low sondern SDA Sorry :-/