So, habe heute den ATmega bereits bekommen. Natürlich direkt ausgewechselt und versucht zu programmieren.
*grins* ich bekam immer den Fehler, dass Ponyprog den MIC nicht findet. *grins* ... bis ich gemerkt habe, dass das Netzteil nicht eingeschaltet war *grins*
Naja, jetzt funktionierts. Leider ist das mit den tiefen Tönen wieder da. Ich habe gleich ein Programm geschrieben, das mir über die RS232 Schnittstelle im Sekundentakt was ausgibt. Das klappt auch. (Jede Sekunde, nicht jede 2. Sekunde). Also Zeitlich funktioniert das Ganze. Für mich heisst das, dass auch die Taktfrequenz stimmen müsste.
Code:
for (unsigned char i=0; i<50; i++){
sendUSART("Jetzt");
setportcoff(0);
waitms(150);
setportcon(0);
waitms(850);
}
Dann habe ich die Soundausgabe unter die Lupe genommen. Die Funktion ist ja sound(höhe, länge) und die Ausgabe sieht dann so aus: es ist eine Schleife, die einige Male durchlaufen wird, bis sie die Zahl der Länge erreicht hat. In der Schleife wird der Port aktiviert, x millisekunden gewartet, ausgeschalten und x millisekunden gewartet, bis die Schleife von neuem Startet (x=höhe). daraus ergibt sich eine Frequenz von f=1/(2*Höhe) [kHz]. Beim Beispiel wird u.A. auch Höhe=7 angenommen, was zu einer Frequenz von 71 Hz führt. Es muss also beim Beispielprogramm in C so tief sein. (Nach mir wird f=440Hz für Musikinstrumente zum Stimmen gebraucht, aber nur so als Vergleich.)
Code:
sound(6, 270); //Startmelodie
sound(8, 270);
sound(11, 270);
sound(7, 270);
waitms(10);
sound(7, 270);
sound(6, 270);
sound(11, 540);
und
Code:
void sound(uint8_t hoehe, uint16_t laenge)
{
for(uint16_t i=0; i<laenge*15; i=i+(2*hoehe))
{
setportdon(7);
_delay_ms(hoehe);
setportdoff(7);
_delay_ms(hoehe);
}
}
und ich dachte schon ...
Hat jemand eine Funktion, bei der man also anstatt einer Maximalen Frequenz (höhe=1 -> Frequenz=500), eine Ausgabe mit sound (frequenz, länge in ms) hat?
Jetzt hab ich also den Fehler, es war nicht die Arbeitsfrequenz des Atmega, sondern ein Denkfehler, dass die Töne standartmässig höher sein müssten.
Gruss und Dank
Lesezeichen