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?
> kann ich beliebig irgend ein Port benutzen? ..vorzugsweise einen Pin der frei(tm) ist. > [..] PWM [..] gibt es ein besondere Grund? nope.
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.
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
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 ;-)
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
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.
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.
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!
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.