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
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
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.