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
>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.
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.
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
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.
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.
Hi Das wäre dann der Hitech Lite Compiler? Kann man mit dem denn alles notwendige machen? Gruß Thomas
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
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.
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.
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
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
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).
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, ...
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.