Hilfe bei PIC Programmierung

OP #7115520
Lesenswert?

MOIN, mein Problem ist das ich das Konfigurationswort mit meinem 
Programmer nicht hinbekomme, lt. der Beschreibung soll es hex2154 
ergeben, das funktioniert bei mir leider nicht, ich weis nicht was ich 
da falsch mache? Auch wenn ich Bit 0 und 1 setze ( interne/externe 
Tacktung ) komme ich nicht auf diesen Wert !?
Angehängte Dateien:
Gast #7115598
Lesenswert?

R. H. schrieb:
> MOIN, mein Problem ist das ich das Konfigurationswort mit meinem
> Programmer nicht hinbekomme,

Tja, das ist eben das Problem, wenn man immerzu nur nach irgend einer 
IDE schaut und es nicht selbst hinkriegt.
Etwa so ähnlich:
          SEG     CODE
          CORE14

; ID-Konfiguration
          ORG     2000h
          DATA    0Ah
          DATA    1
          DATA    0
          DATA    5

;===== Fuses ========================
          ORG      2007h
;                  DCBA9876543210
Config:   DATA     11111100110010b
;                   3   F   3   2

Allerdings hab ich da meine Zweifel, ob man das so ähnlich bei 
Microchip's eigenem Assembler formulieren kann. Probiere doch einfach 
aus, die Häkchen oben im Dialogfeld so zu verändern, daß dann unten die 
erwartete Zahl herauskommt. Und gegen wen willst du deinen PIC mit 
heruntergelassenem Visier (/CP) schützen?

W.S.
Gast #7115835
Lesenswert?

Ich schreibe das(die) Konfigurationswort(e) mit dem MPLAB-X Assembler 
normalerweise immer direkt in den Code. -Ohne irgendwelche graphische 
Funktionen des Programmiergerätes oder der IDE zu bemühen.
Das kann dann z.B. so aussehen:
 __CONFIG _CONFIG1, b'00111111000100'
 __CONFIG _CONFIG2, b'01011111111100'
Gast #7115875
Lesenswert?

Datenblatt Kapitel 14.1 Configuration Bits

"The configuration bits can be programmed (read as ‘0’)
or left unprogrammed (read as ‘1’) to select various
device configurations. These bits are mapped in
program memory location 2007h."
Gast #7116050
Lesenswert?

Hans B. schrieb:
> Ich schreibe das(die) Konfigurationswort(e) mit dem MPLAB-X
> Assembler
> normalerweise immer direkt in den Code. -Ohne irgendwelche graphische
> Funktionen des Programmiergerätes oder der IDE zu bemühen.
> Das kann dann z.B. so aussehen:
>  __CONFIG _CONFIG1, b'00111111000100'
>  __CONFIG _CONFIG2, b'01011111111100'

Das ist eigentlich der Normalfall, die Config-Bits in den Code zu 
schreiben. Es gibt noch eine andere Art, die gut lesbar ist, die kommt 
in den Code:

    __CONFIG _CONFIG1, __CP_ON & _CPD_OFF & _LVP_OFF & _BOREN_OFF & 
_MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _FOSC_INTOSCIO

Dann macht der Compiler alles automatisch richtig und Du musst die 
Config nicht im Progger eingeben. w.o. schon geschrieben, ist dort ein 
gesetztes Bit 0 und ein nicht gesetztes Bit 1 !!!
OP #7116053
Lesenswert?

W.S. schrieb:
> Tja, das ist eben das Problem, wenn man immerzu nur nach irgend einer
> IDE schaut und es nicht selbst hinkriegt.

Tja, das ist eben das Problem, das es hier immer wieder Leute gibt die 
sich nicht vorstellen können das es auch Bastler gibt die nicht ganz so 
tief mit der Materie vertraut sind und einfach nur mit ihrem Programmer 
einen Baustein richtig programmieren wollen und deswegen hier Hilfe 
suchen !

W.S. schrieb:
> Da nützt es wirklich nichts, wenn man stattdessen User-ID0 rot
> einkringelt.

Das Config und UserId nichts miteinander zu tun haben ist mir schon 
klar, ich habe es auch nur markiert und mit einem Fragezeichen versehen 
weil mir nicht klar ist ob da überhaupt irgendetwas eingetragen werden 
muß
oder wozu ist UserId sonst gut ?
Gast #7116063
Lesenswert?

R. H. schrieb:
> oder wozu ist UserId sonst gut ?

Das ist eine _USER_-Kennzeichnung. Da kannst du eintragen was du willst 
und zu welchem nur dir bekannten Zweck. Weder der PIC noch der Assembler 
brauchen die. Manual lesen hilft auch hier.

old_pic_fan schrieb:
> Dann macht der Compiler alles automatisch richtig

Der ist doch garnicht dabei, wenn es um Assemblerprogrammierung geht. 
Und nochwas: Die Bedeutung der diversen Bits im Konfigurationswort (bzw. 
Wörtern) ist leicht unterschiedlich von Typ zu Typ. Da kann weder ein 
Compiler noch ein Assembler etwas ganz allein "automatisch" richtig 
machen, sondern er braucht dazu entsprechende Anweisungen in einer 
Konfigurationsdatei oder Datenbank oder so - und sowas muß eingebunden 
oder angezeigt werden in der Quelle. Man kann das allerdings auch selber 
erledigen, dann ist mal wieder eine Quelle für Irrtümer weniger im 
Vorhaben.

W.S.
Gast #7116076
Lesenswert?

R. H. schrieb:
> lt. der Beschreibung soll es hex2154 ergeben

Offenbar hat der Beschreiber einen gesetzten Haken als 'H' gesehen. 
Deine IDE sieht aber den gelöschten Haken als 'H'.
In dem Fall hast du die Häkchen richtig gesetzt.
Haken so zu setzen, dass 0x2154 herauskommt ist bei dem Prozessor 
jedenfalls nicht möglich, denn dann müssten
a) 16 Felder da sein
b) auch alle 16 beschreibbar sein. Bei dir sind nur die Bits 0-8 und 13 
beschreibbar.
Normalerweise weiß man, welche der Fuses man aktivieren will und welche 
nicht. Dass die LOW-aktiv im Prozessor stehen, interessiert doch gar 
nicht.

H. H. schrieb:
> Sieht so aus, als ob deine Software MiniPro das CW invertiert.

Ja, so sieht's aus, ist auch beim AVR-Studio so.

R. H. schrieb:
> wozu ist UserId sonst gut ?

Ich hab zwar keine Ahnung 😀, vermutlich kannst du dich dort als Urheber 
verewigen ...
Gast #7116157
Lesenswert?

W.S. schrieb:
> Nö.
> Rechne mal nach: ne 2154h kriegt man in 14 Bit hinein. Dreimal 4 Bit und
> im höchsten Nibble nur 2 Bit.

Ja schon, nicht aber so, dass in dem Feld Config Word (rechts unten) 
0x2154 steht, denn dann müsste er oben 1101 1110 1010 1101 setzen können 
- mit 1 für ein gesetztes Häkchen.
Das meinte ich und deshalb schafft er es auch nicht ... :-)
Gast #7116220
Lesenswert?

So ganz klar ist mir die Fragestellung bzw. das Problem nicht.
Vielleicht wird ein Fehler gesucht, der gar nicht existiert?
Das Konfigurationswort hat 14 bit.
Aber davon sind 4 bit gar nicht implementiert und daher  im Wert 
bedeutungslos.
Es gibt also für jede gewünschte Konfiguration 16 verschiedene richtige 
Konfigurationsworte, die funktional völlig gleichwertig sind.
In der gezeigten Benutzeroberfläche wird ein hex-wert angegeben aber es 
gibt auch noch 15 weitere gleichwertige.
Gast #7117238
Lesenswert?

Leute, wenn ihr von der Atmel-Fraktion seid, dann seid ihr bei PIC auf 
dem falschen Dampfer: kein vernünftiger PIC-Progammierer programmiert 
Config-Bits mit dem Programmer, die schreibt man als Config-Zeile in den 
Code, setzt vorher die Include (achtung: p16... statt pic16...) zu dem 
richtigen PIC und die Chose läuft.

Beispiel aus einem aelteren Programm von mir fuer den PIC16F886:
1
;***********************************************************************
2
; Definition µC, Programm laeuft auch mit PIC16F882 und PIC16F883
3

4
    list p=16f886
5
    #include <p16f886.inc>
6

7
    ERRORLEVEL -302             ; schaltet Bank-Warnungen ab
8

9
; CONFIG fuer PIC16F886
10

11
    __CONFIG _CONFIG1, _DEBUG_OFF & _CP_OFF & _LVP_OFF & _BOR_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO
12
    __CONFIG _CONFIG2, _WRT_OFF & _BOR21V
13

14
;***********************************************************************
15
; Beginn Programm
16
;

"Fuses" hat ein PIC nicht, die Config-Bits kann man immer im Code 
unterbringen.

Der TE versucht mit einem TL866A einen PIC zu programmieren und das ist 
die Quelle des Übels.
Gast #7117363
Lesenswert?

W.S. schrieb:
> HildeK schrieb:
>> - mit 1 für ein gesetztes Häkchen.
>
> Ich schätze, es ist allemal sicherer, in das Manual zum betreffenden PIC
> zu schauen und danach die Bits zu setzen, als herumzuorakeln, ob ein
> gesetztes Häkchen in einem Menü nun Bit low oder high zu bedeuten hat.
>
> W.S.

Wurde oben schon von Hans B, Datenblattlesende und old_pic_fan gesagt:
0 ist gesetzt, 1 ist nicht gesetzt.

Spielt aber keine Rolle, die Config-Bits setzt man im Code über 
Schlüsselworte und der Assembler oder Compiler macht es dann richtig.
OP #7119362
Lesenswert?

wenn man nur das Hex File hat und den Text mit den Angaben zur 
Konfiguration hat ist glaube ich ein Assembler oder Compiler nicht viel 
von Nutzen!
Außerdem sind das Werkzeuge die ich nicht kenne und bedienen kann.
Habe nach langer Suche doch noch was für meinen Mini-Pro Programmer 
gefunden, ist für den PIC16F628 (auch ohne externe Tacktung) aber das 
dürfte passen weil die sich nur ganz geringfügig unterscheiden.
Angehängte Dateien:
Gast #7119489
Lesenswert?

W.S. schrieb:
> HildeK schrieb:
>> - mit 1 für ein gesetztes Häkchen.
>
> Ich schätze, es ist allemal sicherer, in das Manual zum betreffenden PIC
> zu schauen und danach die Bits zu setzen, als herumzuorakeln, ob ein
> gesetztes Häkchen in einem Menü nun Bit low oder high zu bedeuten hat.

Ohne Zweifel.
Andererseits weiß man, das solche Bits EEPROM-Zellen sind. Und die sind 
'1' im unprogrammierten Zustand.
Und klar, ich habe meine Erfahrung mit ATMEL-µCs und einer bestimmten 
IDE erworben - nicht mit PICs. Auch da wird ein gesetzter Haken zu einer 
'0' im angezeigten Hex-Wert. Und es passt gut zu dem was der TO 
beschrieben und warum er damit ein Problem hat.
Meine Aussage sollte einen Hinweis geben, wie der TO sich ggf. weiter 
schlau machen kann.
Gast #7119490
Lesenswert?

R. H. schrieb:
> wenn man nur das Hex File hat und den Text mit den Angaben zur
> Konfiguration hat ist glaube ich ein Assembler oder Compiler nicht viel
> von Nutzen!

Also ein Fall von copy&paste oder so ähnlich. Dann weißt du auch nicht, 
ob es eventuell bereits richtig im Hexfile steht.

> Außerdem sind das Werkzeuge die ich nicht kenne und bedienen kann.

Eben. Die hier zusammengetragenen Ratschläge waren für Leute gedacht, 
die selbst eine Firmware schreiben wollen und sind damit an deiner 
Befindlichkeit vorbeigeschrammt. Hättest du aber vermeiden können, wenn 
du das richtig im Eröffnungspost geschrieben hättest. Ist im Nachhinein 
für alle anderen ärgerlich.

W.S.
Gast #7119938
Lesenswert?

W.S. schrieb:
> Ist im Nachhinein
> für alle anderen ärgerlich.
>
> W.S.

"Ärgerlich"? sind nur Typen wie W.S., die ungefragt meinen ihre 
"Weisheiten" hier verbreiten zu müssen.

Du sülzt hier gefühlt 24h in jedem Forum rum und meinst offensichtlich, 
oberlehrerhaft andere zu jedem Thema belehren zu müssen.

Verpiss dich endlich und jammer sonstwo rum!
Gast #7119991
Lesenswert?

Wenn hex 2154 das gewünschte configword ist, also das ist dann
bin: 1 0000 101010100  dann ist für jede "0" ein häkchen zu setzen.
Weil aber für bit 12, 11, 10, 9 (das sind die 4 hier freigestellten 
Nullen) ein Nullsetzen nicht möglich ist, aber genau diese 4 bit 
keinerlei Bedeutung haben ist es gleichwertig folgendes einzugeben:
bin 1 1111 10 10 10 100 das entspricht hex 3F54 -das ist dem PIC egal 
weil der diese bits nicht auswertet, aber so sollte man das problemlos 
in die Maske eingegeben können.

Also nochmals, setze überall für eine "0" ein häkchen nach diesem 
Schema:
1111110
1010100
der hex-wert sollte dan 3F54 sein und das ist als config völlig 
gleichwertig mit "deinem" hex 2154

Ich hoffe, das hilft jetzt weiter.
-Und die Leser mögen auf logische Fehler, Tipp- od. Rechenfehler 
kontrollieren und hinweisen....
Gast #7120018
Lesenswert?

Nachtrag:
In dem von mir errechneten config wird "low voltage programming" 
deaktiviert. Ist das so OK?
Kann dein Programmiergerät sowohl low- als auch high- volt programming?
Ist dein PIC bereits für Low-voltage programming vorprogrammiert? - dann 
reagiert er anders und muss mit HI-volt-programming überschrieben 
werden.
Vermutlich ist aber alles OK und problemlos.
Gast #7120943
Lesenswert?

R. H. schrieb:
> low-high volt programming ? keine Ahnung ob mein MiniPro TL866A das
> kann.

Sowas hat auch ein bissel Einfluß auf die Schaltung, in der so ein PIC 
steckt. Zumindest bei den älteren Typen wurde beim Startup des PIC der 
Programmiermodus aktiv, wenn (wimre) RB3 auf high war. Es ist also 
weniger die Frage, was dein Brenner denn so alles kann, sondern ob und 
was in der Schaltung vorgesehen ist. Kann sich alles geändert haben, 
also lies das Manual zu deinem Chip und schau dort nach.

W.S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren