Gast
#277405
Habe ein großes Problem mit der Temperaturmessung mit einem DS1820. Habe das 1-wire Protokoll nach der Application Note 162 von Maxim imlementiert und auch verstanden. Allerdings liefert der Sensor keine vernünftigen Werte. Ich bin mir jetzt nicht schlüssig, ob der Fehler beim Sensor liegt oder in meinem Zeitdelay: void delay_us(unsigned int x){//x in µSekunden eingeben TCNT1=0x0000; TCCR1A=0b00000000;//Normal PORT Operation //Normal Timer/Counter TCCR1B=0b00000001; //Normal Timer/Counter,CLK(1MHZ) while(x>=TCNT1){} //Timer soll bis x laufen(ca. x µsekunden) } //Timer-Funktion schließen Als Prozessor benutze ich einen Atmega48 mit 1Mhz internem Oszillator. Die Datenleitung ist an PB0 angeschlossen. Anschließend wird die Temperatur auf einem LCD ausgegeben. Die Presence-Funktion erkennt den Sensor(Geht von 1 auf 0 wenn der Sensor angeschlossen wird), allerdings muss im Schreib oder Lesevorgang ein Fehler auftreten. Kann mir jemand ungefähr sagen, was die gesamte delay_us Funktion in echt an µSekunden braucht?Ich besitze leider kein Oszilloskop. Vielleicht liegt das Problem darin, daß wenn ich delay_us(15) eingebe, nicht 15µSekunden als Ergebnis rauskommen, sondern entsprechend mehr was im Endeffekt zu dem Fehler führt. Bin für jede Hilfe dankbar!