- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 20

Thema: Frage bezüglich TWI bzw. I2C-Pegel

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von iBot Beitrag anzeigen
    Pullup-Widerstände sind ja auf dem Pi-Board schon drauf (nach meinen Messungen sind die gegen 3,3V).
    Da die Eingänge vom Pi ja auch nur 3,3V vertragen.

    Jetzt meine Frage:
    Was genau macht die Hardware im Tiny? Hab ich den TWI-Bus richtig verstanden, dass der eigentlich nur entweder in der Luft hängt oder gegen GND zieht?
    Deswegen doch auch die Pullups...
    So ist es. Die 3,3V reichen nicht als standardkonformes High, da werden 3,5V erwartet. Im praktischen Betrieb wird es aber einfach funktionieren. Bevor du dir die Ohren mit nicht funktionierenden Pegelwandlern brichst, probier es einfach aus. Wenn man so die Threads verfolgt, kommen problematische Pegelwandler viel öfter vor, als zu niedrige High-Pegel.

    Manche I2C Controler können auch einen SM-BUS Mode. Da sind die Pegel TTL-kompatibel und passen perfekt für 3,3V CMOS. Ob der Tiny das auch kann, weiß ich nicht. Viele PICs können es.
    Somit wäre es ja kein Problem den Tiny trotzdem mit 5V zu versorgen (bei 3,3V hätte ich probleme mit der Auslegung von nem Spannungsteiler an nem ADC).
    Das verstehe ich nicht.

    MfG Klebwax

    - - - Aktualisiert - - -

    Zitat Zitat von Unregistriert Beitrag anzeigen
    der Pullup von SCL (PIN_SCL) eingeschaltet und dann der Pin im DDR auf output geschaltet. Der Pin ist dann ein Ausgang mit High Potential und damit wird Vcc vom Tiny auf den Bus gelegt. Falls der Tiny mit 5V betrieben wird, kommen die auch auf den Bus.
    Ich kann den Code nicht nachvollziehen, kenne den Chip nicht. Aber ein I2C Device, daß aktiv ein High auf den Bus legt, wird nicht funktionieren. Ein anderes Device kann zu jeder Zeit aktiv auf Low treiben, das kracht dann. Wenn der Code das wirklich so macht, ab in die Tonne.

    Bitbangig Code macht das normalerweise so: eine 0 ins interne Latch vom Pin schreiben, dann und erst dann auf Ausgang umschalten. Um die Leitung dann wieder High zu bekommen, den Pin auf Input schalten und der Pullup macht das High. So gibt es keine Konflikte.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von iBot
    Registriert seit
    12.05.2008
    Ort
    ca. 20km von Nürnberg
    Beiträge
    160
    Also das mit den 5V hat den Grund dass ich nicht noch mal den Spannungsteiler rumlöten will und noch ein PWM-Kanal mit 5V brauche (da fällt mir ein das kann ich ja mit nem Transistor anpassen...).
    So gesehen wäre es eigentlich mit viel Aufwand möglich auf 3,3V umzusteigen.

    Das mit dem Programm hab ich mir auch irgendwie deutlich einfacher vorgestellt.
    Kenn ihr denn ein Projekt wo das ordenlich realisiert wurde?
    Zum TWI bzw. USI-Slave über Bascom gibts ja im Internet doch recht wenig was mich weiter bringt.

    Hab in der Zwischenzeit (bevor ich gelesen hab dass der Tiny mit ein High gibt) das Raspberry mit dem Tiny verbunden.
    Keine Reaktion vom Tiny.
    Pegel hab ich immer am Oszi gehabt, waren nie über 3,3V.


    Seh ich das richtig, dass die realisierung mit einem Mega8 deutlich einfacher ist?
    http://rn-wissen.de/wiki/index.php/TWI_Praxis
    Werde vermutlich meine Platine noch mal überdenken...
    Geändert von iBot (06.09.2016 um 13:29 Uhr)


  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von iBot
    Registriert seit
    12.05.2008
    Ort
    ca. 20km von Nürnberg
    Beiträge
    160
    Also ich hab jetzt einen Mega8 aufgelötet, alles auf 3,3V umgestellt (auch Spannungsteiler und PWM mit Pegelwandler) und durfte dann feststellen dass ein kleines Drähtchen eine Verbindung zwischen SDA und SCL hergestellt hat, was wohl das Hauptproblem war.

    Konnte inzwischen eine Verbindung mit dem Raspberry herstellen.

    Danke an alle die mitgedacht haben.


  4. #4
    HaWe
    Gast
    ich kann es bestätigen, zumindest bei 5V Arduinos (Uno und Nano, beide selber getestet) sind weder Level-Shifter noch zusätzliche Pullups nötig, wenn beide am selben Bus hängen und der Raspi Master ist, denn beide 1,8k Pullups des Raspi ziehen ja den Bus bereits auf +3,3V.
    Das bestätigen auch Links im Web:
    https://oscarliang.com/raspberry-pi-...connected-i2c/

    Bild hier  

    Man könnte daher davon ausgehen, dass es auch mit anderen 5V AVRs genau so einfach funktioniert.

    Beim Arduino Mega ist es problematischer, weil der selber eingebaute Pullups auf 5V besitzt (sowohl auf dem Chip (die müsste man vorher rauslöten) als auch auf dem Board (die kann man jederzeit in twi.c disabeln) ).

    (Anm.: Allerdings gab es i2c-Kommunikationsprobleme, die auf clock stretching durch den Arduino zurückzuführen waren, die der Raspi (in C programmiert) nicht vertrug. Das muss aber nicht für andere AVRs gelten. )

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    warte warte warte ... der Raspi kann kein Clock Stretching? ... das ist schwach, da les ich mich nochmal genauer zu ein wenn ich Zeit habe
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  6. #6
    HaWe
    Gast
    Genau, sag ich doch, zumindest nicht mit dem damaligen Kernel (bis Anfang April dieses Jahres). Dazu gibt es sogar hier im Forum ein Topic.
    Das clock stretching wurde wohl durch den AVR Arduino verursacht (was viele auch im raspi Forum für die Ursache der I2C Datenübertragungsfehler hielten), und eben das vertrug der Raspi nicht, daher konnten mal keine großen Datenblöcke auf einmal übertragen werden und ein anderes Mal schmiss der Raspi sogar den Arduino aus seinem I2C Bus und erkannte ihn gar nicht mehr als I2C device unter seiner Busadresse.
    Seit dem 10.4. gibt es allerdings einen neuen Kernel, vlt kann der mehr als der vorhergehende, seitdem habe ich die AVRs aber nicht mehr am Raspi-i2c-Bus getestet..
    Mit dem Aruino DUE (andere berichteten, glaube ich, auch mit demZero) funkionierte aber vorher schon I2C immer außerordentlich zuverlässig.

    ich bezog mich auch auf den "echten" I2C Modus, wie er unter C/C++ mit pigpio und wiringPi benutzt wird (mit Arduino per 100kHz, ansonsten mind. bis 400kHz), der wohl langsamere smbus-Modus als auch Software-Bitbanging waren in dieser Hinsicht toleranter. Auch zum letzteren gab es im besagten Topic Beispiele.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    das smbus Protokoll definiert ja clock stretching, logisch dass es da verwendet wird.
    Aber ich bin mir ziemlich sicher dass jedwede Hardware I2C Logik (also das peripheral im raspi SoC) auch dazu in der Lage ist aber die I2C-Libs das notwendigeFflag nicht einschalten .... einer der Gründe warum ich meistens doch lieber Bare Metal programmiere wenns ordentlich werden soll, Bibliotheken scheitern immer an DEtails die der Erfinder nicht bedacht hat.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied Avatar von avr_racer
    Registriert seit
    01.04.2014
    Ort
    MecklenburgVorpommern
    Beiträge
    175
    Hallo miteinander,

    ich möchte einen Tiny85 als Slave und ein Raspberry Pi 2B+ als Master an einem TWI-Bus betreiben.
    Pullup-Widerstände sind ja auf dem Pi-Board schon drauf (nach meinen Messungen sind die gegen 3,3V).
    Da die Eingänge vom Pi ja auch nur 3,3V vertragen.

    Jetzt meine Frage:
    Was genau macht die Hardware im Tiny? Hab ich den TWI-Bus richtig verstanden, dass der eigentlich nur entweder in der Luft hängt oder gegen GND zieht?
    Deswegen doch auch die Pullups...
    Somit wäre es ja kein Problem den Tiny trotzdem mit 5V zu versorgen (bei 3,3V hätte ich probleme mit der Auslegung von nem Spannungsteiler an nem ADC).
    In der Luft sollte der nicht hängen denn dafür gibs ja die Pullups. Diese werden benötigt da I2C OpenCollector ist, somit sind auch unterschiedliche Versorgungsspannungen der Einzelgeräte möglich. Wenn, wie in deinem Falle Master mit 3,3V und der Tiny mit 5V betrieben wird, ist das unkritisch. Die Pulls hängen für beide an 3,3V und für den Tiny85 bedeutet:

    3,3V
    Lowpegel 0V - 0,5V
    Highpegel 2,5V - VCC

    5V
    Lowpegel 0V - 0,6V
    Highpegel 2,5V - VCC

    Auf seite 161 unter Vol / Voh nachzulesen.

    Ist zwar nicht die 100% Lösung und man müsste sich mal das LogicLevel des PI's anschauen

    Der Tiny85 hat eine USI, die ein wenig mehr an Modes kann. Seite 112 ist mal für die USI beschrieben welche Möglichkeiten bestehn.
    http://i2c2p.twibright.com/spec/i2c.pdf
    Auf Seite 42 mal die Widerstände und 43 die Möglichkeit 100%kompatibel zu sein.

    Meinen Code für den Slave möchte ich auf dem hier aufbauen:
    https://www.roboternetz.de/community/...l=1#post384610
    (Muss zugeben dass ich den Code noch nicht zu 100% verstanden habe)

    Wäre wirklich genial wenn mir da jemande einen Rat geben könnte.

    MfG iBot
    https://www.roboternetz.de/community...iny-2313/page3

Ähnliche Themen

  1. Frage bezüglich Diode
    Von _Johannes_ im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 8
    Letzter Beitrag: 25.07.2013, 15:20
  2. Frage Bezüglich ldi R24
    Von demmy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 12.08.2011, 23:18
  3. Frage bezüglich BTM222
    Von Mixer im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 01.09.2010, 18:59
  4. Frage bezüglich LCD mit AT892051
    Von semicolon im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 23.10.2005, 21:30
  5. Frage bezüglich LCD aus Camcorder
    Von Andree-HB im Forum Elektronik
    Antworten: 1
    Letzter Beitrag: 25.01.2005, 09:52

Berechtigungen

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

12V Akku bauen