Forum: Mikrocontroller und Digitale Elektronik M16C und DS1820


von Jan (Gast)


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

von Jens (Gast)


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

von pripri (Gast)


Lesenswert?


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.