- 12V Akku mit 280 Ah bauen         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Configuration Word Konstanten

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076

    Configuration Word Konstanten

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,
    ich bin auf der Suche nach den #defines für das Configuration Word meines PIC12F617

    in meiner Software steht:

    #include "htc.h"
    __CONFIG (FOSC_INTOSCIO & WDTE_ON & PWRTE_ON & MCLRE_OFF & CP_OFF & IOSCFS_4MHZ & BOREN_ON & WRT_HALF);

    Wo finde ich denn diese Konstanten ????

    htc includiert PIC.H
    PIC.H includiert pic_chip_select.h
    pic_chip_select.h includiert pic12f617.h

    aber nirgends in diesen Datein sind die Konstanten für das Konfiguration Wort zu finden.
    Ich hab mir die aus der Datei P121F617.INC zusammengebastelt. Dort stehen sie mit einem vorangestellten Unterstrich.
    Dies Datei wird aber anscheinend nicht benutzt. Irgendwo müssen die doch deklariert sein, damit der Compiler sie kennt.

    ich Danke euch schonmal im voraus für Infos.
    Siro

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Zitat Zitat von Siro Beitrag anzeigen
    Ich hab mir die aus der Datei P121F617.INC zusammengebastelt. Dort stehen sie mit einem vorangestellten Unterstrich. Dies Datei wird aber anscheinend nicht benutzt.
    Das hast du richtig gemacht. Die Datei wird sicher nicht benutzt, weil woher soll der Compiler wissen, wie man den PIC konfigurieren will ?

    Zitat Zitat von Siro Beitrag anzeigen
    Irgendwo müssen die doch deklariert sein, damit der Compiler sie kennt.
    Sie müssen leider am Anfang jedes Programms vom Programmierer deklariert werden.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    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 !

  4. #4
    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.

  5. #5
    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 !

  6. #6
    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

  7. #7
    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 !

  8. #8
    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

  9. #9
    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 !

  10. #10
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo Klebwax, ich hab mir das auch nochmal angeschaut:
    Und habe fast identisches gefunden.

    Ich habe jetzt eine andere Vorgehensweise probiert.

    #pragma config Usage
    #pragma config <setting>=<named value>
    Hier gibt es zumindest eine recht gute Beschreibung
    Dazu sollte man sich die Dateien im Ordner:
    C:/Programme/Microchip/xc8/v1.10/docs/chips/12f617.html
    ansehen.

    Nun sieht meine Konfiguration so aus:

    Code:
    #pragma config BOREN  = ON       /* Brown-out Reset Selection bits */
    #pragma config WRT    = HALF     /* Flash Program Memory Self Write Enable bits */
    #pragma config FOSC   = INTOSCIO /* Oscillator Selection bits */
    #pragma config MCLRE  = OFF      /* MCLR Pin Function Select bit */
    #pragma config WDTE   = ON       /* Watchdog Timer Enable bit */
    #pragma config IOSCFS = 4MHZ     /* Internal Oscillator Frequency Select */
    #pragma config CP     = OFF      /* Code Protection bit */
    #pragma config PWRTE  =  ON       /* Power-up Timer Enable bit */
    zudem verweise ich mal auf das XC8 User Manual
    DS52053A-page 73
    3.3.5 Configuratio Bit Access

    Jetzt weis ich zwar immer noch nicht woher der Compiler dann seine Werte nimmt, aber was solls.
    Ich arbeite erstmal so damit. Das sieht auch viel übersichtlicher aus mit der der pragma direktive.

    Jetzt weis ich auch warum ich kein Projekt compiliert bekomme unter unter MPLABX

    "C:\Programme\Microchip\xc8\v1.01\bin\xc8.exe" --pass1 --chip=12F675 -Q -G --asmlist --double=24 --float=24 --emi=wordwrite --opt=default,+asm,-asmfile,+speed,-space,-debug,9 --addrqual=ignore --mode=free -P -N255 --warn=0 --summary=default,-psect,-class,+mem,-hex,-file --runtime=default,+clear,+init,+keep,-no_startup,+osccal,-resetbits,-download,-stackcall,+config,-clib,+plib "--errformat=%%f:%%l: error: %%s" "--warnformat=%%f:%%l: warning: %%s" "--msgformat=%%f:%%l: advisory: %%s" -obuild/Production/production/newmain.p1 newmain.c

    Das System kann den angegebenen Pfad nicht finden.
    Wundert mich jetzt nichtmerh, weil das Verzeichnis heisst ja auch:
    C:\Programme\Microchip\xc8\v1.10\bin\xc8.exe
    und das habe ich bei den Tools auch richtig eingestellt.
    Keine Ahnung warum er den Compiler im falschen Verzeichnis sucht.



    Dank Dir auch nochmal für die Mühe.
    Siro
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken XC8-Verzeichnis.jpg  
    Geändert von Siro (01.11.2012 um 14:40 Uhr)

Seite 1 von 2 12 LetzteLetzte

Ä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
  •  

Labornetzteil AliExpress