Forum: Mikrocontroller und Digitale Elektronik MPLAB lässt sich nicht schließen


von Werner F. (frewer)


Lesenswert?

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

von Dieter W. (dds5)


Lesenswert?

Es könnte sein, dass mplab an dem extrem langen Pfadnamen scheitert.

von супертролль (Gast)


Lesenswert?

Etwas vom Ersten, was ich jeweils bei einem neuen Rechner tu, ist
C:\Dokumente und Einstellungen\Werner\Eigene Dateien\

nach c:\mydata zu verschieben.

von holger (Gast)


Lesenswert?

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.

von tt4u (Gast)


Lesenswert?

Das Program lcd.asm von sprut ist für den 16F84 geschrieben, Du hast 
einen 16F877 ...

von Werner F. (frewer)


Lesenswert?

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

von piccer (Gast)


Lesenswert?

> 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

von Werner F. (frewer)


Lesenswert?

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

von Werner F. (frewer)


Lesenswert?

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
Noch kein Account? Hier anmelden.