Sida 1 av 2
MPLAB och P16F688.INC problem.
Postat: 25 september 2007, 18:13:31
av opatagio
Tänkte testa en liten 16F688 och gjorde ett enkelt program. Dock så klagar MPLAB på P16F688.INC.
Felmeddelandet lyder:
Kod: Markera allt
Error[111] D:\PROJECTS\UART\16F688\P16F688.INC 182 : Missing symbol
Halting build on first failure as requested.
Och hänvisar till rad 182 där följande finns.
Kod: Markera allt
;----- WDTCON Bits --------------------------------------------------------
WDTPS3 EQU H'0004'
WDTPS2 EQU H'0003'
WDTPS1 EQU H'0002'
WDTPS0 EQU H'0001'
SWDTEN EQU H'0000'
Någon som vet om det är bug i MPLAB, fel i P16F688.INC eller har något att göra med min kod:
Kod: Markera allt
LIST P=16F688
#include <P16F688.INC>
errorlevel -207, -302, -306
; -207 = Label not in column
; -302 = Ensure bank bits
; -306 = Crossing page-boundry.
__CONFIG _INTOSC & _WDT_OFF & _CPD_OFF & _CP_OFF & _PWRTE_ON & _MCLRE_ON
Resten av koden är bara definitioner.
Tack på förhand.
Postat: 25 september 2007, 19:43:04
av sodjan
Jag får inte felet.
Visa en *komplett* kodsnutt som har samma fel.
Postat: 25 september 2007, 20:32:30
av opatagio
Här kommer hela snutten
Kod: Markera allt
LIST P=16F688
#include <P16F688.INC>
errorlevel -207, -302, -306 ; -207 = Label not in column
; -302 = Ensure bank bits
; -306 = Crossing page-boundry.
__CONFIG _INTOSC & _WDT_OFF & _CPD_OFF & _CP_OFF & _PWRTE_ON & _MCLRE_ON
; Memory allocation
Mem EQU h'20'
d1 EQU Mem+1
d2 EQU Mem+2
d3 EQU Mem+3
; Definitions
#define LED1 PORTC,2
; init goes here
; start-up and isr goes here
; main goes here
END
Postat: 25 september 2007, 22:05:53
av sodjan
Nop, jag får inte felet (MPLAB 7.62).
Postat: 25 september 2007, 22:29:51
av opatagio
Ok, jag sitter med MPLAB 7.60. Ska testa och installera 7.62 och se om det hjälper.
Postat: 25 september 2007, 22:38:33
av sodjan
Kollade just release notes för MPLAB 7.62, där står bl.a
(MPASM-134/MPASM-137)
Projects do not build on PIC16F688. An error is displayed which points to line number 182 in PIC16F688.inc.
Så där har du svaret...
Innan du lägger in hela 7.62 så skulle du kunna prova att bara ta INC filen.
Om du mailar mig så kommer min P16F688.INC (från 7.62) i retur...
Postat: 26 september 2007, 19:35:50
av opatagio
Tackar Sodjan. Det fungerar ypperligt med den 16F688.INC jag fick av dig. Drar därmed slutsatsen att den medföljande INC-filen från MPLAB 7.60 var felaktig. Men nu lirar allt som det ska.
Postat: 6 oktober 2007, 19:08:30
av squiz3r
Hej, Inte riktigt rätt rubrik, men jag tycker att det är onödigt att göra en ny tråd och du verkar ha löst ditt problem, så jag tar och lånar din tråd lite
När jag ska bygga ett projekt i MPLAB till en PIC16F628A så får jag ett felmedelande från "MPLINK 4.05, LINKER" som lyder såhär:
Error - section '.org_0' can not fit the absolute section '.org_0' start = 0x00000000, Errors: 1
Jag har ingen aning om vad det betyder, så är det någon som vet vad som menas? Det är lite svårt att felsöka utan att ha en aning om var man ska göra det, men "org_0" då menar de kanske den raden i programmet där jag har skrivit "org 0x0000" ??
Mvh. Daniel ANderson
Postat: 6 oktober 2007, 19:13:33
av sodjan
Ja, det *betyder* exakt vad det står...
Vad det *beror* på ser man om man ser koden...
Postat: 6 oktober 2007, 19:36:09
av Icecap
Ett snabbt tips som sodjan gav mig rörande relokerbar kod: På adress 0x000 och 0x004 är det enbart plats för 1 instruktion, denna bör vara "goto xxx", detta kan mycket lätt ge detta fel.
Postat: 6 oktober 2007, 19:38:49
av squiz3r
"det *betyder* exakt vad det står.."
hmm..

Tämligen obegripligt för mig
"sektion '.org_0' passar inte den ovillkorliga sektionen '.org_0' start = 0x00000000, Fel: 1"
Hmm.. Så blir det om man föröker översätta en mening som man inte förstår
Ska jag lägga upp hela koden eller bara en liten bit??
Mvh.
Edit: Icecap: hmm.. Ska ta en titt på det!
Postat: 6 oktober 2007, 19:56:59
av squiz3r
Nu byatde jag ut "org 0x0000" till:
reset_vector CODE 0x000
goto start1
start2 CODE
start1
Och då fungerade det, men jag hänger inte riktigt med på vad de gör
Mvh.
Postat: 6 oktober 2007, 20:53:18
av Icecap
I INC-filen står det att adress 0x000 och 0x004 bara kan ha plats till 1 instruktion. Detta säkrar att man inte gör en snudd på adress 0x000 som fyller upp för 0x004 och därmed kan ställa till det ordentligt för interrupten.
Jag fattade inte heller varför men efter lite funderande var det ganska självklart faktisk.
Postat: 6 oktober 2007, 20:59:44
av squiz3r
Jag har inte riktigt förstått vad 0x0000 och 0x0004 är för nått,
0x0004 är väll där den ska starta när ett interupt kommer, och 0x0000 är var den ska starta när PIC'en startas om (eller startas), stämmer det??

Postat: 6 oktober 2007, 21:08:48
av Icecap
Exakt.