Forum: Mikrocontroller und Digitale Elektronik PIC 16F877 EEPROM / CC5X


von Marc (Gast)


Lesenswert?

Guten Abend,

ich bräuchte da mal von ein paar Profis hilfe. Ich hab eine Schlatung
für Schrittmotoren aufgebaut die auch einwandfrei funktioniert.
Ich wollte jetzt ein Menü schreiben und auf dem Display die Menüpunkte
ausgeben. Leider ist jetzt die Grenze von 1k Speicher mit dem CC5X
Compieler voll. Kann mir jemand helfen in dem er mir erklärt wie ich
meine Menüpunkte im EEPROM ablegen kann und auch wieder aufrufe um so
mehr Speicher zu bekommen.
Ich hab auch schon versucht mich mit verschiedenen Bänken zu
beschäftigen. Dann könnte ich ja 4k auf den Chip speichern, aber alle
Anleitungen die ich gefunden habe konnte ich nicht umsetzten.
Vielleicht hat jemand von euche eine einfache Anleitung wie ich das
hinbekomme.

Bin für alle Ratschläge und Tips dankbar!

Grüße Marc

von Stefan B. (Gast)


Lesenswert?

Hallo Marc!

Deine konkrete Frage kann ich zwar nicht beantworten. Es gibt aber
einen Weg wie Du 1k-Grenze umgehst:
Im Prinzip geht das so:
1) Du schreibst deine Unterprogramme in eigene Dateien (hier musst Du
allerdings einige wichtige Regeln beachten)
2) Eine eigene Headerdatei (Endung: .H), in der alle
Funktionsprototypen definiert sind, alle externen Variablen und so
3) Mit einer BAT-Datei werden alle C-Dateien (in eine ASM-Datei)
kompeliert
4) Mit der MPLAB-IDE (genauer mit dem Linker) erfolgt nun die
Zusammensetzung des gesammten Projekts.
5) Wenn Du Interrupts auch noch verwendst, musst das lkr- File (in
deinem Fall 16f877.lkr (ist irgendwo dort, wo MPLAB installiert ist)
gemäß dem Handbuch zum CC5X-Compiler anpassen!

Kennst Du die Seit www.cc5x.de ? - Dort ist das so halbwegs
beschrieben.

Ich habe das ganze für die Ansteuerung eines SED1520- Grafik-Displays
benützt und funktioniert ausgezeichnet.

mfg
Stefan B.

von Marc (Gast)


Lesenswert?

Wenn du mit demm CC5X schon mal was größer wie 1k compeliert hast, wärst
du dann so freundlich mir das mal zu schicken oder zu posten? Dass ich
mir mal den Quellcode anschaun kann. Wie das "prinzipiel aufgebaut
werden müsste.

Wär mir echt ne große Hilfe.

Grüße Marc

von Stefan B. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Marc!

Na klar!

Bei diesem Projekt handelt es sich um eine PID-Regelung. Ist zwar noch
in Arbeit. Aber darum geht es ja nicht!

Einige Anmerkungen:
1) Die BATCH-Datei (hier pid_demo1.bat) erzeugt aus jeder C-Datei eine
ASM-Datei (mit Hilfe des CC5X-Compilers): Wichtig ist dabei, dass Du
angibst wo sich der CC5X-Compiler befindet:
Der Eintrag zum Uebersetzen der Datei GLCD_BASIS_ROUTINEN.C lautet
daher so:
C:\Programme\bknd\CC5X\CC5X.EXE GLCD_BASIS_ROUTINEN.C
-IC:\Programme\bknd\CC5X\ -u -r -a -r2

Dies musst Du fuer jede C-Datei eingeben.

Wenn in den C-Dateien alles richtig ist (also Syntax und so) werden die
dazugehörigen ASM-Dateien erzeugt. Andernfalls wird die ev. schon
vorhanden ASM-Datei gelöscht. (Die OCC-Datei gibt Auskünft über die
aufgetretenen Fehler)

2) in der MPLAB - IDE müssen nun alle ASM-Dateien eingefügt werden
(nicht die C-Dateien) und die Datei 16f877.lkr Die Datei 16f877.lkr
musst du im MPLAB-Verzeichnis suchen und gemäß CC5x-Handbuch anpassen
oder Du nimmst meine (falls DU den PIC16F877 verwendest)

3) In der MPLAB-IDE Nun mit Project -> Build das Projekt kompelieren.
zunächst wird jede ASM-Datei kompeliert, wobei jede bestätigt werden
muss. Am Ende sollte das ganze etwa so aussehen: (wichtig ist die
letzte Meldung: BUILD SUCCEEDED)

Clean: Deleting intermediary and output files.
Clean: Deleted file "GLCD_BASIS_ROUTINEN.O".
Clean: Deleted file "GLCD_FONT5X7.O".
Clean: Deleted file "GLCD_FONT10X22.O".
Clean: Deleted file "pid_demo.O".
Clean: Deleted file "GLCD_FONT8X14.O".
Clean: Deleted file "PID.O".
Clean: Deleted file
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\PID_Demo1.HEX".
Clean: Deleted file
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\PID_Demo1.mcs".
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
GLCD_BASIS_ROUTINEN.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
GLCD_FONT5X7.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
GLCD_FONT10X22.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
pid_demo.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
GLCD_FONT8X14.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe"
PID.asm /o+ /e+ /l+ /x- /p16F877 /c+
Executing: "C:\Programme\Microchip\MPASM Suite\mplink.exe"
"16f877.lkr"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\GLCD_BASIS_ROUTINEN.O"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\GLCD_FONT5X7.O"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\GLCD_FONT10X22.O"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\pid_demo.O"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\GLCD_FONT8X14.O"
"D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\PID.O" /o "PID_Demo1.HEX"
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Errors    : 0

MP2COD 4.02, COFF to COD File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors    : 0

MP2HEX 4.02, COFF to HEX File Converter
Copyright (c) 2006 Microchip Technology Inc.
Errors    : 0

Loaded D:\Stefan\MPLAB_WORK\FUEP4_Dig_PID\PID_Demo1.COD.
BUILD SUCCEEDED: Wed May 03 10:30:38 2006


3) wie schon gesagt muss es eine HEADER-Datei geben, wo der Prozessor
definiert ist, alle externen Variablen Unterprogramme usw.
Bei mir heisst Diese Datei immer PROJEKT.H

4) bei dieser modularen Programmierung können als Übergabe- oder
Rückgabewerte der Unterprogramme NUR 8-Bit-Zahlen verwendet werden.
Wenn Du aber 16bit-Werte benötigst, so musst Du diese als externe
Variablen definieren (bei mir heissen diese zB. tmp_uebergabe_uns16

Jede Externe Variable muss nicht nur in der HEADER-Datei definiert
werden, sondern auch in einer (beliebigen) C-Datei.

mfg
Stefan B.

PS.: Es ist geplant, eine etwas übersichtlichere
(Schrit-für-Schritt)-Doku zu diesem Thema zu erstellen, aber zur Zeit
fehlt mir noch die Zeit, ausserdem ist das ganze für mich ebenso noch
etwas Neuland

von Marc (Gast)


Lesenswert?

Erst mal vielen Danke an dich von meiner Seite.

ICh werde das ganze geleich mal Probieren ob es funktioniert. Ich hab
jetzt schon versucht den Compieler zu wechslen aber das ist auch ein
Riesen aufwand das schon fertige Programm um zu schreiben.

von Marc (Gast)


Lesenswert?

Ich hab das jetzt mal versucht. Hat leider net gleich funktioniert. Das
Problem war, dass meine Verzeichnissstruktur zu lange war. Inzwischen
hat es funtioniert. Muss jetzt bloß den Quellcode von dir in meine
Anwendug einbaun und dann hoffe ich dass es alles funktioniert.
Noch eine Frage zu folgender Datei "PROJEKT.h":

Bezüglich der Protbelegung
--------------------------
Muss ich die Prots inder Headerfile deklarieren, damit Sievvon allen
*.c Files benutz werden können?

Bsp.: #pragma bit GLCD_WR @ PORTB.1

Bezüglich der pages
--------------------------
extern page0 void prog1(bank0 unsigned char zeichen);
extern page1 void prog2(void);

Gehe ich richtig in der Annahme dass sich "prog1" in der
Speicherzelle 0 befindet und "prog2" in Speicherzelle 1 befindet.
Meine 4 pages ( Speicherzellen ) bilden dann insgesamt 4k Speicher?

Werd mich jetzt mal ran machen und mein Programm auf verschiedene pages
um strukturieren.

Wenn ich des soweit auf der Reihe habe und meine Klausuren hinter mir.
Wäre ich gerne bereit einen anständige Step by Step Anleitung mit dir
zusammen zu schreiben. Was ich nämlich so im Netz gefunden habe ist
alles net grad der Renner.

von Stefan B. (Gast)


Lesenswert?

Bezüglich der Portbelegung:

In diesem Fall wäre es nicht notwendig die Ports in der PROJEKT.H -
Datei zu deklarieren, sondern direkt in GLCD_BASIS_ROUTINEN.C, da sie
nur hier verwendet werden. (Du kannst es ja probieren!) Der Grund ist,
dass ich diese Unterprogrammme (zur Ansteuerung des Grafik-LC-Displays)
auch bei anderen Projekten verwende, und da kann es schon mal sein, dass
ich das Display an einen anderen Port anschließe. Die C-Dateien möchte
ich nicht jedesmal anpassen. Die PROJEKT.H - Datei ist sowiese bei
jedem Projekt anderes, also warum dann nicht hier auch die
Port-Definitionen. Ausserdem ist es übersichtlicher, wenn bei einem
größeren Projekt, alle Ports an einer Stelle (also im PROJEKT.H)
angepasst werden. - Habe ich mich verständlich ausgedrückt?

 Am besten ist hier: einfach ausprobieren, und aus Fehlern lernen!
Durch das umgehen der 1k-Grenze ist man zu solchen maßnahmen gezwungen,
die vielleicht etwas umständlich wirken.

Ich denke schon, dass bei dir Prog1 in der Speicher-PAGE 0 steht und
prog2 in der PAGE1. So richtig kontrolliert habe ich dass noch nicht.
Da es mir auch egal ist, wo etwas steht. Eine Page ist nicht 1k sondern
2k (beim PIC16F877 hast Du 4 Pages zu je 2k also einen gesamten
Programmspeicher von 8k).

Wie schon gesagt: einfach viel ausprobieren und oft hilft auch das
CC5x-Handbuch.

mfg
Stefan B.

PS.: Wenn Du sonst noch Fragen hast frag, aber ich bin auch noch nicht
so ein Profi was den CC5X-Kompiler betrifft!

von Marc (Gast)


Lesenswert?

Hab jetzt bissle rumgespielt und wollte eine fertige *.HEX file erzwugen
aus dem MPLab heraus ohne den zwischenschritt über die ASM Files  zu
gehen.
Aber das Funktioniert nicht ganz. Hast du das schon mal versucht. Er
erzeugt mir die ASM Files der jeweiligen C Datei und bringt fehler wie
folgt:
--------------------------------------------------------------------
Clean: Deleting intermediary and output files.
Clean: Deleted file "pid_demo.O".
Clean: Deleted file "GLCD_BASIS_ROUTINEN.O".
Clean: Deleted file "GLCD_FONT5X7.O".
Clean: Deleted file "GLCD_FONT10X22.O".
Clean: Deleted file "PID.O".
Clean: Done.
Executing: "C:\Programme\bknd\CC5X\CC5X.EXE" pid_demo.c -CC
-fINHX8M -p16F877 -IC:\Programme\CC5Xfree -a -L -Q -V -FM +reloc.inc
CC5X Version 3.2K, Copyright (c) B Knudsen Data, Norway 1992-2006
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
pid_demo.c:
 Chip = 16F877
 RAM : -------- -------- -------- -------- ======== ======== ====----
.-------
  40h: -------- ------.. ******** ******** ******** ******** =*******
********
  80h: -------- -------- -------- -------- ******** ******** ********
********
  C0h: ******** ******** ******** ******** ******** ******** --------
--------
 100h: -------- -------- ******** ******** ******** ******** ********
********
 140h: ******** ******** ******** ******** ******** ******** --------
--------
 180h: -------- -------- ******** ******** ******** ******** ********
********
 1C0h: ******** ******** ******** ******** ******** ******** --------
--------
RAM usage: 49 bytes (21 local), 319 bytes free
 File 'pid_demo.fcs'
 Optimizing - removed 5 instructions (-1 %)
 File 'pid_demo.var'
 File 'pid_demo.asm'
 File 'pid_demo.lkr'
 File 'pid_demo.occ'
 Codepage 0 has  287 word(s) :  14 %
 Codepage 1 has    0 word(s) :   0 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 287 code words (3 %)
 * Estimated CODE SIZE of full optimization: 241 code words (-16 %)
 RESTRICTIONS on commercial usage applies as described in file
readme.txt
Starting assembler 'C:\Programme\Microchip\MPASM
Suite\mpasmwin.exe'
Message[302] L:\4K\PID_DEMO.ASM 682 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 688 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 691 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 693 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 696 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 699 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 708 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 728 : Register in operand not in bank
0.  Ensure that bank bits are correct.
Message[302] L:\4K\PID_DEMO.ASM 1010 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Executing: "C:\Programme\bknd\CC5X\CC5X.EXE"
GLCD_BASIS_ROUTINEN.C -CC -fINHX8M -p16F877 -IC:\Programme\CC5Xfree
-a -L -Q -V -FM +reloc.inc
CC5X Version 3.2K, Copyright (c) B Knudsen Data, Norway 1992-2006
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
GLCD_BASIS_ROUTINEN.C:
 Chip = 16F877
 RAM : -------- -------- -------- -------- ======== -----..- --------
--------
  40h: --****** ******** ******** ******** ******** ******** ********
********
  80h: -------- -------- -------- -------- ******** ******** ********
********
  C0h: ******** ******** ******** ******** ******** ******** --------
--------
 100h: -------- -------- ******** ******** ******** ******** ********
********
 140h: ******** ******** ******** ******** ******** ******** --------
--------
 180h: -------- -------- ******** ******** ******** ******** ********
********
 1C0h: ******** ******** ******** ******** ******** ******** --------
--------
RAM usage: 34 bytes (8 local), 334 bytes free
 File 'GLCD_BASIS_ROUTINEN.fcs'
 Optimizing - removed 0 instructions (-0 %)
 File 'GLCD_BASIS_ROUTINEN.var'
 File 'GLCD_BASIS_ROUTINEN.asm'
 File 'GLCD_BASIS_ROUTINEN.occ'
 Codepage 0 has  145 word(s) :   7 %
 Codepage 1 has    0 word(s) :   0 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 145 code words (1 %)
 * Estimated CODE SIZE of full optimization: 136 code words (-6 %)
 RESTRICTIONS on commercial usage applies as described in file
readme.txt
Starting assembler 'C:\Programme\Microchip\MPASM
Suite\mpasmwin.exe'
Executing: "C:\Programme\bknd\CC5X\CC5X.EXE" GLCD_FONT5X7.C -CC
-fINHX8M -p16F877 -IC:\Programme\CC5Xfree -a -L -Q -V -FM +reloc.inc
CC5X Version 3.2K, Copyright (c) B Knudsen Data, Norway 1992-2006
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
GLCD_FONT5X7.C:
 Chip = 16F877
 RAM : -------- -------- -------- -------- ===----- -------- --------
-----***
  40h: ******** ******** ******** ******** ******** ******** ********
********
  80h: -------- -------- -------- -------- ******** ******** ********
********
  C0h: ******** ******** ******** ******** ******** ******** --------
--------
 100h: -------- -------- ******** ******** ******** ******** ********
********
 140h: ******** ******** ******** ******** ******** ******** --------
--------
 180h: -------- -------- ******** ******** ******** ******** ********
********
 1C0h: ******** ******** ******** ******** ******** ******** --------
--------
RAM usage: 29 bytes (3 local), 339 bytes free
 File 'GLCD_FONT5X7.fcs'
 Optimizing - removed 1 instructions (-0 %)
 File 'GLCD_FONT5X7.var'
 File 'GLCD_FONT5X7.asm'
 File 'GLCD_FONT5X7.occ'
 Codepage 0 has  401 word(s) :  19 %
 Codepage 1 has    0 word(s) :   0 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 401 code words (4 %)
 * Estimated CODE SIZE of full optimization: 396 code words (-1 %)
 RESTRICTIONS on commercial usage applies as described in file
readme.txt
Starting assembler 'C:\Programme\Microchip\MPASM
Suite\mpasmwin.exe'
Message[302] L:\4K\GLCD_FONT5X7.ASM 70 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 76 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 78 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 81 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 82 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 90 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 95 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT5X7.ASM 96 : Register in operand not in
bank 0.  Ensure that bank bits are correct.
Executing: "C:\Programme\bknd\CC5X\CC5X.EXE" GLCD_FONT10X22.C -CC
-fINHX8M -p16F877 -IC:\Programme\CC5Xfree -a -L -Q -V -FM +reloc.inc
CC5X Version 3.2K, Copyright (c) B Knudsen Data, Norway 1992-2006
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
GLCD_FONT10X22.C:
 Chip = 16F877
 RAM : -------- -------- -------- -------- ====---- -------- --------
------**
  40h: ******** ******** ******** ******** ******** ******** ********
********
  80h: -------- -------- -------- -------- ******** ******** ********
********
  C0h: ******** ******** ******** ******** ******** ******** --------
--------
 100h: -------- -------- ******** ******** ******** ******** ********
********
 140h: ******** ******** ******** ******** ******** ******** --------
--------
 180h: -------- -------- ******** ******** ******** ******** ********
********
 1C0h: ******** ******** ******** ******** ******** ******** --------
--------
RAM usage: 30 bytes (4 local), 338 bytes free
 File 'GLCD_FONT10X22.fcs'
 Optimizing - removed 2 instructions (-0 %)
 File 'GLCD_FONT10X22.var'
 File 'GLCD_FONT10X22.asm'
 File 'GLCD_FONT10X22.occ'
 Codepage 0 has  476 word(s) :  23 %
 Codepage 1 has    0 word(s) :   0 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 476 code words (5 %)
 * Estimated CODE SIZE of full optimization: 468 code words (-1 %)
 RESTRICTIONS on commercial usage applies as described in file
readme.txt
Starting assembler 'C:\Programme\Microchip\MPASM
Suite\mpasmwin.exe'
Message[302] L:\4K\GLCD_FONT10X22.ASM 229 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 235 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 237 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 240 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 241 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 249 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 254 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Message[302] L:\4K\GLCD_FONT10X22.ASM 255 : Register in operand not
in bank 0.  Ensure that bank bits are correct.
Executing: "C:\Programme\bknd\CC5X\CC5X.EXE" PID.C -CC -fINHX8M
-p16F877 -IC:\Programme\CC5Xfree -a -L -Q -V -FM +reloc.inc
CC5X Version 3.2K, Copyright (c) B Knudsen Data, Norway 1992-2006
 --> FREE edition, 8-16 bit int, 24 bit float, 1k code, reduced optim.
PID.C:
 Chip = 16F877
 RAM : -------- -------- -------- -------- =====... .---.... ........
.......*
  40h: ******** ******** ******** ******** ******** ******** ********
********
  80h: -------- -------- -------- -------- ******** ******** ********
********
  C0h: ******** ******** ******** ******** ******** ******** --------
--------
 100h: -------- -------- ******** ******** ******** ******** ********
********
 140h: ******** ******** ******** ******** ******** ******** --------
--------
 180h: -------- -------- ******** ******** ******** ******** ********
********
 1C0h: ******** ******** ******** ******** ******** ******** --------
--------
RAM usage: 31 bytes (5 local), 337 bytes free
Warning[1] L:\4k\PID.C 189 : Duplicate inline multiplication (math
library may save code, option -wi removes warning)
Warning[2] L:\4k\PID.C 203 : Duplicate inline multiplication (math
library may save code, option -wi removes warning)
 File 'PID.fcs'
 Optimizing - removed 1 instructions (-0 %)
 File 'PID.var'
 File 'PID.asm'
 File 'PID.occ'
 Codepage 0 has    1 word(s) :   0 %
 Codepage 1 has  633 word(s) :  30 %
 Codepage 2 has    0 word(s) :   0 %
 Codepage 3 has    0 word(s) :   0 %
Total of 634 code words (7 %)
 * Estimated CODE SIZE of full optimization: 489 code words (-22 %)
 RESTRICTIONS on commercial usage applies as described in file
readme.txt
Starting assembler 'C:\Programme\Microchip\MPASM
Suite\mpasmwin.exe'
Executing: "C:\Programme\Microchip\MPASM Suite\MPLink.exe"
"16f877.lkr" "L:\4k\pid_demo.O" "L:\4k\GLCD_BASIS_ROUTINEN.O"
"L:\4k\GLCD_FONT5X7.O" "L:\4k\GLCD_FONT10X22.O"
"L:\4k\PID.O" /o "PID_Demo1.HEX"
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - symbol '_LcJA' has multiple definitions.
Errors    : 1

Link step failed.
BUILD FAILED: Wed May 03 15:54:58 2006
--------------------------------------------------------------------
An was kann das liegen, weil es wäre ja shcon eine Erleichterung alles
vom MPlab mach zu lassen und nicht erst Hex Files zu erzeugen.

Grüße Marc

von Stefan B. (Gast)


Lesenswert?

Hallo Marc!

Nein direkt mit MPLAB habe ich es auch noch nicht hinbekommen. Nachdem
die "umständliche" Methode mit der BAT-Datei funktioniert habe ich
mir darüber auch keine Gedanken mehr gemacht. Aber Du hast schon recht,
wäre um einiges komfortabler.

Heisst das jetzt, dass bei dir die Methode mit der BAT-Datei
funktioniert, auch wenn Du (kleine) Änderungen an den C-Code vornimmst.
Kannst Du es dann kompelieren und eine HEX-Datei erzeugen?

Übrigens: Das Ergebnis der kompelierung kannst Du ja in den .LST-Files
kontrollieren.

Ist dein eigentliches Problem nun gelöst, oder gibt es da noch
schwierigkeiten?

mfg
Stefan B.
(Linz, Österreich)

von Marc (Gast)


Lesenswert?

Ich muss jetzt erst mal noch mein Programm umschreiben und dann kann ich
dir bescheid geben, ob all meine Fragen beantwortet sind. G
Danke dir aber auf jedenfall mal für deine Hilfe.

Grüße Marc

von Stefan B. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Marc!

Ich habe mal begonnen meine Erkenntnisse zum CC5X-Compiler (beim
Umgehen der 1k-Grenze) niederzuschreiben. Allerdings nur was die
Programmiertechniken betrifft. Vielleicht hilft Die dass ja weiter

mfg
Stefan B.
(Linz, Österreich)

von Marc (Gast)


Lesenswert?

Muss dich noch mal was Frage.
Wie kann ich Testen ob meine Teilprogramme funktionieren? Muss ich die
einzel Compilieren?

Bekomm immer den Fehler:
-------------------------------------
//Delay1ms(1000);
}
^------
Error[1] L:\SLSProgHead\SLSMain.c 153 : Function 'LCDZeile0' is not
defined
 (The application contains a call to a function that is not defined)

von Marc (Gast)


Lesenswert?

Hallo Stephan.

Das mit dem Testen hab ich raus! Einfach die *.bat ausführen und dann
seh ich ob die ASM Files ok sind.

Jetzt brauch ich noch mal deine Hilfe. Ich hab jetzt meine große Datei
unterteil. Hab im ersten Schritt einfach meine pic Initialisierung in
eine Extra Datei geschrieben(TRIS,PORTS,ADCON usw.). Beim erzeugen der
ASM kommen keine Fehler. Wenn ich beide ASM im MPLab linken will kommt
immer ein Fehler.
=====================================================================
Clean: Deleting intermediary and output files.
Clean: Deleted file "INIT.O".
Clean: Deleted file "SLSMain.O".
Clean: Done.
Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe"
INIT.asm /o+ /e+ /l+ /x- /p16F877 /c+

Executing: "C:\Programme\Microchip\MPASM Suite\MPAsmWin.exe"
SLSMain.asm /o+ /e+ /l+ /x- /p16F877 /c+

Executing: "C:\Programme\Microchip\MPASM Suite\MPLink.exe"
"16f877.lkr" "L:\SLSProg2\INIT.O" "L:\SLSProg2\SLSMain.O" /o
"SLS.HEX" /kC:\Programme\Microchip\MPASM Suite\LKR
MPLINK 4.02, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - unrecognized input: Suite\LKR
Errors    : 1

Link step failed.
BUILD FAILED: Thu May 04 23:25:21 2006
=====================================================================
Ich gehe davon aus, dass die *.lkr irgend wie net stimmt bzw. ich für
meinen Fall etwas ändern muss. Habs probiert und probiert aber es will
net.

Grüße Marc

von Marc (Gast)


Lesenswert?

Habs geschaft ein dummer kleiner Fehler mit großer Auswirkung. Hatte bei
der *.lkr File nen Falschen Pfad im MPLAB.

OK somit hat isch meine Frage geklärt.

DANKE dir. G

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.