Ich habe mir mal das http://chaokhun.kmitl.ac.th/~kswichit/avrthermo/avrthermo.html Thermometer auf einem Steckbrett nachgebaut. Leider hat es den Nachteil das die Anzeige während des auslesens des Ds18... dunkelgetastet wird, was als Zimmerthermometer sehr nervig ist. Meine C Kenntnisse sind ein wenig bescheiden. Ließe sich der Code irgendwie modifizieren so das eine kontinuirliche Anzeige möglich wäre? Oder ist der 2313 wirklich so extrem mit der Wandlung beschäftigt, das er fürs multiplexen keine Zeit mehr hat. Viele Grüße
Zunächst kannst du den Tiny2313 auch mit 16MHz anstatt der dort verwendeten 4MHz betreiben, dann ist die "Dunkelzeit" schon mal nur noch 1/4 so lang. Was genau meinst du eigentlich mit "dunkelgetastet" ? Du könntest den Code noch so umschreiben, dass die Temperatur nur beispielsweise 1x pro Sekunde oder 1x jede 2 Sekunden ausgelesen wird o.ä.... eine Abdunklung des Displays sollte man bei guter Applikation nicht wahrnehmen können... Und wenn alle Stricke reißen gibt es für diese Anwendung auch noch "SPI / I2C 7-Segment Display Driver ICs" wie den SAA1064... Schöne Grüße, Alex
Vermutlich ist das Programm recht simpel gestrickt und macht entweder Messung oder Anzeige. Mit der Leistungsfähigkeit des Controllers hat das nichts zu tun. Eher schon mit der Leistungsfähigkeit des Programmierers. Das geht locker auch anders. Beispielsweise indem man die 0,7s Wartezeit zwischen Start der Messung und Auslesen vom Ergebnis nicht nur mit Däumchen drehen verbringt. Denn es dürfte genau diese Messzeit des DS1820 sein, die unangenehm auffällt. Und nein, ein schnellerer Takt des Controllers macht den Sensor nicht schneller, der Controller wartet nur intensiver auf ihn.
> Was genau meinst du eigentlich mit "dunkelgetastet" ? Die LED Anzeigen sind für ca. eine halbe Sekunde dunkel während der MC die DS18... mist und das tut er alle 5 sek. Kann mir auch nicht vorstellen das es so kompliziert ist einen DS18S20 auszulesen, mein Pollin AVR-NET-IO Board hat davon 8 Stück drann hängen und fühlt sich nicht überlastet an. > Und wenn alle Stricke reißen gibt es für diese Anwendung auch noch "SPI > / I2C 7-Segment Display Driver ICs" wie den SAA1064... an den SAA habe ich auch schon gedacht, aber ich wollte die Schalung in einer UP-Dose verschwinden lassen und dann wird es mit dem SAA arg eng.
Ist eigentlich auch nicht schwierig. Der verlinkten Seite zufolge wird eine DS1820 Funktion der Codevision Lib verwendet. Die wohl die komplette Messung durchführt. Im Interrupt! Und damit das Hauptprogramm für die entsprechende Zeit lahmlegt. Nun kenne ich Codevision nicht. Ob es in deren Lib die Möglichkeit gibt, den Start der Messung und die Auslesung zu trennen. Dann liesse sich das leicht umbauen und die Pause verschwindet.
Kurzer Blick in die CV Doku sagt: Mit der DS1820-Library kommt man nur halb weiter. Alle >= 5 Sekunden im Interrupt das Kommando zu Start der Messung absetzen. Das geht mit der DS1820-Lib nicht, ist aber mit der 1-Wire-Lib einfach zu machen, wenn man kapiert hat wie 1-Wire arbeitet. Im passenden Interrupt eine Sekunde später das Ergebnis auslesen. Das geht mit der DS1820-Lib (ds1820_read_spd), man muss das Ergebnis aber selber aus den Bytes fischen. Es spricht nicht für die CV Lib, dass man für Start und Messung keine getrennten Funktionen mit Temperatur als sauberem Resultat liefert.
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.