PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR Melodie



I_-_I---c
09.09.2011, 19:53
Hallo,

ich wollte mit meinem atmega664 mal einen ton erzeugen, dies ist mir auch gelungen, doch jetzt müsste ich die Lautstärke einstellen und ich hab keine ahnung wie das geht.
(Ich weiß google ist dein freund, aber ich hab nichts gefunden, jedenfalls nicht in C)

Mein derzeitiger Code sieht so aus:



#include <avr/io.h>
#include <util/delay.h>

void InitPWM()
{
TCCR1A = (1<<COM1A1) | (1<<WGM11);
TCCR1B = (1<<WGM13) | (1<<WGM12) | (1<<CS10);

DDRD = (1 << PD5 );

ICR1 = 0x0FFF;
}

void SetPWMOutput(uint8_t duty)
{
OCR1A=duty;
}

void Wait()
{
_delay_loop_2(3200);
}

void main()
{
uint8_t tone=0;

InitPWM();

while(true)
{
for(tone=0;tone<255;tone++)
{
SetPWMOutput(tone);

Wait();
}

for(tone=255;tone>0;tone--)
{
SetPWMOutput(tone);

Wait();
}
}
}



Danke,

Gruß I_-_I---c

Besserwessi
09.09.2011, 20:07
In Grenzen kann man die Lautstärke über das PWM Verhältnis einstellen, vor allem wenn man zwischen dem PWM Ausgang und dem Lautsprecher einen Tiefpass hat und so die Oberwellen etwas dämpft.