mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik FreeRTOS + ATMega + OneWire


Autor: Hermann Gebhard (df2ds)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo miteinander,
ich habe in den vergangenen Wochen eine Terrariensteuerung auf dem 
ATMega644 unter FreeRTOS entwickelt. Die geht auch so weit ganz gut...

Jetzt möchte ich gern zusätzliche Temperatursensoren an die Steuerung 
anschließen. Wegen der erforderlichen Messgenauigkeit möchte ich gern 
die DS18B20 nutzen. Beim OneWire muss man aber -so weit ich weiß- das 
Timing ziemlich genau einhalten.
Hat das schon mal jemand unter FreeRTOS gemacht? Gibt es Tipps, die ich 
beachten sollte?

Ich habe auch schon daran gedacht, den OneWire-Bus über eine 
1-Wire<->I2C Bridge anzuschließen (DS2482)...in der Hoffnung, dass 
dieser Baustein sich um das Timing kümmert und ich über I2C die Daten 
abholen kann, wenn es gerade paßt.

Würde mich über jeden konstuktiven Kommentar freuen!!

Hermann

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es denn ein Problem, das Timing genau einzuhalten?

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab's nicht unter FreeRTOS gemacht, aber unter AvrX. Das Problem hat 
aber relativ wenig mit einem RTOS zu tun, sondern ist allgemeiner Art.

Etliche Zeiten vom 1-Wire-Protokoll lassen sich nicht mit 
Timer-Interrupts oder RTOS-Mechanismen sondern nur mit Delayloops 
realisieren, schon ganz normale Interrupts sind im ein- bis 
zweistelligen µs-Bereich nicht akzeptabel. Daher muss man mit oder ohne 
RTOS im kritischen Bereich die Interrupts ausschalten. Wenn das für die 
übrigen Anforderungen nicht vertretbar ist, dann muss das 
1-Wire-Interface ausgelagert werden.

Wenn diese Einschränkung in der Reaktionszeit des Systems jedoch 
vertretbar sind (d.h. kein Interrupt innerhalb der Übertragung eines 
Bits), dann geht das problemlos.

Autor: Hermann Gebhard (df2ds)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@A. K.:
Das ist schon mal ein guter Hinweis. Ich habe für andere Zwecke einen 
100Hz-Interrupt laufen (Netz-Nulldurchgänge). Das sind also 10ms 
zwischen 2 Interrupts. Dazu kommt noch ein Task, der auch alle 10ms 
aufgerufen werden möchte...

Was ist von der Idee mit dem DS2482 zu halten??

Danke einstweilen für den Kommentar!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was ist von der Idee mit dem DS2482 zu halten??

Vermutlich eine gute Idee. Der nimmt dir das Timing ab.
I2C ist nicht kritisch was das Timing angeht.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der 100Hz Interrupt stört nicht, der kann ohne Verlust für die 
kritischen 60µs eines 1-Wire Bits ausgesperrt sein. Der ist eher zu 
langsam dafür.

Bei mir läuft der RTOS-Timer mit 10KHz. Was zur Folge hat, dass die ca. 
500µs des 1-Wire-Resets bereits per RTOS-Timer abgewartet werden können.

Der DS2482 macht es natürlich einfach. Wobei ich sowas mal testhalber in 
einem ATtiny anstelle eines DS2482 implementiert hatte, ein 8pinner 
reicht dafür ja aus. Hab es dann aber mangels Notwendigkeit nicht so 
realisiert.

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.