Attiny mit I2C und ISP gleichzeitig

Persönliche Seite #3494787
Lesenswert?

Hallo,
ich stelle gerade ein paar Überlegungen an, wie ich einen I2C-Sklaven 
mit einem Attiny2313 hinbekomme. Dabei stelle ich mir die Frage, wie das 
in der Praxis mit dem USI funktioniert. Da hängen ja I2C und ISP 
gleichzeitig dran und ich bin mir nicht sicher, ob es wirklich so 
einfach sein soll (was die Hardware betrifft)

Ich wäre acht froh, wenn ihr euch mal den angehängten Schaltplan 
anschauen und mir sagen könntet, ob die Hardware so OK ist und wo es 
noch Verbesserungspotential gibt.

LG, Timo
Angehängte Dateien:
Gast #3495455
Lesenswert?

OK, dann mal los!
Vcc       = 5V
I2C Uhigh = 0,7 * Vcc = 3,5V (Minimum)
I2C Ulow  = 0,3 * Vcc = 1,5V (Minimum)

I2C Strom = 3mA (hoffentlich richtig)

R = U/I = 1,5V/0,003A = 500 Ohm

Ich schließe daraus, dass der Widerstand maximal 500 Ohm groß sein darf, 
damit der Spannungsabfall den High-Pegel nicht unter 0,7 * Vcc drückt.

Wenn das richtig sein sollte, mach ich einen Salto ;)

LG, Timo
Gast #3496908
Lesenswert?

Hallo Timo,
wir haben unseren Hausbus auch mit ATtiny realisiert. Allerdings mit dem 
26iger. Lade mal das Handbuch runter (Hardware Band 0 usw. 
[haus-computer.de] dort unter download), da sind die Schaltpläne drin 
zum Vergleich für Dich. Wir verwenden allerdings einen modifizierten I2C 
Bus, wegen der gößeren Reichweite. Die hex-Files für die beiden 
Anwendungen (Schalten und Messen) gibt es auch unter der Adresse... Ich 
weiß ja nicht, was Du letztlich machen willst, aber wir sind mit unserem 
Ergebnis (Zuverlässigkeit) sehr zufrieden! uwe
Persönliche Seite #3497236
Lesenswert?

Hallo Uwe,
danke für den Link. Hab es gestern nur kurz überflogen und lese mich 
heute oder morgen mal ein. Es sieht aber ziemlich interessant aus, daher 
bin ich gespannt, was ich davon lernen kann!

Eine konkrete Anwendung hab ich noch nicht im Kopf. Es handelt sich mehr 
um "Grundlagenforschung" zum Thema ATTiny als I2C Slave. Wenn ich einmal 
weiß wie es geht, dann sind die Anwendungsmöglichkeiten bestimmt sehr 
vielfältig. Meine initiale Fragestellung war, warum ich einen PCF8574 
für die Porterweiterung nehmen soll, wenn der Tiny viel mehr kann und 
der Kleine (mit Quarz und Co.) maximal einen Euro mehr kostet.

LG, Timo
Persönliche Seite #3497257
Lesenswert?

Timo Gruß schrieb:
> …
> Meine initiale Fragestellung war, warum ich einen PCF8574
> für die Porterweiterung nehmen soll, wenn der Tiny viel mehr kann und
> der Kleine (mit Quarz und Co.) maximal einen Euro mehr kostet.
Es sind ja nicht nur die Kosten der Bauteile, sondern auch der 
Programmierung (inkl. Qualitätssicherung, resp. Fehlersuche). So gibt es 
Port-Erweiterung von Maxim oder anderen, die gleich Keyscanning können 
und/ oder den RAM erweitern und/ oder Anzeigen treiben. 
Programmieraufwand: 0.
Gast #3497658
Lesenswert?

Boris, wie recht Du hast! Unsere Programmierung mit dem ATtiny26 hat 
jetzt ca. 3 Jahre praktische (Bus-) Erfahrungen hinter sich. Man meint 
alles ist super und korrekt programmiert, und dann gibt es einen dummen 
Zufall ;-) Qualität ist eben nur durch hohen Testaufwand oder 
langjährige Erfahrung zu bekommen. Aber auch Firmen können schludern: 
bestes Beispiel ist der Temperatursensor LM75 - kommt zwar seeehr selten 
vor, aber wenn der schlecht drauf ist wird die SDA Leitung dauerhaft gen 
Masse gezogen und der gesamte Bus verabschiedet sich! Timo, lass Dich 
bitte von alten Hasen nicht beirren, beschäftige Dich mit dem, was Du 
vor hast aber sieh auch über den "Gartenzaun" ;-)
Persönliche Seite #3498841
Lesenswert?

Hallo ihr zwei,
danke für die Hinweise, die werde ich mir zu Herzen nehmen!
Da habe ich sicher Äpfel mit Birnen verglichen. Der ATTiny ist kein 
Ersatz für den PCF8574, dass sollte nicht meine Botschaft sein. Da ich 
mit dem PCF8574 schon gearbeitet habe, dachte ich mir aber, dass der 
ATTiny als I2C Sklave der logische, weitere Schritt ist.
Ich sitze heute für 3,5 Std. im Zug und werde mir da die 
Hausbus-Unterlagen durchlesen. Ich bin sehr gespannt!!
Persönliche Seite #3499532
Lesenswert?

So! An meiner alten Heimat (Köln) bin ich vorbei und Frankfurt liegt 
kurz vor mir. Ich wusste nicht, dass intensives Lesen auch im ICE 
Übelkeit verursacht. Puh :(

Aber ich hab mir den Teil 0 und Teil 1 angeschaut um was über die 
I2C-Verbindung und die Parallelwiderstände rauszubekommen. Ich habe Uwes 
Schaltung für meine Zwecke übernommen. Lediglich die beiden Z-Dioden 
scheinen mir in meinem Fall überflüssig. Bei dir wird das wohl wegen 
möglicher Spannungsänderungen auf dem Bus nötig geworden sein, oder? 
Ansonsten würde ich es jetzt mal mit einem Parallelwiderstand von 110 
Ohm versuchen.

LG, Timo
Angehängte Dateien:
Gast #3500587
Lesenswert?

Timo, dass mit den Widerständen bei Dir verstehe ich nicht. Die 110 Ohm 
Widerstände sind in Reihe und dienen bei mir in Verbindung mit den 
Z-Dioden als Begrenzer, da auf dem Bus (bei mir) Spannungspegel von +/- 
12V erlaubt sind (serielle Schnittstelle beim Master). Gleichzeitig 
werden damit induzierte Fremdspannungsimpulse auf die zulässigen Pegel 
begrenzt. Bei einem Hausbus über viele Meter ist das nicht zu 
vernachlässigen! Also erst die Widerstände und dann direkt am IC die 
Z-Dioden. So, wie Du die Widerstände eingezeichnet hast, mache sie 
eigentlich keinen Sinn, es sei denn, Du rechnest mit den IC-internen 
Bauelementen.
R2 bis R4 sind auch an der Plus-Seite miteinander verbunden - wenn Du 
mehrere Slaves parallel betreiben willst ist das ein Fehler. Denke 
daran, dass immer nur ein Buswiderstand für die entsprechende Leitung 
für den ganzen Bus notwendig ist. Also entweder die Widerstände einzeln 
an den Connector führen oder nicht bestücken oder DIP Schalter vorsehen.
Persönliche Seite #3501032
Lesenswert?

;) Daran wird es gelegen haben! Bestimmt!

Was ich gerne realisieren möchte, ist einfach eine kleine Leiterplatte, 
auf der ein ATTiny2313 sitzt, der z.B. eine LED und einen Taster 
schaltet/erfasst. Der Master, auf einer separaten Platine, ist ca. 10cm 
entfernt und kommuniziert mit dem Tiny über den Bus (10-pol. 
Flachbandkabel). Mehr steckt da zur Zeit nicht dahinter.

Aus diesem Grund (und weil nur 5V im Speil sind) lasse ich die Z-Dioden 
weg. Die in Reihe geschalteten Widerstände habe ich dem Link ganz zu 
Beginn entnommen. Dort schreibt Atmel, dass diese für einen SPI-Bus(!) 
benötigt werden (siehe angehängtes Bild [Figure 3-2]). Ich habe nun, 
blauäugig wie ich bin, angenommen, die braucht es für den I2C-Bus auch. 
Und noch blauäugiger, dass das die 110 Ohm Widerstände aus dem 
Hauscomputer-Handbuch sind.

Was die Pullups angeht, so sind die nur darauf, falls es mal einen 
Master gibt, der die nicht mit auf der Platine hat. Normalerweise würde 
ich den Jumper auf den Slaves immer ausgeschaltet lassen.

Was hälst du/ihr, vor diesem Hintergrund, von der Schaltung? Hab im 
angehängten Bild die Z-Dioden mal raus genommen.

Vielen Dank für die super Unterstützung!!
Timo
Angehängte Dateien:
Gast #3502019
Lesenswert?

Die Reihen-Widerstände dienen dem Schutz des Masters und des ATtinys, 
wenn die Pins des ATtinys, aus welchen Gründen auch immer, als Ausgänge 
aktiv werden und gegen den Master arbeiten. Im Atmel Dokument heist es: 
"if additional devices are connected to the ISP lines, the programmer 
must be protected from any device, other than the AVR, that may try to 
drive the lines.. Applying series resistors on the SPI lines, as 
depicted in
Figure 3-2, is the easiest way to achieve this."
500 Ohm sind dafür bei (5V) ok. Der max. Spannungsabfall über die 
Widerstände im Normalbetrieb ist vernachlässigbar und der Strom im Falle 
des "Gegeneinanderarbeitens" wird auf 4.5/500=9mA begrenzt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren