www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik M16C und DS1820


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


ich will mit nem m16c und nem ds1820 die temperatur auslesen.

Da ich im hintergrund ne eingestellt Zeit runterzählen will und
gleichzeitig die Temperatur anzeigen will hab ich irgendwie ein
problem.

also:

ich habs nur mit dem fc32 takt hinbekommen einen sekundengenauen Takt
für den countdown der Zeit hinzubekommen,

leider wird die temperatur meines ds1820 bei diesem takt nicht mehr
ausgelesen.


meine frage nun:

kann ich auch mit dem 16mhz takt einen sekundengenauen takt erzeugen,
oder geht das nur mit dem fc32?

oder hat jemdand was für den ds1820 damit der auch bei fc32 takt mir
ein ergebnis liefert?

bin für jede hilfe dankbar,

mfg. Jan

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jan,

vielleicht verstehe ich Dich falsch, denn ganz kann ich Dein Problem
nicht nachvollziehen:

Der M16C hat doch jede Menge Timer, da kannst Du doch einen für das
Timing des 1-Wire-Busses und einen weiteren für die Uhr nehmen.

Der Takt des Busses variiert mit den jeweils zu übertragenden Daten
(jedenfalls in meiner Implementierung), ich stelle den Timer nach jedem
Flankenwechsel oder zum Abtasten des Busses immer so ein, dass der
nächste Interrupt im richtigen Moment kommt, um die nächste Aktion
durchzuführen.

Meine interne Uhr (so etwas hat wohl auch jeder ;-) ) wird von einem
20Hz-Interrupt getrieben. Ich zähle dort einfach mit, bis 20 Ints durch
sind und erhöhe dann die Sekunden-Uhr. Nebenbei kann in jedem der 20
Takte pro Sekunde noch etwas anderes gestartet werden. Die Zahl 20 ist
natürlich willkürlich gewählt, ist aber ein ganz guter Kompromiss
zwischen Auflösung und Häufigkeit.

Ich gebe Dir gern den C-Code weiter, allerdings ist zumindest die
1-Wire-Implementierung etwas unübersichtlich geworden, da sie komplett
im Interrupt eine ganze Liste von vordefinierten Datenübertragungen
abarbeitet und sich erst nach Ende wiedermeldet.

Aber das wäre wahrscheinlich das Richtige für Dein Problem, das
Hauptprogramm braucht bloss nachzuschauen, ob der Bus fertig ist und
kann dann den Wert ausgeben oder anders verarbeiten.

Gruß

Jens

Autor: pripri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.