Ich habe Erfahrung mit Assembler und C-Programmierung für Mikrocontroller, bin aber mit den verschiedenen MCU- und DSP-Familien nicht vertraut, die von heutigen Unternehmen angeboten werden. (zB: Texas Instruments, Atmel, Renesas)
Ich würde gerne etwas über die guten Mikrocontroller / DSPs wissen und wie es ist, mit ihnen zu entwickeln. Bitte fassen Sie Ihr Verständnis über die verschiedenen MCU/DSP-Familien zusammen, eine Familie pro Antwort.
Es wäre auch sehr interessant, wenn Sie bitte detailliert beschreiben, was die Hauptanwendung(en) für diesen (diese) Mikrocontroller ist (sind).
(Dies ist ein "Community-Wiki", sodass jeder mit einem Ruf von >100 Antworten verfeinern und verbessern kann.)
ARM ist der Industriestandard für 32-Bit-Controller, obwohl der PIC32 einige nette Features hat. Sie sind ganz einfach zu bedienen. Ich mag die NXP LPC2000 und LPC1000 ARM-Chips, aber der neue Energy Micro ARM Cortex-M3- Chip ist wegen seines sehr geringen Stromverbrauchs sehr interessant - so gut wie der MSP430 [Youtube]. Die Unterstützung ist sehr unterschiedlich, die NXP-Chips haben die LPC2000 -Gruppe, die ich leite, die die Leute zu mögen scheinen - wir haben über 8.000 Mitglieder!
Atmel AVR , vielleicht in einem Arduino : Ich würde Leon widersprechen und sagen, dass die AVR-Linie von Atmel eine großartige Familie für den Anfang ist. Es ist ziemlich vielfältig und reicht vom ATtiny über den ATmega bis zum Dragon (mit dem ich nicht gearbeitet habe). Ich würde sagen, dass der AVR32 und der Xmega unterschiedliche Familien sind.
AVRfreaks ist eines der besten Elektronikforen im Internet (wird bald von Chiphacker übertroffen :), es gibt auch die Arduino-Community, die sich an Bastler richtet. Arduino eignet sich hervorragend zum Erlernen von Mikrocontroller-Hardware, obwohl es Ihnen beim Programmieren nicht hilft (das OP gab an, dass es ASM und C kannte).
Die WinAVR-Suite ist im Vergleich zu anderen Toolchains kinderleicht. Laden Sie es einfach herunter, drücken Sie ein paar Mal auf Weiter, geben Sie einen Code ein und drücken Sie F5. Einfacher geht es nicht. Sicher, der Editor von AVR Studio hat nicht alle Funktionen, die er haben sollte, aber viele Hersteller-IDEs sind nicht besser oder sogar schlechter (*hust*MPLAB*hust*).
Ich bin mir über die Lieferung nicht sicher, aber ich würde sagen, dass der 6-polige SOT23 ATtiny ein Nischenchip ist und die SO8- oder DIP-Version sehr gut verfügbar ist. In diesem Zusammenhang leisten sie auch hervorragende Arbeit, indem sie sie sowohl in DIP- (für das Prototyping) als auch in kompakten SMT-Paketen beschaffen.
TI MSP430 -Serie
Hardware
Die Vielfalt an Hardware-Peripheriegeräten ist nicht so flexibel wie die Microchip-PICs, aber die Software-Debugging-Toolchain-Unterstützung ist viel besser als die Teile von Microchip. TI hat kürzlich seine neue Version von Code Composer für die MSP430-Mikrocontroller und TMS320F28xx-DSPs veröffentlicht, die Eclipse verwenden. Die Debugging-Unterstützung ist ausgezeichnet.
Diese sind auch sehr einfach einzurichten die Steuerregister, viel einfacher als die 28xx DSPs.
Der MSP430 eignet sich hervorragend für zeitintensive Anwendungen, da normalerweise mehr Erfassungs-/Vergleichsregister zur Verfügung stehen. Dies kann Systeme erheblich vereinfachen, in denen Sie mit vielen vielen Timing-intensiven Peripheriegeräten umgehen müssen.
Entwicklung
Sie können ein Entwicklungssystem für 150 US-Dollar kaufen (es gibt eine billigere MSP430-auf-einem-USB-Stick-Variante für 20 US-Dollar, aber das ist irgendwie einschränkend), und Sie erhalten ein echtes Hardware- und Debugger-Prototyping-System. Sie können auch das neue TI - Launchpad erwerben , das mit 2 Chips geliefert wird und 4,30 $ kostet.
Mikrochip PIC 16F/18F
Zielmarkt
Kostengünstige 8-Bit-Mikroprozessoren. Der 16F ist eine der früheren Prozessorlinien von Microchip und eignet sich aus folgenden Gründen nicht besonders gut für die Programmierung in C / C++:
Die 18F-Serie ist neuer und sollte in Betracht gezogen werden, wenn Sie sie sich für Ihr Projekt leisten können. Sie ähnelt der 16F-Serie in Bezug auf Zielmarkt, Peripheriesatz, IC-Pakete, Entwicklungstools und Preis. Der 18F-Kern wurde entwickelt, um für C und C++ zugänglicher zu sein, aufgrund von:
Software
Ganz einfach zu programmieren, Sie können mit den 30 Assembleranweisungen schreiben oder einen C-Compiler verwenden . Dies sind 8-Bit-MCUs. Wenn Sie also mit Werten > 255 arbeiten möchten, müssen Sie selbst 2-Byte-Additions-/Subtraktions-/Multiplikations-/Divisionscode finden/schreiben. Sein RAM hat 4 "Bänke". Wenn Sie also in Assembler schreiben, müssen Sie ständig hin und her wechseln, um auf Variablen zuzugreifen, die in anderen Banken als der aktuellen gespeichert sind.
Hardware
Diese MCUs laufen ziemlich langsam, mit einer typischen Geschwindigkeit von 4 MIPS und einer maximalen Geschwindigkeit von 20 MIPS. Sie haben ein paar eingebaute Hardwarefunktionen, die bei richtiger Konfiguration gut funktionieren, wie ADC, serielle Schnittstelle, parallele Schnittstelle, CAN-Bus, I2C-Bus, SPI-Bus, Spannungsvergleich, EEPROM und natürlich Allzweck-I/O-Ports .
Dokumentation
Entwicklungswerkzeuge
Microchip hat ein neues Tool, das VDI , das es einfacher macht, die verschiedenen Hardwarefunktionen der MCU zu konfigurieren, die Assembler- oder C-Code generieren. Besser als sich über die Datenblätter zu wälzen.
Microchip bietet seine MPLAB-IDE seit vielen Jahren an, und obwohl sich das Programm langsam verbessert hat, ist die Benutzeroberfläche im Vergleich zu PC-Entwicklungstools (Visual C++, Eclipse/NetBeans für Java/usw.) sehr schlecht und die Software immer noch besonders fehlerhaft. Es unterstützt auch C++ nicht, obwohl der Unterschied zwischen C und den meisten C++-Features (mit Ausnahme der dynamischen Speicherzuweisung, virtueller Funktionen und einiger anderer Features) sehr gering ist und C++ die Modularität der Programmierung fördert. Es gibt IDE-Anbieter von Drittanbietern, insbesondere IAR, aber sie sind teuer. (Hi-Tech wurde kürzlich von Microchip aufgekauft.)
In-Circuit-Debugging wird in einigen Teilen von der ICD-Schnittstelle von Microchip angeboten, einer 2-poligen seriellen Schnittstelle, auf die über die Debugging-Adapter ICD2, ICD3 , REAL ICE , PICkit2 /3 usw die ICD-Funktionen! Die Debugging-Funktionen sind etwas einschränkend und haben "Skid", bei dem Sie einen Haltepunkt auf eine Anweisung setzen und das Programm einige Anweisungen später stoppt. ICD ist jedoch besser als nichts.
Unterstützung
Blackfin von Analog Devices Die Blackfin-Familie ist ein hybrider DSP/Mikrocontroller mit einem starken RISC-Kern und unterstützt Video-/Signalverarbeitungsanweisungen. Einige Anweisungen unterstützen SIMD.
Hardware
Es hat einen RISC-Kern. Die Geschwindigkeiten reichen von 200 MHz Single-Core bis 600 MHz Dual-Core. Es verfügt über viele Peripheriegeräte: 10/100-Ethernet-MAC, UARTS, SPI, CAN-Controller, Timer mit PWM-Unterstützung, Watchdog-Timer, Echtzeituhr und einen leimlosen synchronen und asynchronen Speichercontroller. Es verfügt über ein dynamisches Energiemanagement, das nicht verwendete Teile des Prozessors automatisch herunterfährt.
Entwicklung
Die beiden primären Entwicklungstools sind VisualDSP++ von AD und die GNU-Toolchain. Es gibt auch ein SDK mit reichlich Code und Anwendungshinweisen. Der SDK-Code dient entweder als Rahmen oder als gute Codebeispiele. Es gibt mehrere Betriebssysteme, einschließlich uCLinux, die darauf laufen. Es gibt eine Reihe von Evaluierungsboards . Die Handbücher sind unverzichtbar.
Preise derzeit ab 2$ in Mengen von 1000 Einheiten.
Der Parallax-Propeller ist ein seltsamer 8-Kern-Mikrocontroller (acht "Zahnräder" plus ein Hub), der sehr interessante/beeindruckende Dinge tun kann, einschließlich der Generierung von SD/VGA-Videos.
Es verfügt über eine eigene Entwicklungsumgebung mit einer Sprache namens SPIN. Montage (PASM) ist selbstverständlich vorhanden.
Es gibt eine beträchtliche Community-Unterstützung und sichtbare Projekte, die den Chip verwenden.
Es gibt keine große Auswahl an Modellen, aber der Chip scheint das Ergebnis eines sehr sorgfältigen Designs und eines langen Entwicklungslaufs zu sein, der von einigen äußerst talentierten und kompetenten Leuten durchgeführt wurde. Es kann für etwa 8 $ erhältlich sein.
Die (systeminterne) Programmierhardware besteht anscheinend aus einer seriellen Schnittstelle auf TTL-Ebene und einer Reset-Leitung. Es gibt einen Dongle namens Prop Plug.
Wie wäre es mit dem STM32 , einer weiteren Cortex-M3-basierten MCU-Familie?
Der Einstieg ist günstig, da ich einige gute Sachen von Olimex gefunden habe.
Dann verwende ich gcc als Compiler und OpenOCD, um das jtag zu steuern.
dsPIC33F und PIC24 : Microchip hat eine Familie von 16-Bit-40-MIPS-Mikrocontrollern namens dsPIC33F, die ihren PIC24F-Befehlssatz und ihre Peripherie mit DSP-Funktionen wie zwei 40-Bit-Akkumulatoren mit Rundungs- und Sättigungsoptionen kombinieren; Einzelzyklus multiplizieren und akkumulieren; und bis zu ±16-Bit-Verschiebungen für bis zu 40-Bit-Daten. Die Preise sind niedrig (ab 2 $ Volumen). Eine Sache, die ich an Mikrocontrollern von Microchip mag, ist, dass viele ihrer Geräte in DIP-Gehäusen erhältlich sind, die sich ideal für Steckplatinen eignen. Ich habe eines davon in einem Projekt verwendet, in dem ich DTMF-Signale dekodieren musste; Es war kostengünstiger als eine dedizierte DTMF-Decoder-Hardwarelösung. Ein PIC24 wird in der erstaunlichen uWatch verwendet, „Die leistungsfähigste (und einzige!) programmierbare RPN/algebraische wissenschaftliche Rechneruhr der Welt“.
Cypress PSoC1 (CY8C29466) verfügt über einen einfachen 8-Bit-CPU-Kern, der von FPGA-ähnlichen digitalen und analogen Blöcken umgeben ist.
Es hat sowohl analoge Eingänge als auch analoge Ausgänge. Viele Projekte, die mit jedem anderen Mikrocontroller eine Menge externer Teile erfordern würden – Operationsverstärker, PGAs usw. – können mit einem einzigen PSoC-Chip durchgeführt werden. Viele Computermäuse verwenden einen PSoC1. Beispielsweise kann es DTMF-Töne decodieren, die an einem Eingangspin ankommen, und direkt unabhängige analoge DTMF-Signale an zwei Ausgangspins erzeugen – echt analog, nicht PWM.
Die digitalen und analogen Blöcke können so eingerichtet werden, dass sie Dinge völlig unabhängig vom Kern tun – und daher mit garantierter fester Reaktionszeit, selbst wenn die CPU während dieser Zeit mit der Bearbeitung von Interrupts beschäftigt ist.
Ziemlich geringe Leistung. Kommt in DIP- und SMT-Paketen.
Der 8-Bit-24-MHz-Kern entspricht ungefähr dem PIC16F-Kern, skurrilen Bank-Switching und allem. Proprietäre C-Compiler sind verfügbar, aber es ist unwahrscheinlich, dass GCC jemals auf einen der beiden portiert wird.
Das „Gainer.cc“-Projekt programmiert PSoC1-basierte Systeme per Processing über ein USB-Kabel, ganz ähnlich wie das spätere „Arduino“-Projekt.
Das Forum http://www.psocdeveloper.com/ ist freundlich. Es gibt einige Dienstprogramme für die Entwicklung unter Linux: http://m8cutils.sourceforge.net/ .
Freescale HCS08- Mikros sind direkte Konkurrenten zu PIC10-18s und AVRs, im Allgemeinen kostengünstiger, aber immer noch mit einem ziemlich reichhaltigen Peripheriesatz. Ihre Bibliothek mit App-Notizen und Referenzmaterial ist ziemlich gut.
Ihre CodeWarrior-IDE (kostenloser Compiler für bis zu 32.000 Code) enthält einige nützliche „Geräteinitialisierungs“-Bibliotheken für einen GUI-gesteuerten Ansatz zum Umdrehen von Bits und einen fortgeschritteneren „Processor Expert“, der Treiber für Peripheriegeräte auf höherer Ebene generieren kann. Sie sind nicht verpflichtet, beides zu verwenden, und können auf Wunsch einfach alles in reinem C-Code tun.
TI TMS320F28xx Serie von DSPs.
Zielmarkt
Motorsteuerung und digital gesteuerte Stromrichter: Sie verfügen über sehr flexible PWM-Peripherie und schnelle ADCs.
Hardware
Diese DSPs haben zwei große Nachteile:
Entwicklungswerkzeuge
Echtzeit-Debugging über JTAG-Port mit Code Composer v4 (Eclipse-basiert!!!).
Unterstützt von MatLAB Simulink zur automatischen Codegenerierung (keine Programmiererfahrung erforderlich)
Die DSPs von TI waren früher sehr teuer für Prototypen, weil Sie einen Echtzeit-Debugging-Pod (JTAG-Adapter) für 1500 US-Dollar benötigten, aber der Preis dafür ist stark gesunken (es gibt einen günstigen für 150 bis 200 US-Dollar), und sie verkaufen Eval-Boards mit eingebaute JTAG-Adapter.
XMOS stellt eine Reihe sehr leistungsstarker 32-Bit-Parallelverarbeitungschips (1600 MIPS von vier Kernen mit 32 Hardware-Threads) her. Sie sind schnell genug, um Hochgeschwindigkeits-USB und -Ethernet in Software auszuführen. Ihre Werkzeuge sind sehr gut, die Chips sind hervorragend, sie sind preisgünstig (sie beginnen bei 7,50 $) und die Leute dort sind sehr hilfsbereit. Sie haben zwei sehr gute Support-Foren; einer wird vom Unternehmen betrieben, der andere ist unabhängig.
Ich muss für den Cypress PSoC3 stimmen. Ich benutze PICs seit ungefähr 10 Jahren (PIC16, PIC18, dsPIC und PIC32). Sie machen mich irgendwie verrückt mit ihrer irritierenden Peripheriekonfiguration und dem ständigen Durchsuchen des Datenblatts, um das eine Bit zu finden, das gelöscht werden muss, damit ein Pin funktioniert.
Andererseits war die Erfahrung, die ich bisher mit den PSoC3s gemacht habe, eine Freude. Vor allem aber macht das Konfigurieren der digitalen und analogen Peripherie Spaß. Serielle Ports, Uhren, Interrupts, Treiber, Komparatoren, ADCs und DACs können alle auf einem Schaltplan verdrahtet werden und funktionieren perfekt.
Beispielsweise können Sie Ihre PWM so verdrahten, dass der ADC in der Mitte eines Impulses abtastet, wodurch die Motorstrommessung genauer wird. Versuchen Sie das auf einem PIC.
Möchten Sie 5 PWMs, 5 Quadratur-Decoder, einen ADC, einen SPI-Port und einen CRC-Generator auf demselben Chip? Du hast es. Sie möchten den ADC so konfigurieren, dass er den Strom in jedem Motor in der Mitte des Impulses sequentiell abtastet? Du hast es. Außerdem können Sie alle diese Ein- und Ausgänge mit fast jedem gewünschten Pin verbinden.
Oh ja, UND, wenn in der Bibliothek kein Peripheriegerät verfügbar ist, können Sie Ihr eigenes in Verilog schreiben!
Cypress PSoC5 verfügt über einen 32-Bit-ARM Cortex M3, der von FPGA-ähnlichen digitalen und analogen Blöcken umgeben ist.
Analoger ADC und DAC mit 20-Bit-Auflösung.
Die digitalen und analogen Blöcke können so eingerichtet werden, dass sie Dinge völlig unabhängig vom Kern tun – und daher mit garantierter fester Reaktionszeit, selbst wenn die CPU während dieser Zeit mit der Bearbeitung von Interrupts beschäftigt ist.
Ziemlich geringe Leistung.
Der 32-Bit-80-MHz-ARM-Cortex-M3-Kern entspricht in etwa ...
Das Forum http://www.psocdeveloper.com/ ist freundlich.
Atmels eigener Support für den AVR ist nicht sehr gut und ihre Hardware-Tools sind ein bisschen flockig. Die Chips sind jedoch nett, und das AVR Freaks-Forum ist sehr gut. Sie haben ernsthafte Lieferprobleme mit ihren neueren Chips wie dem XMega und den 6-Pin-Tiny-Chips.
Zilog hat auch einige Mikrocontroller. Ich persönlich habe nicht versucht, die Z8-Encore -Reihe von Chips zu programmieren, aber sie senden Muster. Sie haben viele verschiedene Chips von 1 KB bis 16 KB (vielleicht mehr) mit Peripheriegeräten wie UART, ADC, I2C , SPI usw.
Meiner Meinung nach ist dies kein sehr guter Bastler-Mikrocontroller.
Ich habe mehrere Familien von Prozessoren verwendet. Das Hauptproblem beim Erlernen eines neuen Prozessors ist das Lernen, Hunderte von Konfigurationsregistern von Peripherieregistern zu codieren. Dies wird der zeitaufwändigste Prozess sein, wenn Sie von einer Familie zu einer anderen wechseln. Da der Hauptanwendungscode in C geschrieben ist, spielt es keine Rolle, welche Familie wir verwenden. Ich wünschte, es hätte sich ein Standard für die peripheren Register entwickelt. Wenn jemand eine Entwicklung in diese Richtung kennt, teilen Sie sie bitte mit.
Ich verwende PIC, ARM, MSP430, AVR und einige andere.
Microchip hat einen hervorragenden Support und gute Hardware- und Softwaretools, das Debuggen ist besonders einfach und schnell. Die 8-Bit-Architektur ist etwas veraltet. Ihre neueren 16-Bit-Chips sind ausgezeichnet. Sie sind Marktführer bei 8-Bit-MCUs.
Eduard
Earlz
XTL
Wouter van Ooijen
Olin Lathrop
Nick Alexejew
Matt Jung
Ricardo
Matt Jung
Ricardo
Ricardo
Matt Jung