- fchao-Sinus-Wechselrichter AliExpress         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: TWI Slave "drückt" Clock

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2007
    Beiträge
    11
    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    ich bin noch immer auf der Suche nach der Lösung meines Problems mit dem Slave.
    Ich habe mal versucht, den Clock zu puffern (74xx245). Das Ergebnis war wie zu erwarten: Puffer Eingang (vom PC), astreiner CLK, Puffer-Ausgang CLK gedrückt, ergo Verursacher ist definitv der AVR (gut, woher soll es auch sonst kommen )

    folgendes habe ich heute herausgefunden (vielleicht ein Schritt voran...an den Abgrund):
    Sofern die zu empfangenen Bytes als MSB=0 haben, kommen die Daten an!!! Ist aber das MSB=1, dann wird der Clock wieder gestaucht. Eine Vergleichsmessung habe ich angehängt.
    Hilft das vielleicht????
    Angehängte Dateien Angehängte Dateien

  2. #12
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    es ist ja so, dass innerhalb eines Bytes ja überhaupt nur die HW am Zuge ist, d.h. da fällt mir garkeine Schraube ein, an der man drehen könnte.

    Kann man den Fehler wandern lassen ?
    d.h. wenn erst das dritte Byte mit MSB=1 kommt, tritt der Fehler dann im dritten Byte auf ?
    Oder ist das immer das 2.Bit im 2.Byte ?

    Very strange.
    Hast du schon mal den Mega austauschen können ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2007
    Beiträge
    11
    Hallo,

    den Fehler kann ich tatsächlich am MSB festmachen: Belieb viele Bytes mit MSB=0 => kein Problem.
    Auch mit einen anderen ATMega ist der Effekt noch vorhanden

    Ich habe nicht erwähnt (oder vernachlässigt) dass ich noch vor dem Ziel-Slave einen Buffer in Form PCA9515 hängen habe. Das Problem bleibt bestehen, das Aussehen ändert sich: Nach einem ACK geht der Slave auf SCK=1 (??), MSB=1 liegt an (=ungültiger Datenwechsel währen CLK=1 ist), beim nächsten Clock merkts der Slave offensichtlich und zieht den Clock runter.

    Momentan kann ich den Fehler bei AVR auf AVR nachvollziehen, indem ich zwischen dem Senden des Commandworts und des ersten Datenbytes eine Delay von 1 ms einbaue => somit gleiches Fehlerbild wie beim PC-Interface, also wenn MSB=1 dann Fehler! Wenn das mal nicht kurios ist!

    Der Mastercode sieht dann so aus:
    Code:
    $regfile = "M8def.dat"                                      ' the used chip
    $crystal = 8e6                                              ' frequency used
    $baud = 9600
    
    Config Sda = Portc.4
    Config Scl = Portc.5
    
    Config Pind.4 = Input
    Config Pind.5 = Input
    
    $lib "i2c_twi.lbx"                                          ' Für Hardware TWI
    
    Waitms 100
    
    Config Twi = 100000                                         ' setzt die TWI-Register
     Twsr = 0                                                   ' Status reset
     Twbr = 220                                                 ' Bus Geschwindigkeit 400kHz @ 16MHz
    Twcr = &B00000100                                           ' TWI Modul aktivieren, nur TWEN
    
    Dim Nr As Byte                                              ' Servo-Nr
    Dim Position As Byte                                        ' Position
    
    
    
    Do
    
            I2cstart
            I2cwbyte &H64
            'I2cwbyte &H53                                       ' "S" Kennzeichen für Servo ansteuern
          If Pind.4 = 0 Then
            Waitms 1
          End If
    
          If Pind.5 = 0 Then
            I2cwbyte &HAA                                       'MSB =1
          Else
            I2cwbyte &H53                                       'MSB=0
          End If
            'I2cwbyte &HBB
            I2cstop
    
    
        Wait 1
    Loop
    
    End
    Per Taste an PD4 und PD5 kann der Fehler provoziert werden

  4. #14
    Neuer Benutzer Öfters hier
    Registriert seit
    29.08.2007
    Beiträge
    11


    Kommunikation läuft: Ich habe meine Buffer PCA9515 rausgenommen und Wunder-oh-Wunder die Kommunikation läuft. Es musste ja was blödes sein. Jetzt geht es noch an die genau Analyse, ich werde es Euch wissen lassen...

  5. #15
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ich habe nicht erwähnt...
    Rüge
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 2 von 2 ErsteErste 12

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen