MSP430 : Lautsprecher steuern?

#1027616
Lesenswert?

Ich habe ein MSP430 Education System auf dem ein Lautsprecher vorhanden 
ist.

Kennt jemand ein ASM Beispiel für die Tonausgabe? Im Buch 
Mikrocontroller-Technik von Matthias Sturm sind nur paar Sätze über 
Lautsprecher geschrieben (natürlich ohne Beispielcode und nennenswerte 
Informationen über die Steuerung)!

Für Eure Hilfe bedanke ich mich bereits im Voraus.

Daniel
#1027726
Lesenswert?

Hallo Christian,

Es ist ein Lautsprecher. Das Board ist genau so einer, wie auf diesem 
Bild:

http://www.ttz.uni-magdeburg.de/messeportal/php/gfx/pictures/exponate/msp.gif

------------------------------------------
Im Buch steht so viel über Lautsprecher:
Der Lautsprecher wird durch das Portpin P2.4 getrieben und über eine 
einfache Gegentakt-B-Endstufe angesprochen. Der Lautsprecher dient zum 
Ausgeben von Pulsfolgen unterschiedlicher Frequenz.
------------------------------------------

Ich denke, dass man mit dem Lautsprecher eben nur ein Ton generieren 
kann. Es wäre mir sehr hilfreich wenn ich wüsste wie überhaupt anfangen.

Danke.
Daniel
Gast #1027821
Lesenswert?

Hallo Daniel,
der Anfang ist ganz einfach:

 - Port P2.4 auf 1 setzen
 - 500 µs warten
 - Port P2.4 auf 0 setzen
 - 500 µs warten
 - zurück an den Anfang

und schon hörst Du einen 1 kHz-Ton.
Bin zwar kein MSP430-Experte, aber läufts ganz allgemein bei der 
Ton-Ausgabe.
Für den 8051er haben wir so die Töbe der Tonleiter erzeugt und können 
kleine Musikstücke spielen.

Viele Grüße
Rufus
#1027878
Lesenswert?

OK, ich habe folgendes Programm:

#include  <msp430x12x2.h>

;-----------------------------------------------------------------------
                 ORG    0E000h            ; Program Start
;-----------------------------------------------------------------------

RESET        mov.w    #300h,SP           ; Initialize stackpointer
StopWDT      mov.w    #WDTPW+WDTHOLD,&WDTCTL      ; Stop WDT
SetupP1      bis.b    #0FFh,&P1DIR       ; P1.0-P1.7 output


Mainloop     bic.b    #BIT4,&P2OUT       ; reset P2.4 (Lautsprecher AN)
             call     #Delay             ; call subroutine
             bis.b    #BIT4,&P2OUT       ; reset P2.4 (Lautsprecher AUS)
             call     #Delay             ; call subroutine


             jmp      Mainloop           ; repeat programm, endless loop

Delay        mov.w    #030000,R15        ; Delay to register R15
Delay_1      dec.w    R15                ; Decrement register R15
             jnz      Delay_1            ; Delay over? ZERO
             ret

;----------------------------------------------------------------------- 
;            Interrupt Vectors Used MSP430F12x
;-----------------------------------------------------------------------

             ORG      0FFFEh             ; MSP430 RESET Vector
             DW       RESET
             END


Ich glaube so sollte es im etwa funktionieren. Das Problem ist, dass ich 
aber nichts höre. Sehr wahrscheinlich liegt das an der Loop Pause. 
Welche Zahl soll ich wählen, damit ich z.B. auf einen hörbaren Ton 
komme?

Danke.
Gast #1027889
Lesenswert?

Hallo Daniel,
am Besten ist der Anschluss eines Oszilloskops an P2.4: dann siehst Du 
sehr schnell, ob sich was tut und Du kannst das Delay so einstellen, daß 
Du einen hörbaren Ton erzeugst. Meistens vertut man sich mit der 
Wartezeit und der Ton ist so hoch, daß man als Mensch nichts hört.
Ohne Oszilloskop: einfach den Delay-Wert variieren von sehr klein bis 
sehr hoch.
Oder anhand der Befehlsliste ermitteln, wie lange ein Assembler-Befehl 
dauert und dann die Zeit der Delay-Schleife ausrechnen.

Viele Grüße

Rufus
#1027920
Lesenswert?

@Rufus
Oszilloskop habe ich leider nicht. Nur einen PC, EDU Board und IAR 
Entwicklungsumgebung.

@jens
Ich habe weiter oben die einzige drei Zeilen zum Lautsprecher aus dem 
MSP430 Buch von Matthias Sturm angegeben. Darin steht:
Der Lautsprecher wird durch das Portpin P2.4 getrieben ...

Die Werte habe ich nurn bis zu:
mov.w     #000500,R15
variert, leider hört man immer noch nichts.

Da ich IAR verwende, kann ich auch das ganze Schritt für Schritt 
debuggen. Bei der Zeilen:
bic.b    #BIT4,&P2OUT
bis.b    #BIT4,&P2OUT
sollte ich doch zumindest einen Knick hören, jedoch bleibt alles stumm!

Kann sein, dass ich etwas vergessen habe oder falsch mache bzw. wäre 
#BIT4,&P2OUT richtig angesichts der Buchbeschreibung (Portpin P2.4)?

@Christian
Wie geht das mit P2.4 (TA2) und Timer A konkret? Kannste mir bitte 
eventuell ein kleines Beispiel angeben (par Zeilen zum setzen bzw. 
reseten)? Danke.

Danke
Gast #1027943
Lesenswert?

>Eine Frage noch. Was soll ich nun verwenden:
Das hängt von Dir und Deiner Applikation ab!
1
bis.b    #0FFh,&P2DIR
P2.0 - P2.7 sind Ausgänge

1
bis.b    #0x10,&P2DIR
Nur P2.4 ist Ausgang
(reicht ja wohl im Moment, um die Quäke zum tönen zu bringen ;-))

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren