Forum: Mikrocontroller und Digitale Elektronik Takte zum Umschalten von Ein- auf Ausgang


von Gerald Heilmann (Gast)


Lesenswert?

Hallo Leute!

Ich möchte mit einem "Atmel Atmega 8535" den Temperatursensor "DS
1820" (1-Wire) auslesen. Dafür muss ich den Pin sowohl als Aus- und
Eingang verwenden. Da das ganze ziemlich zeitkritisch ist, würde es
mich interessieren, wie lange (wie viele Takte) der folgende C-Befehl
benötigt:
DDRC |= 0x10; // PC4 als Ausgang

Und wie viele Takte benötigt das setzen eines Pins (bzw. Abfragen)?
PINC &= ~0x10; // pull DQ low to start timeslot

Danke im voraus!
MfG,
Gerald Heilmann

von Benedikt (Gast)


Lesenswert?

Erzeugten Assembler Code anschauen und Datenblatt lesen...

von Uwe Nagel (Gast)


Lesenswert?

Schau dir daas .lst-File an, da siehst Du, wie der Compiler das
übersetzt. WinAVR macht daraus ein set bzw clr, so dass im nächsten
Takt der Ausgang geändert ist.
Der Prozessor ändert das Signal am Ende eines Zyklus und fragt Eingänge
am Anfang ab. Folgt also das Zurücklesen direkt auf das Schreiben,
sollte mindestens ein Taktzykus dazwischen sein.
Der C-Compiler wirds aber kaum anders machen, in Assembler sollte man
das evtl. aufpassen.

Uwe

von ...HanneS... (Gast)


Lesenswert?

"set" setzt T-Bit im SREG
"clr" setzt ein Register auf Null

Mit SBI und CBI wird das eher was.

...

von Gerald Heilmann (Gast)


Lesenswert?

Vielen Dank für eure Antworten!
Eine schnelle, kompetente Hilfe bekommt man hier :) - macht weiter so
;)

von Peter D. (peda)


Lesenswert?

Bei 1-Wire must du die Pins als open-drain verwenden, d.h. der PORTx-Pin
wird einmalig auf 0 gesetzt und nie wieder angerührt.

Zum Senden einer 0 wird dann das DDRx-Bit auf 1 gesetzt.

Eine aktive 1 darfst Du nie senden.


Peter

von Jens123 (Gast)


Lesenswert?

Hallo
willst du es komplett selbst programmieren oder darf es schon etwas
gutes fertiges sein??

http://www.siwawi.arubi.uni-kl.de/avr_projects/tempsensor/index.html

Gruss Jens

von A.K. (Gast)


Lesenswert?

@Peter: mir scheint für parasitären Betrieb des Sensors eine 1
zeitweilig notwendig zu sein. Der Pullup ist sonst während der Messung
etwas dünn.

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.