Forum: Mikrocontroller und Digitale Elektronik PIC Configuration Bits


von Maik (Gast)


Lesenswert?

Hallo,

ich hab bisher 8051 programmiert und muss jetzt auf PIC umsteigen. 
Leider stoß ich dabei schon auf die ersten Ungereimtheiten. Ich seh bei 
den Configuration Bits und wie man diese setzt nicht so richtig durch. 
Ich benutze den CCS C Compiler. Jetzt gib es ja viele Möglichkeiten das 
Device zu konfigurieren (PIC18F425): über den Visual Device Initializer 
in MPLAB, über Assembler-Direktiven, über das Configuration Bit Window 
in MPLAB oder über das Programmer Tool. Meine Fragen sind jetzt 
Folgende:

1. Z.B. die Oscillator Konfiguration: Werden die Default-Inhalte der 
Oszillator-SFRs von den Osc.-Configuration Bits überschrieben? Das ist 
im Datenblatt nicht ersichtlich.

2. Was erzeugt denn der Visual Device Initializer (z.B. in Bezug auf die 
Osc.-Einstellung), initialisiert er die Configuration Bits oder die 
SFRs?

3. Das Configuration Bit Window kapier ich auch nicht. Wenn ich da 
irgendwas einstelle, ist es nach dem compilieren wieder weg. Im MPLAB 
Users Guide steht: "If you want to change Configuration bit values in 
the window, do not enter any in code until you have completed 
development. Then put your window values into code, rebuild the 
project..."
Heißt das jetz, dass ich es am Ende doch per Hand in den Code eintragen 
muss? Werden die Bits dann in meinem Programm selber gesetzt oder werden 
dadurch nur Informationen für den Programmer erzeugt. Ich find das alles 
etwas verwirrend.

Danke für eure Hilfe schonmal im Voraus!


von Anton (Gast)


Lesenswert?

siehe "http://www.fernando-heitor.de/";

welcher Controller ?

anton

von Maik (Gast)


Lesenswert?

PIC18F425

Hmm, die Website hilft mir auch nicht unbedingt. Inzwischen weiß ich, 
dass der Visual Device Initializer auch Direktiven für die Configuration 
Bits setzt und dass diese dann vom Programmer eingelesen werden. Was ich 
aber immer noch nicht kapiere ist der Sinn und Zweck des "Configuration 
Bit Window", wenn die Einstellungen ständig verschwinden.

von Thomas (Gast)


Lesenswert?

bei mir verschwinden die nicht. ausser ich führe einen read durch.
schonmal workspace gespeichert? bin mir jetzt nicht ganz sicher aber 
kann es sein, dass die configuration bits eh nur bis du deinen code 
compilierst eingestellt sein müssen, d.h. einmal kompilieren mit deinen 
gewünschten werten und solang du nix änderst am code kann da stehen was 
mag?

von tastendrücker (Gast)


Lesenswert?

Eigentlich ist es so, dass die im Code gesetzten Config-Bits (__CONFIG) 
im HEX-File landen. Die Programmiersoftware übernimmt diese, bietet aber 
an, sie (vor dem Programmieren) zu ändern - im Config-Window.

von Maik (Gast)


Lesenswert?

Kann es sein, dass man mit dem Microcontroller verbunden sein muss? Über 
ICD2 oder so? Ich mach das jetzt alles noch im Trockenen, da mein 
Evaluation Board noch nicht da ist.

Ich kapier einfach nicht, wozu dieses Configuration Window da ist. Habt 
ihr mal die Beschreibung in der Hilfe oder im Users Guide zu MPLAB 
angeschaut, vielleicht wird jemand von euch daraus schlau?

von willivonbienemaya (Gast)


Lesenswert?

Du musst nicht verbunden sein.
Den Visual Initializer kannst du vergessen, lösch ihn aus deinem 
Gedächtnis.

es gibt zwei Möglichkeiten Config bits zu setzen.

1. Direktiven im Code
2. Über das Fenster in MPLAB.

wenn direktiven im Code stehen überschreiben die beim compilieren die 
einstellungen des Fensters.

Also nicht kombinieren.

entweder 1. oder 2.

Vermutlich hast du von der rumspielerei mit dem Visual Initializer noch 
was im code stehen was da nicht hingehört.

von tastendrücker (Gast)


Lesenswert?

> wenn direktiven im Code stehen überschreiben die beim compilieren die
> einstellungen des Fensters.
> Also nicht kombinieren.
> entweder 1. oder 2.

Genau! Meine Vorgehensweise:

Config-Bits generell im Code setzten und evtl. im 'Config Bit Window' 
kontrollieren - aber nicht ändern! - ob die Bits so sind, wie gedacht. 
Speziell das Code-Protection-Bit bei den 'windowed devices' sollte man 
vor dem Brennen 999 mal kontrolieren ;-)

von Maik (Gast)


Lesenswert?

Wieso? Funktioniert der VDI nicht richtig?

Naja, OK, ist eh besser wenns im Code steht. Aber trotzdem find ich das 
komisch, dass die Einstellungen immer weg sind nach dem kompilieren. Ich 
hab da auch wirklich nichts im Code stehen. Ich hab nur ein einziges 
File bis jetzt. Ein C-Source-File, in dem nix weiter steht als void 
main() ;)

Und diese Aussage im Users Guide irritiert mich einfach:
"Once you have completed development, you will then have to copy your 
Configuration Bits window settings into initialization data"
MUSS man das machen oder SOLLTE man das machen?

von Dieter Werner (Gast)


Lesenswert?

Das sollte man zunlichst machen da sonst die config bits nur im 
(mplab-)Projekt festgelegt sind. Falls jemand nur das Quellfile anschaut 
findet er keine Info über die config.

Der VDI erzeugt meines Wissens Quellcode (bin nicht sicher ob eigenes 
file), der in das Quellfile mit den Init-Routinen eigebunden gehört.
Für PIC16F Controller ist das larifari, aber bei dsPIC33 z.B. kann es 
schon ein paar 100 Zeilen ASM-Quellcode geben bis alles initialisiert 
ist.

von Maik (Gast)


Lesenswert?

Ja, der VDI erzeugt Quellcode. Und in diesem stehen dann auch am Anfang 
die _config-Direktiven und danach die SFR-Initialisierungen. Eigentlich 
find ich das ziemlich genial. Das is schon ne bequeme Art.

Danke für eure Hilfe, mir ist jetzt klar, wozu dieses Configuration Bit 
Window da ist.

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.