- 3D-Druck Einstieg und Tipps         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 27 von 27

Thema: VIA Epia und Roboternetzboard

  1. #21
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Zitat Zitat von Freiheitspirat
    Hallo Frank,

    super Dongle !
    Nicht so elegant wie eine direkte Bus-Verbindung, aber eine echte Alternative weil so einfach ansteuerbar.
    Apropro "einfach", ein paar mehr Kommentare im Sourcecode würde nicht nur Anfängern das Verständnis für die Funktionsweise von I2C sehr erleichtern.
    Ich würde zum Beispiel gerne mal den Zusammenhang der Delay-Funktion und dem Bustakt näher verstehen.
    Welche Busgeschwindigkeit erreichst Du auf einem "normalem" Rechner ?
    Gibt es so überhaupt einen "regelmäßigen" Takt ?
    Ist der Schleifenwert 255 einfach "Try and Error", oder wie hast Du den berechnet ?
    Hi,
    der Code ist im Grunde sehr einfach verständlich weil ich ja die Funktionen zum setzen des Leitungspegels in eine Sub gekapselt habe. Die einzelnen I2C Funktionen bestehen ja aus ganz wenigen Befehlen.

    Da der PC ja bei diesem Beispiel als Master arbeitet, ist die Taktrate eigentlich unerheblich. Es muss garkein besonderes Timing eingehalten werden. Den Delay Wert kann man eigentlich noch weiter reduzieren. Es sorgt nur dafür das der Slave keine Flanke verpaßt. Da im Beispiel auch einige While-Schleifen auf den Slave warten, könnte man an einigen oder allen Stellen sogar Delay raus nehmen. Kann man ja einfach austesten, einfach reduzieren bis nix mehr geht.

    Die maximale Busgeschwindigkeit wird sicher über das Basic Programm ohnehin nicht erreicht, aber das ist ja meist sowieso nicht notwendig.

    Gruß Frank

  2. #22
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.03.2004
    Beiträge
    178
    Also so einfach finde ich das nicht.
    Könntest Du z.B. noch das letzte "pulse" in der i2c_SendByte Funktion erklären ?
    Wird da nicht das letzte Bit doppelt gesendet ?
    So ohne set_sda ?
    Wäre das nicht ein Kommentar wert ?

  3. #23
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Du meinst also dieses Funktion:

    Code:
    Sub i2c_SendByte(wert As Byte)
    Dim i As Integer
    Dim bitmask As Byte
     
     bitmask = 128
     For i = 1 To 8
        set_sda (0)
        If (wert And bitmask) > 0 Then
            set_sda (1)
        Else
            set_sda (0)
        End If
        bitmask = bitmask / 2
        delay
        pulse
     Next i
     delay
     pulse
     delay
    End Sub
    Das letzte Pulse dient eigentlich zum Abruf des sogenannten Acknowledge-Bits (kurz immer Ack genannt). Wenn der angewählte Slave die Daten richtig empfangen hat, dann zieht er kurz die SDA Leitung bei diesem Pulse auf Low. Dies kann dann hier im Master als Bestätigung aufgefasst werden, das ein Slave das Byte empfangen hat.

    In meinem Beispiel/Treiber wird dieses Ack Bit nicht ausgewertet, daher nur der einfache Pulse Befehl. Es gibt viele Treiber die das Ack-Bit nicht auswerten, so zum Beispiel auch Betriebsystem-Routinen in der C-Control.
    Wer es richtig auswerten möchte, kann also vorher die SDA-Leitung auf High legen und dann prüfen. Notwendig ist es nicht unbedingt, manchmal ist es sogar Nachteilig wenn wegen einem nicht angekoppelten Slave Fehler beim Senden gemeldet werden

    Aber zum einfachen Anwenden der implementierten I2C-Funktionen ist dieses interne Wissen nicht wichtig - das sei nur gesagt um Einsteiger nicht zu verunsichern wenn sie mal einen I2C Baustein ansteuern wollen.

    Gruß Frank

  4. #24
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.03.2004
    Beiträge
    178
    Erstmal vielen Dank für die gut Erklärung.

    Aber zum einfachen Anwenden der implementierten I2C-Funktionen ist dieses interne Wissen nicht wichtig
    Es gibt aber auch gerade hier im Board eine ganze Menge Leute, die gerne etwas mehr Hintergrundwissen über solche Funktionsweisen erlernen möchten.

  5. #25
    Administrator Robotik Visionär Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    5.116
    Blog-Einträge
    1
    Zitat Zitat von Freiheitspirat
    Erstmal vielen Dank für die gut Erklärung.

    Es gibt aber auch gerade hier im Board eine ganze Menge Leute, die gerne etwas mehr Hintergrundwissen über solche Funktionsweisen erlernen möchten.
    Ja das sehe ich auch so und ist auch gut so! Ich wollte mit der kurzen Anmerkung nur beiden Gruppen gerecht werden. Aus Erfahrung weiß ich wie schnell man was gutes bei Seite legt wenn es sich auf den ersten Blick zu kompliziert anhört

  6. #26

    I2C-SMB Bus

    @ Freiheitspirat

    die Verbindung mit einem DS1621 ist auf http://radagast.bglug.ca/epia/epia_h...#I2C_Connector
    beschrieben was für die Verkabelung hilfreich sein sollte. Im Forum von VIA gibts auch eine Lösung um auf den I2C mit Windows zuzugreifen. Such auf http://forums.viaarena.com/ nach I2C. Einer der Threads heißt "Using I2C port under Windows - Solved" da ist alles erklärt.

    MfG
    Mike

  7. #27
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.03.2004
    Beiträge
    178
    Hallo Michael,

    das Problem ist, das der SMBUS eine erweiterte Spezifikation des I2C ist und eigentlich nicht mit I2C gleich zu setzen ist, wie in den vielen Beschreibungen.
    Der DS1621 unterstützt z.B. von sich aus das SMBUS-Protokoll, aber mein Problem ist, das ich reine I2C-Chips OHNE SMBUS-Unterstützung gerne nutzen möchte (Z.B. ein einfaches Ultraschall-Modul srf0.
    Die beschrieben Software hatte ich auch schon zu Beginn dieses Artikels als Link gepostet, aber auch sie setzt auf die Spezifikationen des SMBUS und nicht des "nackten" I2C...

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress