PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sound?!



elix
16.08.2005, 13:01
Bong Jour allerseits!
Bastle gerade an meinem ersten µC-Projekt mit einem PIC16F876a. Programmieren tu ich in Assembler mit MPLAB und einem ICD2-Interface. Ja, und Überraschung: Es funktioniert wahrhaftig! Der Chip singt!!
Eigentlich will ich ja mit Töne für eine Sirene erzeugen. Bis jetzt verwende ich einen PWM-Output. Mit einem externen Takt von 20 Mhz (intern durch 4) und einem Timer, der das Taktsignal maximal durch 16 teilt komme ich zwar in den hörbaren Bereich (>=1,22kHz)(PWM_Tutorial (http://www.sprut.de/electronic/pic/grund/pwm.htm)), doch ich benötige eben Töne zwischen 200 und 500 Hz!
Wie könnte ich nun da runter kommen? Mit PWM ist das sehr wahrscheinlich nicht mehr möglich, oder? Ich weiss sowieso nicht genau, was da der Vorteil sein sollte, denn grundsätzlich sollte es auch gehen alles ohne Timer direkt auf einen analogen Port auszugeben, und vielleicht sogar mit anderen Wellenformen wie Sinus oder Dreieck zu arbeiten? Es wäre genial, mir könnte hier jemand eine kleine Starthilfe geben, was Sound mit PICs anbelangt, denn ich bin gänzlich neu in diesem Gebiet, und spiel einfach mal script kiddy :-b

Max W.
27.08.2005, 19:39
Man könnte z.B. den externen Takt verringern. Vielleicht auf 4 Mhz. Steht doch auch im PWM_Tutorial.

Max W.
27.08.2005, 21:03
Vielleicht hilft diese Seite? http://www.sprut.de/electronic/pic/grund/pwm.htm

Max W.
27.08.2005, 21:05
Ups. Wollte das nicht hier posten.

04.09.2005, 15:43
Nach langem Tüfteln ist mir so einiges klar geworden... Ob ich den Audio-Port nun einfach in einer Schleife toggle, mit PWM oder einem Timer ist wohl Geschmacksache und muss je nach Anwendung entschieden werden. Im Moment benütze ich Timer 1 (16-Bit) als Frequenzgeber (Overflow-Interrupt) und Timer 0 (1:256-Teiler) als Zeitgeber. Das Overflow-Flag von Timer 0 wird in einer Schleife gepollt, was mehrfach wiederholt wird.