Hallo ACsenf,
ich darf einfach mal 'nen teil aus Deinem Beispiel-Code zittierenso ich habe die Lösung des Problems. Verrechnet hatte ich mich nicht. Die Quarzoszillatorfrequenz stimmt auch genau! Allerdings kann man höhere Frequenzen nicht genau erzeugen, liegt vermutlich am Code von Bascom, bzw der µC braucht einfach noch ein paar Zyklen für andere Operationen.
"...
'Achtung: bei kleinen Zeiten ist die Zeit zur Rettung der Register nicht zu vernachlässigen
'Nosave bringt, wenn möglich eine starke Verbesserung
..."
Bei geforderten 5 kHz (10kHz zwischen zwei Interrupts) hast Du 200 Takte zwischen den Interrupts. Bascom sichert ohne NOSAVE aber erstmal die 32 Register auf den Stak, ehe es die Interrupt-Routine abarbeitet. Der Interrupt wird also nicht alle 200 Takte ausgeführt sondern nur alle 232 Takte.
5kHz *200/232 = 4.31kHz
Ciao,
Werner
Lesezeichen