Hallo, ich versuche mit dem unten genannten Programm eine Drehzahl von 500 bis 2000 umdrehungen zu messen. Die berechnung für die Drehzahl stimmt soweit, allerdings gibt das LCD display nur "Infinity" aus. $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 128 $swstack = 128 $framesize = 40 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.4 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.6 , Rs = Portd.7 Config Lcd = 16 * 4 Cursor Off Cls Dim Drehzahl As Double Portd.2 = 1 Portd.3 = 1 Config Timer1 = Timer , Prescale = 256 Start Timer1 On Int1 Rpm Config Int1 = Falling Enable Int1 Enable Interrupts Do Home Lcd Drehzahl ; " " Loop Rpm: Stop Timer1 Drehzahl = Timer1 * 0.000032 Drehzahl = 60 / Drehzahl Timer1 = 0 Start Timer1 Return Wenn ich statt "Drehzahl = Timer1 * 0.000032" , "Drehzahl = 2500* 0.000032" eingebe, kommt ein korekter wert heraus. Der Timer gibt ebenfalls einen wert aus. Woran kann das liegen?
>Wenn ich statt "Drehzahl = Timer1 * 0.000032" , >"Drehzahl = 2500* 0.000032" eingebe, kommt ein korekter wert heraus. Dann war Timer1 wohl 0. >Drehzahl = 60 / Drehzahl 60 / 0 -> Infinity;)
nein, daran liegt es ja nicht. aber hab das problem inzwischen schon gelöst, einfach single statt double verwenden. ;)
> hab das problem inzwischen schon gelöst, einfach single statt > double verwenden. ;) Das ist keine Lösung, das ist Gemurkse... :-/ Oder hast du einen nachvollziehbaren vernünftigen Grund, warum das jetzt geht? > Drehzahl = 60 / Drehzahl Du solltest ganz einfach vor einer Division sicherstellen, dass du nicht durch 0 teilst.
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.