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
Für den Hi-Tech-Compiler gibt es wie für alles andere auch ein Manual bzw Datenblatt: http://ww1.microchip.com/downloads/en/DeviceDoc/manual_PICC_983.pdf Seite 49 steht beschrieben, wie es gemacht wird.
Ich habe das immer so gemacht
1 | #pragma config_def = 0b.10.1001.1010.1100
|
Ebenfalls MPLAB, Compiler kann ich dir leider nicht auswendig sagen :P MFG Dave
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.
Das hier kannst Du auch noch probieren
1 | __CONFIG _CONFIG1, _CP_OFF & _BOREN_OFF & _MCLRE_OFF |
2 | __CONFIG _CONFIG2, _PLLEN_OFF & _BORV_19 & _LVP_OFF & _FCMEN_OFF |
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.