Hallo Seit einiger Zeit liebäugle ich mit den MSP430 MCUs, da sie 16 bittig (ALU) sind und mit linearem Adressraum aufwarten und mit mehr internem RAM glänzen. Das sind genau die Dinge, die ich bei den AVRs etwas vermisse. Ausserdem scheint mir sind die MSP430 doch wesentlich weniger Komplex als die ARM/Cortexe & Co, da trau ich mich als Hobbyist erstmal nicht ran. Drum mal meine Frage an euch, wennihr AVRs und MSPs kennt: Wie schlagen sich die MSPs im Vergleich zu den AVR, rein performance mässig? Gibt es wesentliche Nachteile, z.B. beim ADC (Samplerate, Genauigkeit), bei der ALU (HW Multiplikator drin?)... Was fällt euch da spontan ein? Ist es richtig, dass alle MSPs einen UART bootloader mit drauf haben (der über tricksige Aussenbeschaltung aktiviert wird)? Damit wäre eine weitere Einstiegshürde für mich abgebaut, USB/UART Konverter hab ich rumliegen. Bin gespannt auf eure Erfahrungen... :) Danke Tom
Tom M. schrieb: > Ausserdem scheint mir sind die MSP430 doch wesentlich weniger Komplex > als die ARM/Cortexe & Co, da trau ich mich als Hobbyist erstmal nicht > ran. Als Hobbyist sag ich folgendes:Wenn man bei den kleinen Cortex-M0 von ARM anfängt, erschlägt die Komplexität schon nach kurzer Zeit nicht mehr. Und wenn man mit fertigen Systemen wie LPCXPresso beginnt (knapp 25Euro) bekommt man einen Debugger + Eclipse basierende C Entwicklungsumgebung fix und fertig vorgesetzt und hat mit den Haufen mitgelieferten Beispielen kaum ein Problem mit dem Umstieg. Das erste Programm läuft genauso schnell wie mit dem MSP430 Launchpad von TI. Dafür bekommt man ein Haufen Leistung für sehr wenig Geld (z.b. LPC1113 (24KB Flash, 8KB RAM, bis zu 50 MHZ Clock) für knapp einen Euro pro Stück, auch als Hobbyist). Tom M. schrieb: > Ist es richtig, dass alle MSPs einen UART bootloader mit drauf haben > (der über tricksige Aussenbeschaltung aktiviert wird)? Damit wäre eine > weitere Einstiegshürde für mich abgebaut, USB/UART Konverter hab ich > rumliegen. Ob das stimmt, weiß ich nicht. Zum Programmieren und Debuggen(!) kann man aber das Launchpad von TI bestellen, gibts für 4,xx Euro zu kaufen. Da braucht man keinen Bootloader.
Tom M. schrieb: > Ist es richtig, dass alle MSPs einen UART bootloader mit drauf haben > (der über tricksige Aussenbeschaltung aktiviert wird)? Nennt sich: BSL und ist bei allen (bis auf Exoten) verfuegbar. Nachteil: Er loescht auch alle kalibrierten Werte im Info-flash.
Stefan H. schrieb: > Als Hobbyist sag ich folgendes:Wenn man bei den kleinen Cortex-M0 von > ARM anfängt, erschlägt die Komplexität schon nach kurzer Zeit nicht > mehr. Die LPCXPresso sehen wirklich toll aus, für ~25 Mücken kann ich damit loslegen? Das muss ich mir einfach mal antun. :D Habe bisher nur teure Dev-/Prototype Boards gesehen, wo dann noch ein JTAG weiswasich benötigt wird - einfach mal zu Antesten sind da schnell 100+ $$$ weg, und das ist mir doch etwas viel für's Reinschnuppern. Stefan H. schrieb: > Zum Programmieren und Debuggen(!) kann > man aber das Launchpad von TI bestellen, gibts für 4,xx Euro zu kaufen. > Da braucht man keinen Bootloader. Hab schon vom Launchpad gelesen, aber die da mit gelieferten MCUs sind extrem abgespeckt (sehr wenig Flash/RAM). Das man das Launchpad als Debugger verwenden kann, wusste ich nicht.
Ich kenne den MSP430 sehr gut und er ist wegen seiner klaren Architektur sehr leicht zu verstehen und zu programmieren. Jeder der ihn einmal programmiert hat ist begeistert von den Leistungsdaten und einfachen Interrupt-Programmierung. Die 16Bit Register zu Register Architektur ist gerade für C-Compiler sehr effektiv. Die geringe Verlustleistung im Betrieb ist oft sehr hilfreich. Kostengünstige Starterkits und viele Typen zur Auswahl gibt es auch. Am Besten ausprobieren wie sich ein erstelltes AVR-Programm mit dem MSP430 realisieren lässt und so etwas besser beurteilen kann ob man gut damit zurecht kommt. Übrigens, was kaum einer weiß ist, dass der MSP430 in Deutschland entwickelt wurde.
Tom M. schrieb: > Hab schon vom Launchpad gelesen, aber die da mit gelieferten MCUs sind > extrem abgespeckt (sehr wenig Flash/RAM). Bei den ursprünglichen Launchpads ja, in der aktuellen Revision sind größere MSP430 mitgeliefert, 20-Pinner mit 16k/512 und mit 8k/256 Flash/RAM.
Tom M. schrieb: > Seit einiger Zeit liebäugle ich mit den MSP430 MCUs, da sie 16 bittig > (ALU) sind und mit linearem Adressraum aufwarten und mit mehr internem > RAM glänzen. Das sind genau die Dinge, die ich bei den AVRs etwas > vermisse. > > Ausserdem scheint mir sind die MSP430 doch wesentlich weniger Komplex > als die ARM/Cortexe & Co, da trau ich mich als Hobbyist erstmal nicht > ran. Wenn Du nach einer AVR-Alternative suchst, schau Dir ansonsten auch mal die PIC24/dsPIC an. Die sind deutlich besser verfügbar, und die Peripherie ist leistungsfähiger. fchk
Tom M. schrieb: > Seit einiger Zeit liebäugle ich mit den MSP430 MCUs, da sie 16 bittig > (ALU) sind und mit linearem Adressraum aufwarten und mit mehr internem > RAM glänzen. Das sind genau die Dinge, die ich bei den AVRs etwas > vermisse. Was verstehst Du unter "linear"? Wenn ich richtig informiert bin, dann wird es jenseits der 64K und vor allem jenseits der 128K Code für die AVRs mit GCC ungemütlich. Beim MSP430
1 | The MSP430X design overcomes the 64K bytes memory barrier by increasing the Program Counter (PC) and register width to 20‐bits. Despite no memory paging being involved, the sizes of |
2 | some MSP430X instructions are considerably larger than the original MSP430. For example, when |
3 | the large memory model is used, a double operand formatted instruction can take 8 bytes rather |
4 | than 6 (a 33% increases): |
Davon bemerkt man nichts direkt, aber irgendwie elegant ist das nicht. Der stm32f407 (Cortex-M4) hat nominell 192KB RAM - unterteilt in zwei nicht "nebeneinander" liegende Bereiche zu 128 und 64 KB. Der GCC unterstützt dies nicht automatisch. Also mit "das RAM linear durchadressieren" ist da auch nichts. Verglichen den den beiden anderen is t das aber ein echtes Luxusproblem. Das mit "mehr RAM" ist relativ. Die MSP430 benötigen mehr RAM im Vergleich zu den AVR, das ist zumindest meine Erfahrung, vermutlich ein Tribut an die 16-Bit. Das bemerkt man sehr deutlich bei den 2k-Winzlingen (attiny2313 vs. msp430g2211/msp430g2231 - alle mit 128 Byte RAM). Wenn es auf dem attiny lief, läuft es u. U. auf dem msp nicht. Der benötigt mehr für den Stack. Welcher der MSP430 hat denn "viel" RAM? "Viel" bedeutet bei mir ">= 32KB". > Gibt es > wesentliche Nachteile, z.B. beim ADC (Samplerate, Genauigkeit), bei der > ALU (HW Multiplikator drin?)
1 | The MSP430 does not have multiply instruction (MSP430 document slaa329, reference 1). To carry |
2 | out multiplication either a memory mapped hardware multiplier is used, or the multiply operation |
3 | has to be handled by software using add and shift. Even if a hardware multiplier is present the |
4 | memory mapped nature of the multiplier results in the additional overhead of transferring data to |
5 | and from the external hardware. In addition, using the multiplier within an interrupt handler could |
6 | cause existing data in the multiplier to be lost. As a result, interrupts are usually disabled before a |
7 | multiply operation and the interrupt is re‐enabled after multiplication is completed. This adds |
8 | additional software overhead and affects interrupt latency and determinism. |
Im Vergleich zum Cortex nicht so der Brüller. Tom M. schrieb: > Hab schon vom Launchpad gelesen, aber die da mit gelieferten MCUs sind > extrem abgespeckt (sehr wenig Flash/RAM). Das man das Launchpad als > Debugger verwenden kann, wusste ich nicht. Das funktioniert wunderbar. Deshalb habe ich mich auch nie für die "boot loader" der MSP430 interessiert habe. Das lohnt einfach nicht. Irgendwo habe ich kürzlich gelesen, dass die "boot loader" aber nicht auf den UART-Pins liegen, sondern auf anderen Pins. Das wäre dann im Vergleich zu Renesas RX und den Cortexen nicht so toll. Nun aber auch etwas positives im Vergleich zum AVR-GCC: PROGMEM gibt es nicht mehr, ein "const" genügt, und der Compiler optimiert auch noch Strings, indem er "Hallo Welt" und "Welt" nur 1x im Flash ablegt. Das schaffen aber auch die ARMs, Renesas RX, PIC32. Also eigentlich alle, außer den AVRs. Auch schön: Der msp430g2553 hat einen "fractional baud rate generator". Da kommt man bei 16 MHz auch auf 115k baud rate. Im Vergleich zum AVR ist der von GCC erzeugte Code im Bereich von 32KB Applikationen wesentlich kompakter: 27KB (msp430) vs. 37KB (atmega128rfa1). Das ist ein dramatischer Unterschied. Die Spitze hält allerdings ein Cortex-M3 (lpc1343) mit 26KB. Renesas RX liegt bei 28KB. Der Flop ist ein PIC32 mit 41KB - der einzige, der schlechter als die at(x)megas abschneidet. Das liegt wohl daran, dass ich den "freien" mips32-elf-gcc" verwende, also keinen Compiler von Microchip. Tom M. schrieb: > Die LPCXPresso sehen wirklich toll aus, für ~25 Mücken kann ich damit > loslegen? Das muss ich mir einfach mal antun. :D Habe bisher nur teure > Dev-/Prototype Boards gesehen, wo dann noch ein JTAG weiswasich benötigt > wird - einfach mal zu Antesten sind da schnell 100+ $$$ weg, und das ist > mir doch etwas viel für's Reinschnuppern. Die ARMs haben preislich und leistungsmäßig die besten Eval-Boards. Das lpcxpresso ist sogar relativ "teuer". Wie wolltest Du die größeren MSP430 testen? Ich habe mir extra für den msp430f6736 einen Adapter bei TI bestellt, weil ich kein günstiges Board gefunden hatte, auf welchem ein MSP430 mit >= 4 Timer enthalten war. Das war relativ teuer. Horst H. schrieb: > Ich kenne den MSP430 sehr gut und er ist wegen seiner klaren Architektur > sehr leicht zu verstehen und zu programmieren. Jeder der ihn einmal > programmiert hat ist begeistert von den Leistungsdaten und einfachen > Interrupt-Programmierung. Die 16Bit Register zu Register Architektur ist > gerade für C-Compiler sehr effektiv. Die geringe Verlustleistung im > Betrieb ist oft sehr hilfreich. Kostengünstige Starterkits und viele > Typen zur Auswahl gibt es auch. Der Text passt auch auf die ARMada, Renesas RX und PIC32, wenn man die 16-Bit durch 32-Bit ersetzt. Es kann gut sein, dass die MSP430 im "low power"-Bereich besonders gut dastehen, ansonsten sehe ich keinen Grund, nicht auf eine der genannten 32-Bit Plattformen zu wechseln. Das mit der "klaren" Architektur kann ich nicht bestätigen. Ich finde beispielsweise, dass das "clock setup" zwischen den verschiedenen MSP430 erheblich differiert und reichlich komplex ist. Für gehören auch die "header files" zur Architektur. Ich werde mich nie an folgendes gewöhnen:
1 | TA0CTL = TASSEL_2 | ID_3 | MC_1; |
2 | TA0CTL = TASSEL1 | ID1 | ID0 | MC0 ; |
Beide bewirken das gleiche, aber einmal einen "underscore" zuviel oder zuwenig ... Leider sind die Bit-Positionen aber nicht separat definiert - also das, was ich benötige, gibt es nicht. Horst H. schrieb: > Übrigens, was kaum einer weiß ist, dass der MSP430 > in Deutschland entwickelt wurde. Doch. Bin ja bei der Wikipedia-Lektüre dabei fast vom Stuhl gefallen. War für mich der Grund, mich damit zu beschäftigen :-) Alles zusammen wüsste ich - außer dem "low power"-Bereich und dem patriotischen - keinen Grund, nicht auf eine der 32-Bit-Plattformen zu wechseln.
Roland H. schrieb: >
1 | > TA0CTL = TASSEL_2 | ID_3 | MC_1; |
2 | > TA0CTL = TASSEL1 | ID1 | ID0 | MC0 ; |
3 | > |
> Beide bewirken das gleiche, aber einmal einen "underscore" zuviel oder > zuwenig ... Gibt immer verschiedene Wege was zu programmieren, das ist jetzt nicht wirklich überraschend :) Will man jedes Bit einzeln setzen nimmt man die untere Schreibweise, will man lieber "alles auf einmal" setzen, nimmt man die obere. Ist doch nett wenn man sich das aussuchen kann.. > Leider sind die Bit-Positionen aber nicht separat definiert - also das, > was ich benötige, gibt es nicht. Lass mich raten, du willst diese grausige "AVR Schreibweise" (1<<x) weiter machen, richtig?
Tom M. schrieb: > Ist es richtig, dass alle MSPs einen UART bootloader mit drauf haben > (der über tricksige Aussenbeschaltung aktiviert wird)? Damit wäre eine > weitere Einstiegshürde für mich abgebaut, USB/UART Konverter hab ich > rumliegen. Der Vorteil vom MSP ist ja eher das JTAG Interface den eigentlich alle drauf haben. Wenn du Parallelport nutzt, hast du so einen JTAG Adapter mit Teilen für'n paar Euro schnell selbst gebaut. Dann geht zwar kein SBW, aber dafür kostet es halt so gut wie nix :)
Jörg S. schrieb: >> Leider sind die Bit-Positionen aber nicht separat definiert - also das, >> was ich benötige, gibt es nicht. > Lass mich raten, du willst diese grausige "AVR Schreibweise" (1<<x) > weiter machen, richtig? Das ist keine "AVR-Schreibweise". Das ist so möglich bei AVR, ARM (LPC, STM), RX, PIC32 - nur nicht bei MSP430. Ob das nun besser oder schlechter ist, sei dahingestellt. In jedem Fall ist es anders. Bei "(0 << x)" und "(1 << y)" versteht jeder, was gemeint ist. Bei den beiden MSP430-Varianten sieht man auf den ersten Blick nicht, welche Variante welchen Ansatz darstellt. Das mag keine Rolle spielen, wenn man ausschließlich auf MSP430 unterwegs ist. Wobei die TI-Beispiele m. W. anstelle des "|" ein "+" verwenden. Das wird dann lustig, wenn das gleiche Bit mehrfach vorkommt.
Das ist wieder ein Fall für die Kindergärtnerin. >>> Leider sind die Bit-Positionen aber nicht separat definiert - also das, >>> was ich benötige, gibt es nicht. Dann definiere es halt. Einmal im seperaten Header ist es immer verfügbar. Besser mal etwas selber schreiben, als immer über die Ergebnisse Anderer herzuziehen. (Beim IAR gibt es beide Varinaten im Baustein Header) > Bei "(0 << x)" und "(1 << y)" versteht jeder, was gemeint ist. > Bei den beiden MSP430-Varianten sieht man auf den ersten Blick nicht, > welche Variante welchen Ansatz darstellt. Das mag keine Rolle spielen, > wenn man ausschließlich auf MSP430 unterwegs ist. Warum sollte shiften auf dem MSP nicht funktionieren? Wenn es Dir besser gefällt, dann schreibe es halt so.
Roland H. schrieb: > Das ist so möglich bei AVR, ARM (LPC, STM), RX, PIC32 - nur nicht bei > MSP430. Das ist eine Compiler Frage, keine Controller Frage. > Ob das nun besser oder schlechter ist, sei dahingestellt. Ich find es jedenfalls schlecher alles mit unnötigen shifts zuzuknallen. > Bei den beiden MSP430-Varianten sieht man auf den ersten Blick nicht, > welche Variante welchen Ansatz darstellt. Mag sein, aber es erlaubt halt mehrere Bit auf einmal zu setzen (wenn man will). > Wobei die TI-Beispiele m. W. anstelle des "|" ein "+" verwenden. Das > wird dann lustig, wenn das gleiche Bit mehrfach vorkommt. Wie will das denn mehrfach vorkommen?
Ist schon eine Weile her, daß ich mit dem MSP430 gearbeitet hab, aber damals war er vorallem sehr energiesparend, d.h. sehr gut für Batteriegeräte. Was mich am AVR immer ein wenig gestört hat, ist, daß die Peripherie (ADC, UART usw.) recht einfach gehalten sind. Da sind 16Bitter wie MSP430 oder PIC24 besser aufgestellt. Ich persönlich mag den PIC24 (16 Bit) gerne, man bekommt mit dem PicKit3 für ca. 70.- Euro einen guten Debugger und von Microchip einen kostenlosen C-Compiler. Der PIC24 hat übrigens mit dem 8Bit-PIC nichts am Hut, also wer den 8Bit-PIC nicht mag (so wie ich), kann sich trotzdem mit dem 16Bit-PIC anfreunden. Gibt's übrigens bei Reichelt im DIL28-Gehäuse.
Jörg S. schrieb: > Das ist eine Compiler Frage, keine Controller Frage. Das ist noch nicht mal eine Compilerfrage, sondern nur eine der Strukturierung der Headerdateien, der Unterschied liegt nur darin, ob man die Nummer oder den Wert eines Bits angibt. Die Kombination mehrerer Bits zu einem Ausdruck ist eine Komforterweiterung, die sich direkt auf die Tabellen im jeweiligen Family User's Guide beziehen, mit denen die Kombinationsmöglichkeiten für Peripheriefunktionen beschrieben werden. Diese Kombinationen kann man nutzen, man muss aber nicht. Roland H. schrieb: > Auch schön: Der msp430g2553 hat einen "fractional baud rate generator". > Da kommt man bei 16 MHz auch auf 115k baud rate. Bereits die UART von MSP430-Veteranen wie 'F16x benötigt keine sogenannten "Baudratenquarze".
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.