Forum: Mikrocontroller und Digitale Elektronik DS18S20 an AVR welche Port?


von Martin (Gast)


Lesenswert?

Hallo,
muß ich den Temperatursensor an ein bestimmtes Port von Atmega 
anschliessen oder kann ich beliebig irgend ein Port benutzen?
Hab etwas gegoogelt und meinstes ist an einem PWM Port angeschlossen, 
gibt es ein besondere Grund?

von g457 (Gast)


Lesenswert?

> kann ich beliebig irgend ein Port benutzen?

..vorzugsweise einen Pin der frei(tm) ist.

> [..] PWM [..] gibt es ein besondere Grund?

nope.

von Uwe Bonnes (Gast)


Lesenswert?

Um das One-Wire Protokoll  sicher zu erfuellen, muss man ein strenges 
Timing erfuellen. Und sicher geht das nur mit Hardware-Unterstuetzung 
z.B. durch Timer oder Uart(siehe gerade
http://dangerousprototypes.com/2012/10/28/app-note-using-uart-to-implement-a-1-wire-bus-master/
und damit nur an bestimmten Pins
Nichtdestotrotz wird aber haeufig auch nur Bitbang mit einer 
Verzoergerungsschleife gemacht, und man hat halt gelegentlich 
Uebertragungsfehler. Man kann die Fehler durch die Pruefsummen erkennen 
oder es funktioniert halt gelegentlich nicht ganz richtig.

von Peter D. (peda)


Lesenswert?

Uwe Bonnes schrieb:
> Und sicher geht das nur mit Hardware-Unterstuetzung

Woher hast Du denn dieses Gerücht?

Uwe Bonnes schrieb:
> Nichtdestotrotz wird aber haeufig auch nur Bitbang mit einer
> Verzoergerungsschleife gemacht, und man hat halt gelegentlich
> Uebertragungsfehler.

Dann hast Du es falsch programmiert. Bitbang ist zuverlässig und ganz 
ohne Übertragungsfehler. Die CRC spare ich mir deshalb. Ein Fehler würde 
beim Max-Min-Thermometer ja auffallen.

Wenn Fehler auftreten, dann durch Hardwareprobleme (lange Leitung, zu 
hoher Pullup, Störungen, Reflexionen).

Natürlich muß man Interrupts kurz halten und die 15µs atomar machen.
Bei Architekturen mit Prioritäten (8051) kann man das 1-Wire auch als 
Interrupt machen. Dann können andere Interrupts beliebig langsam sein.


Peter

von Welle 🧐 S. (w3llschmidt)


Lesenswert?

Uwe Bonnes schrieb:
> und man hat halt gelegentlich
> Uebertragungsfehler. Man kann die Fehler durch die Pruefsummen erkennen
> oder es funktioniert halt gelegentlich nicht ganz richtig.

Hi Uwe, ich habe 10 Stück am AVR NET IO, ~15.000 Messwerte am Tag,
davon ~80 Messfehler. Ich fange das im Programm ab, messe einfach ein 
zweites mal ...

Die Messfehler sind aber zu 90% von EINEM Sensor, der hängt parasitär
mit auf zwei freien Adern NYM 5x1,5 der 220v Zuleitung eines Zimmers,
ca ~20 Meter bis zum AVR ;-)

von Martin (Gast)


Lesenswert?

Hallo,

g457 schrieb:
> ..vorzugsweise einen Pin der frei(tm) ist.
>
>> [..] PWM [..] gibt es ein besondere Grund?
>
> nope.

alles klar vielen Dank!
Habe die meisten Schaltungen in web gesehen dass alle oder fast alle an 
PWM Port angeschlossen waren.

Gruß
Martin

von Karl H. (kbuchegg)


Lesenswert?

Martin schrieb:
> Hallo,
>
> g457 schrieb:
>> ..vorzugsweise einen Pin der frei(tm) ist.
>>
>>> [..] PWM [..] gibt es ein besondere Grund?
>>
>> nope.
>
> alles klar vielen Dank!
> Habe die meisten Schaltungen in web gesehen dass alle oder fast alle an
> PWM Port angeschlossen waren.

Das muss nix heißen.
Sieh dir halt die zugehörigen Programme und sieh nach, wie der Pin 
benutzt wird. Dann weißt du es in jedem Einzelfall genau.

von Martin (Gast)


Lesenswert?

Karl Heinz Buchegger:
> Das muss nix heißen.
> Sieh dir halt die zugehörigen Programme und sieh nach, wie der Pin
> benutzt wird. Dann weißt du es in jedem Einzelfall genau.

Jap, vielen Dank den Tipp.

von Uwe Bonnes (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Dann hast Du es falsch programmiert. Bitbang ist zuverlässig und ganz
> ohne Übertragungsfehler. Die CRC spare ich mir deshalb. Ein Fehler würde
> beim Max-Min-Thermometer ja auffallen.

Peter, wie willst Du denn garantieren, dass nicht durch eine Anhaeufung 
von Interrupts dein Bitbanging doch irgendwann mal nicht funktioniert? 
Klar, ein Max-Min Thermometer braucht nicht 100 % Sicherheit. Aber falls 
Du eine Anwendung hast, die auch nur auf eine falsche Messung  falsch 
reagiert, aber halt auch bei einem richtigen  Messwert ausserhalb 
gewisser Grenzen sofort reagieren muss, dann ist Bitbang mit Software 
Timing und ohne CRC nicht der richtige Ansatz.

Aber ich habe doch Bitbanging nicht verteufelt. Wenn man weiss, was man 
macht, kann man damit gut leben, wie  Henrik's Beispiel zeigt. Nur Dein 
Ansatz geht halt auch nur in bestimmten Faellen und die Aussage "Bitbang 
ist zuverlässig" ist einfach falsch!

von Eumel (Gast)


Lesenswert?

Uwe Bonnes schrieb:
> eter, wie willst Du denn garantieren, dass nicht durch eine Anhaeufung
> von Interrupts dein Bitbanging doch irgendwann mal nicht funktioniert?

Indem man die Interrupts für den  Timing kritischen Teil ausschaltet?

Uwe Bonnes schrieb:
> Nur Dein
> Ansatz geht halt auch nur in bestimmten Faellen und die Aussage "Bitbang
> ist zuverlässig" ist einfach falsch!

Natürlich ist es das, wenn man es richtig programmiert.

von Uwe B. (Firma: TU Darmstadt) (uwebonnes)


Lesenswert?

Eumel schrieb:
> Indem man die Interrupts für den  Timing kritischen Teil ausschaltet?

Na prima,da verpasst Du evt, eine anderen Interrupt und verlierst da 
Daten. Das hört sich nach Teufel mit dem Belzebug austreiben an. Wenn 
man weiss, was man macht ist das okay.

von Peter D. (peda)


Lesenswert?

Uwe Bonnes schrieb:
> Peter, wie willst Du denn garantieren, dass nicht durch eine Anhaeufung
> von Interrupts dein Bitbanging doch irgendwann mal nicht funktioniert?

Der Read-Time Slot (15µs) wird atomar (Interruptsperre) gemacht, damit 
ist er sicher.
Die Bit-Low Time (60µs) darf 120µs nicht überschreiten, also dürfen alle 
Interrupts zusammen max 60µs verbrauchen. Das sind bei 16MHz also 960 
Zyklen.
Ist das nicht der Fall, müssen die gesamten 60µs atomar sein. Und dann 
ist alles sicher.
15 bzw. 60µs Interruptsperre sind ja nicht soviel.

Beim 8051 geht es einfacher, da nehme ich einen Timerinterrupt für das 
Timing und gebe ihm die höchste Priorität. D.h. alle anderen Interrupts 
werden einfach unterbrochen, egal wie lange sie brauchen.


Uwe Bonnes schrieb:
> Klar, ein Max-Min Thermometer braucht nicht 100 % Sicherheit.

Es würde aber jeden Ausreißer speichern, d.h. ein Fehler wäre sofort 
aufgefallen.


Peter

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.