Meistens bei der Tatsache, dass Controller IMMER das machen was man ihnen sagt, aber nicht immer das was sie sollenWo liegt denn nun der Hase im Pfeffer?![]()
Folgendes fällt auf den ersten Blick auf:
Der Timer läuft bei einem Wert von 65535 über. Wenn Du ihn in der ISR auf 65500 vorlädst, gibt es alle 35 Taktzyklen einen Timer1-Interrupt. Bei 1MHz wäre das alle 35µS, also knapp 30.000 Interrupts pro Sekunde. Ist das so gewollt? Wenn nicht, müsstest Du den Timer mit einem geeigneten Prescaler versehen (siehe Bascom-Hilfe...), und/oder den Preload-Wert verkleinern.
Die Geschichte mit "If Zaehler = 25 then..." geschieht natürlich auch nur ein einziges mal, denn in der nächsten ISR wird Zaehler um 1 erhöht, ist also nicht mehr 25. Je nachdem was Du damit erreichen möchtest (das erschließt sich mir im Moment leider nicht ganz), müsstest Du entweder Zaehler auf 0 setzen, wenn er den Wert von 25 erreicht hat (d.h. in der IF...EndIf-Schleife), oder aber mit > 25 abfragen.







Zitieren

Lesezeichen