-
        

Ergebnis 1 bis 2 von 2

Thema: Geschwindigkeit I²C und RS485

  1. #1
    Erfahrener Benutzer Roboter Experte Avatar von Tido
    Registriert seit
    14.11.2006
    Ort
    OWL
    Alter
    41
    Beiträge
    609

    Geschwindigkeit I²C und RS485

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo,

    welches Bussystem ist bei Übertragung zwischen zwei ATmega schneller, ein 100KHz-I²C-Bus oder ein RS485-Bus mit MAX485?
    Ich frage deshalb, weil ein "Print Byte" ja relativ lange braucht bzw. das Programm recht "lange" an der Stelle "hängt".
    Ich muss ca. 10 Byte in beide Richtungen übertragen, momentan läuft das mit I²C recht schlecht, da sich beim PWM-Betrieb von zwei Motoren (Leitungen kreuzen sich, leider nicht zu vermeiden) das Programm beim warten auf TWINT häufig aufhängt und neu gestartet werden muss.
    Deshalb ziehe ich den EInsatz von RS485 in Erwägung.

    Ich hoffe, mir kann jemand helfen?!
    MfG
    Tido

    ---------------------------------------------------
    Have you tried turning it off and on again???
    ---------------------------------------------------

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    hmmm ja ... also ... 485 und I2C sind im prinzi Hardwarebeschreibungen
    von Bussen, also wie die HArdware aussehen soll.
    Bei I2C halt zweidrätig seriell synchron, bei 485 2 / 4-drätig differentiell asynchron.
    Der wesentlilche Unterschied ist das bei I2C nur eine Datenleitung zur Verfügung steht plus die Taktleitung, bei 485 eben beides Datenleitungen sind im Gegentakt, dafür aber kein Takt.
    Bei I2C kann man sich, da synchron, so Geschichten wie Startbit, Stopbit, Parität schenken, dafür ist die halt störanfälliger auf Einstreuungen.
    Bei I2C ist auch kein Duplexbetrieb vorgesehen, bei 485 auf 4 Drähten schon.
    Wenn Du die ideal standard Funktionen von Bascom verwendest wirst Du
    bei beidem annähernd gleich schnell sein in der Übertragung und im
    Programmablauf an der Stelle stehen bleiben, leider. Das lässt sich aber
    umgehen, indem Du interruptbasierend programmierst und eben bei
    Interrupt Zeichen versendet (txc) ein neues Zeichen nachschiebst.
    Das geht in Bascom recht elegant über die Buffered - Funktion (config serial out wenn ich mich recht erinnere). Dann passiert folgendes:
    Es wir ein Zeichen in die UART (UDR-Register) geschrieben, und das Programm läuft weiter. Ist das Zeichen oder Byte draußen wird ein Interrupt ausgelöst, in dem das nächste Zeichen in den Ausgangspuffer geschrieben wird und weiter im PRogrammablauf. Das wiederholt sich eben bis das letzte Byte raus ist.

    Tendenziell ist für längere und "verseuchte" Strecken 485 besser geeignet als I2C, das eigentlich nur für Datenverkehr auf der Platine gedacht war.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

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