Hallo allemaal,
ik ben een pulsgenerator aan het maken met een atmega8.
het bereik moet 100 hz tot 100Khz zijn, met 50% duty cycle.
de basis heb ik werkend, met timer1 in CTC mode.
het frequentiebereik is meer dan genoeg, gaat makkelijk over de 100Khz heen, maar ik heb een probleem met het regelen van de frequentie.
als ik hem op 100hz laat lopen, kan ik zonder problemen in stappen van 1hz verhogen of verlagen.
zodra de timer op 100Khz loopt, zijn die stappen gigantisch (als ik de frequentie in stappen van 1Khz laat zakken, gebeurt er de eerste paar keer niets, om vervolgens naar 90Khz te zakken)
iemand een idee hoe ik de frequentie met een beetje constante stapgrootte kan regelen?
mijn code is het volgende (GCC)
C:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #define F_CPU 8000000UL
#include <avr/io.h>
int main (void)
{
uint32_t freq;
freq = 50000;
DDRB |= (1 << 1);
TCCR1B |= (1 << WGM12);
TCCR1A |= (1 << COM1A0);
OCR1A = (8000000 / freq -1) / 2;
TCCR1B |= (1 << CS10);
for (;;)
{
}
}
|
de code om de frequentie te verhogen of verlagen staat er niet bij, dat bestaat uit een paar IF statements in de for loop, die kijken of een knop is ingedrukt, en daarna de frequentie verhogen / verlagen
alvast bedankt
