Beste,

Ik programeer nou al geruime tijd. Ik zit altijd nog een beetje in de knoop met interrupts.

Op zich is het probleem niet dat ik niet snap wat ze doen ED.
maar meer het instellen. Ik lees namelijk regelmatig voorbeelden waar ze een timer preloaden met een getal afhankelijk van de clocksnelheid en dat ze dusdanig op een interrupt van 1 keer per seconde komen.

Mijn vraag is nu hoe komen ze daaraan?

Ik gebruik Avr's voornamelijk atmega16 en bascom AVR

mijn theorie tot nu toe is:

een interrupt onstaat elke F_clock/255 keer tenzij je een clock divider aanzet op de timer instelling.

dus stel ik gebruik een clok van 12Mhz dan is er elke 21uS een interrupt.

om een interrupt van 1 seconde te krijgen moet ik tot 47000 tellen om ongeveer elke seconde een interrupt te krijgen.

Maar hoe kan ik hier nou een preload waarde uit krijgen dat de interrupt maar 1 keer per seconde gebeurt?

De vraag is hoe ontstaat je timer int.

De timer telt zelf van 0 tot 255, en dit kost een bepaalde tijd.
De startwaarde van de teller is in dit geval 0, dus hij moet 255 keer de teller verhogen voor je een overflow krijgt.

Wanneer je nu de startwaarde van de teller verhoogd, bijvoorbeeld naar 55. Dan telt de timer telkens van 55 naar 255, nu krijg je de overflow al na 200 keer de teller verhogen.

Stel dat een keer verhogen 5uS duurt dan duurt het nu dus 200x5=1000 uS.
Dus na 1000 keer een overflow gehad te hebben zijn we precies 1 seconde verder.