-
        

Ergebnis 1 bis 7 von 7

Thema: Software I2C bzw. TWI

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    17.07.2006
    Beiträge
    30

    Software I2C bzw. TWI

    Anzeige

    Hi zusammen,

    ich programmiere einen Atmega16 in C. Ich versuche einen I2C softwaretechische zu implementieren. Der µC wird der Busmaster sein. Es stehen soweit alle Funktionen (startbedingung, stopbedingung, writebyte, readbyte). Allgemein habe ich mich an dem Code der Procyon Lib orientiert. Wenn ich habe der Slave auslesen möchte (also SDA realease und mit dem Master 8 (bzw 9) Clockimpulse erzeuge), dann will der Slave die Dataline partout nicht runterziehen. SDA bleibt unter allen Umständen high.

    Hat jmd damit erfahrung?
    Wäre suuper dankbar für Eure Tips!

    Danke, simple.

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi simple,

    gibt es Pullup Widerstände am I2C Bus an Takt und Datenleitung?

    Gruß m.a.r.v.i.n

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    17.07.2006
    Beiträge
    30
    Ja. Ich verwende die internen des µC.

    Zusatzinfo: ich hab an denselben Ports schon mal mit der Hardwareunterstützung des I2C vom µC mit meinem Slave tadellos zum laufen gebracht.
    Meine Softwareimplementierung dagegen funktioniert nicht

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    17.07.2006
    Beiträge
    30
    Ich habe mal versucht die Messung zu skizzieren (siehe Anhang).
    Was mich beunruhigt ist
    a) dieser kleine Peak der zwischen dem LSB und dem ACK Impuls auftritt (v.a. die Pegelhöhe ist genau mittig)
    b) Dass beim 9. Clockimpuls die Dataline gegen Ende des Impulses von 0->1 wechselt.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken timing_169.jpg  

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    Hallo,

    schaltest Du im Master, wenn der Slave ziehen darf, auch wirklich den High Treiber ab?
    Also ist der SDA Pin des Masters auf Input?
    Sonst versucht der Slave runterzuziehen, aber der Master hält dagegen und es gibt einen Kampf der Treiber.
    Kannst auch mal in Serie einen Wiederstand einbauen in die SDA Leitung. Dann kannst Du den Treiberkampf mit dem Oszi sehen

    PS:
    Bei mir geht der Software I2C

    Bernhard

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    17.07.2006
    Beiträge
    30
    Hi,

    es war tatsächlich so, dass ich nach probieren herausgefunden habe, dass sowohl master als auch slave am bus treiben.

    Aber sagt mir mal wie das im AVR intern an den hardwareunterstützten I2C ports funktioniert?

    Vielen Dank für Eure Tip oben,
    simple.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.04.2005
    Beiträge
    181
    Hallo,

    wie das die Hardware TWI macht.
    Die bedient einfach nur den Pulldown Fet des Ausgangs.
    Der Hightreiber bleibt aus. Damit kann der externe (oder interne) Pullup nach oben ziehen.
    Wenn 1 oder mehrere Busteilnehmer runter ziehen, gibt es ein low auf dem Bus.


    Berhard

Berechtigungen

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