www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega8/16 WAV über PWM???


Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ist es möglich ein Wav (Telefonqualität 8Bit/8KHz) über einen
Atmega8 oder Atmega16 per PWM auszugeben?
Wenn ja wie realisiert man sowas, am liebsten wäre mir die
Programmierung in C. Hat jemand vieleicht ein kleines
Beispielprogramm?
Dürfte ja eigentlich nicht so schwer sein wenn der Timer mal richtig
initialisiert ist. Oder liege ich da total scheif?

Danke schonmal für eure Hilfe!

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die PWM-Frequenz dürfte etwas langsam sein. Mit Tiny15 geht das besser,
dessen PWM-Timer hat PLL.

...

Autor: unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne mich zwar mit Mikrocontroller praktisch nich aus, aber ist der
PWM nicht ein digitaler ausgang? Aslo dauerndes wechseln von 0 und 1 am
Ausgang?
Damit könntest du meines Wissens nach nur "piipen" aber wenn du
Stimmen oder sonst welche Geräusche ausgeben möchtest brauchst du ein
Analogausgang.

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@unbekannter:
Das pipen hörst du nur, wenn die PWM frequenz zu niedrig ist.
Einer PWM Frequenz von 30kHz z.b. könnte wohl kein normaler
lautsprecher mehr folgen, und es würde nur noch das "aufmodulierte"
NF signal durchkommen. Eleganter wäre ein Tiefpassfilter, der die hohe
Frequenz filtert und nur den NF anteil durchlässt.

Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@...HanneS... Lux
Das mit dem PLL hört sich gut an gibt es da acu einen MC mit mehr
Ports?
Und gibt es da ein irgend welche Quellen wie der Timer dann
konfiguriert werden muß?
Ich hab echt schon alle möglichen Seiten durchsucht und nichts
passendes gefunden.

@Fly
Danke für die AppNotes, die muß ich erstmal Studieren um da
durchzusteigen.

Autor: dotstyler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mir fällt de tiny26 ein. Der hat PLL und zwei Ports. Den kann man Speed
mäßig ziemlich hochjagn. Am einfachsten
alle Datasheets durgucke.
73

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und gibt es da ein irgend welche Quellen wie der Timer dann
> konfiguriert werden muß?

Ja, Quellen gibt es, die Datasheets zu den AVRs, die man sich kostenlos
bei www.atmel.com herunterladen kann.

Ich habe mal etwas mit dem Tiny15 und der Soundausgabe experimentiert,
das kannst Du hier nachlesen:

http://www.hanneslux.de/avr/divers/index.html

...

Autor: Fly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weshalb studierst du nicht die Links die ich gepostet habe?! Das ist
ganz genau dass was du suchst! Inkl. Schema und dokumentiertem
Sourcecode und das beste ist: Es funktioniert garantiert!
Kannst du kein Englisch?

Autor: Sascha Dürkes (plutoonline)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fly
Ich hab doch geschrieben das ich mir die Appnotes mal anschauen muß!
und ja ich kann Englisch.
@All
ich habe mir mal die Appnotes reingezogen und hab das ganze mal auf
einem Atmega8@8Mhz umgesetzt.
Ich habe das Wav-File zum testen im Programmspeicher untergebracht
und schicke die Daten dann auf OCR1B.
Den WAV habe ich mit 8BIT und 4000Hz codiert.
Es kommt auch was raus was sich wie der WAV-File anhört nur ist die
Qualität bei (8Bit 4000Hz) nicht mehr so doll.
Ich werde bei gelegenheit mal (8Bit 8000Hz) testen.
Das piepen der PWM-Frequenz kann man noch wohl rausfiltern.
Ich denke das ein MC mit PLL wohl ein besseres ergebnis ausgibt und man
sich den Filter Sparen kann.
Ich werde mal den Tiny26 checken.
Was mir jetzt noch fehlt ist ein geeigneter Speicher zu ablegen der
WAV-Files, ich denke 64KB/128KB würden ausreichen.
Hat da jemand eine Idee?

Autor: Sebastian Heyn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mmhh ganz ehrlich, wenn du den controller nur sound ausgeben lässt, und
diese nicht im flash ablegen willst, kannst du ja einen eeprom oder
flash IC nehmen... Kleiner controller, der am adress und datenbus
hängt, evtl über schieberegister o.ä. und hinten einen kleinen 8bit
dac. da musst du nichts filtern, und bist glücklich :-))

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da gibt es z.B. 'ne nette fertige Lösung von Peter Dannegger als
Soundmodul für Modellbau. Musst mal suchen, wurde hier im Forum drüber
berichtet.

...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.