Timer in Bascom

Gast #693197
Lesenswert?
• ▲
▼
hey leute, habe folgende frage und leider grad keinerlei möglichkeit es 
selbst zu testen.

wenn ein timer (in diesem fall timero) überläuft, springt er dann 
automatisch wieder auf 0 zurück oder ist er dann blockiert und mag net 
mehr arbeiten?

ich frage deshalb, da aus der bascom-hilfe usw. hervorgehen täte, dass 
man kein rücksetzen auf 0 in einer subroutine bräuchte, dies wird jedoch 
bei vielen beispielcodes trotzdem durchgeführt. daher die frage
-> braucht man das überhaupt?

und nun ins bett... ;)
Gast #693723
Lesenswert?
• ▲
▼
mir ist schon klar, dass ich den überlauf erkennen kann. ;o)
es ging mir darum ob ich das bei überlauf in interrupt und interrupt 
setzt timer wieder auf 0 überhaupt benötige?
mehr tut der interrupt bei mir dann nicht, außer den timer wieder auf 0 
zu setzen, er zählt keine variablen da mein programm drumherum den 
direkten wert des timers ausliest.

stichwort software-pwm. timer0 zählt mit einem prescaler immer bis 255 
hoch und das programm schaltet meine ausgänge je nach inhalt des 
timerregisters. somit brauche ich keine zusätzlichen variablen.

also nochmals zur verdeutlichung folgende ablaufkette, bitte sagt mir 
welche >notwendig< ist:

1. config timer0, start timer0, on timer0 timer0 = 0

2. config timer0, start timer0

also wenn das timerregister wert 255 erreicht hat, springt dann der 
timer wieder VOLLautomatisch auf 0 und zählt wieder aufwärts oder bleibt 
er bei 255 oder 0 dann vorerst stehen?
#693743
Lesenswert?
• ▲
▼
Henning wrote:
> mir ist schon klar, dass ich den überlauf erkennen kann. ;o)
> es ging mir darum ob ich das bei überlauf in interrupt und interrupt
> setzt timer wieder auf 0 überhaupt benötige?

Welchen Teil des Satzes "Er zählt einfach weiter. Und da es in einem
8 Bit Timer kein 9. Bit gibt, gehts halt dann mit 0 weiter"
verstehst du nicht?

> mehr tut der interrupt bei mir dann nicht, außer den timer wieder auf 0
> zu setzen,

wozu hast du dann einen Interrupt installiert? Der Timer zählt
munter vor sich hin, und wenn er bei seiner höchsten Zahl angelangt
ist, gehts wieder bei 0 weiter.
Gast #693745
Lesenswert?
• ▲
▼
bascom hat seine eigenarten.
du musst schon mal zusehen, das man lesbaren asm-code bekommt um den mal 
zu lokalisieren.
die config-einstellung macht darüber keine aussage.

am besten nach winavr-c umsatteln, da siehste was der atmega macht.
Gast #693941
Lesenswert?
• ▲
▼
>Der Timer springt in die Interruptroutine sobald der Timer überläuft.

Der Timer springt nirgendwo hin, es wird lediglich ein Interrupt 
ausgelöst.

>Dabei wird dieser gleich wieder auf 0 gesetzt, das geht in Bascom quasi
>"von allein".

Das hat mit Bascom überhaupt nichts zu tun, der Timer im µ läuft einfach
durch.
#693954
Lesenswert?
• ▲
▼
Hallo Jack,

daß der Timer durch den ausgelösten Overflow-Interrupt dafür sorgt daß 
das Programm in die ISR-Routine springt macht der natürlich nur wenn 
dies so mit dem Command "On TimerX <Sub> konfiguriert wird.
Das der Timer wieder auf 0 gesetzt wird meinte ich nicht Wörtlich, klar 
rennt der Timer durch, ich habe mich da vielleicht schlecht ausgedrückt, 
sorry.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren