Forum: Mikrocontroller und Digitale Elektronik Von AVR auf PIC umsteigen


von Iron Maiden (Gast)


Lesenswert?

Hallo zusammen,

nachdem ich nun eine Zeit lang mit dem Atmega8 von Atmel in C 
programmiert habe, will ich nun auf einen PIC 16F887 von Microchip 
umsteigen. Dies liegt vorallem daran, dass ich Anfang nächsten Jahres 
ein Abschlussprojekt mit dem PIC 16F887 erstellen muss und die 
Programmiererfahrung mit dem Atmel dort weniger bringt.

Nun zu meinen Fragen/Bedenken...

Wenn ich das "PICKIT 3" (~ISP-Programmer bei Atmel-µc) und einen PIC 
16F887 (+ entsprechende Peripherie) habe, kann ich diesen µc dann mit 
Hilfe von "MPLAB X IDE" in Assembler UND C programmieren? In einem 
Tutorial habe ich nämlich gelesen, dass die PIC 16er ungeeignet für die 
C-Programmierung seien. Ich MUSS aber mit dem PIC 16f... programmieren 
und würde es am liebsten in beiden Sprachen tun.

Nun noch ein Bedenken bezüglich "MPLAB X IDE"... Es werden anscheinend 
kostenlose und kostenpflichtige Versionen von Microchip angeboten. Kann 
man mit der Freeware trotzdem, bis auf den Verzicht einiger zusätzlicher 
Funktionen, uneingeschränkt programmieren?

Ich würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

Gruß

von Anja (Gast)


Lesenswert?

Iron Maiden schrieb:
> Kann
> man mit der Freeware trotzdem, bis auf den Verzicht einiger zusätzlicher
> Funktionen, uneingeschränkt programmieren?

Die Einschränkung liegt nur in der Einstellung der Compiler-Optimierung.
Wenn Du nicht das letzte Byte aus dem Code herausquetschen mußt wirst Du 
die Einschränkung nicht bemerken.

Gruß Anja

von Simon S. (-schumi-)


Lesenswert?

Weil sich der 16F887 ganz verdächtig nach IHK Abschlussprüfung zum 
Elektroniker für Geräte und Systeme anhört:

Ich und meine beiden Kollegen haben vor kurzem erste unsere Ausbildung 
abgeschlossen und alle drei für unsere Abschlussprojekte einen ATmega32 
verwendet.

Nur weil man PIC in der Schule lernt und der in den Prüfungen drankommt, 
musst du den (bzw. wir zumindest) nicht im Abschlussprojekt verwenden.

Ich und einer der beiden anderen haben sogar 100% bekommen ;-)


Und im übrigen finde ich das Programmieren des 16F887 in C wirklich 
einen rechten Krampf, desshalb haben wir uns alle für AVR entschieden 
(auch wenn die anderen beiden und unser Ausbilder den vorher nicht 
kannten, aber es lief alles erstaunlich reibungslos)

Gruß

von Frank K. (fchk)


Lesenswert?

Iron Maiden schrieb:

> Wenn ich das "PICKIT 3" (~ISP-Programmer bei Atmel-µc) und einen PIC
> 16F887 (+ entsprechende Peripherie) habe, kann ich diesen µc dann mit
> Hilfe von "MPLAB X IDE" in Assembler UND C programmieren? In einem
> Tutorial habe ich nämlich gelesen, dass die PIC 16er ungeeignet für die
> C-Programmierung seien. Ich MUSS aber mit dem PIC 16f... programmieren
> und würde es am liebsten in beiden Sprachen tun.

Das MPLAB X ist wirklich nur die IDE, da ist kein Compiler dabei. Den 
passenden Compiler für Deine Architektur (PIC16/PIC18, PIC24/dsPIC, 
PIC32) musst Du anschließend dazu installieren. Das ist ein extra 
Download. Nicht dass Du Dich wunderst.

fchk

von Ulrich (Gast)


Lesenswert?

Sofern der C Compiler den µC unterstützt, merkt man bei der 
Programmierung nicht viel davon wie gut der PIC16 für C geeignet ist. 
Nur die Laufzeit und der Speicherbedarf sind ggf. größer als erwartet. 
Die etwas umständliche Speicherarchitektur merkt man vor allem wenn man 
auf ASM ausweicht.

Bei einigen der PICs hat man ggf. noch ein Problem mit der Stackgröße, 
was ggf. die Interrupts und Schachtelungstiefe einschränkt. Für kleine 
Aufgaben sollte es aber reichen.

von Peter D. (peda)


Lesenswert?

Ulrich schrieb:
> merkt man bei der
> Programmierung nicht viel davon wie gut der PIC16 für C geeignet ist.

Die PICs machen es dem Compiler aber oft nicht leicht.
Bei einigen PICs ist der SRAM nicht am Stück. D.h. auch wenn er 2048 
Byte SRAM hat, kann der Compiler bei größeren Arrays (z.B. 200 Byte) das 
Handtuch werfen.

von Frosch (Gast)


Lesenswert?

Hallo,
ich entwickle selbst in ASM und C Software für ein System mit PIC16F887.
Gerade wenn man etwas in ASM programmiert, ist das mit den Banking und 
Pageing etwas gewöhnungsbedürftig, aber auch keine große 
Herausforderung.

Der C-Compiler ist soweit ich das beurteilen kann in der neuesten 
Version 1.20 (XC8) fehlerfrei. Es gibt zwar noch Bugs, allerdings 
tauchen diese nur in höchst speziellen Fällen auf, von dem was ich bis 
jetzt gesehen habe. Dies hätte ich vorher nicht unterschrieben!

Mit der neuen Version ist auch die Qualität des Compilats in der free 
Version verbessert worden. So wurde der Code früher auch künstlich 
größer gemacht ...

Wie der Vorposter schon erwähnt sind große Arrays ohne Klimzüge nicht 
möglich, da sich der Speicher grob jeweils viertelt.

Zu MPLAB X kann ich auch nur empfehlen wirklich die neueste Version 1.85 
zu nutzen. Muss sagen das mir die IDE inzwischen sehr gut gefällt! 
Nachdem Sie einen lange durch z.B. anzeigen falscher Werte beim 
Debuggen, Abstürze und Anzeige von falschen Kommentaren zu den Variablen 
den Verstand gekostet hat.

Letzter Tipp, vor dem loslegen schauen welche Resourcen Ram/Rom vom 
Debugger genutzt werden.
Rom z.B. 256 Byte auf Page3 wenn ich mich recht erinnere. Aber sowas 
sieh man ja bei der C-Programmierung nicht daher bin gerade nicht ganz 
sicher. Ansonsten findet man dies leicht über die Startpage der IDE.

von Frosch (Gast)


Lesenswert?

Ergänzungen:
Programmierung unter ASM
1. Der C-Compiler kennt eine etwas andere Assembler Syntax als der 
ASM-Compiler. Solltest du also mischen wollen dies beachten!
Insbesondere Variablendeklaration
2. C-Compiler Assembler kennt die "Spezial-Befehle" nicht, ich habe 
hierfür teilweise Makros geschrieben, welche ich bei Bedarf 
bereitstellen könnte.
Würde aber versuchen ersteinmal darauf zu verzichten.
3. kostenlos/kostenpflichtig
der C-Compiler kann für 1 oder 2 Monate mit allen Optimierungsfeatures 
genutzt werden. Solltest du ihn wirklich für ein Projekt brauchen, 
aktiviere erteinmal nicht die PRO-evalphase und teste ohne 
Optimierungen. Wenn das Projekt dann gegen Ende läuft Pro Mode 
aktivieren und sich über zusätzliche Geschwindigkeit und wieder freien 
Speicher freuen.
4. Ich ziehe auch AVR, AVR-32, CortexM, RX und RL dem PIC von der 
Architektur vor, allerdings sind die PIC µC halt doch manchmal die 
günstigste Variante bei entsprechend benötigter Peripherie ... wobei 
letztere interessanter ist als bei den AVRs z.B.

von Frosch (Gast)


Lesenswert?

ASM-Compiler natürlich blödsinn ... vielleicht doch gestern zu lang weg 
gewesen und zu früh aufgestanden ;)

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.