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.
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
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 >
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.
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/
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
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
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?
Alles klar habs bei pollin gefunden.. das lcd händelt das alleine.. ich habs mir direkt mal bestellt und versuch das nach zu bauen
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
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.
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..
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.