Sobald ich den Taster betätige springt Sekunden sofort auf 1 anstelle
erst eine Sekunde zu warten. Danach läuft es so wie es soll im
Sekundentakt. Hat jemand eine Lösung für das Problem ?
mfg Yannic W.
Beim Enable Timer1 ist deine Timervorgabe noch nicht geladen, d.h.
Timer1 hat eine Timervorgabe von 0, d.h. der erste Interrupt kommt
sofort nach dem Enable und dann erst wird kontinuierlich beim Auftreten
des Interrupts die Timervorgabe neu gesetzt.
Nö.
Timervorgabe ist schon korrekt gesetzt (Const Timervorgabe = 3036), aber
das ist nur eine Arbeitskonstante. Für den Timer1 bringt das noch
nichts. Es muss eine Zuweisung an Timer1 dazukommen (so wie in der ISR).
Und damit es einen Effekt hat, muss die Reihenfolge andersrum sein
(setzen/Zuweisung vorm enable).
If Pinb.3 = 1 Then
Timer1 = Timervorgabe
Enable Timer1
End If
Eventuell den Code von #1 an Stelle #2 oder Stelle #3 schreiben. Ich
weiss nicht, ob BASCOM bei On Timer1 Timer_irq zuvor gesetzte Timer1
Werte in Ruhe lässt bzw. hat das im vorherigen Beispiel an der Stelle
funktioniert?
An stelle 3 hatte ich ihn bereits stehen. Brachte aber auch leider
garnichts.
Hast du ggf. nen Avr da, an dem du den code mal antesten kannst. So
könnte man wenigstens sicher sein, das es klappt.
@ Yannic W.
> An Stelle 3 hatte ich ihn bereits stehen. Brachte aber auch leider> garnichts.
Hast du das gelesen: Und den Timer1 in der Interrupt-Routine neu laden
nicht vergessen! So wie im ersten Beispiel.
> Hast du ggf. nen Avr da, an dem du den code mal antesten kannst. So> könnte man wenigstens sicher sein, das es klappt.
Nur einen Atmega32 oder einen Attiny2313 in anderen Schaltungen, die ich
aber auseinander pflücken müsste. Jetzt ist es mir ehrlich zu spät, mit
dem Hardwarefummeln anzufangen. Wenn nix geht, kümmere ich mich morgen
abend darum. Und ich kann nur mit einer Bascom AVR Demoversion
aufwarten. Ich hoffe das reicht.
@ STK500-Besitzer
> Kennt Bascom eigentlich den CTC-Mode?> Da braucht man dann nichts nachladen...
Auf den ersten Blick sehe ich im Manual nichts bei CONFIG ... und ON
INTERRUPT ... zum Clear Timer on Compare Modus.
http://avrhelp.mcselec.com/index.html
So ich habe es mit einem schnell zusammengestrickten Atmega32-Aufbau und
Bascom AVR Demo ausprobiert. Ich habe aber kein LCD angeschlossen und
keinen Taster.
Geprüft habe ich an einem freien Pin (PORTD.6), den ich auf Output
gestellt habe und im ersten Versuch im Sekundentakt zwischen 1 und 0
toggele. Den jeweiligen Zustand messe ich mit einem Spannungsmesser.
Klappt alles, schöner Wechsel zwischen 5V und 0V im Sekundentakt.
Im zweiten Versuch lasse ich den Pin auf 0 und schalte ihn nur in der
Sekunde 5 auf 1. Klappt auch. In Sekunde 0 bis 4 0V, dann eine Sekunde
lang 5V und dann wieder lange 0V.
Lass mal die erste DO LOOP komplett weg, um zu sehen, ob es Probleme mit
dem Taster gibt und du nie zum Label Automodus und zum Restprogramm
kommst.
Hmmm, würde das denn Sinn erlgeben ? Ich meine ja nur in die Schleife
Automodus muss er ja automatisch kommen, da er ja sonst bei echter
sekunde 4 auf dem display nichts ausgeben würde.
Kann es aber totzdem nochmal ohne die do loop versuchen.