Hallo,
man könnte den Timer auf CTC einstellen mit
CONFIG TIMER1 = TIMER , PRESCALE = 1024
SET TCCR1B.WGM12 'CTC, TOP Ist OCR1A (weis nicht ob das im CONFIG TIMER Befehl geht)
Bei 8MHz läuft er dann mit 7812,5 Hz was einer Periodendauer von 128µs entspricht.
Um auf 5s zu kommen muß er 5s / 0,000128s = ca 39063 Takte laufen, also
OCR1A = 39063 'als TOP Wert zuweisen
Beim Topwert wird der COMPARE1A Interrupt ausgelöst
ON COMPARE1A ISR_Toggle_LED
ENABLE COMPARE1A
ENABLE INTERRUPTS 'LED wird nun alle 5 Sekunden getoggelt.
Mit Poti nun das OCR1A Register versorgen bis zu einem maximalen Wert von 39063
39063 / 1023 = ca 38 besser 39 ?
Also den vom ADC ausgelesenen Wert mit 39 multiplizieren und dem OCR1A in der Main zuweisen.
Von ADC Wert 0 bis 41 würde es dann aber auch unter 0,2s toggeln; könnte man mit IF THEN abschneiden.
Toggle Auflösung wäre pro ADC Schritt 39 * 128µs = ca 5ms.
In der ISR steht dann nur: Toggle Led
Wenn die Grenzwerte ganz genau eingehalten werden müssen, müßte man weiter überlegen.
Gruß
Searcher
Lesezeichen