- LiTime Speicher und Akkus         
Ergebnis 1 bis 8 von 8

Thema: [gelöst]I²C am Atmega8 - möglicher Kurzschluss

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.03.2010
    Ort
    nahe München
    Beiträge
    45

    [gelöst]I²C am Atmega8 - möglicher Kurzschluss

    Anzeige

    Powerstation Test
    Ich hätte eine (theoretische) Frage zu I²C mit dem Atmega8:

    Bei I²C werden alle Pins direkt verbunden mit Pull-Up gegen Vcc
    Alle Pins haben open-collector.
    Die Pins vom Atmega aber nicht. Wenn ich jetzt beim Atmega z.B. auf SDL auf high gehe, und ein anderer Pin an SDL auf low, dann müsste doch eigentlich ein Kurzschluss entsteht?

    Ich möchte den PCF 8574 mit einem Software-emuliertem Master an Pin B4 und B5 anschließen...

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Der Mega8 hat zwar keine open-collector-Ausgänge, dafür kann er mit seinen Ausgängen drei Zustände erzeugen: High, Low, Eingang. Und Eingang (mit internem PullUp) ist funktionell wie ein Open-Collector-High.

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Die Pins vom Hardware - TWI (I2C) Interface sind auch nur open Kollektor (bzw. genauer Open Drain), wenn man die Pins als I2C benutzt. Nur wenn der Rest des I2C bus weiter funktionieren soll, wenn der µC keine Versorgungsspannung hat, müsste man noch extra Dioden dazu schalten.

    Bei Software I2C müsste man halt Dioden dazu schalten. Dann verhalten sich auch andere Pins ganz ähnlich wie Open-Kollektor Pins. Nur bei weniger als etwa 3 V stört dann der Spannungsabfall an der Diode.

    Edit:
    Die Lösung von Radbruch ist einfacher und besser.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.10.2008
    Ort
    Kehnert
    Beiträge
    1.159
    ... soweit ich weiss sendet beim I2C-Impulsmanagment auch immer nur
    ein Teilnehmer, so dass mehrere "volldurchgesteuerte" L oder H sich durch
    ev. Parallelschaltungen nicht ins Gehege kommen. VG Micha

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Als Kennzeichen für den Start einer I2C-Kommunikation zieht ein Teilnehmer die Leitung auf Low. Wenn der AVR dabei ein echtes (hartes) High ausgibt, qualmt's. Elektronische Bauteile funktionieren mit Rauch...

    PB4 und PB5 sind die Drehrichtung des linken Motors. Das bedeutet, der asuro kann und darf nur im Stillstand kommunizieren. Welche Software-I2C-Lösung verwendest du? Ich würde das gerne auch mal testen...

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    28.03.2010
    Ort
    nahe München
    Beiträge
    45
    Vielen Dank für die vielen, schnellen, Antworten.

    PB4 und PB5 sind die Drehrichtung des linken Motors. Das bedeutet, der asuro kann und darf nur im Stillstand kommunizieren. Welche Software-I2C-Lösung verwendest du? Ich würde das gerne auch mal testen...
    sorry, es heißt PC2 und PC3, die Standard-I²C - Lösung, um dann ein Display anzuschließen.

    http://www.asurowiki.de/pmwiki/pmwik...LCDErweiterung

    Anscheinend klappt das ziemlich gut, ohne Kurzschluss

    Als Kennzeichen für den Start einer I2C-Kommunikation zieht ein Teilnehmer die Leitung auf Low. Wenn der AVR dabei ein echtes (hartes) High ausgibt, qualmt's. Elektronische Bauteile funktionieren mit Rauch...
    nett formuliert... d.h. es kann also tatsächlich ein Kurzschluss entsteht?

    Und Eingang (mit internem PullUp) ist funktionell wie ein Open-Collector-High.
    Ja, hier gibt es noch Hi-Z usw...
    aber das nur, wenn der Pin auf Eingang geschalten ist. Bei I²C (wie in der AsuroLib beschrieben) wird der Pin als Ausgang auf High schalten, wofür laut Datenblatt kein PullUp verfügbar ist.


    Nach bisschen überlegen kommt mir eine Idee:

    Das I²C-Protokoll ist die Lösung:
    Der Portexpander ist nur ein Slave, d.h. er schalten nicht selber SCL und SDA auf low, es entsteht kein Kurzschluss. Da er nie startet, braucht/kann er gar nicht SCL auf low ziehen (Datenblatt). Und wenn der etwas antwortet (z.B. ACK etc.) ist der Atmega als Eingang, im High-Z, mit PullUp und verhält sich wie open-collector-High.

    Dadurch ist entsteht bestimmt kein Rauch

    (man kann aber durch einen Programmfehler SCL auf low ziehen (Atmega: ich höre), aber dabei vergessen, SDA als Eingang zu schalten, ... )


    Gruß

    DL

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Ja, ich würde sagen, du hast es jetzt drauf

    Seit ein paar Tagen spiele ich auch mit dem PCF 8574, allerdings nicht am asuro. Der LCD-Schaltplan im asuro-Wiki stimmt nicht mit der Software überein! Die Software selbst funktioniert aber, wenn man beim Anschluß die Defines beachtet:

    Code:
     ////// PCF8574p PINS
    
     #define LD4         4            // Pin to Data Bus 4
     #define LD5         5            // Pin to Data Bus 5
     #define LD6         6            // Pin to Data Bus 6
     #define LD7         7            // Pin to Data Bus 7
    
     #define LRS         0            // Pin to RS Pin (Register Select)
     #define LRW         1            // Pin to Read/Write Pin
     #define LEN         2            // Pin to Enable Pin
     #define LBL         3            // Backlight Pin
    https://www.roboternetz.de/phpBB2/vi...=525681#525681

    Gruß

    mic
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    28.03.2010
    Ort
    nahe München
    Beiträge
    45
    Ja, ich würde sagen, du hast es jetzt drauf
    Würde ich auch sagen

    Ich habe vor, dass DOGM LCD Modul 163 zu verwenden und die Software selber zu schreiben, um mich in die Materie zu vertiefen, aber gut zu wissen...

    Gruß
    DL

Berechtigungen

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

LiTime Speicher und Akkus