Hallo Zusammen,
ich arbeite mich gerade in die Programmierung eines PIC12F1840 in C ein
und habe eine kleine Frage. Ich kann zwar Register wie das TRISA
beschreiben, beim CONFIG1 klappt es aber nicht. Im Datenblatt steht
auch, die Bits seien "programmable" und nicht "writable". Wie muss ich
das machen?
Ich programmiere in MPLAB von Microchip und der Compiler ist Hi-Tech.
Viele Grüße
Vielen Dank! Darauf bin ich gar nicht gekommen, in der Anleitung vom
Compiler zu schauen. Als ich den Befehl dann auch noch nicht in, sondern
vor die main() geschrieben habe, hat es auch funktioniert :)
Anfänger schrieb:> Als ich den Befehl dann auch noch nicht in, sondern> vor die main() geschrieben habe, hat es auch funktioniert :)
Wenn man mal genau darüber nachdenkt, dann ergibt auch nur das sinn.
dDiese Bits werden einmal beim flashen gesetzt und bleieb dann bis zum
nächsten Flashvorgang bestehen. Mit der Main-Schleife haben sie rein
garnichts zu tun =)
Lehrmann Michael schrieb:> Wenn man mal genau darüber nachdenkt, dann ergibt auch nur das sinn.> dDiese Bits werden einmal beim flashen gesetzt und bleieb dann bis zum> nächsten Flashvorgang bestehen. Mit der Main-Schleife haben sie rein> garnichts zu tun =)
Da hast du natürlich absolut Recht. Das dachte ich mir dann auch nach
etwa 10 Versuchen, in denen es nicht funktioniert hat...
Leider habe ich mich nun aber etwas zu früh gefreut. Ich kann zwar so
einige Config Bits setzen, aber komischerweise nicht alle.
__CONFIG(FOSC_INTOSC);
__CONFIG(FCMEN_OFF);
funktioniert. Sobald ich aber noch einen weiteren __CONFIG() Befehl dazu
schreibe, bekomme ich eine Fehlermeldung. Ich kann also nur 2 solcher
Befehle schreiben. Dabei ist es egal welche, sobald ein Dritter
dazukommt, bekomme ich den Fehler:
Error [1346] ; 0. can't find 0x3 words for psect "config" in segment
"CONFIG" (largest unused contiguous range 0x2)
Kann mir Jemand auf die Sprünge helfen?
>Ich kann also nur 2 solcher Befehle schreiben.
Wahrscheinlich hat der uC auch nur 2 Config-Words.
Du kannst alle Optionen, die zum 1. bzw. zum 2. Configword gehören in
die erste resp. zweite __CONFIG Anweisung schreiben,
z.B. ähnlich wie
// Config Word 1
__CONFIG(FCMEN_ON & IESO_ON & CLKOUTEN_OFF & BOREN_ON & CP_OFF );
//
// Config Word 2
__CONFIG(LVP_OFF & DEBUG_OFF & BORV_27 ); //
Gruss
Achso, gibt es nicht auch dir Möglichkeit, mehrere __CONFIG() Befehle
pro Configuration word zu benutzen? Das wäre schöner zu kommentieren.
Wenn ich alle Befehle zusammenfasse, funktioniert es aber schon mal,
danke :)
>Das wäre schöner zu kommentieren.
Ja, wäre.
Geht aber bei diesem Compiler bzw. bei die Pic Derivat wohl nicht.
Genauso bei mir, PIC16F1xxx Typ, hatte das auch schon getestet.
Du kannst nur so viele CONFIG-Pragmas angeben, wie der µC CONFIG-Wörter
hat, steht auch im Datenblatt (siehe oben). Die Bits, die zu einem Word
gehören, werden mit "&" verkettet, siehe oben oder als Bitfolge o.ä.
angegeben.