www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 18F: Probleme mit dem Timing bei I2C


Autor: Bernd Döllgast (bernddoe)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe ein Problem mit I2C, villeicht kann jemand helfen:

Ich betreibe einen PIC 18F2321 mit 18,432MHz (der PIC soll auch eine 
RS232 bedienen, daher die krumme Frequenz) der mit einem andern PIC 16F 
und EEPROM's reden soll.
Den I2C-Code habe ich dem AN 989 und dem Web-Seminar I2C-Master Mode 
entnommen, mit SADD 0x0A für 400 kHz Bustakt. PIR1,SSPIF wird zur 
Zeitsteuerung verwendet. Das Programm macht in der Testphase nichts 
anderes als Start setzen, 10 Werte auf den Bus zu schreiben, Stop und 
wieder von vorne.

Ich beobachte den Bus mit dem PICkit Serial Analyzer.

Im MPLAB Einezelschritt und animiert funktioniert alles tadellos. Die 
Bit's der Register schalten genau so wie sie sollen, SCL und SDA 
verhalten sich nach dem Analyzer korrekt, die Daten werden korrekt 
übertragen. Mit einem Break klapt auch alles.

ABER:

Wenn das Programm in Echtzeit läuft wird die Stop-Bedingung vom Analyzer 
nicht mehr erkannt. Nur wenn der Takt auf ca. 40 kHz abgebremst wird 
(SADD 0xC0) werden die Daten korrekt übertragen. Oder ich warte nach dem 
Stop ca.300µs (2x 255 Schleife).
Leider habe ich kein geeignetes Oszi um zu schauen, ob das Stop 
tatsächlich gesendet wird oder nicht.

Pul-Up zwischen 1k und 2k zeigen keinen Einfluss auf das Verhalten. Am 
Bus hängen 4 Elemente, 2xPIC und 2x EEPROM.

Hat irgend jemamnd eine Idee wo der Fehler liegt? Oder hat der I2C eine 
Art Tot-Zeit?

Ziemlich ratlos
Bernd

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.