Mein neuer Lieblingsmikrocontroller

Gast #1358007
Lesenswert?

Als ersten Mikrocontroller habe ich vor vielen Jahren den PIC16F84 
kennen und hassen gelernt. Dann habe ich die Mega AVRs verwendet und sie 
waren einfach toll. Nun kam es aber, das ich mal für ein Projekt 4 16 
Bit PWM Kanäle brauchte und geschaut habe, ob es denn nicht einen 
Controller gibt, der das in Hardware hat. Bei Reichelt habe ich dann den 
PIC24FJ64GA002 gefunden, für 3,35€. (Die Version mit weniger Flash gibts 
schon für 2,40€.)

Zuerst war ich sehr skeptisch aufgrund der schlechten Erfahrungen mit 
PICs in der Vergangenheit. Aber der Controller ist einfach toll!

Also es ist ein 16 Bit Controller, der auch mit dem internen 
RC-Oszillator mit den vollen 32MHz betrieben werden kann! Allerdings 
brauchen die Befehle mindestens 2 Takte, so dass effektiv etwas weniger 
als 16MIPS rauskommen. Der Controller ist im bastelfreundlichen DIL 28 
Gehäuse erhältlich. Er hat Interruptprioritäten! Der AD-Wandler kann in 
einen (kleinen) Puffer sampeln. (Mehrere auswählbare Kanäle oder nur ein 
Kanal mehrmals.) Er kann Interrupts auslösen wenn sich der Zustand eines 
Pins ändert und hat 5 16 Bit Timer, die zu 2 32 Bit Timer kombiniert 
werden können.

Aber das beste Feature dieses Controllers ist eine INTERNE MATRIX FÜR 
DIE PERIPHERIEFUNKTIONEN!!! D.h. intern kann z.B. die Matrix per 
Software so geschaltet werden, das die PWM Ausgabe eines Kanals 
gleichzeitig an 3 Pins ausgegeben wird. Oder man kann sich z.B. die UART 
und SPI Signale an die Pins legen, die vom Layout am besten passen!!! 
Das ist echt genial, vor allem für Bastler, die selbstgemachte 
einseitige Platinen bevorzugen.
#1358034
Lesenswert?

... schrieb:

> Zuerst war ich sehr skeptisch aufgrund der schlechten Erfahrungen mit
> PICs in der Vergangenheit. Aber der Controller ist einfach toll!

Ein bischen störend ist die recht lange Bugliste vieler Modelle.

> Das ist echt genial

Ich ahne den Grund. Die älteren dieser Baureihe, die dsPIC30, haben eine 
teilweise derart bescheuerte Mehrfachbelegung der Pins (z.B. CAN und 
Programmierinterface auf den gleichen Pins), dass Microchip sich von den 
Kunden wohl ziemlich was anhören musste und in der nächsten Runde die 
Flucht nach vorne angetreten ist.
Gast #1358058
Lesenswert?

Gut, die GPIO selbst nicht, also z.B. PORTA.6 bleibt meinetwegen Pin 6

aber was ich festlegen kann ist dass SPI.clk auf PORTB.3 geht, oder dass 
TX auf PORTC.4 kommt statt auf irgendwas festgelegtes?

Stimmt das so?

Gruß,
Jens
#1358071
Lesenswert?

Mikrochip bietet den C30 für privaten Einsatz kostenlos. Es fehlt 
gegenüber der Vollversion ein bischen Optimierung und ist seitens 
Microchip eine Gratwanderung, denn technisch ist das der bekannte GCC 
plus ein herstellerspezifischer Optimierungslauf. Ist verwendbar.

Programmierung und Debugging läuft über die gleiche Technik und Hardware 
wie bei den 8bit PICs.
Gast #1358189
Lesenswert?

Die GPIO über eine Matrix zu führen macht nicht viel Sinn, weil die ja 
eh alle gleich sind. Bei den AD Eingängen ist es ähnlich, man hat ja 12 
gleichwertige zur Verfügung.

Ich hab noch nicht nachgeschaut, ob Microchip den Sourcecode für ihre 
Erweiterungen zum GCC alle veröffentlicht haben. Wenn nicht, dann wäre 
das nach meiner Meinung eine Verletzung der GPL. Ansonsten optimiert die 
eingeschränkte Version ja trotzdem, wie der normale GCC ja auch.

Apropos Bugs: da gibt es einen Bug in der PWM Hardware. Man darf den 
Wert 1 nicht verwenden, sonst liegt für einen Timer-Zyklus der Ausgang 
auf high. Ich hab da mal ein Java-Applet geschrieben, das das beachtet 
und den Wert 1 nicht mit in die PWM Tabelle schreibt, sondern auf oder 
abrundet. ;-)

http://aaabbb.de/JNumberTableMaker/pwm_sine_function_table_maker.html
#1358201
Lesenswert?

... schrieb:

> Ich hab noch nicht nachgeschaut, ob Microchip den Sourcecode für ihre
> Erweiterungen zum GCC alle veröffentlicht haben. Wenn nicht, dann wäre
> das nach meiner Meinung eine Verletzung der GPL. Ansonsten optimiert die
> eingeschränkte Version ja trotzdem, wie der normale GCC ja auch.

Dieser Optimizer ist ein spezieller Compiler-Pass, der als separates 
Programm abläuft. Damit unterliegt er nicht der GPL.

Wie das mit den Steuerprogram selbst aussieht (dem was sonst 
üblicherweise "gcc" heisst), das die Passes, den Assembler, Link etc 
aufruf, das weiss ich nicht. Jedoch muss da was drin enthalten sein, was 
dies einbindet und die Lizenz überprüft. Und abhängig davon die 
Compilerflags durchschaltet und den Optimizer-Pass einbindet, wobei 
meiner Erinnerung nach ohne Vollversion auch ein paar normale GCC 
Optimierungen dran glauben müssen.

Die Lizenzprüfung selbst erfolgt wieder mit einem externen Programm und 
ist nicht ins GCC direkt eingebunden. Auch hier man damit wohl 
GPL-sicher, aber möglicherweise nicht ganz hacking-sicher.
#1358207
Lesenswert?

... schrieb:

> Apropos Bugs: da gibt es einen Bug in der PWM Hardware.

Das ist leider nicht der einzigste.
Besondern dumm sind Fehler im Datenblatt wie z.B. beim ADC Clock 
Prescaler: Dieser ist laut Datenblatt 8bit groß, in der Praxis aber 
leider nur 6bit (zumindest bei den dsPICs, bei den 24F habe ich das noch 
nicht nachgeprüft). Hat mit etliche Stunden gekostet das rauszufinden.
Gast #1358258
Lesenswert?

Mein neuer Lieblingswiderstand ist der 450 OHM, weil der so Farbringe 
hat.

...und wenn man genug Strom draufgibt, dann ändern die sogar die Farbe 
und der Widerstand verschwindet im Nirvana der Matrix!

Iss datt nich geil, ey?!?!?

Enter The Matrix.
(Firma: TravelRec.) Persönliche Seite #1358352
Lesenswert?

Na dann schau Dir doch mal das Pinout vom XMega an. Das ist dermaßen 
genial geordnet, daß es keine Matrix braucht. Jeder Pin ist auch in 
Hardware invetierbar, was besonders bei UART und PWM Bauteile spart oder 
ganz neue Moglichkeiten, wie Differentialmodulation eröffnet. Es gibt 
separate Register für Pinsetzen, Pinlöschen und Pintoggeln. Ganz zu 
schweigen von der restlichen Peripherie. Und die Bugliste ist inzwischen 
auch recht kurz. Mein Lieblingscontroller ist der XMega128-A1.
#1359192
Lesenswert?

mr.chip schrieb:
> Ausgangsmatrix...warum haben eigentlich die AVR sowas nicht? Es müsste
> ja keine Alles-Auf-Alles-Matrix sein, aber beispielsweise gewisse
> Peripherie auf beliebige Pins mappen wäre schon nützlich...

Mal geraten:
- A/D-Wandler und Analogkomparator gehen wohl wegen Störsignalen nicht 
so einfach (und ist ja eh ein Eingang und kein Ausgang)
- SPI wird für die Programmierung gebraucht und kann man nicht einfach 
weglegen.
- Falls die o.g. Vermutung stimmt, dann kann man auch I2C nicht verlegen
- Die Quarz-Anschlüsse sind wohl auch etwas spezieller und sollten nicht 
ewig weit geführt werden.
- GPIO geht sowieso auf allen Ports.

Damit bleibt nicht viel übrig. UART und die Timer-Geschichten (PWM und 
so). Ob sich das lohnt?
Gast #1359221
Lesenswert?

> Damit bleibt nicht viel übrig. UART und die Timer-Geschichten (PWM und
> so). Ob sich das lohnt?

Umso mehr! Schliesslich wird dann die Matrix nicht mehr so komplex und 
es reicht im Prinzip auch, wenn man nur ein paar 
Vertauschungsmöglichkeiten hat, um das Layout zu vereinfachen.

Zudem bezweifle ich, dass ADC/Analog Comparator nicht über die Matrix 
geführt werden können - intern werden sie ja auch gemuxt. Das Problem 
bei I2C sehe ich aber nicht.
#1359437
Lesenswert?

>Vertauschungsmöglichkeiten hat, um das Layout zu vereinfachen.

Das spielt im profesionellen Umfeld keine so grosse Rolle. Hier werden 
eher 2-Seitige oder Multilayerpaltinen eingesetzt. Und fuer 
Hobby-Elektroniker die meistens 1-Seitig machen werden die das wohl 
nicht machen.

Gruss Helmi
#1359461
Lesenswert?

Markus Kaufmann schrieb:

> - SPI wird für die Programmierung gebraucht und kann man nicht einfach
> weglegen.

SPI wird nicht für die Programmierung gebraucht und lässt sich verlegen. 
Das ist doch kein AVR.

> - Falls die o.g. Vermutung stimmt, dann kann man auch I2C nicht verlegen

Hatte ich schon erwähnt.

> Damit bleibt nicht viel übrig. UART und die Timer-Geschichten (PWM und
> so). Ob sich das lohnt?

2x SPI, jede Menge Timer-Pins, 2x UART, externe Interrupts, ...

Bei dem oben betrachteten 28pin Zwerg sind das 23 Inputs und 17 Outputs, 
also 40 Funktionspins!
#1359470
Lesenswert?

A. K. schrieb:
>> - SPI wird für die Programmierung gebraucht und kann man nicht einfach
>> weglegen.
>
> SPI wird nicht für die Programmierung gebraucht und lässt sich verlegen.
> Das ist doch kein AVR.

Doch es ist einer:
>mr.chip schrieb:
>> Ausgangsmatrix...warum haben eigentlich die AVR sowas nicht?

Vor allem bei dem mega8 habe ich mir sowas schon oft gewünscht, denn 
wenn man den UART verwendet hat man keinen 8bit Port mehr frei.
Ebenso kommen sich SPI und die OC1x Ausgänge in die Quere.
Ein weiterer Vorteil ist, dass man problemlos mehr Peripherie in ein 
Device packen kann, als Pins vorhanden sind. Man wird nie alles davon 
benötigen, aber dennoch könnte man von ein paar Sachen (UART, Timern, 
SPI) mehr gebrauchen als vorhanden sind.
Die Matrix ist auf jeden Fall eine geniale Sachen.
Gast #1359475
Lesenswert?

Nein, der Vorteil ist doch ein anderer. Für gewöhnlich sind doch genau 
die Peripheriefunktionen, die man für ein Projekt braucht, vom 
Hersteller auf den selben Pin gelegt, weil es halt mehr Peripherie als 
Pins gibt. Das passiert auch bei Atmel. Mit dieser Matrix ist man jetzt 
doch recht flexibel und kann sich quasi seinen Controller mit den 
benötigten Funktionen selber zusammenstellen. Also kein Fluchen mehr, 
weil der Hersteller die I2C und RS232 auf den selben Pin gelegt hat. Ich 
find es gut.
#1359478
Lesenswert?

Travel Rec. schrieb:

> Solch eine Matrix nett, aber unnötig.

Wenn man die Mehrfachfunktionen so legt, dass keine Konflikte auftreten. 
Bei 100pinnern nicht wirklich ein Problem, aber bei 18/28pinnern mit 40 
möglichen Pinfunktionen (s.o.) nicht mehr so ganz einfach. Irgendwem 
tritt man dabei immer auf die Füsse.

Es gibt dsPIC30, bei denen auf den gleichen Pins sowohl die 
Programmierpins als auch die CAN-Pins liegen (und noch ein bischen 
mehr). Da ein CAN-Transceiver seinen Rx-Pin nicht abschalten kann ist 
das ohne irgendeine hardwaremässige Umschaltung nicht handhabbar.
#1359507
Lesenswert?

Andersrum betrachtet: Microchip kann einen Controller etwas grösserer 
Komplexität rausbringen, wo die Konkurrenz diverse spezialisierte 
Modelle mit unterschiedlichen Periphieriefunktionen braucht.

Und wenn man sich die Pinouts dieser Microchipper mal genau ansieht, 
dann stellt man fest, dass in diversen Gehäusen unterschiedlicher 
Pinzahl offensichtlich der gleiche Chip drinnen steckt. Bei festgelegter 
Pinzuordnung ist das kaum sinnvoll realisierbar.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren