Hallo, habe meinen ersten PIC 16F877 mit dem Lauflicht Programm von Sprut programmiert. Alles ok. Damnn habe ich das Programm LCD von Sprut in einen Ordner kopiert und entzipped und ein Projekt daraus gemacht. Aber es läuft nicht und zwar lässt sich das File LCD.asm nicht assemblieren. Den richtigen prozessor habe ich ausgewählt. Eigenartig war, dass ich zunächst den File nicht einmal editieren konnte. Dies gelang erst nachdem ich irgendwo einen Haken entfernt hatte. Nun habe ich 2 probleme: 1. Wenn ich jetzt MPLAB starte, den Workspace öffne und assembliere erscheint folgendes: "Release build of project `C:\Dokumente und Einstellungen\Werner\Eigene Dateien\MicroController\PIC-Micro\Projekte\LCD_Anzeige\LCD_Anzeige.mcp' started. Language tool versions: MPASMWIN.exe v5.46, mplink.exe v4.44, mplib.exe v4.44 Tue Oct 09 10:51:39 2012 ---------------------------------------------------------------------- Clean: Deleting intermediary and output files. Clean: Deleted file "C:\Dokumente und Einstellungen\Werner\Eigene Dateien\MicroController\PIC-Micro\Projekte\LCD_Anzeige\LCD_Anzeige.mcs". Clean: Done. Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe" /q /p16F877 "lcd.asm" /l"lcd.lst" /e"lcd.err" " und nichts weiter passiert bzw reagiert. 2. Wenn ich jetzt MPLAB schließe und wieder neu öffne, erscheint ein Warnfenster mit dem Text: "MPLAB IDE is already running on this machine. It is not recommended ....." Nirgendwo wird allerdings angezeigt, dass MPLAB noch läuft. Ist bekannt, was man machen muss, um das Problem zu lösen? mfG frewer
Es könnte sein, dass mplab an dem extrem langen Pfadnamen scheitert.
Etwas vom Ersten, was ich jeweils bei einem neuen Rechner tu, ist C:\Dokumente und Einstellungen\Werner\Eigene Dateien\ nach c:\mydata zu verschieben.
Bei sehr frühen Compilerversionen von C18 gab es tatsächlich eine Begrenzung auf 62 Zeichen für Pfad plus Dateinamen. Ob das heute auch noch so ist und möglicherweise auch den Assembler betrifft kann ich aber nicht sagen. Schon zu lange nichts mehr gemacht mit PIC.
Das Program lcd.asm von sprut ist für den 16F84 geschrieben, Du hast einen 16F877 ...
hallo, tt4u schrieb: > Das Program lcd.asm von sprut ist für den 16F84 geschrieben, Du hast > einen 16F877 ... Das stimmt, aber ich kann keinen Unterschied feststellen. Auch nicht bei den Konfigurationsbit. Und dann habe ich bereits ein sprut-Programm für den 16F84 auf meinem 16F877 am laufen, nämlich das Programm Lauf.asm. Deshalb scheint mir auch das Thema "langer Pfad" nicht relevant, denn das funktionierende programm liegt in einem parallelen Ordner. Bei weiteren versuchen habe ich jedoch festgestellt, dass ich ordnungsgemäß assemblieren kann, wenn ich nach MPLAB Anleitung ein Projekt erstelle in das ich zunächst das 16F877.asm Template und dann noch das Linker_programm .lkr in den Projektordner kopiere. Wenn ich jetzt die Originalzeilen durch das sprut-Programm ersetze, funktioniert das Assemblieren problemlos und MPLAB kann geschlossen werden. Warum das so ist ist mir unklar oder hängt das an der fehlenden p16F877.lkr Datei, wenn ich nur das Programm LCD.asm ins Projekt kopiere. ??? mfG frewer
> Das stimmt, aber ich kann keinen Unterschied feststellen. Auch nicht bei > den Konfigurationsbit. Das glaubst Du doch nicht selbst. Da gibt es nur teilweise Überschneidungen. Die CONFIG-Bits für den 16F84 sind folgende:
1 | ;----- CONFIG Options -------------------------------------------------- |
2 | _FOSC_LP EQU H'3FFC' ; LP oscillator |
3 | _LP_OSC EQU H'3FFC' ; LP oscillator |
4 | _FOSC_XT EQU H'3FFD' ; XT oscillator |
5 | _XT_OSC EQU H'3FFD' ; XT oscillator |
6 | _FOSC_HS EQU H'3FFE' ; HS oscillator |
7 | _HS_OSC EQU H'3FFE' ; HS oscillator |
8 | _FOSC_EXTRC EQU H'3FFF' ; RC oscillator |
9 | _RC_OSC EQU H'3FFF' ; RC oscillator |
10 | |
11 | _WDTE_OFF EQU H'3FFB' ; WDT disabled |
12 | _WDT_OFF EQU H'3FFB' ; WDT disabled |
13 | _WDTE_ON EQU H'3FFF' ; WDT enabled |
14 | _WDT_ON EQU H'3FFF' ; WDT enabled |
15 | |
16 | _PWRTE_ON EQU H'3FF7' ; Power-up Timer is enabled |
17 | _PWRTE_OFF EQU H'3FFF' ; Power-up Timer is disabled |
18 | |
19 | _CP_ON EQU H'000F' ; All program memory is code protected |
20 | _CP_OFF EQU H'3FFF' ; Code protection disabled |
und für den 16F877
1 | ;----- CONFIG Options -------------------------------------------------- |
2 | _FOSC_LP EQU H'3FFC' ; LP oscillator |
3 | _LP_OSC EQU H'3FFC' ; LP oscillator |
4 | _FOSC_XT EQU H'3FFD' ; XT oscillator |
5 | _XT_OSC EQU H'3FFD' ; XT oscillator |
6 | _FOSC_HS EQU H'3FFE' ; HS oscillator |
7 | _HS_OSC EQU H'3FFE' ; HS oscillator |
8 | _FOSC_EXTRC EQU H'3FFF' ; RC oscillator |
9 | _RC_OSC EQU H'3FFF' ; RC oscillator |
10 | |
11 | _WDTE_OFF EQU H'3FFB' ; WDT disabled |
12 | _WDT_OFF EQU H'3FFB' ; WDT disabled |
13 | _WDTE_ON EQU H'3FFF' ; WDT enabled |
14 | _WDT_ON EQU H'3FFF' ; WDT enabled |
15 | |
16 | _PWRTE_ON EQU H'3FF7' ; PWRT enabled |
17 | _PWRTE_OFF EQU H'3FFF' ; PWRT disabled |
18 | |
19 | _CP_ALL EQU H'0FCF' ; 0000h to 1FFFh code protected |
20 | _CP_HALF EQU H'1FDF' ; 1000h to 1FFFh code protected |
21 | _CP_UPPER_256 EQU H'2FEF' ; 1F00h to 1FFFh code protected |
22 | _CP_OFF EQU H'3FFF' ; Code protection off |
23 | |
24 | _BOREN_OFF EQU H'3FBF' ; BOR disabled |
25 | _BODEN_OFF EQU H'3FBF' ; BOR disabled |
26 | _BOREN_ON EQU H'3FFF' ; BOR enabled |
27 | _BODEN_ON EQU H'3FFF' ; BOR enabled |
28 | |
29 | _LVP_OFF EQU H'3F7F' ; RB3 is digital I/O, HV on MCLR must be used for programming |
30 | _LVP_ON EQU H'3FFF' ; RB3/PGM pin has PGM function; low-voltage programming enabled |
31 | |
32 | _CPD_ON EQU H'3EFF' ; Data EEPROM memory code-protected |
33 | _CPD_OFF EQU H'3FFF' ; Code Protection off |
34 | |
35 | _WRT_OFF EQU H'3DFF' ; Unprotected program memory may not be written to by EECON control |
36 | _WRT_ENABLE_OFF EQU H'3DFF' ; Unprotected program memory may not be written to by EECON control |
37 | _WRT_ON EQU H'3FFF' ; Unprotected program memory may be written to by EECON control |
38 | _WRT_ENABLE_ON EQU H'3FFF' ; Unprotected program memory may be written to by EECON control |
39 | |
40 | _DEBUG_ON EQU H'37FF' ; In-Circuit Debugger enabled, RB6 and RB7 are dedicated to the debugger |
41 | _DEBUG_OFF EQU H'3FFF' ; In-Circuit Debugger disabled, RB6 and RB7 are general purpose I/O pins |
vielen Dank für die detaillierte Auflistung. Dennoch bleibe ich dabei, dass für ein "normales" Testprogramm, wie sie SPRUT aufgestellt hat, die ConfigBits gleich sind. Im File p16F877.ini (wahrscheinlich ist deine Aufstellung daraus) sehe ich auch, dass man die Bezeichnungen aus dem 16F84 zusätzlich mit übernommen hat, so dass zB sowohl _HS_OSC wie auch _FOSC_HS zulässig ist. Für meine Programme reichen _LVP_OFF, _PWRTE_ON, _WDT_OFF, _HS_OSC aus. Die Speicherbereiche will ich ändern können, also bleibt die Basiseinstellung. Das ist sicherlich nicht mein Problem mit dem MPLAB gewesen. Irgendwie muss das mit dem Linker-Basis-File xx.lkr zusammenhängen aber ganz schglau bin ich noch immer nicht daraus geworden. Ich habe noch eine zusätzliche Frage und zwar zur Programmierung des Flash mit PonyProg. Dazu habe ich den Adapter von Lancos nachgebaut, mit dem Basisgerät zusammengesteckt und nichts ging. Dann habe ich in den "MISO"-Pfad noch einen Inverter spendiert und in PonyProg natürlich den Setup angepasst. Tatsächlich konnte ich jetzt ab und zu programmieren. Ab und zu ist natürlich nicht akzeptierbar aber ich weiß nicht woher das kommt. Ich stelle mit dem Oszi fest, dass der Clock-Eingang, der ja direkt vom Pin39 durchgeschleift wird durch das Bisismodul nicht auf 0V gezogen wird. Ich sehe zwar die Impulse aber sie sind im wesentlichen zwischen 4,9 und 5V. Dabei dachte ich, dass durch das Anheben von MCRP von 5V auf 13V die beiden Eingänge auf Schmitt-Trigger-Eingänge umgeschaltet werden. Mach ich da etwas falsch?? mfG frewer
Ok, scheine das Problem gelöst zu haben. Es ist etwas unklar wie PonyProg funktioniert und zwar betrifft das Thema der Programmierungsabfolge. Bei den ATMEL MCs scheint vor jeder Neuprogrammierung ein Erase-Befehl gegeben zu werden, bei den PIC MCs aber nicht. Bei ATMEL lade ich den HEX-File mit dem Knopf "P" und programmiere mit dem Knopf "P" (programmiere Flash). Das habe ich auch bei den PICs so gemacht aber immer wieder erkennen müssen, dass es mal geht und mal nicht geht. Durch Zufall habe ich - als wieder mal nicht programmieren wollte - den Erase-Befehl gegeben und siehe da, danach klappte das Programmieren wieder einwandfrei. Jetzt habe ich mit "Programm-Options" die Befehle Erase - Programmieren und Configuration Bits setzen angewählt und programmiere jetzt mit dem "gelben Pfeil" (Launch program cycle). mfG frewer
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.