Hallo ! Ich baue gerade einen SD-Card-Wave-Player mit einem ATmega168. Soweit so gut... Schaltung ist aufgebaut, Programm geschrieben und alles "läuft" halbwegs. Bis auf ein lautes Piepen und das Verzerren der Audiodateien. Das Piepsen fängt sofort nach dem Reset an, also vermutlich ist in meiner main.c schon am Anfang bei der init der Timer was faul. Kann mir einer helfen ??? ICR1 = (F_CPU/SAMPLERATE); TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11); TCCR1B = (1<<WGM12) |(1<<WGM13) | (1<<CS10); TIMSK1 = (1<<TOIE1); TCCR0A = (1<<COM0A0)|(1<<COM0B0)|(1<<WGM01); TCCR0B = (1<<CS00); // F_CPU OCR0A = OCR1A = 128; OCR0B = OCR1B = 128; TCNT0 = 0; TCNT1 = 232;
Hi >TCNT0 = 0; >TCNT1 = 232; Was soll das bewirken? MfG Spess
Hi ! Oh, keine wirkliche Ahnung... Ist noch vom Experimetieren übrig geblieben. Sollte eigendlich beides 0 sein. Löst aber nicht mein Problem.
Noch eine Info: Der "Piepser" hat eine Frequenz von 5,5kHz. Und der ATmega wird mit einem 20MHz Quarz betrieben.
Hi >Sollte eigendlich beides 0 sein. >Löst aber nicht mein Problem. Klar. Zuweisungen an diese Stelle sind sinnlos. >Das Piepsen fängt sofort nach dem Reset an, also >vermutlich ist in meiner main.c schon am Anfang bei der init der Timer >was faul. Du lässt beide Timer loslaufen. >Noch eine Info: Der "Piepser" hat eine Frequenz von 5,5kHz. >Und der ATmega wird mit einem 20MHz Quarz betrieben. Wie gross ist SAMPLERATE? MfG Spess
Sven schrieb: > > ICR1 = (F_CPU/SAMPLERATE); > > TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11); > TCCR1B = (1<<WGM12) |(1<<WGM13) | (1<<CS10); Datenblatt: The ICR1 Register can only be written when using a Waveform Generation mode that utilizes the ICR1 Register for defining the counter’s TOP value. In these cases the Waveform Generaion mode (WGM13:0) bits must be set before the TOP value can be written to the ICR1 Register.
Die Samplerate ist 44,1kHz bei 8 Bit Stereo Ich habe auch noch einen Fehler selbst gefunden in den Fuses: CKOUT war gesetzt. Nun ist zumindest der störene Piep weg und die WAV-Dateien lassen sich abspielen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.