Hallo!
Vielen Dank für deine Antwort.
Jetzt ist mir einiges klarer.
Grüße
Hallo!
Vielen Dank für deine Antwort.
Jetzt ist mir einiges klarer.
Grüße
Grüße
Thomas
Vielleicht eine blöde Frage aber die kam mir gerade in den Kopf.....was spricht dagegen die internen Pull-ups zu verwenden?
Sind die vom Wert her zu groß (hab den Wert gerade nicht im Kopf)?
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo,
hab ich nicht probiert, könnte mir aber Verwicklungen mit den Bascom Routinen vorstellen. Um den internen Pullup einzuschalten, müßte SDA bzw SCL vom Master (µC) als Input konfiguriert werden und dann in dem PORT Register das entsprechende Bit auf "1" geschrieben werden. Da die gleichen Leitungen aber auch als Ausgang genutzt werden und dann das Portregister für die Ausgabe wieder überschrieben wird, wäre der Endzustand für mich ungewiß.
Habe deshalb die in der Bascom Hilfe vorgeschlagene HW Konfiguration genommen.
Der Wert der Pullups mit 1kOhm ist relativ niedrig. Wenn man googelt, findet man, daß die meisten Anwender Werte zwischen 1kOhm und 10kOhm benutzen. Die internen Pullups des Mega8 liegen wohl zwischen 20kOhm und 50kOhm.
Im Datenblatt zum ST24C16 gibt es auf Seite 4 ein Diagramm, das den maximalen Wert des Pullups in Abhängigkeit zur Kapazität der Busleitungen zeigt. Weil der Speicher vermutlich nah am µC liegt, kann man danach ziemlich sicher 10kOhm oder sogar noch höhere Pullups nehmen.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Dank dir für die Antwort.
Stimmt....das hatte ich gar nicht bedacht, das die Pull-ups nur bei Input-Pins geschaltet werden können, aber I²C selber ja Output-Pins braucht.
Vermutlich wird es dann nicht nur im Bascom zu ungereimtheiten kommen sondern auch im AVR Studio.
Ich hab das gestern mal mit PSoCs von Cypress getestet (da kann man im Pinout Editor die "Eigenschaften" jedes Controllerpins verändern). Nur die IDE setzt die Pins für I²C automatisch auf "Strong" ganz egal ob man da vorher High-Z, Pull-down oder Pull-up eingestellt hat.
So einen "Luxus", das sie die Pins passend der eigentlichen Funktion einstellen, haben die IDEs für die Atmel Controller wahrscheinlich nicht![]()
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo Kampi,
bisher kenne ich nur Bascom für den µC Bild hier und da ist mir ein Pinout Editor noch nicht aufgefallenDa übernehmen dann bestimmte Bascom Anweisungen die Konfiguration der Pins. Aufgefallen ist mir das, wenn ich mich recht erinnere, zum erstenmal bei der Konfiguration zum SW-UART mit der OPEN Anweisung. Ist im Nachhinein betrachtet eigentlich klar - aber man erlebt ja jedes mal wenn man was Neues anfängt, immer wieder Überraschungen
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Grüße,
Daniel
@ePyx: Bist Du sicher. Ich denke eher so, daß große Werte für den Pullup das auf GND ziehen erleichtern. Wenn die Busteilnehmer den GND wegnehmen, müssen die Pullups die Leitungen nach VCC ziehen und das gegen die Leitungskapazität - müssen die Leitungskapazität aufladen. Damit das schnell geht und damit die Signalform gut bleibt, sollten die Widerstände nicht zu groß sein.
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Naja jeder Busteilnehmer der senden will, muss sda auf low ziehen. Sprich nach GND.
Die Eingangs- und Ausgangskreise von Master- und Slave-Bausteinen werden als Wired-AND-Schaltung bezeichnet. Im Ruhezustand sind die als Open-Collector ausgeführen Transistoren gesperrt und der Bus befindet sich auf High-Pegel. Zur Ausgabe einer logischen 0 wird der Transistor leitend und zieht die entsprechende Leitung auf Masse. Im umgekehrten Fall bleibt die Basis des Transitors stromlos und die Leitung liegt, bedingt durch den Pull-up-Widerstand auf logisch 1. Die Eingangskreise erkennen die Pegeländerungen auf den Busleitungen und können sie dann entprechend auswerten.
Umso größer die Widerstände umso weniger Strom. Sprich die Tranistoren der Eingangs-/Ausgangsstufen schalten eventuell nicht richtig. Konkrete Werte dafür gibt es nicht. Die einen behaupten 1kOhm tut es, andere nehmen die goldene Mitte von 4,7 kOhm. Da 10 kOhm bei 5 Volt 500µA entspricht, ist das wohl eine Grenze aus der Praxis. Man hat damit einfach sichergestellt, dass nahezu jeder Transistor durchsteuert. Egal wie schlecht er ist.
Grüße,
Daniel
Danke für die Erklärung und ich dachte schon es wär einfach
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Wegzu einigen meiner Konstruktionen
Bzgl. der Leitungskapzität gibt man ja die Maximallänge der Busleitung an, da dort dann der Kapazitätsbelag/Länge relevant wird. Ansonsten kann man aber auch ein akives Glied zwischen schalten. Im einfachsten Fall wären das 2 Mosfets und 4 Widerstände.
Halt sone Art Verstärker/Repeater.
Grüße,
Daniel
Lesezeichen