www.mikrocontroller.net

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

Autor: Bernd Döllgast (bernddoe)
Datum: 08.05.2008 20:37

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 Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net