Gast
#237782
Ich brauche für einen Ultraschallsender eine Frequenz von 40kHz. Für
Timer0 hab ich dann den Prescaler auf 1 gestellt und beim Overflow den
TCNT0-Wert auf (256-25) gesetzt. Das müsste dann beim Timer eine
Frequenz von 2000kHz(eingestellter Resonator)/25 = 80kHz ergeben. Beim
Overflow wird PinB0 mit XOR umgestellt. Dort ist jedoch nicht 40kHz
sondern nur 22kHz messbar. Auch bei anderen Teilern stimmts nicht:
Soll - Ist [kHz]:
3,9 - 3,6
10 - 8,3
20 - 14,1
40 - 22
Komt bestimmt von dem Setzten des Wertes bei der Signal-Routine, oder?
SIGNAL (SIG_OVERFLOW0)
{
TCNT0 = 231; // 256- 25 // braucht vielleicht zu viel Zeit?
PORTB ^= (1 << PB0);
}
habe mir dann gedacht, ich probiers mal mit Timer2 und CTC-Mode:
Da passiert jedoch folgendes:
Soll - Ist [kHz]:
10 - 10,0
20 - 20,0
40 - 26,9
80 - 26,9
Mehr wie 26,9 geht bei 2MHz einfach nicht. Ist da hardwaremäßig eine
Begrenzung drin?