Hallo zusammen! Momentan habe ich Probleme den Timer2 meines ATmega48 zum laufen zu bringen. Bei mir will der Timer2 (übrigens das gleiche Problem auch mit Timer0) nicht hochzählen. Der Code befindet sich im Anhang: Kann mir ja vielleicht jemand helfen, bzw, sagen was nicht richtig ist? Danke und Gruss Andi
Gast
#2514100
Wie hast du denn festgestellt, dass der Timer nicht läuft?
Ich habe das Programm im Simulator getestet und Timer2 hatte über mehrere ms immer einen Wert von 0. Und eine weitere Messbarkeit habe ich in der Do- Loop- Schleife eingebaut. PortB, 5 war immer low.
Gast
#2514334
Hattest du im Simulator auch den Button "Refresh Variables" gedrückt oder hast du das Programm angehalten, um zu sehen, welchen Wert Timer2 hat?
So habe das nochmals getestet und tatsächlich, ich habe den Button gar nicht verwendet! Nun die Sache mit dem Timer läuft jetzt prima! was mir alerdings auch noch zu schaffen macht, ist die var= sin(x) Berechnung. Denn jedes Mal zeigt mir das Programm einen Fehler auf beim Compilieren. Erst wenn ich die Berechnung von B deaktiviere, so wie im Code zu sehen funktioniert es. Das Programm sagt mir dann komischerweise dass es bei der Variable B eine "integer" oder "long" verlangt, jedoch ist B ja auch so deklariert! Nun habe ich keine Ahnung an was es denn liegen könnte :-(
Dann schau in die BASCOM Hilfe, wie man die Sin() Funktion benutzt. Dazu hast du ja die Hilfe.
Gast
#2514428
Das Bascom Beispiel verwendet für Sin() Single-Variablen. Außerdem kannst Du vergessen bei Prescale 1 für den 8Bit Timer2 in der ISR 'ne Sinus-Berechnung zu machen, da bleiben von theoretisch 256 Takten vielleicht 130 Takte über. Nicht umsonst nimmt man für so 'ne Aufgabe 'ne Lookuptabelle für den Sinus.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.