Hallo zusammen, ich müsste mit einem MSP430 einen Sound abspielen. Dazu will ich einfach die Samples auf dem ADC ausgeben, auf nen Audioverstärker und dann auf nen Lautsprecher. Ich vermute hier nicht das Problem. Das Problem wird wohl eher, den Sound ohne zusätzliche Bauteile (also im Flash-ROM) des MSP zu speichern. Zumindest mit dem Code Composter. Oder, und das ist die Frage, liege ich da falsch? Mal folgende Annahme. Ich möchte 8kHz, 8bit und 3 Sekunden speichern. Dann wären wir ja schon bei 24kByte + Code Ist die Gesamtgröße des beschreibbaren Flash bei der light-Version auf 16kB beschränkt oder nur die Code-Größe? Ich möchte größtenteils ja Daten darin speichern, der Code wird sich stark in Grenzen halten. Hab das noch nie ausprobiert und auch grad kein laufendes System zur Hand, in das man mal Daten schreiben könnte. Sollte das mit dem CCE nicht gehen, hat jemand schon mal mit der Platinum Version mit nem MSP430 gearbeitet? Geht das da? zumindest in den ersten 30 Tagen? Danke schonmal! Grüße Robert
>die Samples auf dem ADC ausgeben
Der ADC gibt nichts analoges aus.
Ein ADC ist ein Analog nach Digital Wandler, er ließt Analogwerte ein
und liefert sie als digitale Repräsentation.
Wenn das nicht das Problem ist, dann würde ich einfach den
unbeschränkten MSPGCC verwenden und das Codegrößenproblem gibt es nicht
mehr.
Grüße,
Peter
Ahh.. sorry, ich meinte natürlich den DAC (MSP430F2619). Danke erstmal Peter für den Hinweis und die Idee mit dem MSPGCC. Ja, daran hatte ich auch schon gedacht. Hab halt bisher immer mit dem Code Composer gearbeitet. Gibt es für die freie Umgebung nen Debugger? Würde gerne über SpyByWire debuggen können und das geht wahrscheinlich nur mit dem CC oder? Hat jemand schon probiert, mehr als 16kB mit dem CC auf nen MSP zu bekommen, wenn der Großteil davon Daten sind? Oder kann das auf die Schnelle mal jemand probieren? Es is ein recht dringendes Problem und ich würde gerne am WE die Schematics machen und hab bis dahin keinen Zugriff mehr auf ein System, mit dem ich das selbst ausprobieren kann. Grüße und danke Robert
Es gibt den gdb als Debugger, ich glaube, der mspgcc lässt sich sogar irgendwie in Code Composer Studio integrieren. Das mit der Codegröße hab ich nur mal mit einer alten Version von Code Composer Essentials ausprobiert, da war es so, dass zu den 16 kB nur das Codesegment zählt, nicht das Datensegment. Wie das mit Code Composer Studio jetzt ist, weiß ich nicht. Ich verwende die Version 4 davon nicht. Grüße, Peter
Wenn Du die abzuspielenden Daten nicht im Programm selber unterbringst, sondern das Programm diese Daten über eine der seriellen Schnittstelle laden und selbst ins Flash-ROM programmieren lässt, hast Du kein Codegrößenproblem. Und die erweiterte Funktionalität, daß Du Deinen Aufbau ohne Neuprogrammierung mit neuen Audiodaten beschicken kannst.
Da hast du keine Probleme. Einfach die Daten als Assembler-Listing einfügen und gut ist. Das wird nicht auf die Beschränkung angerechnet. Und: Lass den Composter, nimm IAR. DC8 0x01 0x02 ...
@Rufus: Danke für den Vorschlag. Ich werde auf jeden Fall eine serielle Schnittstelle vorsehen, um mir diesen Weg offen zu halten. @Pothead: IAR gibts nur als Demo-Version für 30 Tage oder? Für dieses Projekt wäre das auf jeden Fall ausreichend. Muss, wie gesagt, ziemlich schnell fertig werden. Fand halt den CC bisher immer recht komfortabel, weil man nix groß konfigurieren musste.
@Pothead: Noch ne Frage: Ist das unten schon das Assembler Listing? Hab sowas noch nie gemacht. Kannst du ein Minimalbeispiel posten, in dem man irgendwo die Daten als ASM Listing definiert und in C-Code drauf zugreift? Oder ein Link, wo ich das finde. Das wäre super. Danke und Gruß Robert
Wenn es geht, Constantenarrays hinzuzufügen, ohne, dass das als Codegröße gezählt wird, dann auch in C:
1 | const signed int sound[] = |
2 | {
|
3 | 1, 24, -15, 27 //usw. |
4 | };
|
Der Zugriff funktioniert genau so wie auf normale Arrays, mit der Ausnahme, dass die Daten durch das "const" eben im Programmspeicher liegen. Das ist beim MSP430 wegen der Von-Neumann-Architektur viel einfacher als beim AVR.
1 | signed int Destination; |
2 | Destination = sound[0]; //ließt das erste Sample und schreibt es in das Ram (Variable Destination) |
Grüße, Peter
Sauber Peter! Das wäre natürlich am einfachsten, wenn es so gehen würde. So hatte ich mir das eigentlich erhofft. Ich werde es erstmal so probieren. Gruß und vielen Dank Robert
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.