Zitat Zitat von robocat
kurz noch eine frage an die bascom-kundigen:
im datenblatt zählt timer0 von 0 bis zum compare-match. hier scheint das andersherum zu sein (zählt vom startwert bis 255), sonst würde meine rechnung ja nicht stimmen. ist das programmspezifisch oder eine eigenschaft von bascom?
Das liegt nicht an Bascom, sondern am Mega8. Sein timer0 hat nämlich keine compare-unit. Er kann nur ganz simpel vor sich hin zählen, bis er überläuft. Man muss daher im Overflow-interrupt das Zählregister mit dem passenden Wert laden, um eine bestimmte Periodendauer zu erhalten.

@HPM: wenn der Zählbereich von Timer0 bei 16Mhz nicht ausreicht, zähl doch einfach die Zeit nur in jedem zweiten Interrupt weiter... [der passende Startwert für 12,5ms wäre 61]