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 !?
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.
Ramirez schrieb: > Die UserId hat doch nix mit der Config am Hut! Tja, eben. Siehe: R. H. schrieb: > MOIN, mein Problem ist das ich das Konfigurationswort mit meinem > Programmer nicht hinbekomme, Da nützt es wirklich nichts, wenn man stattdessen User-ID0 rot einkringelt. W.S.
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'
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."
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 !!!
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 ?
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.
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 ...
HildeK schrieb: > Haken so zu setzen, dass 0x2154 herauskommt ist bei dem Prozessor > jedenfalls nicht möglich, denn dann müssten > a) 16 Felder da sein Nö. Rechne mal nach: ne 2154h kriegt man in 14 Bit hinein. Dreimal 4 Bit und im höchsten Nibble nur 2 Bit. W.S.
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 ... :-)
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.
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.
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.
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.
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.
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.
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.
W.S. schrieb: > Dann weißt du auch nicht, > ob es eventuell bereits richtig im Hexfile steht. Dann wären die Configdaten nach dem prog. mit dem Hexfile mit Sicherheit nicht alle leer, darauf bin ich auch schon gekommen !
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!
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....
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.
low-high volt programming ? keine Ahnung ob mein MiniPro TL866A das kann. Wenn ich die Einstellungen lt. meinem letzten Bild vornehme ergibt sich 3F5C, bei zus. angewählten Power-Up Timer (PWRT) die 3F54
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.
W.S. ist Kritikresistent und müllt hier weiter mit seinen unsinnigen Kommentaren die Foren voll, hat wahrscheinlich nichts besseres zu tun !
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.