Forum: Mikrocontroller und Digitale Elektronik AVR - Ton generieren - Timing?


von Jury (Gast)


Angehängte Dateien:

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
}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.