Forum: Mikrocontroller und Digitale Elektronik Kann PICC18xxx alles, was die PIC10/12/14/16 können?


von HaNNoveraNer (Gast)


Lesenswert?

Hallo

Ich möchte für meine Modellbahn in die PIC Programmierung einsteigen.
Ich habe viele Beispiele und Projekte gesehen, die mit PIC12/16 u.s.w. 
gemacht sind.

Da es aber einen kostenlosen C Compiler von Microchip nur für die PIC18 
Familie gibt, würde ich mich auch gerne NUR damit befassen.
Z.B. PIC18F2520

Kann ich mit dem oder anderen PIC18 denn alles erledigen, was die 
PIC10..16 auch können? Oder gibt es irgendeinen Grund, diese PICs auch 
noch verwenden zu müssen?

Danke und Gruß
Thomas

von Hans W. (stampede)


Lesenswert?

>Kann ich mit dem oder anderen PIC18 denn alles erledigen, was die
>PIC10..16 auch können? Oder gibt es irgendeinen Grund, diese PICs auch
>noch verwenden zu müssen?

Ja, die koennen alles und noch mehr. Die PIC16 sind fuer kostenguenstige 
Massenprodukte gedacht. Fuer den Einstieg sind die PIC18F zeitgemaesser 
und einfacher.

von Horsti (Gast)


Lesenswert?

Mit einem PIC18 anzufangen ist bestimmt nicht die schlechteste Idee. 
Später wirst Du sicher für jedes Projekt den am besten geeigneten PIC 
heraussuchen. Die Unterschiede zwischen den PICs 10...18 sind nicht 
übermäßig groß. Annähernd kann gesagt werden, je höher die Nummer, desto 
leistungsfähiger sind die PICs. Bei großen Projekten kommen dann auch 
die PIC24 und PIC32 ins Spiel.

von Peter D. (peda)


Lesenswert?

Horsti schrieb:
> Die Unterschiede zwischen den PICs 10...18 sind nicht
> übermäßig groß.

Die Unterschiede sind schon sehr groß, z.B. hat der PIC10 nichtmal 
Interrupts. Andere Unterschiede sind der Stack und das Banking. Deshalb 
kann auch nicht jeder C-Compiler alle PICs.
Wenn es nicht um riesen Stückzahlen geht, bleib besser bei einer 
PIC-Familie, das schont die Nerven.

Besser skalierbar sind die AVRs, da hat auch der 6-Pinner die gleiche 
Architektur wie der 100-Pinner und daher geht auch der Compiler für alle 
AVRs uneingeschränkt. Ab 8 Pins und 2kB Flash kannst Du z.B. float 
Zahlen verwenden.


Peter

von Horsti (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Besser skalierbar sind die AVRs, da hat auch der 6-Pinner die gleiche
> Architektur wie der 100-Pinner und daher geht auch der Compiler für alle
> AVRs uneingeschränkt. Ab 8 Pins und 2kB Flash kannst Du z.B. float
> Zahlen verwenden.

Und schon wieder werden Äpfel mit Birnen verglichen:
Mit den ganz kleinen PICs werden häufig nur einfache Logik-Funktionen 
erzeugt und dann auch sinnvoller Weise in Assembler programmiert. Je 
größer die PICs werden, desto mehr Compiler stehen zur Verfügung. Dann 
gibt es zum Beispiel fertige Lösungen für FFT-, MP3- oder 
Ethernet-Anwendungen.

Das Argument mit der gleichen AVR-Architektur stimmt auch nur stark 
eingeschränkt (z.B. besitzt Dein 6-Pinner wohl kaum eine DMA) und ist in 
der Praxis nicht unbedingt relevant.

von Carsten S. (dg3ycs)


Lesenswert?

Peter Dannegger schrieb:
> Horsti schrieb:
>> Die Unterschiede zwischen den PICs 10...18 sind nicht
>> übermäßig groß.
>
> Die Unterschiede sind schon sehr groß, z.B. hat der PIC10 nichtmal
> Interrupts. Andere Unterschiede sind der Stack und das Banking. Deshalb
> kann auch nicht jeder C-Compiler alle PICs.
> Wenn es nicht um riesen Stückzahlen geht, bleib besser bei einer
> PIC-Familie, das schont die Nerven.

Ja,
die Unterschiede sind schon da...
16F und 18F zum Bleistift sind unterschiedliche Architekturen mit 
abweichenden Eigenschaften.
Wobei wie schon geschrieben je größer die Nummer der Familie um so 
umfangreicher die Möglichkeiten. Was man z.B. mit einem 16F Pic kann, 
das schafft ein 18F Pic locker... - Natürlich aber nur wenn die 
Peripherie und Pinnzahl auch für die anforderung passt ;-)

18F sind für die Anfänger in C heute wohl die beste Wahl. Wer aber mit 
ASM Anfangen will sollte vieleicht doch die ersten Schritte mit einem 
16F machen...

Nachteilig finde ich allerdings das es die 18F nicht in ganz kleinen 
Gehäusen gibt... Wer 6Pinner braucht muss andere Familien nehmen.

Peter Dannegger schrieb:
> Besser skalierbar sind die AVRs, da hat auch der 6-Pinner die gleiche
> Architektur wie der 100-Pinner und daher geht auch der Compiler für alle
> AVRs uneingeschränkt. Ab 8 Pins und 2kB Flash kannst Du z.B. float
> Zahlen verwenden.

Naja, hätte Microchip ja auch machen können. Einfach die 
Weiterentwicklung im 8Bit Bereich einstellen und heute immmer noch nur 
veraltete Kerne anbieten...
Aber man hat sich glücklicherweise anders entschieden ;-)

Den kleinen Mehraufwand im Projektfester bei den Einstellungen vom C 
Compiler für 18F auf C Compiler für 16F umzustellen nehme ich gerne in 
Kauf wenn ich dafür die wesentlich größere Vielfalt an Peripherie und 
lieferbaren Gehäusevarianten bekomme. Von der Verfügbarkeit auch bei 
spezielleren Modellen mal ganz abgesehen, die bei Microchip einfach 
DEUTLICH besser ist. Sowohl bei einzelstückzahlen wie auch bei Mengen 
deutlich größer 1000 Stück.

Aber jedem das seine...

Gruß
Carsten

BTW: Es gibt von Microchip auch für die 16F einen kostenlosen C 
Compiler.

von HaNNoveraNer (Gast)


Lesenswert?

Hi

Das wäre dann der Hitech Lite Compiler?
Kann man mit dem denn alles notwendige machen?

Gruß
Thomas

von Peter D. (peda)


Lesenswert?

Horsti schrieb:
> Mit den ganz kleinen PICs werden häufig nur einfache Logik-Funktionen
> erzeugt und dann auch sinnvoller Weise in Assembler programmiert.

Warum soll es sinnvoll sein, die Programmiersprache wechseln zu müssen, 
nur weil die Anwendung kleiner ist?
Ich finde es sinnvoller, auch den 6/8/14-Pinner in C zu programmieren.
Man ist produktiver und kann auch Routinen einfach übernehmen.


Horsti schrieb:
> Das Argument mit der gleichen AVR-Architektur stimmt auch nur stark
> eingeschränkt (z.B. besitzt Dein 6-Pinner wohl kaum eine DMA)

Nun, hier ging es ja konkret um die PIC10..18 und die sind recht gut mit 
der standard AVR-Familie (ATtiny, ATmega) vergleichbar.
Welcher PIC10..18 hat denn DMA?


Peter

von Horsti (Gast)


Lesenswert?

Peter Dannegger schrieb:
> Warum soll es sinnvoll sein, die Programmiersprache wechseln zu müssen,
> nur weil die Anwendung kleiner ist?

Vielleicht weil jede Programmiersprache ihre Stärken und Schwächen hat?

Peter Dannegger schrieb:
> Nun, hier ging es ja konkret um die PIC10..18 und die sind recht gut mit
> der standard AVR-Familie vergleichbar.
> Welcher PIC10..18 hat denn DMA?

Da die Microchip-Oberfläche MPLAB durchgängig vom PIC10xx bis PIC32xx 
verwendet wird, kannst Du bei diesen µCs den Kreis mit gutem Gewissen 
deutlich größer ziehen. Je nach persönlichen Vorlieben stehen Dir darin 
mehrere Compiler (die alle recht gut funktionieren und mit vielen 
Applikationsbeispielen unterstützt werden) zur Verfügung. Je nach 
Anwendung kannst Du innerhalb dieses Kreises zwischen vielen 100 
Produkten wählen und wenn gewünscht, natürlich auch eine DMA verwenden.

von Pic (Gast)


Lesenswert?

Bei Pic unterscheided man zwischen 12/14/16/24/32 Bit Instruktionsgröße.
Z.B. gibt es 12(C/F) Typen, welche 14er sind, aber aus Marketinggründen 
in
12er Serie reingepasst werden usw.

12 Bit : Kein Interrupt, Kein Return, sondern nur retlw, 2 return levels
14 Bit : Interrupt, 8 return levels (gosub)
16 Bit : HW Multiplier, mehr return level, stackpointer accessible, 
simple banking. Es gibt auch außnahmen, also nicht alle haben das
24 Bit : 16bit + DSP
32 Bit : Mips cpu

Bei den 18F (16bit) sind die K/J Typen nicht 5V tauglich.
Auch wird die Flashgröße sehr unterschiedlich gezählt, z.B. 14 Bit
k=k instructions. 16 Bit, k=byte = k*2, neueres Marketing von 14 Bit, 
k=k*1.5

Die 14 Bit cpu ist mit der 12Bit opcode kompatibel.
Die 16 Bit cpu ist mit der 14/12bit asm code kompatibel.

USB sowie Ethernet sind erst ab 16Bit richtig verfügbar.

von Horsti (Gast)


Lesenswert?

In der Praxis sieht der Umgang mit den PICs wie folgt aus:

1) Anforderung an PIC aus Applikation extrahieren
2) PIC gemäß Anforderungen auswählen
3) ggf. Compiler auswählen
4) Schaltung mit PIC verifizieren
   (spezielle Eigenschaften des gewählten PICs beachten)
5) PIC nach Softwarepflichtenheft programmieren
6) Inbetriebnahme
7) Testen (incl. CE-, SIL-, UL-, TÜV-, etc.-Anforderungen)
8) ggf. Serie starten und Kunde(n) glücklich machen
9) sich freuen, auch wenn nach über 10 Jahren der vom Kunden 
zerschossene
   PIC noch kurzfristig zu bekomnmen ist

von Wolfgang M. (womai)


Lesenswert?

Also solange man die PICs in einer Hochsprache (z.B. C) programmiert, 
sind die grundlegenden Unterschiede zwischen 12F, 16F und 18F fuer die 
meisten Anwendungen minimal. Z.B. 18F hat zwei Interruptprioritaeten 
(sehr praktisch!), 16F nur eine - aber wenn man mal begriffen hat, was 
ein Interrupt ist, dann ist sowas auch nicht weiter schwer. Was bei den 
12F und 16F manchmal stoert ist die Fragmentierung des RAMs durch das 
Banking - das kann aergern wenn der PIC 256 Byte Speicher hat aber das 
groesste Array, das man anlegen kann, max. 64 Byte umfassen kann. Der 
18F hat dieses Problem nicht.

Der 18F4520 (oder 2520 wenn man nicht so viele Pins braucht) ist eine 
prima Wahl fuer den Einstieg und von der Leistung mit den ueblichen 
Atmegas zu vergleichen.

Wenn man mal unbedingt einen uC mit weniger Pins (<18) braucht, dann 
muss man 12F oder 16F verwenden.

Fuer den Hobbybastler - der selten tausende Stueck braucht - ist der 
letzte Cent normalerweise nicht so wichtig, also nimmt man stets eher 
den leitungsfaehigsten (RAM etc.) Typ im jeweiligen Gehaeuse. IMHO eine 
gute Wahl ist:

8 pins: PIC12F683
14 pins: PIC16F684
18 pins: PIC16F88 (gibt's inzwischen aber schon bessere)
28 pins: PIC18F2520
40 pins: PIC18F4520
20 pins mit USB: PIC18F14K50
28 pins mit USB: PIC18F2550
40 pins mit USB: PIC18F4550

Fuer mehr Rechenleistung (~30 MIPS und 16 bit, die 18F hat max. ca. 12 
MIPS un 8 bit) dann dsPIC30F-Serie (die kann noch mit 5V arbeiten und 
gibt's in DIP) oder 33F bzw. 24F (weniger Auswahl fuer DIP, und max. 
3.3V). Schon etwas haariger zu benutzen (kann schon ein bisschen 
brauchen, bis man z.B. die Interrupt-Tabellen durchschaut hat :-) aber 
am Ende auch schaffbar.

Wolfgang

von Wolfgang M. (womai)


Lesenswert?

Achja, wegen Rechenleistung: MIPS alleine sagen wenig aus. 10 MIPS mit 
16 Bit Datenbreite sind nicht 10 MIPS mit 8 Bit Datenbreite. Vor allem 
wenn es um Berechnungen geht - z.B. Multiplikation zweier 16-Bit-Werte 
geht auf eine 16-Bitter (wo das ein einziger Befehl ist) um mindestens 
eine Groessenordnung schneller als auf einem 8-Bitter (der das in eine 
Reihe von Teiloperationen aufspalten muss).

von Chris (Gast)


Lesenswert?

Die Liste würde ich so nicht unterschreiben.
Als Beispiel fehlt der der 20Pin 16F690,
8pin 12F508/9
14 pinner 16F505 welcher obwohl 16F nur ein 12bit ist,
   oder andere mit i2c oder rs232 in HW,
die Controller mit Ethernet, Can, Lin, ...

von Wolfgang M. (womai)


Lesenswert?

Schon klar, dass man sich immer auch was anderes herauspicken kann, vor 
allem wenn man spezielle Anforderungen (z.B. LAN) hat. Gerade bei 
Microchip mit ihren hunderten von Modellen. Deshalb habe ich auch "IMHO" 
in meiner Aussage :-) Aber ich denke, dass meine Liste doch ein 
brauchbarer (aus persoenlicher, praktischer Erfahrung) Ausgangspunkt 
ist. I2C und USART in Hardware haben alle groesseren von mir 
aufgelisteten Modelle (18 pin und mehr). Vor einer konkrete Anwendung 
studiert man natuerlich erst mal das Datenblatt, und wenn das was 
Wichtiges fehlt, muss man weitersuchen - aber man hat mal eine Basis.

Interessante neue Chips sind z.B. die mit Touch Sensor. Oder die RF PICs 
fuer Funkaufgaben. Usw usf. Aber das wird dann fuer eine allgemeine 
Aussage schon ein bisschen zu speziell...

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.