Hallo

Versuche mich zur Zeit am folgenden Beitrag:
https://www.roboternetz.de/phpBB2/ze...=246777#246777

Um das ganze zu verstehen wollte ich anstatt 2 Servos 2 LED' ansteuern. Diese sind aber auf dem PortD und so hab ich aus dem vorhandenen Prog die Ports von B auf D geändert und alle Dinge die auf D waren auskommentiert (siehe Code).
Leider wollen die LED's sich aber nicht umschalten lassen egal welche kombination ich nehm (1/0 1/1 2/0 2/1). Die beiden LED's leuchten seit der Programmierung unverändert um die Wette.

Was hab ich falsch gemacht?
Danke für Eure Hilfe.
Code:
 $regfile = "M32def.dat"                                    ' the used chip
$crystal = 16000000                                    ' frequency used
'$baud = 38400    ' brauchen wir nicht

Waitms 100

' TWI init
Gosub Twi_init_slave

Config Servos = 2 , Servo1 = Portd.1 , Servo2 = Portd.6 , Reload = 8

' Ports für Servo auf Ausgang
Config Portd.1 = Output
Config Portd.6 = Output
'Config Portd = Output

' Musik, wegen Stimmung usw. :-)
'Sound Portb.0 , 300 , 450                              ' BEEP

Servo(1) = 0
Servo(2) = 0

Const Maxanzahlbyte = 10                               ' Wenn mehr Zeichen kommen werden diese verworfen !
Dim Messagebuf(maxanzahlbyte) As Byte
Dim Anzahlbuf As Byte                                 ' Anzahl Zeichen die gesendet wurden

Dim Neuemsg As Byte                                    ' zeigt an wenn eine neue Message gültig ist

Dim Twi_control As Byte                                ' Controlregister lokale kopie
Dim Twi_status As Byte
Dim Twi_data As Byte

Const Eigene_slave_adr = &H40                          ' Adresse evtl. Anpassen

' wegen der Servos, TWI braucht das hier nicht
Enable Interrupts

Twi_data = 0
Neuemsg = 0                                            ' Paket ungültig
Anzahlbuf = 0                                          ' Anzahl empfangener Bytes

Portd = &HFF                                           ' alle LEDs aus

'Print "M8 servo test"
Do

    ' schauen ob TWINT gesetzt ist
    Twi_control = Twcr And &H80                        ' Bit7 von Controlregister

    If Twi_control = &H80 Then
        Twi_status = Twsr And &HF8                     ' Status

        'Portd = Not Twi_status                         ' test auf die LEDs

        Select Case Twi_status

            ' Slave Adress received, wir sind gemeint !
            Case &H60 :
                Twcr = &B11000100                      ' TWINT löschen, erzeugt ACK
                Anzahlbuf = 0
                Neuemsg = 0                            ' Flag für Message ungültig

            ' Byte mit ACK
            Case &H80 :
                If Anzahlbuf < Maxanzahlbyte Then
                    Incr Anzahlbuf                     ' zähler +1
                    Messagebuf(anzahlbuf) = Twdr
                End If
                Twcr = &B11000100                      ' TWINT löschen, erzeugt ACK

            ' Stop oder restart empfangen
            Case &HA0 :
                Twcr = &B11000100                      ' TWINT löschen, erzeugt ACK
                ' es müssen 3 Byte sein, damit das Paket OK ist
                If Anzahlbuf = 3 Then
                    Neuemsg = 1                        ' Flag für Message gültig
                Else
                    Neuemsg = 0                        ' Flag für Message ungültig
                End If

            ' letztes Byte mit NACK, brauchen wir nicht
            Case &H88 :
            Case &HF8 :
            ' Fehler, dann reset TWI
            Case &H00 :
                Twcr = &B11010100                      ' TWINT löschen, reset TWI

            ' was anderes empfangen, sollte nicht vorkommen
            Case Else :
                Twcr = &B11000100                      ' TWINT löschen, erzeugt ACK

        End Select

    End If

    ' ein gültiges Paket angekommen
    If Neuemsg = 1 Then
        Neuemsg = 0                                    ' Flag wieder löschen
        ' nur wenn das erste Zeichen ein "S" ist tun wir was damit !
        If Messagebuf(1) = "S" Then
            Servo(messagebuf(2)) = Messagebuf(3)
            'Sound Portb.0 , 300 , 450                  ' Roger-BEEP
        End If
    End If

    Waitms 10

Loop

End

' TWI als slave aktivieren
Twi_init_slave:
    Twsr = 0                                                ' status und Prescaler auf 0
    Twdr = &HFF                                             ' default
    Twar = Eigene_slave_adr                                 ' Slaveadresse setzen
    Twcr = &B01000100                                       ' TWI aktivieren, ACK einschalten
Return