Softwareimplementierung

Folgendes Diagramm zeigt die Struktur der implementierten Software. Zugrunde liegt das Beispiel MP3-Player-Beispiel von Lars Lotzenburger, baut also auf DSP/BIOS von TI und der FAT lib von ChaN. Das Programm erstellt einen DSP/BIOS Prozess. Dieser macht eine Tastaturabfrage, liest die benötigten Daten von der SD-Karte, verarbeitet diese und giebt das Resultat an einen Ausgabebuffer weiter. […]

Visuelles Debuging der WAV-Player Software

Bei den ersten Tests hatte das Ausgangssignal eine hörbare, sehr sonderbar klingende Verzerrung. Eine Ausgabe der von Little auf Big-Endian konvertierten Samplewerte auf dem Terminal und anschliessende Visualisierung der Daten zeigte folgendes: Immer wenn das 8. Bit gesetzt ist, sind alle höherwertigen Bits auch gesetzt. Besonders deutlich wurde dies sichtbar anhand einer Datei einer sehr […]

SampleMachine

Diese Anwendung habe ich für eine Ausstellung im Auftrag von Iris Rennert erstellt. Es handelt sich dabei um einen “Teppich” mit Kontaktschaltern/Sensoren, die Audio-Samples ab einer SD-Karte mehrstimmig (polyphon) abspielen. Die Anlage besteht aus einer mehrschichtigen Kunststoffmatte, einer Steuerung und einem Verstärker- / Lautsprechersystem. Mit einem Laptop werden die letzten Programmupdates über USB auf die […]

Atemspiel und Kehlgesang

Folgende Anwendung wurde für eine Ausstellung im Auftrag von Iris Rennert erstellt. Sie besteht aus einer Skulptur aus Kunststoffsäcken, die über eine elektrische Ventilation aufgeblasen werden können. Es sind Lautsprecher integriert, die zur Wiedergabe von Audiodateien dienen. Gesteuert wird das Ganze von einem eZdsp Board und einem Halbleiterrelais (Sharp S220T01) für den 230V Gebläsemotor. Die […]

KO Messung Tastaturmultiplexer

Im Rahmen der Fehlersuche am Tastaturmultiplexer habe ich Messungen mit dem Oszillografen gemacht. Auf diesem Bild sind die Signale einer Adressleitung und des Multiplexer-Ausgangs zu sehen. Wir erkennen, dass die Ausgangssignale eine längere Zeit brauchen, um auf 0V zurückzukehren, als die Adresssignale. Auf diesem Bild sind die Signale von zwei Adressleitungen in einer höheren Auflösung […]

Elektromechanische Probleme beim Tastatur-Decoder

Bei der Inbetriebnahme des Tastaturdecoders (TDC) stellt sich heraus, dass dieser sehr empfindlich ist auf äussere elektromagnetische Störungen, z.B. einen eingeschalteten Lötkolben. Diese Empfindlichkeit wird enorm verstärkt, wenn die Leiterplatte auf einem ungeeignetem Material aufliegt. Das äussert sich darin, dass die Tasten als gedrückt erscheinen, bzw. der GPIO/Input des TMS320 als “High” erkannt wird, obwohl […]

WAV File Debug output

Im Folgenden sind Dateiheaders in Hex zu sehen, wie sie von einem selbstgeschriebenen Testprogramm ausgegeben werden über das jtag basierte CCS-Debug-System mit dem Befehl printf. Ausgegeben werden Dateien mit Rechteck-/Sägezahn-Wellen, die mit einem freien Audio-Editor (Audacity) erstellt wurden. Diese charakteristischen Wellenformdateien eignen sich gut zu Debug-Zwecken, da darin Spitzenwerte vorkommen. Stereo Square Wave 4400Hz  W  […]

libsndfile auf TMS320 portieren

Die Idee, libsndfile (http://www.mega-nerd.com/libsndfile/, eine bestehende Bibliothek für das Lesen von Audio-Dateiformaten) auf den TMS320 zu portieren, verwarf ich. Eine Portierung würde den Zeitrahmen sprengen. Die Bibliothek ist zu umfangreich und abhängig von anderen Bibliotheken, die ebenfalls portiert werden müssten. Compiler output: Too many unsatisfiable dependencies for the moment, eg. could not open source file […]

Ein freies TMS320 MP3-Player Project

Ein weiteres, sehr spannendes, (GNU/GPL) freies MP3-Player Projekt für den TMS320C55x  liefert auch den Quellcode für den MP3-Decoder, sowie eine Hardwareanleitung mit PCB-Layout für die CPU TMS320 VC5507. Das Schöne daran ist, dass der VC5507 über ein LQPF Gehäuse mit 114 Pins verfügt, was die Herstellung wesentlich vereinfacht im Gegensatz zum C5515, der sich in […]

Verhalten der SPI-Sende-/Empfangsregister

Beim Versuch, eine DSP/BIOS freie Anwendung unter Verwendung des Beispielcodes zu schreiben, kommt es zu unerwarteten Problemen. Durch zeitraubende Debug-Arbeit finde ich ein Verhalten der SPI-Sende-/Empfangsregister heraus, das dazu führt, dass Bytes verloren gehen, wenn man die Register nicht richtig ausliest. Dies machte sich im Beispielcode nicht bemerkbar, da dieser lediglich eine Sequenz von Bytes […]