Hallo,
Bin bisher nur das programmieren mit dem PIC18F4550 mittels C Compiler
in MPLAB gewöhnt. Dachte mir den Code den ich für den PIC 18 geschrieben
habe kann ich auch für den PIC 12F1822 verwenden aber dem scheint nicht
so zu sein.
Ist dieser nur in Assembler Code programmierbar?
Das ist weil der PIC 12F1822 weniger Pins hat und andere SFR register.
Das musst du im datasheet nachsehen wo der Unterschied ist und
etsprechend dein Program ändern.
sfr heißt "Special Funktion Register". Also Register für z.B. Module
oder die Port-Register. Der 12F hat 8 Pins und der 18F hat 40. Da ist es
nur logisch, dass der große mehr Funkionen und Module hat. Wenn dein
Programm z.B. das USB modul benutzt, kann der 12F damit nichts anfangen.
Oder wenn du ein Pin benutzt, kann der 12F nichts damit anfangen, da das
Register GPIO heißt und nicht PORTx usw.
prixsecco schrieb:> Hallo,> Bin bisher nur das programmieren mit dem PIC18F4550 mittels C Compiler> in MPLAB gewöhnt. Dachte mir den Code den ich für den PIC 18 geschrieben> habe kann ich auch für den PIC 12F1822 verwenden aber dem scheint nicht> so zu sein.> Ist dieser nur in Assembler Code programmierbar?
Welchen C-Compiler hast Du verwendet? Der C18 von Microchip kann nur
Code für die PIC18F* erzeugen. Die PIC10/12/16... haben weniger Befehle,
unter anderem welche, auf die der C18 angewiesen ist. Der große
Unterschied zwischen PIC10/12/16 und PIC18 ist, dass der PIC18 etwas
compilerfreundlicher gestaltet wurde.
Für die kleineren PICs gibts einen passenden Compiler genau dafür von
HiTech (von Microchip gekauft), der die dann kann. Pins, SFRs etc must
Du natürlich anpassen.
fchk
Ich sehe aber nicht den Sinn von dem PIC18F4550 zu PIC 12F1822
umzusteigen.
Wenn das ein PIC16F877 wäre oder änlich, dann könnte das gehen, aber mit
deinen Kenntnissen schaftst du das sowieso nie.
Da hat Sunny leider nicht unrecht. Mein Tip: Mach kleinere Schritte.
Wenn du schon mit Begriffen wie SFR Schwierigkeiten hast solltest du mit
was einfacherem wie USB anfangen, da ist vielleicht schon RS232
Ein-Ausgabe auf nem Standard HD44780 LCD sportlich genug.
@facebook:
Naja Foren leben eben auch von Usern wie mir. Wenn du nicht mehr
beizutragen hast zu diesem Thema wie unsinnige Kommentare dann bitte ich
dich diesen Thread zu verlassen. Danke.
---------------------------
Der PIC18F4550 ist für Testzwecke ok aber für die Endlösung soll ein
eine low voltage version her. Also mit 3.3 V versorgabar und die 8 Pin
des 12F1822 sind ausreichend. Deshalb die Wahl.
Wusste nicht dass diese solche Unterschiede in der Programmierung
aufweisen.
Bei den PIC12, PIC16 und PIC18 handelt es sich um 8 Bit Controller die
von Microchip hergestellt werden. Darüber hinaus haben die Familien
nicht viel miteinander zu tun. Mir ist auch kein Compiler bekannt der
alle Typen zugleich unterstützt. Klar, da sind die CCS Compiler PCB, PCM
und PCH aber das sind letztlich drei verschiedene Compiler. Nur halt vom
gleichen Hersteller.
Also, welchen Compiler verwendest du?
M.G. schrieb:
> Mir ist auch kein Compiler bekannt der> alle Typen zugleich unterstützt.
gibs doch.
Microchip hat seit Neuem eine überarbeitete Reihe an Compilern.
Für 8-bit uC (PIC10,12,16, und 18) -- XC8
für 16-bit uC (PIC24 und dsPIC) -- XC16
für 32-bit uC (PIC32) -- XC32
HTH
PICfan schrieb:> gibs doch.>> Microchip hat seit Neuem eine überarbeitete Reihe an Compilern.>> Für 8-bit uC (PIC10,12,16, und 18) -- XC8> für 16-bit uC (PIC24 und dsPIC) -- XC16> für 32-bit uC (PIC32) -- XC32>> HTH
Ich denk, was sich da geändert hat, ist der Name. Sieht mir doch ganz
nach den alten Compilern aus. PIC18 ist wiederum ein anderer Compiler.
Ist nur ein Marketing-Gag
Martin S. schrieb:> Ich denk, was sich da geändert hat, ist der Name. Sieht mir doch ganz> nach den alten Compilern aus.
nicht ganz.
Die haben ihren Compilern mit denen von HiTech kombiniert. Neu ist das
XC8 jetzt alle 8-bit uCs unterstützt. Und es ist weit mehr als nur eine
Namensänderung.
Bei XC32 gib ich dir recht. Da ist nür eine Namensänderung zu sehen.
Wenn es letztendlich ein 12F1822 werden soll, dann würd ich mir davon
einen holen und testen. Den gibts auch als DIP und geht von 5.5V bis
2.3V runter. Brauchst also keinen extra LF Typ, um den mit 3.3V zu
betreiben. An dem Ziel PIC zu testen find ich persönlich am besten. Wenn
ich iwas spezielles testen will (z.B. n I2C EEPROM ansteuern) und dafür
n dev-board nehme, dann guck ich vorher, was der PIC kann, für den ich
das programmiere, damit ich keine Module benutze, die der andere PIC
nicht hat. Bei Tastern o.ä. definiere ich am Anfang dann eine Variable.
Somit braucht man die Zuweisung nur einmal und nur an einer Stelle
ändern.