Problem med kod från "Application Maestro"
Problem med kod från "Application Maestro"
Hallå!
Introduktion:
Då var det dags för lite PICande igen då. Den här gången tänkte jag prata med en IR-termometer över SMBus. Aldrig pratat SMBus förr eller ens använt MSSP-modulen i PICarna så det blir ju alltid lite spännande.
Har suttit idag och trökat en del med en kod som Microchips "Application Maestro" spottat ur sig. Har aldrig använt den förut heller men det verkar smidigt om man bara får det att fungera. För er som inte provat det så är det typ en kodgenerator. I mitt fall så väljer jag att jag vill använda MSSPmodulen i I2C Mastermode som kodmodul och sedan så ställer jag in busfrekvens och lite andra saker och så genererar programmet diverse inc/asm-filer som man inkluderar i sitt projekt och sedan skall det bara vara att tuta och köra... men riktigt så kul blev det alltså inte för mig.
Jag följer steg-för-steg-beskrivningen i medföljande .pdf-fil för vilka filer som skall inkluderas osv...
Problem/Felmeddelande:
MPLINK säger vid build-försöket:
"Error - could not find definition of symbol 'I2CMINTISR' in file './LED.o'"
LED.asm är "main-asm-filen".
Har aldrig stött på det här felet förut så jag tänkte bara höra i fall någon annan fått det (kanske i samband med Application Maestro) och kan dela med sig om hur det löstes.
Nu behöver min mosiga hjärna sömn... God natt
MVH
/Tottish
Introduktion:
Då var det dags för lite PICande igen då. Den här gången tänkte jag prata med en IR-termometer över SMBus. Aldrig pratat SMBus förr eller ens använt MSSP-modulen i PICarna så det blir ju alltid lite spännande.
Har suttit idag och trökat en del med en kod som Microchips "Application Maestro" spottat ur sig. Har aldrig använt den förut heller men det verkar smidigt om man bara får det att fungera. För er som inte provat det så är det typ en kodgenerator. I mitt fall så väljer jag att jag vill använda MSSPmodulen i I2C Mastermode som kodmodul och sedan så ställer jag in busfrekvens och lite andra saker och så genererar programmet diverse inc/asm-filer som man inkluderar i sitt projekt och sedan skall det bara vara att tuta och köra... men riktigt så kul blev det alltså inte för mig.
Jag följer steg-för-steg-beskrivningen i medföljande .pdf-fil för vilka filer som skall inkluderas osv...
Problem/Felmeddelande:
MPLINK säger vid build-försöket:
"Error - could not find definition of symbol 'I2CMINTISR' in file './LED.o'"
LED.asm är "main-asm-filen".
Har aldrig stött på det här felet förut så jag tänkte bara höra i fall någon annan fått det (kanske i samband med Application Maestro) och kan dela med sig om hur det löstes.
Nu behöver min mosiga hjärna sömn... God natt
MVH
/Tottish
Re: Problem med kod från "Application Maestro"
Och var finns "I2CMINTISR" ?
Det är inte så att den kanske finns i någon annan fil i projektet än LED.ASM ?
Och alltså borde definieras med EXTERN ?
Det är inte så att den kanske finns i någon annan fil i projektet än LED.ASM ?
Och alltså borde definieras med EXTERN ?
Re: Problem med kod från "Application Maestro"
Enda stället som jag ser att "I2CMINTISR" finns är i includefilen som AppMaestro spottat ur sig. Den är inkluderad i projektet med kommandot:
#include "I2CMInt.inc"
Överst i koden precis under "MAIN CODE"
I den filen lyder det första kodstycket:
I2CMIntISR förefaller alltså vara definierad som EXTERN. Kommenterar jag bort raden "EXTERN I2CMIntISR" så får jag samma felmeddelande som tidigare men då är det I2CMIntInit (nästa rad) som den inte hittar i LED.o.
Tog med hela kodstycket eftersom jag inte riktigt förstår mig på dessa "#ifndef".
Varför klagar den inte över att den inte hittar vI2CMIntStatus som står överst? Tyder det på att den hoppar över det stycket och går direkt på "GLOBAL vI2CMIntStatus" efter #else?
MVH
/Tottish
#include "I2CMInt.inc"
Överst i koden precis under "MAIN CODE"
I den filen lyder det första kodstycket:
Kod: Markera allt
;
#ifndef __I2CMInt_INC ;Check if inc file already included
;
#define __I2CMInt_INC ;
;
;***********************************************;
#include "I2CMInt.Def" ;
;
#ifndef I2CMInt_Source ;
;
#include "P18xxx.inc" ;
#include "P16xxx.inc" ;
;***********************************************;
EXTERN vI2CMIntStatus ;
;
EXTERN I2CMIntISR ;
EXTERN I2CMIntInit ;
EXTERN I2CMIntStart ;
EXTERN I2CMIntReStart ;
EXTERN I2CMIntStop ;
EXTERN I2CMIntPut ;
EXTERN I2CMIntGet ;
EXTERN I2CMIntSetGetCount ;
EXTERN I2CMIntDiscardBuf ;
;
;***********************************************;
#else ;
;
GLOBAL vI2CMIntStatus ;
;
;***********************************************;
Tog med hela kodstycket eftersom jag inte riktigt förstår mig på dessa "#ifndef".
Varför klagar den inte över att den inte hittar vI2CMIntStatus som står överst? Tyder det på att den hoppar över det stycket och går direkt på "GLOBAL vI2CMIntStatus" efter #else?
MVH
/Tottish
Re: Problem med kod från "Application Maestro"
Felet är inget specifikt för den där applikationen, det är ett generellt fel.
EXTERN betyder alltså att det är en funktion/rutin som ligger i en annan fil.
Felet du får är vid länkningen, du använder en funktion som inte finns i nån av de filer som länkas.
Antingen finns den i en separat asm-fil som du måste lägga till i projektet eller så finns det i nåt library som du måste inkludera.
Att den inte klagar på den första beror kanske på att den aldrig används i koden?
EXTERN betyder alltså att det är en funktion/rutin som ligger i en annan fil.
Felet du får är vid länkningen, du använder en funktion som inte finns i nån av de filer som länkas.
Antingen finns den i en separat asm-fil som du måste lägga till i projektet eller så finns det i nåt library som du måste inkludera.
Att den inte klagar på den första beror kanske på att den aldrig används i koden?
Re: Problem med kod från "Application Maestro"
"Disable Case sensitivity" är ikryssad.
Tror jag lägger ner det här med Application Maestro. Har lite svårt att lösa de här problemen. Får bli the old fashion way istället med manuell kodning vid inställningen av MSSP-modulen.
Startar nog en ny tråd (med mer relevant titel) om det om jag får problem där.
Tack för visat intresse!
MVH
/Tottish
Tror jag lägger ner det här med Application Maestro. Har lite svårt att lösa de här problemen. Får bli the old fashion way istället med manuell kodning vid inställningen av MSSP-modulen.
Startar nog en ny tråd (med mer relevant titel) om det om jag får problem där.
Tack för visat intresse!
MVH
/Tottish
Re: Problem med kod från "Application Maestro"
Om jag fattar rätt så har du en katalog med allt som borde behövas
för att bygga ihop projektet. Du kanske kan zippa upp det och slänga
upp det någon stans så att någon annan kan test-bygga det ?
Antagligen är det något skitgrej som inte är helt uppenbart p.g.a
av attd ett saknas något i din beskrivning av det hela...
> Enda stället som jag ser att "I2CMINTISR" finns är i includefilen som AppMaestro spottat ur sig.
Symbolen borde rimligtsivs även finnas i en annan källkodsfil som namn på en subrutin...
för att bygga ihop projektet. Du kanske kan zippa upp det och slänga
upp det någon stans så att någon annan kan test-bygga det ?
Antagligen är det något skitgrej som inte är helt uppenbart p.g.a
av attd ett saknas något i din beskrivning av det hela...
> Enda stället som jag ser att "I2CMINTISR" finns är i includefilen som AppMaestro spottat ur sig.
Symbolen borde rimligtsivs även finnas i en annan källkodsfil som namn på en subrutin...
Re: Problem med kod från "Application Maestro"
Jag har tyvärr ingen server att slänga upp det på men om någon är villig att hjälpa mig att bygga ihop det hela så går det bra att skicka en mailadress så skickar jag över ZIP-filen.
MVH
/Tottish
MVH
/Tottish
Re: Problem med kod från "Application Maestro"
Nej, jag får det inte att "bygga".
Det krashar på div symboler som jag inte kan hitta bland filerna som var med i ZIP'en.
T.ex "_I2CM_BAUD_COUNT" som används i 16I2CMI.ASM, men den definieras ingenstans.
Kört fast. Antingen är det inte komplett eller så har Maestro någon bugg.
Jag fick även lägga till 16F886 i den genrella PIC16 filen (P16XXX.INC), gjorde en
kopia av 16F877A och justerade lite. Men det räckte inte...
Jag skulle föreslå Microchip support direkt eller deras eget support/användar forum.
Jag har aldrig kört Maestro direkt, så jag vet inte om det kan vara något
där som gick fel...
Det krashar på div symboler som jag inte kan hitta bland filerna som var med i ZIP'en.
T.ex "_I2CM_BAUD_COUNT" som används i 16I2CMI.ASM, men den definieras ingenstans.
Kört fast. Antingen är det inte komplett eller så har Maestro någon bugg.
Jag fick även lägga till 16F886 i den genrella PIC16 filen (P16XXX.INC), gjorde en
kopia av 16F877A och justerade lite. Men det räckte inte...
Jag skulle föreslå Microchip support direkt eller deras eget support/användar forum.
Jag har aldrig kört Maestro direkt, så jag vet inte om det kan vara något
där som gick fel...