- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 11

Thema: Configuration Word Konstanten

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Ich weiß jetzt nicht, welchen Compiler du benutzt.

    Ich verwende nur die PIC24 mit den Tools von Microchip. Die #defines für die Config-Bits sind in den jeweiligen p24xxx.h. Da findet sich dann sogar noch eine kleine Doku dazu. Beispiel:

    Code:
    /* -------------------------------------------------------- */
    /* Macros for setting device configuration registers        */
    /* -------------------------------------------------------- */
    
    /* Register FBS (0xf80000)                               */
    
    extern __attribute__((space(prog))) int _FBS;
    #define _FBS(x) __attribute__((section("__FBS.sec"),space(prog))) int _FBS = (x);
    
    /*
    ** Only one invocation of FBS should appear in a project,
    ** at the top of a C source file (outside of any function).
    **
    ** The following constants can be used to set FBS.
    ** Multiple options may be combined, as shown:
    **
    ** _FBS( OPT1_ON & OPT2_OFF & OPT3_PLL )
    **
    **   Boot Segment Write Protect:
    **     BWRP_ON              Enabled
    **     BWRP_OFF             Disabled
    **
    **   Boot segment Protect:
    **     BSS_HI5K             High Security Boot Protect 000200h - 002BFEh
    **     BSS_HI2K             High Security Boot Protect 000200h - 0015FEh
    **     BSS_HI1K             High Security Boot Protect 000200h - 000AFEh
    **     BSS_STD5K            Standard Security Boot Protect 000200h - 002BFEh
    **     BSS_STD2K            Standard Security Boot Protect 000200h - 0015FEh
    **     BSS_STD1K            Standard Security Boot Protect 000200h - 000AFEh
    **     BSS_OFF              No boot program flash segment
    **
    */
    
    #define BWRP_ON              0xFFFE
    #define BWRP_OFF             0xFFFF
    
    #define BSS_HI5K             0xFFF1
    #define BSS_HI2K             0xFFF3
    #define BSS_HI1K             0xFFF5
    #define BSS_STD5K            0xFFF9
    #define BSS_STD2K            0xFFFB
    #define BSS_STD1K            0xFFFD
    #define BSS_OFF              0xFFFF
    Das wird für die kleineren so ähnlich sein, kann das aber nicht nachvollziehen, da ich nichts für die 8-Bitter installiert habe.

    Wo kommt denn das #define für "__CONFIG" her? Dort in der Nähe wäre ein guter Platz.

    Die *.inc sind Include Files für Assembler.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Ich danke euch erstmal für die Infos.

    So wie Ihr das beschreibt kenne ich das auch von früher. Da sind die Werte bzw. Namen in der entsprechenden Datei z.B. p24xxx.h declariert,
    Diese Datei muss logischerweise irgendwo, sinnvollerweise am Anfang des Programms mit #include in das Projekt mit eingebunden werden.
    Das hab ich ja auch schon tausend mal gemacht. In der Datei P12F617.INC ist das ja auch so.

    Aber ich vergaß zu erwähnen, dass ich das erste Mal den XC8-Compiler verwende und dadurch hat sich anscheinend ALLES geändert.

    Also nochmal kurz der Übersicht wegen:
    Woher kennt der C-Compiler in meiner __CONFIG Zeile WDTE_ON ?
    Die stehen bei mir NICHT in der Datei PIC12F617.H
    auch nicht in den vielen abhängigen include Dateien, die da wären
    XC.H
    HTC.H
    PIC.H
    pic_chip_select.h
    pic12f617_legacy.h
    PIC12F617.H

    Das ist aber auch ein Chaos.....
    Ich kanns einfach nicht finden....


    @Klebwax:
    __CONFIG ist in der Datei PIC.H so declariert.

    #define __CONFIG(x) \
    __config(___mkstr(__CONFIG), ___mkstr(pic), ___mkstr(x))

    Mann o Mann, wer soll das noch verstehen, da muss man erstmal mit dem Cursor zählen wieviele Unterstriche das sind.
    Es sind 2 bis 3 Unterstriche. Hilft mir aber nicht weiter meine Konstanten zu finden.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Siro Beitrag anzeigen
    Aber ich vergaß zu erwähnen, dass ich das erste Mal den XC8-Compiler verwende und dadurch hat sich anscheinend ALLES geändert.
    Da du XC8 erwähnst, benutzt du sicher auch MPLABX. Ich kenne da auch nicht alle Funktionen, aber probier mal folgendes: positionier den Cursor auf dein WDTE_ON und drücke Ctrl-B. Wenn der Compiler das WDTE_ON kennt, sollte er zur Deklaration springen.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Schade, ich arbeite aber nicht mit MPLAB-X nach Stundenlanger Probiererei und erklärlichen Fehlern und Menüs bin ich zurück zum MPLAB, das funktioniert wenigstens.
    Ich habs dann aber trotzdem nochmal probiert mit MPLABX und der Tastenkombination, hat aber leider nicht funktioniert. Gesucht hat das Programmm aber anscheinend.
    unable to resolve identifier.
    Aber unter MPLABX bekomme ich überhaupt kein Compilat zu Stande.
    Na was solls, das heisst also wieder zurück zum Assembler . Ich stehe eh auf Kriegsfuss mit "C"
    Danke Euch für die Benühungen.
    Siro

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Siro Beitrag anzeigen
    Aber unter MPLABX bekomme ich überhaupt kein Compilat zu Stande.
    Na was solls, das heisst also wieder zurück zum Assembler . Ich stehe eh auf Kriegsfuss mit "C"
    Das kann ich nun garnicht nachvollziehen. Ich hab früher die PIC16xx in C (nicht MPLAB) programmiert. Als dann MPLAB als MPLABX auch für Linux zu bekommen war, hab ich das gleich ausprobiert. Zusammen mit dem PICkit 3 läuft das prima. Ich habe das auf mehreren Rechner installiert, die Downloadzeit ist länger als die Zeit bis zum ersten toggeln eines Portpins.

    Die meisten Features nutze ich noch garnicht, weil mir die Erfahrungen mit einer modernen IDE fehlen. An manches muß man sich auch gewöhnen z.B. wenn einem schon der Editor sagt, daß man gerade einen Fehler hingeschrieben hat, daß es eine Variable oder Funktion mit diesem Namen garnicht gibt. Aber dieses Ctrl-B (goto declaration) ist schon sehr hilfreich, wie du gerade siehst.

    Auf die Debugfeatures möchte ich aber auf keinen fall verzichten. Breakpoints (die PIC24 haben da mehr als die PIC16), Single Step etc. Und mit der Maus über eine Variable gehen und den Wert sehen, oder sich ganze Strukturen anzeigen lassen. So als ob man auf dem PC und nicht auf der Zielhardware arbeitet.

    Ich habe, wenn ich mich recht erinnere, auf einem anderen Rechner den XC8 mit installiert. Ich schau da mal nach ob ich da was finde.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Na ich weis nicht, mit dem MPLABX bin ich anscheinend überfordert.
    Alleine der USB-Switcher, was soll das denn. Ich hab das dauernd umstellen müssen,
    Dann hatte ich den PM3 Programmer dran, da kam erstmal ein Warnhinweis, dass dieser zerstört werden könnte.
    Ich hab dann den ICD-3 angeschlossen. Irgendwie wollte das alles nicht vernünftig laufen.
    Die MPLABX will ich auch nicht schlecht machen, da gibt es wirklich sehr viele Vorteile, wie Du schon sagtest. Aber meiner Meinung nach noch nicht ausgereift.
    Und ich würde deinen PIC24 nun auch nicht NUR in Assembler programmieren wollen, obwohl ich das schon gemacht habe und dabei einen Core-Fehler entdeckte, der in "C" nie aufgetaucht wäre.
    Siehe
    https://www.roboternetz.de/community...post-increment
    Ich werde früher oder später sicher nochmal mit der MPLAB-X probieren, aber im Moment bleibt ich noch beim altbewährten.
    Mit den nicht gefundenen Konstanten oder den total verschachtelten includes bei "C" ist ja kein Weltuntergang,
    braucht man sich normalerweise nicht drum zu kümmern, aber wenn ich das nicht mehr nachvollziehn kann, nervt mich das schon. Weil es funktioniert ja, aber ich weis nicht warum.....
    Siro

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    So, ich hab mal auf dem anderen Rechner nachgeschaut. Der XC8 war früher der HighTech Compiler, ist wohl von Microchip gekauft worden.

    In ../xc8/v1.xx/docs gibt es ein manual.pdf. Da ist der Compiler beschrieben. Im Kapitel 5.3.5 werden die Configuration-Bits behandelt. Die Beschreibung der Device-spezifischen Configbits findest du in .../docs/chips/name_deines_chips.html.

    Hab mir ein MPLABX Projekt mit dem Prozessor PIC12F617 angelegt und einen File mit main() erzeugen lassen, die Bits nach Manual gesetzt, ging sofort. Das Ctrl-B "Go to declaration" geht natürlich bei einem #pragma nicht.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

Ähnliche Themen

  1. Bascom und Assembler: konstanten Wert in Variable laden
    Von malthy im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 16.04.2012, 12:54
  2. Xmega - Timer configuration
    Von Duesentrieb7 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 09.12.2009, 21:56
  3. Mit #define zugewiesene Konstanten nicht zuweisbar?
    Von EDatabaseError im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 21.05.2008, 17:09
  4. ADC von rnmega2560 gibt einen konstanten Wert zurück!
    Von turi79 im Forum Sensoren / Sensorik
    Antworten: 6
    Letzter Beitrag: 14.02.2008, 14:21
  5. Probleme mit configuration bit...!
    Von RIFMAN im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 18.07.2007, 15:43

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress