Anfang letzten Monat habe ich mir mal ein paar Gedanken gemacht zu dem Thema: Sound, Musik und Töne auf dem MSP430 generieren. Da es in diesem Bereich ziemlich viele verschiedene Möglichkeiten gibt, Musik zu erzeugen, habe ich ungefähr eine ganze Woche für das folgende Sound-Modul gebraucht. Der Algorithmus sollte so klein wie möglich bleiben und natürlich sollte die Musik im Hintergrund automatisch abgespielt werden, ohne manuell eine Funktion aufrufen zu müssen. Das bedeutet also: Ein Interrupt muss dafür sorgen, dass die Noten automatisch abgespielt werden. Weiterhin sollte es so einfach wie möglich aufgebaut werden. Also habe ich mich dazu entschlossen, Töne per PWM (Pulsweitenmodulation) zu erzeugen. So wird es auch beim Game Boy Advance realisiert (als grobes Beispiel). Als Grundlage habe ich den typischen Tracker-Stil (auch Rastersequenzer), benutzt bzw. habe dies als Basis genommen. Die Code-Größe bleibt somit ziemlich klein. Zum Einsatz kommt ein MSP430G2553 (wie so oft in letzter Zeit) der zwei Timer besitzt.
Tag Archives: msp430g2553
ILI9341 TFT-Display mit MSP430
Bis jetzt finden sich hier auf der Seite nur Beispielprogramme für monochrome Displays bzw. LCDs. Da ich schon länger mal mal mit einem “richtigen” Display arbeiten wollte, also etwas in Farbe programmieren, habe ich mir auf Ebay ein kleines 2.2″ TFT-Display, mit einem ILI9341 Controller, bestellt. Das Display hat zu dem Kaufzeitpunkt mal gerade nur 5,69€ gekostet. Der aktuelle Preis von 6,00€ ist narülich auch noch super billig. Die Ansteuerung des Displays hat sich als ziemlich einfach gestaltet. Es kann direkt per SPI angesteuert werden und es gibt ein vernünftiges Datenblatt mit allen Informationen zur Initialisierung etc. In den letzten Tagen habe ich eine kleine Demo für das ILI9341 Display geschrieben (in Verbindung mit einem MSP430G2553).
MSP430 Random Number Generator (RNG)
Für mein nächstes Projekt bzw. Programm, brauchte ich einen RNG (Random Number Generator) oder auch Zufallsgenerator genannt. Auf einen normalen Desktop-Rechner ist das kein Problem, da C und z.B. Java fertige Random-Funktionen besitzen. Diese Funktionen generieren die Zufallszahlen auf Basis der Uhrzeit (meistens). Bei einem Microcontroller bzw. speziell dem MSP430 musste ich mir also etwas anderes einfallen lassen. Vor ein paar Monaten bin ich auf diese Idee durch Zufall gestoßen. Ich habe einen falschen ADC-Port initialisiert und habe ein nettes Rauschen (offener ADC-Port) bekommen. Der umgewandelte Wert ist also dauerhaft in einem bestimmten Bereich hin und her gesprungen. Perfekt für einen RNG! Display: ILI9341 TFT-Display
MSP430 OLED-Display SSD1306 (128×64)
Vor ein paar Monaten habe ich mir ein kleines OLED-Display aus China bestellt, mit einem SSD1306 Controller (Ebay). Die Größe des Displays beträgt 0,96″ und hat eine Auflösung von 128x64px. Das Display ist auf einem fertigen Modul gelötet, man braucht sich also nicht mehr um die restliche Beschaltung von dem Display zu kümmern. Der Display-Controller (SSD1306) bietet verschiedene Schnittstellen (Parallel, SPI, I2C). Leider ist die Schnittstelle bei diesem Modul per 0 ohm SMD-Widerstände auf die parallele Schnittstelle eingestellt. Da ich keine vernünftige Spitze für meinen Lötkolben hatte, und auch keine Motivation um die SMD-Widerstände umzulöten (auf SPI), habe ich das Display also parallel angesteuert. Ich habe hauptsächlich die gleiche Bibliothek benutzt wie beim Nokia-Display (PCD8544), allerdings mit ein paar neuen Funktionen und Verbesserungen. Angesteuert wird das Display wieder per MSP430G2553.
MSP430 Nokia 3310 LCD (PCD8544)
Hier entsteht eine kleine Bibliothek für Grafik-LCDs. Angefangen habe ich mit einem Nokia 3310 LCD (PCD8544 Controller). Eine kleine Demonstration kann man in dem Video sehen. Die Bibliothek wird in nächster Zeit noch ein paar Funktionen dazu bekommen (es fehlen noch viele Funktionen, wie z.B. Linien zeichnen, Rechtecke, Kreise etc.). Bei dem verwendeten Nokia 3310 LCD handelt sich um ein Ersatz-Display (kann auf Ebay bestellt werden). Der sichtbare Bereich des Displays beträgt 96×64 Pixel (der Display-Speicher ist aber etwas größer). WICHTIG: Das originale Nokia 3310 LCD hat eine Auflösung von 84×48 Pixel! Die Ansteuerung (besonders die Initialsierung) ist bei diesem Display ziemlich einfach, da es nicht viele Einstellmöglichkeiten gibt, beschränkt sich also auf ein paar Befehle. Angesteuert wird das LCD über einen MSP430G2553 (per SPI).
MSP430 USCI Initialisierung
Ein Beispiel-Programm bzw. Beispiel-Initialsierung für USCI (Universial Serial Communication Interface) mit dem MSP430G2553 (im SPI-Mode). Das Programm an sich ist fast identisch mit dem Programm aus “MSP430 USI Initialisierung“. Es werden also wieder Bytes (0-255) an das Schieberegister gesendet.