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
Was für ein "Education System" ist das? Ist das ein richtiger Lautsprecher oder so ein Piezo-Quäker?
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
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
Hallo Rufus, Ich habe es mir auch im etwa so vorgestellt, jedoch suchte ich ein kleines Beispiel. Danke für die Angabe über die Wartezeit. Sollte ich Schwierigkeiten haben, dann melde ich mich wieder hier. Schöne Grüsse Daniel
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.
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
Port P2.4 als Ausgang! Wie kommst du darauf das mov.w #030000,R15 eine Zeit von 500µs ergibt? Ich denke der Wert sollte deutlich kleiner sein.
Sowas geht doch viel besser über den Timer. P2.4 ist TA2 Anschluss, da kannst du mit dem Timer A und der Output Unit ganz leicht beliebige Frequenzen erzeugen, einmal einstellen und dann läuft das von alleine. Schau mal in die Code-Beispiele und den User Guide.
@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
>Kann sein, dass ich etwas vergessen habe
Wurde schon erwähnt!
Du musst Pin2.4 als Ausgang definieren:
1 | bis.b #0x10,&P2DIR |
DANKE Eine Frage noch. Was soll ich nun verwenden: bis.b #0FFh,&P2DIR oder bis.b #0x10,&P2DIR ?
>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 ;-))
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.