mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C-Compiler und Config-Words Beschreibung bei PIC .


Autor: skorpionx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich mache erste Schritte in PIC-Programmierung. Meine ersten Versuche 
laufen
unter C-Compiler SDCC. Wie beschreibe ich Config-Words( CONFIG1H, 
CONFIG2H,
CONFIG2L usw.) wenn ich einen C-Compiler benutze? Im welchem 
Speicherart (Eeprom oder Flashprom) sind die Config-Words  abgelegt?

skorpionx

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne die PICs nicht... sollten bei PIC die "Configwords" das sein, 
was beim AVR die Fuses sind, werden die nicht von/mit dem Compiler, 
sondern mit dem Brennprogramm beschrieben.

Ansonsten noch viel Spaß mit PIC... SCNR

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Pauli wrote:

> Ich kenne die PICs nicht... sollten bei PIC die "Configwords" das sein,
> was beim AVR die Fuses sind, werden die nicht von/mit dem Compiler,
> sondern mit dem Brennprogramm beschrieben.

Bei Microchips Compilern da steht das oft direkt im Quellcode und 
folglich im Objektfile mit drin. Sowas wäre prinzipiell auch bei AVRs 
möglich - als eigene Section für die paar Bytes.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. wrote:
> Bei Microchips Compilern da steht das oft direkt im Quellcode und
> folglich im Objektfile mit drin.

Er hat aber gesagt, dass er den SDCC verwendet, und der ist alles aber 
nicht von Microchip.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Sven: Da das ziemlich wahrscheinlich auch bloss im Hex File an 
speziellen Pseudoadressen landet ist es ziemlich schnuppe welcher 
Compiler verwendet wird.

@skorpionx: Die Configbits aus dem Hexfile in den Controller zu jagen 
ist Sache des Programmiergeräts/-Programms. Wo genau die im Controller 
wirklich stecken ist nur deren Problem.

http://www.micahcarrick.com/04-25-2005/pic-c-progr...

Autor: skorpionx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Laut "sprut":
>Beim Brennen eines Programms in einen PIC müssen eine Reihe
>von Optionen ausgewählt werden, die auf die spätere Funktion des
> PIC einen großen Einfluß haben. Bei alter DOS-Software (PP.EXE)
>erfolgt das durch Kommandozeilenparameter, bei meiner Windowssoftware
>für Brenner2 und Brenner3 durch grafische Auswahlfelder. Alternativ
>können diese Parameter auch schon im Programmquelltext festgelegt werden. >Beim 
Brennen werden diese Einstellungen im Konfigurationsregister des PIC >abgelegt.

weiter:

>Man kann sich jetzt aus den einzelnen Bits ein ... Steuerwort >zusammenbasteln, 
und es in das ASM-File aufnehmen, indem man dort z.B. >folgende Zeile einfügt:

; Configuration festlegen
        __CONFIG     B'11110100100000 '

>Durch den Pseudobefehl '__CONFIG' erkennt der Assembler, dass er dieses 
>Datenwort als Config in das HEX-File aufnehmen soll, und es wird später 
>automatisch in den PIC gebrannt.

Also, so geht das in Assembler. Aber in C...?

Autor: Chris S. (schris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
config at 0x2007 __CONFIG = _CP_OFF & _WDT_OFF & _BODEN_OFF & ...

oder
config CODE
    DATA 3F32H

IDLOCS CODE
    DATA 1234H


je nach verwendetem Linker-script.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. wrote:

> Bei Microchips Compilern da steht das oft direkt im Quellcode und
> folglich im Objektfile mit drin. Sowas wäre prinzipiell auch bei AVRs
> möglich - als eigene Section für die paar Bytes.

Nicht "wäre", sondern "ist". ;-)
http://www.nongnu.org/avr-libc/user-manual/group__...

Autor: skorpionx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sprut-Brenner erkennt nach dem laden von der *.hex Datei,
ob Konfiguration für PIC schon in der Datei vorhanden ist und wenn 
nicht,
gibt es ein Meldung und Konfiguration kann man von „Hand“ durchführen.
Es kann auch von Vorteil sein die Konfiguration in C-File durchzuführen.
Der Art „wie“ ist Compiler abhängig.

Bei C-18:
#pragma config OSC = HS   //CPU=20 MHz
#pragma config PWRT = ON
#pragma config BOR = OFF
#pragma config WDT = OFF  //Watchdog Timer
#pragma config LVP = OFF  //Low Voltage ICSP

SDCC:
code char at __CONFIG1H conf1 = 0x22; // Select HS OSC CPU=20 MHz
code char at __CONFIG4L conf2 = 0x81; // Disable LVP Low Voltage ICSP
code char at __CONFIG2H conf3 = 0x0E; // DIsable WDT Watchdog Timer

SDCC unterstützt auch : “#pragma code”
Vielleicht könnte man sich über diese Anweisung auch etwas basteln…

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.