Forum: Mikrocontroller und Digitale Elektronik Anbindung DAC an AVR so möglich?


von Timm K. (Gast)


Angehängte Dateien:

Lesenswert?

Hiho liebe Leute,

ich möchte mir einen Wecker bauen - und suche gerade nach dem 
"optimalen" Weg, den Alarmton zu generieren.

Ich möchte kein simples Gepiepse mit Hilfe irgendwelcher Tabellen im AVR 
generieren, sondern würde lieber einen "echten" digitalisierten Sound 
(Feuerwehrsirene) wiedergeben.

Was für mich quasi schon feststeht ist, dass ich ein AT45-Dataflash von 
ATMEL per SPI an den ATmega88 anbinde.

Die Frage ist nun: Wie geht es am optimalsten/einfachsten weiter?

Variante 1: (Im Moment mein Favorit)

Den Dataflash per SPI am AVR, Ausgang vom Dataflash direkt verbunden mit 
dem Eingang von einem 74HCT595 zur Seriell-Parallel-Wandlung - dahinter 
dann einen 8-bit DAC.

Diese Variante würde mir ersparen, die Daten erst nochmal im AVR umladen 
und wieder hinaustakten zu müssen. (Gewünschte Samplerate ist mindestens 
11025Hz, falls möglich eventuell 22050Hz, dann aber mit 2x74HCT595 und 
einem 16-Bit R2R als DAC)

Würde das denn so wie gezeichnet funktionieren?

Variante 2:

Den Dataflash per SPI am AVR, Daten werden per PWM vom AVR in ein 
analoges Signal konvertiert.


Hmm... Wenn ich das jetzt so selber lese, dann scheint Variante 2 
vermutlich die "einfache" Version zu sein. g

Trotzdem die Frage: Würde die Schaltung aus dem Anhang so funktionieren? 
(Abblock-Kondensatoren, Pullups, NF-Verstärker usw. habe ich mit absicht 
weggelassen, weil es nur eine kleine Skizze sein sollte.)

Welche Variante lässt sich für den AVR ressourcenschonender umsetzen? 
Der hat ja noch andere Dinge zu tun, wie z.B. DCF77-Auswertung, 
Displaymultiplexing (5 Stück 5x7-Matrix)...

Vielen Dank für eure Aufmerksamkeit,

Gruß

Timm

von Oork (Gast)


Lesenswert?

Wenn der DAC keinen Write pulse braucht geht das so.

von Timm K. (Gast)


Lesenswert?

Der DAC befindet sich im "Write Mode", wenn CS und WR beide LOW sind.
Da das Schieberegister schon einen Latch hat, würde ich mir das 
nochmalige "Latchen" beim DAC sparen, dachte ich mir.

So nebenbei:
SCL (Pin 10) am Schieberegister muss natürlich noch auf VCC hochgezogen 
werden - habe ich in der Skizze leider vergessen.

von H.Joachim S. (crazyhorse)


Lesenswert?

Naja, vielleicht solltest du lieber direkt einen Soundchip einsetzen? 
AY-3 oder YM2149? Sollten noch zu bekommen sein.

von Oork (Gast)


Lesenswert?

Ein DAC und ein Soundchip sind nicht ganz dasselbe. Keiner kann den 
anderen in allen Faellen ersetzen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Mußt Du Dir nur noch ´nen Kopf machen, wie Du die Audio-Daten in das 
DataFlash bekommst, da Du das UART des Controllers ja schon belegt 
hast...

von Timm K. (Gast)


Lesenswert?

Öhm ja... sehr gut aufgepasst! g

Nach dem Einstellen des Beitrages hier das war mir das auch aufgefallen 
- aber die Skizze oben sollte eben nur eine Skizze sein - was also die 
Auswahl der Pins angeht bin ich noch flexibel.

Also Rx/Tx werde ich schon für eine Anbindung an den PC brauchen, um den 
Dataflash per AVR zu beschreiben.

von Michael U. (amiga)


Lesenswert?

Hallo,
 falls Du noch ausweichen willst: schau Dir mal den DAC7512 an, habe für 
ähnliche Zwecke auch mit einen AT45DB081D an einem Mega88 hängen.
gespielt wird 22kHz/16Bit Mono, kann man auch gut Musik drüber jagen, 
klingt verblüffend gut.

TI schickt auch Sample...

Gruß aus Berlin
Michael

von Timm K. (Gast)


Lesenswert?

16-Bit-Sound mit einem 12-Bit DAC? Schneidest du jedesmal 4 Bit "vorne" 
oder "hinten" ab?

Im Grunde finde ich aber, das 8-Bit für einen Wecksound reichen sollten. 
Irgendjemand hier aus dem Forum meinte zum Thema Weckser einmal "Wecker 
müssen fürchterlich klingen, sonst steht man nicht auf!".

Das Sirenengeheul, dass ich im Moment vorliegen habe ist mit 8-Bit 
aufgenommen worden, daher würde ein 16-Bit DAC mir keine Vorteile 
bringen (für diesen speziellen Anwendungsfall meine ich)

Es sei denn, ich baue mir den Audio-Rekorder von Travel Rec. mal nach 
und klettere Samstag mittag mal auf das Dach der Grundschule damit... 
g

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Nimm doch einfach einen SPI-DAC.
Gibts wie Silizium im Sand am Meer.

von Michael U. (amiga)


Lesenswert?

Timm K. wrote:
> 16-Bit-Sound mit einem 12-Bit DAC? Schneidest du jedesmal 4 Bit "vorne"
> oder "hinten" ab?
Alles um 4 bit nach rechts schieben.

> Im Grunde finde ich aber, das 8-Bit für einen Wecksound reichen sollten.
> Irgendjemand hier aus dem Forum meinte zum Thema Weckser einmal "Wecker
> müssen fürchterlich klingen, sonst steht man nicht auf!".
:-))
Naja, ich habe einen DAC gesucht und diesen gefunden.
Keine Außenbeschaltung, schneller als der AVR je kann und war eben recht 
schnell beschaffbar zum Test.

> Das Sirenengeheul, dass ich im Moment vorliegen habe ist mit 8-Bit
> aufgenommen worden, daher würde ein 16-Bit DAC mir keine Vorteile
> bringen (für diesen speziellen Anwendungsfall meine ich)
Ist dafür ja auch ausreichend, bei mir hängt allerdings ein TPA3001 
dahiner zum Krach machen, da sind die zusätzlichen 4Bit schon gut für 
die Dynamik.

Allerdings würde ich dann für Deinen Wecker wohl nur ein R2R-Netzwerk an 
einen Port hängen und mit 8Bit ausgeben.
Billig, schnell, problemlos.

Gruß aus Berlin
Michael

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Ich seh in der Schaltung keinen einzigen Kondensator... ich weiss ja 
nicht ob das so optimal funktionieren wird, selbst wenn die Schaltung an 
sich stimmt. Und VREF hast Du auch nicht angeschlossen... das koennte 
aber ok sein, ich kenne den DAC nicht.

von Ralf L.K. (Gast)


Lesenswert?

VS1011ES - Beitrag "VS1011 MP3 wird nicht richtig abgespielt"

Der Decoderchip hat DAC und sonst alles für Soundwiedergabe.

Und auch einen MP3-Decoder, was Speicherplatz für die Signale spart.

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.