Forum: Projekte & Code MSP430 Launchpad lcd Ansteuerung, Vergleic. Atmel AVR


von Axel S. (axelac)


Angehängte Dateien:

Lesenswert?

Nachdem ich viel mit Atmel AVR Controllern gearbeitet habe, habe ich 
mich jetzt einmal mit dem Launchpad und den 14 bzw 20 poligen MSP430 
Controllern von TI beschäftigt.

Beide Controllerfamilien decken meiner Meinung nach etwas 
unterschiedliche Einsatzbereiche ab. Die Atmel 8 Bit AVR Familie ist 
relativ einfach zu verstehen und damit gut für den Einstieg in die 
Mikrocontrollerprogrammierung geeignet. Geeignete Entwicklungstools, 
Programmer, Debugger, Entwicklungsumgebungen für Assembler und C  etc. 
sind in grosser Anzahl verfügbar.

Die TI MSP430 Familie  ist zunächst mit ihren vielen Derivaten und 
kryptischen Bezeichnung der einzelnen Controller insbesondere für 
Anfänger unübersichtlich. Die Leistungsfähigkeit des CPU Kerns ist aber 
hoch, da es sich um eine 16 Bit Registerarchitektur handelt.

Im Gegensatz zu den Atmel Controllern, bei denen mit den Fuse Bits beim 
Programmieren viele grundlegenden Eigenschaften eingestellt werden 
können, wird bei den TI Controllern vieles durch die Software beim 
Startup festgelegt. Die TI Controller haben einen einheitlichen 
Adressbereich, in dem Register, RAM, IO und Flash Programmspeicher 
abgelegt sind (v.Neumann Architektur). Beim Atmel ist der 16 Bit Flash 
Programmspeicher separat vom RAM definiert, es handelt sich hier um eine 
Harvard Architektur.
Selbst modifizierender Code ist daher beim TI Controller möglich, nicht 
aber beim AVR.

Die TI Architektur ist insbesondere auf möglichst geringen 
Stromverbrauch ausgelegt.
So lässt sich der interne Takt durch verschiedene interne 
Taktgeneratoren in weiten Massen während des Programmablaufs 
beeinflussen, verschiedene Komponenten können, wenn sie zB. innerhalb 
einer Schlafphase nicht benutzt werden abgeschaltet werden bzw. mit 
einem niederfrequenten internen Clockoszillator betaktet werden.
Eine komplexe Interruptarchitektur erlaubt es durch vielfältige externe 
Ereignisse aus den Schlafmodi aufzuwachen.

Durch vielfältige Konfigurationsregister sind die internen Komponenten 
sehr komplex einzustellen, allerdings sind die Beschreibungen der 
Konfigurationsbits in dem Controllerdatenblatt nicht immer ganz einfach 
zu verstehen, da sind die AVR Einstellungen zumindest etwas einfacher zu 
verstehen. Einsteiger haben hier mit Sicherheit größere Probleme wie mit 
den 8 Bit AVR Controllern.

Mit dem Launchpad (<5Eur!) hat TI allerdings eine Hardware und 
zugehörige Entwicklungssoftware (die aus dem Internet geladen werden 
muss) auf den Markt gebracht, die den Programmieradapter (per USB an 
jedem Notebook zu betreiben) enthält und zusätzlich noch die Möglichkeit 
der in Circuit Emulation über die "Spy-by-wire" Schnittstelle 
ermöglicht.
Dies macht natürlich die schrittweise Abarbeitung des Programms und die 
Detektion von Programmierfehlern sehr einfach. Dies entspricht in etwa 
dem Dragon Programmieradapter von Atmel, der aber um ein Vielfaches 
teurer ist.

Zusammenfassen kann man also folgendes feststellen:

MSP430 TI
Vorteile:
super billige Entwicklungshardware Launchpad mit Spy by Wire
Speziell für langzeit Batteriebetrieb optimiert
vielfältige low power Betriebsmodi
mehrere interne high frequency (-16MHz) und low frequency (<12kHz) Clock 
Oszillatoren
vielfältige IO Komponenten und Konfigurationsmöglichkeiten
vielfältige Interrupt Möglichkeiten
eingebautes Spy by wire Interface auch bei den einfachen Controllern


Nachteile:
Unübersichtliche Bausteinbezeichnungen
keine einfach zu handhabende freie Entwicklungsumgebung mit Debugger
für Anfänger komplexe Konfigurationseinstellungen
wenig Informationen im Netz

AVR Atmel
Vorteile:
Umfangreiches Angebot an Programmieradaptern und Entwicklungstools
AVR Studio und gcc Compiler
relativ einfache Konfigurationsstruktur
hohe Leistungsfähigkeit
viel Informationen im Netz, zB. auf mikrocontroller.net

Nachteile:
in Circuit Emulation nur mit relativ teurer Hardware (Dragon)

Anbei ein Codebeispiel für das Launchpad. Allerdings wurde hier ein 
Mikrocontroller MSP430G2452 mit 20 Pin Gehäuse verwendet, sodas 6 
zusätzliche IO Pins verfügbar sind. (Die habe ich mir als Muster von TI 
schicken lassen ;-) Die Besonderheit bei der Verwendung vom Low Power 
Mode ist, das alle Rechenaktivität, die mit zB. 1 oder 16MHz 
durchgeführt werden soll, innerhalb einer Interruproutine erfolgt.
Das eigentliche Hauptprogramm besteht also nach den notwendigen 
Initialisierungsschritten aus einer leeren while(1); Schleife. Für diese 
Schleife wird der CPU Takt abgeschaltet, während die Peripherie des 
Kontrollers auf Ereignisse wie vom Timer oder dem ADC Wandler wartet. 
DAnn wird die jeweilige Interruptroutine mit wieder eingeschalteten CPU 
Takt abgearbeitet, am Ende der Interruptroutine schaltet die CPU wieder 
in den taktfreien low power modus!
Das verwendete lcd ist ein lcd von Pollin. Es kann mit den 3.3V Pegeln 
des MSP430 Controllers angesteuert werden, benötigt aber 5V 
Betriebsspannung. Die kann vom TP1 des Launchpads abgegriffen werden.

Es wird ca. alle 5s mit dem ADC die interne Temperatur gemessen und auf 
dem lcd ausgegeben. Die grüne LED blinkt alle 2.5s, die rote solange der 
ADC mit der Wandlung beschäftigt ist.

Viel Spass beim Nachbau und erweitern der Funktionalität.

von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

Hallo Axel,

ich habe mir ebenfals für 4,30 US$ (3,05 Euro) das LaunchPad gekauft,
nachdem ich noch nie mit dem MSP430 gearbeitet habe.  Gestern Mittag
ist er mit Fedex angekommen...

Auf den MSP430 bin ich durch die Application Note zum BQ76PL536A-Q1
3 to 6 Series Cell Lithium Ion Battery Monitor and Secondary
Protection IC for EV HEV Applications gekommen.

Du hast ein gutes Review und einen guten Vergleich geschrieben.

Ich kann das nur bestätigen, aber ich ich bin mit den AVRs (und auch
PICs) nicht zufrieden.  Bleibe entweder bei meinen 8051er oder gehe
zu den Cortex M3 und M0.  Nunja, mein Büro hat noch keinen Tisch aber
ich werde den MSP430 schnellstmöglich ausprobieren, denn die TIs sind
durch ihren Stromsparmodus und Funktionsumfang SEHR interessant.

Grüße und viel Spaß mit dem LaunchPad
Michelle

von lhend (Gast)


Lesenswert?

Hallo,

sorry für mein Deutsch (ist nicht meine Muttersprache), möchte aber dich 
nur kurz darauf hingewiesen dass due direckt für Launchpad eine freie 
IDE/Entwicklungsumgebung (Editor +  Compiler + Debugger) bekommen 
kannst. Die freie Version von CCSTUDIO 
(http://processors.wiki.ti.com/index.php/Download_CCS) kann bis 16 KB 
Code generieren, und die MSP430 Value Line auf Launchpad hat ja nicht 
mehr als 16 KB Flash.

Hast du auch GRACE 
(http://focus.ti.com/docs/toolsw/folders/print/grace.html?DCMP=Grace&HQS=Other+BA+grace_b3_sw) 
schon ausprobiert? Das ist eine schnelle Lösung für Anfänger die MSP430 
zu programmieren und die Peripherie zu konfigurieren.

Es gibt auch genügend Informationen für Launchpad auf der Wiki-Seite 
(http://processors.wiki.ti.com/index.php/LaunchPad_Redirect?DCMP=launchpad&HQS=Other+OT+launchpadwiki).

Viel Spass mit MSP430 und Launchpad.

-Leo-

Axel Schnell schrieb:
> Zusammenfassen kann man also folgendes feststellen:
>
> MSP430 TI
> Nachteile:
> Unübersichtliche Bausteinbezeichnungen
> keine einfach zu handhabende freie Entwicklungsumgebung mit Debugger
> für Anfänger komplexe Konfigurationseinstellungen
> wenig Informationen im Netz
>

von Egal (Gast)


Lesenswert?

Axel Schnell schrieb:
> keine einfach zu handhabende freie Entwicklungsumgebung mit Debugger

mspgcc und gdb mit eclipse:
http://springuin.nl/en/articles/launchpadwindows

Dass alle Einstellungen zur Laufzeit gemacht werden können, ist ein 
Plus.
Die Produktkürzel sind bei Atmel auch nicht einleuchtender. Die 
Dokumentation finde ich bei Atmel ebenfalls übersichtlicher, das mag 
aber Gewöhnung sein. In die Peripherie muss man sich halt einarbeiten. 
Insbesondere beim Timer fand ich die Doku nicht ausführlich genug.

Das LaunchPad mit ISP ist fantastisch billig und für kleine Projekte und 
Experimente super (Interface zum PC), aber mit 2 kB Flash kommt man 
nicht sehr weit.

von Bernd N. (Gast)


Lesenswert?

Hallo Axel,

schöne Zusammenfassung die du da gemacht hast. Mittlerweile wird es 
sicherlich schon eine kleine Fangemeinde zum Launchpad geben zumal nun 
auch die 20 Pin DIL Typen zu haben sind. Vielleicht sollte man hier auch 
einmal einen Blog zum Thema Launchpad aufmachen und ein Codesammlung 
starten.

Anbei noch 2 Links zum Thema.

http://www.msp430launchpad.com/

http://www.43oh.com/forum/

von µC-Anfänger (Gast)


Lesenswert?

Hallo zusammen,

TI gibt sich zwar viel Mühe, aber mir schwirrt der Kopf vom ständigen 
Englisch lesen.

Es ist wohl war, es gibt kaum Informationen im Netz. Mit meinem Arduino 
Uno bin ich als Anfänger in kürzerer Zeit viel weiter gekommen (um nicht 
zu sagen, mit dem Arduino konnte ich bereits erfolgreich ein Display 
ansteuern, das es bei komputer.de mit passendem Breakout für ca. 5€ 
gibt, während ich beim Launchpad noch immer keine Ahnung habe, wie ich 
z.B. eine externe LED anschließen und ansprechen kann).

Zum Arduino gibt es ein Forum, welches auch andere Sprachen als Englisch 
unterstützt, zumal es auch viele Hobbybastler gibt, die auf ihrer 
Homepage leicht verständliche Informationen bereitstellen. Wenn man nach 
dem Launchpad googelt, braucht man jede Menge Glück, um Infos zum 
Launchpad von TI zu bekommen und nicht zu diesem komischen 
Midi-LED-Controller...

Und als Referenz fürs Launchpad muss man wohl die C-Referenz nehmen? Ich 
habe keinen blassen Schimmer, wie ich da "umdenken" muss, um das aufs 
Launchpad zu übertragen.

Wir sind hier auch auf die Idee gekommen, ein paar "Samples" bei TI zu 
bestellen, die auch aufs Launchpad passen sollten. Mal schauen, ob das 
bei diesem undurchsichtigen Shop-System von TI geklappt hat. Dann werde 
ich auf jeden Fall das LCD-Beispiel ausprobieren. Ich bedanke mich schon 
mal im Voraus dafür.

LG

Euer Anfänger

von lovakiranvarma m. (lovakiranvarma_m)


Lesenswert?

These sites are really good sites on launch pad board from texas 
instruments.
I too developing new projects on Launch pad board
http://www.npeducations.com

von Benni (Gast)


Lesenswert?

static void lcd_nibble( unsigned char d )      // send upper 4 Bits of d 
to lcd
{                                              // ignore lower 4 Bits of 
d
  LCD_D4 = 0; if( d & 1<<4 ) LCD_D4 = 1;
  LCD_D5 = 0; if( d & 1<<5 ) LCD_D5 = 1;
  LCD_D6 = 0; if( d & 1<<6 ) LCD_D6 = 1;
  LCD_D7 = 0; if( d & 1<<7 ) LCD_D7 = 1;

  LCD_E0 = 1;  __delay_cycles( 1UL );    LCD_E0 = 0;        // 1us
}

static void lcd_byte( unsigned char d )        // send all 8 Bits of d 
to lcd in 2 nibbles
{
  lcd_nibble( d );  __delay_cycles( 50UL );    // high nibble, wait 50us
  lcd_nibble( d<<4 ); __delay_cycles( 50UL );  // low nibble, wait 50us
}

irgendwie verstehe ich das nicht ganz richtig.. schon klar der 
bildschirm ist mit 4 leitungen angeschlossen. kann der lcd damit um wenn 
zwei 4 bit zahlen hintereinander gesendet werden? setzt er die alleine 
zusammen?

von Benni (Gast)


Lesenswert?

Alles klar habs bei pollin gefunden.. das lcd händelt das alleine..
ich habs mir direkt mal bestellt und versuch das nach zu bauen

von Benni (Gast)


Lesenswert?

Hallo,

eine Frage hätte ich denn doch noch.
Im Code wird ja vor der while schleife der LMP3 betreten
Die Peripherals laufen ja mit ACLK und nicht mit MCLK.

Wenn nun durch einen Interrupt die jeweilige ISR ausgeführt wird steht 
da nichts davon dass der LPM geändert wird.
Bedeutet das dass alles nur mit der langsamen ACLK läuft?
Das würde ja bedeuten dass die ganzen Delays viel zu länge wären da sie 
ja nicht mit 1MHZ sondern mit 32kHZ oder so ausgeführt würden.

Danke für Aufklärung

von MSP (Gast)


Lesenswert?

Ich sehe keine while Schleife.

Mit dem LPM funktioniert so: Der interrupt legt das Statusregister und 
damit den LPM auf den Stack. Dann wird die ISR im LPM0 ausgeführt und 
mit dem RETI das Statusregister vom Stack restauriert. Der MSP ist dann 
wieder im LPM vorm interrupt.

Bei rein interrupt gesteuerten Programmen braucht man beim MSP keine 
Endlosloop im Hauptprogramm.

von Benni (Gast)


Lesenswert?

kapiert, danke

von Benni (Gast)


Lesenswert?

Ich will es gerade nachbauen, habe aber ein Problem.
Wie bekommt man das 10er Flachband an diese winzig kleinen Anschlüsse?
Hab mir schon die dazugehörige Buchse gekauft doch da kommen auch nur 
mini leitungen raus..

ein Foto von unten wäre sehr hilfreich..

von Benni (Gast)


Lesenswert?

ah man kann das flachbandkabel einfach ablöten und da drunter sind 
lötpunkte.
da kann man ganz einfach die kabel anlöten..

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
Noch kein Account? Hier anmelden.