mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I²C Pullup - wie groß?


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Ich habe in einem Projekt den ATMEGA128 im Einsatz. Ich benutze für die
Ansteuerung eines Temperatursensors (1621) den I²C-Bus.

Es gibt aber ab und zu Probleme bei der Übertragung. Abgesehen von
einem geschirmten Kabel glaube ich, dass es an den Pull-Up-Widerständen
liegt.
Wenn ich z.B. ein OSZI anschließe, um das Signal zu messen
funktioniert, die Übertragung zum Temperatursensor nicht mehr.

Ich benutze für Clock 4700Ohm gegen 5V und für die Daten 4700Ohm gegen
5V.
Zusätzlich sind die Widerstände direkt am Ausgang des µP positioniert.
Das Kabel zu den Sensoren ist ca. 2 Meter lang.

Soll man die Widerstände direkt bei den Sensoren positionieren oder ist
das egal?
Oder soll ich einfach kleinere Widerstände nehmen z.B. 2KOhm?
Wie klein dürfen die maximal Widerstände sein.

Danke für eure Hilfe.

Markus

Autor: Rob (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Widerstände sind wahrscheinlich zu groß. Mach sie kleiner, ca. 1,5
... 1,8 kOhm, dann sollte es klappen.

Gruß

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich experementiere grad auch mit I2C. Ich nehme 10k und es geht ohne
Probleme,

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte vorher mal 8k-Widerstände drinnen und da hat es überhaupt
nicht funktioniert.
Es kann sein, dass es mit der Übertragungsgeschwindigkeit
zusammenhängt.
Der Prozessor wird mit 16MHZ getaktet.
Ich nehem die Originalroutinen des Codevision-AVR-Compilers und da kann
es sein, dass das Ganze schon etwas schnell ist.

Autor: Sven (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Taktfrequenz (Clock) des I2C sollte maximal 100kHz (bei schnellen
I2C 400kHz, Datenblatt) sein, unabhängig vom Prozessortakt. Die
Leitungskapazität, sprich das Layout der Platine (doppelseitig,
Massefläche, dichte Leitungen, lange Leitungen), die Anzahl der
angeschlossenen ICs (Eingangskapazität) und natürlich Oszi-Leitungen
(ca. 150pF) führen zu Taktverrundungen der Low-High-Flanke (der
Widerstand muss die Kapazität wieder aufladen). Wird dabei der Pegel
nicht mehr erreicht oder kommen die Signale außer Tritt, funktioniert
die Übertragung nicht mehr. 47k nur bei kurzen Leitungen und wenigen
Slaves, Oszi mit 1:10 Tastkopf dranhängen (geringere Kapazität, 15pF),
4k7 bis 10k ist üblich, unter 3k3 kann eventuell schon zuviel Strom für
die Slaves sein, um den Low-Pegel sicher zu erreichen (Datenblatt). Bei
großen Leitungslängen kann man auch die Taktfrequenz runtersetzen.

Sven

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem ist, dass man den Temperatursensor beim Wizard
(Code-Vision-AVR) einstellen kann. Dadurch bindet sich die
Include-Datei i2c.h mit ein. Wenn man sich nun diese Datei ansieht,
sieht man nur die Funktionsköpfe und nicht die Funktionen selbst.
Dadurch kann ich nicht sagen wie schnell die i2c-Übertragung ist. Es
kann sein, dass die Funktionen so programmiert sind, dass die
Übertragungsgeschwindigkeit unabhängig vom Takt ist. Das weiß ich
jedoch nicht mit Sicherheit. Ich schau mal im Handbuch nach.

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls es nicht im Handbuch steht, kannst Du das mit Deinem Oszi messen.

Gruß, Frank

Autor: Klack (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die Funktionen von Codevision kannst du dir im LibVerzeichnis
anschauen, öffne einfach die dateDs1621.lib mit einm Editor.
Ich kann keien Anpassung an das Timing der CPU (Quarz) finden.
Warscheinlich bist du zu schnell. Du kannst dir ja die LIB anpassen.

Klack

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Frank
Danke das mit dem Oszi versuch ich mal

@Klack
Danke für den Hinweis

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Klack

Das mit der DS1621.lib bringt mir nichts, da ich ja nich die Funktionen
für den Temperatursensor verändern möchte, sondern die I2C Funktionen

Tschüss

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.