Frage zu Atmel Ports und Richtung

Andreas Baier schrieb:

Hallo!

Kurz und knapp- ja.

Hth, Heiko.

Reply to
Heiko Weinbrenner
Loading thread data ...

Nicht nur das -- auch die SCL-Leitung ist Bidirektional. Lies mal den I2C-Standard durch, die Salves können einen Clock-Impuls durch low-halten der Taktleitung verlängern (Clock-Stretching).

Klar, das geht jederzeit. Beim I2C Bus musst du die Daten sogar zwangsläufig per Datenrichtungs-Register ausgeben, da der I2C-Bus ein Open-Collector Bus ist. Der Atmel darf die Leitung nur auf 0V ziehen, oder auf Eingang umschalten (Der externe Pull-Up Widerstand bringt die Leitung dann wieder auf 5V).

Ich würde allerdings 'nen Stück fertigen Code dafür nehmen, warum sollte man das Rad neu erfinden?

--
thomas.kindler@gmx.de
Reply to
Thomas Kindler

Hallo,

Wenn du das TWI des AVR benutzt (aktivierst), werden die PORTx und DDRx-Einstellungen ignoriert - die jeweilige Hardware übernimmt dann die Kontrolle über die Portleitungen.

Nur wenn du einen AVI ohne TWI benutzt (und TWI alias I2C emulierst), musst du die Portleitungen selbst umschalten - und das geht jederzeit.

HTH, bye Thomas.

Reply to
Thomas Matern

Hallo,

Ich möchte einen DS1621 Temperatursensor an einem Atmel uC betreiben. Dieser hat ein TWI Interface, d.h. ich muss an SDA lesen _und_ schreiben. Soweit so gut.

Jetzt habe ich ein kleines Verständnisproblem: bei einem Atmel uC muss ich bei der Initialisierung die Richtung (Input/Output) der Ports angeben. D.h. ab dann ist mein Port Eingabe _oder_ Ausgabe - wie kann ich jetzt aber abwechselnd lesen und schreiben? Kann ich die Richtung jederzeit ändern?

Gruß Andreas

Reply to
Andreas Baier

Hallo,

Stimmt. Wie Thomas Kindler schon schrieb: Quelltext dafür solltest du reichlich finden - vermutlich sogar bei Atmel selbst.

Ich behaupte mal: ja, er benutzt I2C.

Bye, Thomas.

Reply to
Thomas Matern

Nein, erstmal will ichs nur "von Hand" machen - mit dem A90S8515, der hat noch kein TWI.

Alles klar das wusste ich nicht.

Weißt du zufällig, ob der DS1621 direkt I2C kompatibel ist?

Gruß Andreas

Reply to
Andreas Baier

Das ist mir jetzt wieder nicht ganz klar. Das DDR ist doch nur für die Richtung zuständig, oder? Wie soll ich da Daten auf den Bus geben, und warum über das DDR?

Es soll ein bisschen lerneffekt dabei sein, deshalb. Aber fertigen Code studiere ich auch gern, nur habe ich bisher nichts passendes gefunden.

Gruß Andreas

Reply to
Andreas Baier

Das hat mit der internen Beschaltung zu tun: Die AVR Eing=E4nge k=F6nnen zwischen Tristate und Bistate (interner Pullup verbunden) umgeschaltet werden. Bistate w=E4re es wenn DDR=3D0 und PORT=3D1. F=FCr=

TWI brauchst Du Tristate. D.h. DDR=3D0 und PORT=3D0.

PORT:=3D0 DDR:=3D0 =3D> der Bus ist offen und wird von den externen Pullups auf

5V gezogen.=20

DDR:=3D1 =3D> Der AVR zieht den Bus aktiv auf 0V runter.

So einfach ist das.

Wolfgang Draxinger

--=20

Reply to
Wolfgang Draxinger

Wie gesagt: I2C ist Open-Collector. Die Busleitungen sind über einen Pull-Up Widerstand mit Vcc verbunden. Die Geräte am Bus dürfen die Leitung entweder auf 0V runter ziehen, _oder_ ihren Ausgang auf hochohmig schalten. Wenn keines der Geräte am Bus eine 0 ausgibt, liegt also durch den Pull-Up eine logische 1 an.

Und das Open Collector-Verhalten kannst du simulieren, indem du 'ne 0 in das PORT Register schreibst, und dann mit dem DDR zwischen Ausgang (low ausgeben, bus wird aktiv runtergezogen) und Eingang (pin ist hochohmig, pullup sorgt ggf. für high-pegel) umschaltest.

Im Atmel-Datenblatt sind auch nochmal alle Kombinationen aus DDR und PORT tabellarisch aufgelistet.

--
thomas.kindler@gmx.de
Reply to
Thomas Kindler

"Andreas Baier" schrieb:

Willst du dir das alte Ding wirklich noch für neuen Code antun? ;-)

Ehrlich, mir wär' die Zeit zu schade dafür. Hardware-TWI geht doch so einfach...

--
cheers, J"org               .-.-.   --... ...--   -.. .  DL8DTL

http://www.sax.de/~joerg/                        NIC: JW11-RIPE
 Click to see the full signature
Reply to
Joerg Wunsch

Es gibt Leute, die benutzen heute noch einen PIC16F84 für Neuentwicklungen :-)

Ich muss aber J"org rechtgeben - bei den neueren ATMEGAs ist TWI schon fertig drin und außerdem wurden auch ein paar Probleme beseitigt, die die ATClassics noch hatten, wie z.B. zu empfindlicher Reset-Eingang u.ä.

Mfg Thomas Pototschnig

formatting link

Reply to
Thomas Pototschnig

Naja, der ist noch übrig. Und den will ich jetzt noch sinnvoll verwenden... Und IMHO müsste der seinen Dienst als Wetterstation noch ganz gut tun... Ein Atmega16, den ich daheim noch rumliegen habe ist meiner Meinung nach etwas oversized dafür...

Aber man würde wenigstens I2C im Detail kennenlernen.

Gruß Andreas

Reply to
Andreas Baier

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.