Forum: Mikrocontroller und Digitale Elektronik I2C zwischen 2 ATTINY84A


von MO (Gast)


Lesenswert?

Hallo zusammen,

ich betreibe 2 ATTINY84A (8MHz). Beide sind über eine I2C Verbidnung 
untereinander verbunden.

Da am Anfang die Kommunikation nicht funktionierte, habe ich die 
Kommunikation mit einem Oszi gemessen. Dabei ist mir aufgefallen, dass 
jedes mal wenn ich mit einer Prüfspitze an der Clock messe, die 
Verbindung ohne Probleme funktioniert.

Darauf hin, habe ich einen Kondensator zwischen Clock und GND (das was 
auch die Prüfspitze macht) angeschlossen. Nun funktiert es.

Meine Frage: Warum? Laut I2C Standard sollte die Leitunskapazität nicht 
größer als 400pF sei. D.h. (bzw. das verstehe ich so), dass eine 
Leitunskapazität von 0 F (also theoretisch) ideal wäre.

Danke und einen schönen Samstag.

ciao

MO

von spess53 (Gast)


Lesenswert?

Hi

>ich betreibe 2 ATTINY84A (8MHz). Beide sind über eine I2C Verbidnung
>untereinander verbunden.

GND ist auch verbunden?

MfG Spess

von MO (Gast)


Lesenswert?

Ja, GND ist verbunden.

Der Master hat auf seinem PCB einen Spannungswandler drauf. Von diesem 
PCB gehen 4 Leitungen ab (Vcc, GND, SDA, SCL). Der Slave wird dadurch 
auch vom selben Spannungswandler versorgt.

Gruß

von S. Landolt (Gast)


Lesenswert?

Aus dem Datenblatt: "The USI two-wire mode is compliant to the Inter IC 
(TWI) bus protocol, but without slew rate limiting on outputs and 
without input noise filtering."
Das übernimmt jetzt wohl diese zusätzliche Kapazität. Trotzdem würde ich 
mir den Aufbau noch mal genau anschauen.

von Peter D. (peda)


Lesenswert?

Wie lang ist welche Leitung, welche Baudrate?

von MO (Gast)


Lesenswert?

Peter D. schrieb:
> Wie lang ist welche Leitung, welche Baudrate?

100kbits/sec bei einer Länge von 1,5 m

Gruß

von Rene K. (xdraconix)


Lesenswert?

Also 150cm ist schon ne Hausnummer... da passt das eigentlich, es wird 
immer mit so 1.5 - 10pF/inch gerechnet. Dir ist schon bewusst, das es 
zwar kein Maximum an Leitungslänge gibt, aber i2c eigentlich einen 
Platinen-Bus für kurze Distanzen ist?!

von Karl M. (Gast)


Lesenswert?

Hallo,

ist den sichergestellt, dass die I2C Master und insbesondere die I2c 
Client-Software funktioniert ?
Woher stammt sie - Quelle ?

von Stefan F. (Gast)


Lesenswert?

Hast du Pull-Up Widerstände verwendet? Hoffentlich nicht allzu 
hochohmig. Bei der Leitungslänge würde ich es mit 1 bis 3,3k Ohm 
versuchen.

von MO (Gast)


Lesenswert?

Rene K. schrieb:
> da passt das eigentlich, es wird
> immer mit so 1.5 - 10pF/inch gerechnet.

d.h. in diesem Fall ca. 590'' --> ca. 1nF - 6nF

Der Cap an der Clock zur Rauschunterdrückung benötigt werden?

Oder liegt es daran, dass der Cap die Clock Geschwindigkeit reduziert.
Durch den Cap dauert es ja länger bis zum erreichen der Threshold. Und 
damit wird die Datenrate reduiziert(?)


Ja mir ist es bewusst, dass I2C eigentlich nur auf einem PCB verwendet 
werden sollte.

Pull-Up liegen bei 1k

I2C software kommt aus TinyWire.

von Carl D. (jcw2)


Lesenswert?

MO schrieb:
> Rene K. schrieb:
>> da passt das eigentlich, es wird
>> immer mit so 1.5 - 10pF/inch gerechnet.
>
> d.h. in diesem Fall ca. 590'' --> ca. 1nF - 6nF

1 inch = 2,54cm
150cm  = ? inch

von MO (Gast)


Lesenswert?

Carl D. schrieb:
> 1 inch = 2,54cm
> 150cm  = ? inch

ups, Komma vergessen.

also nun: 59,0'' --> ca . 88,5pF - 590pF

von Peter D. (peda)


Lesenswert?

SDA und SCL nicht nebeneinander führen, sondern eine kalte Leitung (GND, 
VCC) dazwischen.
Bei paarigem Kabel ein Paar SDA+VCC, das andere SCL+GND.

von Mitlesa (Gast)


Lesenswert?

Ich würde mal dringend auf Leitungsreflexionen tippen
die einem das Signal versauen.

Ohne Serienabschluss wird es bei dieser Konstellation
wohl nichts werden.

von Mitlesa (Gast)


Lesenswert?

MO schrieb:
> Beide sind über eine I2C Verbidnung untereinander verbunden.

Dann kann es noch Ausgleichsströme geben wenn beide Controller
über (separate) Netzteile versorgt werden. Das hebt dann den
einen oder anderen Controller im GND-Bezugspegel an.

von Carl D. (jcw2)


Lesenswert?

Mitlesa schrieb:
> Ich würde mal dringend auf Leitungsreflexionen tippen
> die einem das Signal versauen.
>
> Ohne Serienabschluss wird es bei dieser Konstellation
> wohl nichts werden.

Ja, mal 100Ω in die beiden Signalleitungen einfügen gegen das 
"Klingeln".

von Stefan F. (Gast)


Lesenswert?

> Ja, mal 100Ω in die beiden Signalleitungen einfügen
> gegen das "Klingeln".

I2C kann dazu nicht genug Strom treiben. Der Widerstand würde den bus 
fast kurzschließen.

Eventuell klappt es mit einer Reihenschaltung aus 120 Ohm und einigen 
pF. Könnte man ausprobieren und mit einem Oszilloskop überprüfen.

von Klaus (Gast)


Lesenswert?

Stefan U. schrieb:
> Eventuell klappt es mit einer Reihenschaltung aus 120 Ohm und einigen
> pF. Könnte man ausprobieren und mit einem Oszilloskop überprüfen.

Was keinen wirklichen Sinn macht, da die Leitung von beiden Seiten 
getrieben wird. Über 1-2 Meter sind aber keine Tricks nötig, das 
funktioniert in Millionen DVI bzw HDMI Kabeln einwandfrei. Dies halte 
ich aber für wichtig:

Peter D. schrieb:
> SDA und SCL nicht nebeneinander führen, sondern eine kalte Leitung (GND,
> VCC) dazwischen.
> Bei paarigem Kabel ein Paar SDA+VCC, das andere SCL+GND.

MfG Klaus

von Carl D. (jcw2)


Lesenswert?

Stefan U. schrieb:
>> Ja, mal 100Ω in die beiden Signalleitungen einfügen
>> gegen das "Klingeln".
>
> I2C kann dazu nicht genug Strom treiben. Der Widerstand würde den bus
> fast kurzschließen.

Nicht 100Ω Pullup, sondern in Serie zur Verbindungsleitung.
Als Schwingungsdämpfer.

Stichwort "Serienterminierung"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.