Hallo alle Zusammen,

Nachdem ich nun schon seit ein paar Tagen dieses Forum nach einer Lösung durchforste, diese aber nicht finde muß ich hier meine Frage
loswerden:

Mein Master ist ein Mega128, mit dem habe ich eigentlich kein Problem,
dieser sendet brav seine I2C Kommandos wie ich mit dem Oszi sehen
kann.
Der Slave ist das Problem, ich hab die Slave Library von MCS gekauft,
und auf einen Tiny13 ein Programm geschrieben, wenn ich das Programm
auf dem Master starte funktioniert der erste Slave einmal, danach sind alle Slaves tot, der I2C-Bus aber nicht, der sendet brav weiter, wie oben schon erwähnt. Der Slave muß auch nur Daten empfangen, also keine zurück senden.
Nun ein paar Code Schnipsel:

Master:
Code:
$regfile = "M128def.dat"
$crystal = 2000000
$lib "i2c_twi.lbx"
Config Scl = Portd.0
Config Sda = Portd.1
Config Twi = 4000

I2cinit


Ddra = &B0000000
Porta = &B11111111
Ddrf = &B11111111

Dim Poweron As Bit
Dim S As Byte

Declare Sub An
Declare Sub Prg1


Do

Debounce Pina.0 , 0 , An , Sub
Debounce Pina.1 , 0 , Prg1 , Sub

Loop

An:

   Toggle Poweron
   If Poweron = 1 Then
   Portf.0 = 1
   Else
   Portf.0 = 0
   End If
   Return

Prg1:
   If Poweron = 1 Then
   Portf.1 = 1
   S = 5
   Waitms 2
   I2cstart
   Waitms 20
   I2cwbyte &H0A     'Motor1
   Waitms 20
   I2cwbyte S
   Waitms 20
   I2cstop
   Waitms 12000
   I2cstart
   Waitms 20
   I2cwbyte &H0E   'Motor3
   Waitms 20
   I2cwbyte S
   Waitms 20
   I2cstop
   Waitms 12000
   Goto Prg1
   Else
   Portf.1 = 0
   Return
   End If

End
Slave1:
Code:
$regfile = "attiny13.dat"
$crystal = 9600000

Config Pinb.3 = Output
Config Pinb.4 = Input
Config I2cslave = &B00001010 , Int = Int0 , Timer = Timer0


Dim Bfake As Byte
Declare Sub Stop1


Do

         If Bfake = 5 Then
         Portb.3 = 1
         Waitms 3000
         Goto Stop1
         Else
         Loop
         End If


Stop1:

        If Pinb.4 = 1 Then
        Goto Stop1
        Else
        Waitms 50
        Portb.3 = 0
        Bfake = 0
        End If
        Return


I2c_master_has_data:
         Waitms 10
         Bfake = _a1
         Return
bitte Code-Tags verwenden (PicNick)