AVR - Ton generieren - Timing?

Gast #5339438
Lesenswert?

Hallo,

was mache ich falsch? Der Summer hört sich echt schrecklich an..
Stimmt was mit der Frequenz berechnung nicht?
Laut Datenblatt soll er bei einer Frequenz von ca. 1400Hz am lautesten 
sein..
Jedoch hört es sich ziemlich "schräg" an..
1
/*
2
*  F_CPU = 16e6
3
*
4
*  Bei angelegter Nennspannung (2730 Hz, 3.0 V, ½ Tastverhältnis, Rechteck)
5
*  _delay_us( 1 / 2730 Hz); 
6
*
7
*/
8
void generateTone(void)
9
{
10
  BEEP_OFF;
11
  _delay_us( 360 );
12
  BEEP_ON;
13
  _delay_us( 360 );
14
}
Angehängte Dateien:
Moderator Persönliche Seite #5339468
Lesenswert?

1400 Hz?  Da stehen 2730 Hz im Datenblatt und in deinen Kommentaren. :)
Deine Verzögerungswerte ergeben dagegen tatsächlich 1389 Hz.

Anyway, für einen Ton nimmt man bitteschön einen Timer und keine
Delay-Schleifen.  Idealerweise hast du den Piepser an einem Pin, welches
sich als Timer-Ausgang benutzen lässt.  Wenn nicht, müsstest du den
Timer interrupten lassen und in der ISR am Pin wackeln.  Nicht schön,
aber allemal besser als die Delays.

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