Hallo, ich habe drei ds18s20 auszulesen, was auch funktioniert. Zusätzlich möchte ich die Uhrzeit und natürlich die Temperaturen zusammen auf ein Lcd ausgeben. Ich habe in Bascom ein Code für die Sensoren und einen für die Uhrzeit. Wenn ich aus den beiden Codes einen machen will, spinnt die Sekundenanzeige. Soll heißen das Lcd zeigt die Sekunden nicht folgend sondern zB. 38 dann 41 und dann 42 usw. Irgendwie kostet das Temperaturauslesen soviel Zeit, dass das Lcd mit der laufenden Uhr nicht mehr klar kommt. Gibt es dafür schon irgendwo eine Lösung die ich noch nicht gefunden habe? Gruß Mirko
Ich kann dir in Bascom nicht helfen, aber wenn du die Interrupts nicht sauber programmiert hast, kann das schon passieren. Wenn dir hier jemand helfen soll, wäre es gut wenn du deinen Code ebenfalls hereinstellst.
Das Auslesen eines Sensors DS1820 dauert 0,7s. 3 * 0,7 = 2,1s Da du alles wahrscheinlich nacheinander ablaufen läßt, kommt er natürlich auch nur ca alle 3 Sekunden dazu die Sekundenanzeige zu aktualisieren.... Lese halt nur einen Temperaturwert aus aktualisiere die Zeit und dann den nächsten Temperaturwert usw...?
Moment, 7 Sekunden dauert doch die TemperaturMESSUNG. Das auslesen müßte schneller gehen. Wenn alle drei Sensoren gleichzeitig messen, müßte man eigentlich hinkommen mit der Zeit. Gruß
Hi, versuche das ganze doch erstmal zu debuggen. Also einen Pin vor und nach dem Auslesen der sensoren zu toggeln. Dann das ganze mit einem Oszilloskop mal messen, dann kann man den Fehler wunderbar einschränken. Normalerweise dürftest du kein jitter im Signal haben, wenn doch, dann werden deine Daten ungleichmäßig schnell verarbeitet, bzw ausgewertet. Vielleicht hast du da ein problem mit dem interrupt? Aber auch das lässt sich wunderbar oszilloskopieren. Ich mach das jedenfalls bei solchen Timing problemen immer so. gruß Marc989
Du mußt einfach nur das Auslesen und das Starten der Messung getrennt machen. Ich mache das immer so, daß ich alle 5s die Meßwerte aulese und dann die nächste Messung starte. Peter
Danke erstmal für die Antworten. Ich habe gedacht ich kann mir das einfach machen und die beiden Codes einfach zusammenschmeissen. Da das nicht funktioniert habe ich nun angefangen alles neu aufzubauen. Das mit den 5 sec habe ich noch nicht wirklich verstanden. Normalerweise sieht das so aus: Do 1wreset 1wwrite &H55 1wwrite Id1(1) , 8 1wwrite &H44 Waitms 300 1wreset 1wwrite &H55 1wwrite Id1(1) , 8 1wwrite &HBE Ar1(1) = 1wread(9) 1wreset Ich weiß jetzt nicht, was Du genau mit auslesen und Messung starten meinst ? Gruß Mirko
Ich kriegs einfach nicht hin. Die Uhr läuft über einen Uhrenquarz mit Timer2. Aber die Messung und Auswertung der Temperatursensoren läuft in der Schleife. Die Ausgabe ans Lcd ebenfalls. Ich glaube das ist das Problem. Die Daten werden ans Lcd gesendet, danach werden die Temperatursensoren ausgelesen und ausgewertet und dann Loop. Macht bei 2 Sensoren scheinbar 1,5 bis 2 Sekunden bis wieder Daten ans Lcd geschickt werden können. Gibt es da vielleicht doch noch eine Lösung? Oder gibt es andere Temperatursensoren die nicht so zeitintensiv auslesen??? Gruß Mirko
"Oder gibt es andere Temperatursensoren die nicht so zeitintensiv auslesen???" Du bist es doch, der die Wartetzeiten einbaut und sich dann wundert, warum dann auch wirklich gewartet wird: "Waitms 300" bedeutet genau das, halte alles an und drehe Däumchen für 300ms. Der Sensor kann nix dafür, daß Du schlecht programmierst. Also nochmal: Du hast die Uhrzeit und jedesmal, wenn die Sekunde wechselt, zählst du eine Variable hoch. Und wenn die 5s erreicht, dann liest Du die Sensoren aus und startest die nächste Messung. Und schon sind die Wartezeiten verschwunden. Peter
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.