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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.