ich möchte später mal einen LCD und eine Tastatur an dem 2. atmega dran hängen und dies dann an den 1. atmega senden oder auch von diesem empfangen.
Jetzt will ich nur einmal eine Verbindung zwischen den wei atmega32 herstellen und dies irgendwie sichtbar machen.
Also wenn er mir error 1 sendet dann ist ein fehler aufgetreten.
Ich weis aber nicht was ich noch falsch mache.
Ich habe die zwei Atmega32 nach der Grundbeschaltung miteinander verbunden. http://www.robotikhardware.de/bilder...stepmega16.gif
Außerdem hab ich dein Programm auf atmega32 umgeschrieben und den PortD auf PortA
Das Byte B hab ich einfach mal auf 200 gesetzt damit ich nichts über die RS232 eingabe falsch machen kann. Das müsste doch so funktionieren oder?

Master:
Code:
' TWI Testprogramm aus der Hilfe (abgespeckt)
' mit PCF8574

'The chip will work in TWI/I2C master mode
'Connected is a PCF8574 8-bits port extender

$regfile = "M32def.dat"                                     ' the used chip
$crystal = 16000000                                         ' frequency used
$baud = 9600                                                ' baud rate

$lib "i2c_twi.lbx"                                          ' we do not use software emulated I2C but the TWI

I2cinit                                                     ' we need to set the pins in the proper state

Config Twi = 100000                                         ' wanted clock frequency

Dim B As Byte
Print "TWI master"
Do
  B = 200
  I2csend &H40 , B                                          ' send the value
  Print B ;
  Print " Error : " ;
  Print Err                                                 ' show error status
Loop
End
Slave:
Code:
' TWI-slave test
' zum simulieren eines PCF8574

$regfile = "m32def.dat"                                      ' the used chip
$crystal = 16000000                               ' frequency used
$baud = 9600

Config Porta = Output                             ' kopletter PortD als Ausgang

Dim Twi_status As Byte
Dim Twi_data As Byte

Declare Sub Twi_init_slave
Declare Function Twi_wait() As Byte

Twi_data = 0
Call Twi_init_slave                                         ' TWI aktivieren

' Hauptschleife
Do
    Twi_status = Twi_wait()
    If Twi_status = &H80 Then
        Porta = Twi_data                          ' Daten auf PortD ausgeben

    End If

Loop

End

' Unterprogramme

' TWI als slave aktivieren
Sub Twi_init_slave
    Twsr = 0                                                ' status und Prescaler auf 0
    Twdr = &HFF                                             ' default
    Twcr = &B00000100                                       ' erstmal nur TWI aktivieren
    Twar = &H40                                             ' Slaveadresse setzen
    Twcr = &B01000100                                       ' dann ACK einschalten
End Sub

' schauen ob was gekommen ist, Status zurückgeben, Daten in globale variable
Function Twi_wait() As Byte
    Local Twcr_local As Byte
    Twi_wait = &HF8
    ' warten bis TWINT gesetzt ist
    Twcr_local = Twcr And &H80
    If Twcr_local = &H80 Then
        Twi_data = Twdr                                     ' Daten sichern
        Twi_wait = Twsr And &HF8                            ' status zurückgeben
        Twcr = Twcr Or &B10000000                           ' TWINT löschen, erzeugt ACK
    End If

End Function