mikrocontroller.net

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


Autor: Gerald Heilmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erzeugten Assembler Code anschauen und Datenblatt lesen...

Autor: Uwe Nagel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ...HanneS... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"set" setzt T-Bit im SREG
"clr" setzt ein Register auf Null

Mit SBI und CBI wird das eher was.

...

Autor: Gerald Heilmann (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/tem...

Gruss Jens

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.