Forum: Mikrocontroller und Digitale Elektronik Wave-Player mit ATmega168 probleme


von Sven (Gast)


Lesenswert?

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;

von spess53 (Gast)


Lesenswert?

Hi

>TCNT0 = 0;
>TCNT1 = 232;

Was soll das bewirken?

MfG Spess

von Sven W. (sven_w18)


Lesenswert?

Hi !

Oh, keine wirkliche Ahnung...
Ist noch vom Experimetieren übrig geblieben.

Sollte eigendlich beides 0 sein.

Löst aber nicht mein Problem.

von Sven W. (sven_w18)


Lesenswert?

Noch eine Info: Der "Piepser" hat eine Frequenz von 5,5kHz.
Und der ATmega wird mit einem 20MHz Quarz betrieben.

von spess53 (Gast)


Lesenswert?

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

von Peter D. (peda)


Lesenswert?

Welche von den 4 PWMs ist denn nun der Ausgang?


Peter

von Leo C. (rapid)


Lesenswert?

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.

von Sven W. (sven_w18)


Lesenswert?

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
Noch kein Account? Hier anmelden.