Adattamento esempio CDC serial emulator a nuovo PIC
Salve a tutti,
questo weekend sto provando (ahimè senza successo) ad impiegare il framework USB offerto dalla Microchip per emulare una porta seriale con un PIC .
l'ambiente di sviluppo è MPLABX con compilatore XC8 e ho deciso di partire dall'esempio denominato CDC_serial_emulator presente come esempio nella libreria e funzionante per un PIC 18F14K50 per adattarlo a un PIC18F4550.
Ho duplicato tutti i file in apposita cartella ed ho iniziato a collegare a un nuovo progetto i file header di riferimento per USB e classe CDC.
Una volta finito di includere tutti gli header che mi apparivano necessari ho provato la compilazione con una funzione main vuota (senza righe di codice o comandi) e sembrava andar bene ...
Ho fatto questo passo perché ho notato che i file header son gestiti un po' come scatole cinesi nelle librerie Microchip.
successivamente ho provato un esempio di codice molto banale che riporto di seguito:
Sfortunatamente a questo punto va tutto in malora e ottengo il seguente errore di compilazione
chiedo a chi possa aiutarmi un eventuale chiarimento sulla natura degli errori, e inoltre se conoscete una guida
valida alla creazione di un proprio progetto tipo per l'uso della classe CDC.
Ho già letto la AN956 della Microchip ma è poco esaustiva per quel che riguarda le impostazioni (inoltre credo che faccia riferimento a vecchie versioni di librerie Microchip).
questo weekend sto provando (ahimè senza successo) ad impiegare il framework USB offerto dalla Microchip per emulare una porta seriale con un PIC .
l'ambiente di sviluppo è MPLABX con compilatore XC8 e ho deciso di partire dall'esempio denominato CDC_serial_emulator presente come esempio nella libreria e funzionante per un PIC 18F14K50 per adattarlo a un PIC18F4550.
Ho duplicato tutti i file in apposita cartella ed ho iniziato a collegare a un nuovo progetto i file header di riferimento per USB e classe CDC.
Una volta finito di includere tutti gli header che mi apparivano necessari ho provato la compilazione con una funzione main vuota (senza righe di codice o comandi) e sembrava andar bene ...
Ho fatto questo passo perché ho notato che i file header son gestiti un po' come scatole cinesi nelle librerie Microchip.
successivamente ho provato un esempio di codice molto banale che riporto di seguito:
- Codice: Seleziona tutto
#include <xc.h>
#include "USB.h"
#include "usb_device.h"
#include "usb_device_cdc.h"
void main(void) {
if(!USBUSARTIsTxTrfReady()){
putsUSBUSART("hello");
}
return;
}
Sfortunatamente a questo punto va tutto in malora e ottengo il seguente errore di compilazione
- Codice: Seleziona tutto
make -f nbproject/Makefile-default.mk SUBPROJECTS= .build-conf
make[1]: Entering directory 'C:/PIC/esperimenti/PROGRAMMI IN C/PIC 18F4550/04_emulatore seriale USB/Emularore USB Seriale.X'
make -f nbproject/Makefile-default.mk dist/default/debug/Emularore_USB_Seriale.X.debug.elf
make[2]: Entering directory 'C:/PIC/esperimenti/PROGRAMMI IN C/PIC 18F4550/04_emulatore seriale USB/Emularore USB Seriale.X'
"C:\Program Files (x86)\Microchip\xc8\v1.35\bin\xc8.exe" --pass1 --chip=18F14K50 -Q -G -D__DEBUG=1 --debugger=none --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" -obuild/default/debug/main.p1 main.c
main.c:16: warning: (359) illegal conversion between pointer types
pointer to const unsigned char -> pointer to unsigned char
"C:\Program Files (x86)\Microchip\xc8\v1.35\bin\xc8.exe" --chip=18F14K50 -G -mdist/default/debug/Emularore_USB_Seriale.X.debug.map -D__DEBUG=1 --debugger=none --double=24 --float=24 --emi=wordwrite --opt=default,+asm,+asmfile,-speed,+space,-debug --addrqual=ignore --mode=free -P -N255 --warn=0 --asmlist --summary=default,-psect,-class,+mem,-hex,-file --output=default,-inhx032 --runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,-plib --output=-mcof,+elf:multilocs --stack=compiled:auto:auto:auto "--errformat=%f:%l: error: (%n) %s" "--warnformat=%f:%l: warning: (%n) %s" "--msgformat=%f:%l: advisory: (%n) %s" --memorysummary dist/default/debug/memoryfile.xml -odist/default/debug/Emularore_USB_Seriale.X.debug.elf build/default/debug/main.p1
Microchip MPLAB XC8 C Compiler (Free Mode) V1.35
Build date: Jul 7 2015
Part Support Version: 1.35
Copyright (C) 2015 Microchip Technology Inc.
License type: Node Configuration
:: warning: (1273) Omniscient Code Generation not available in Free mode
[b]:0: error: (500) undefined symbols:[/b]
_cdc_trf_state(dist/default/debug\Emularore_USB_Seriale.X.debug.obj) _putsUSBUSART(dist/default/debug\Emularore_USB_Seriale.X.debug.obj)
(908) exit status = 1
[b]nbproject/Makefile-default.mk:113: recipe for target 'dist/default/debug/Emularore_USB_Seriale.X.debug.elf' failed[/b]
make[2]: Leaving directory 'C:/PIC/esperimenti/PROGRAMMI IN C/PIC 18F4550/04_emulatore seriale USB/Emularore USB Seriale.X'
[b]nbproject/Makefile-default.mk:78: recipe for target '.build-conf' failed[/b]
make[1]: Leaving directory 'C:/PIC/esperimenti/PROGRAMMI IN C/PIC 18F4550/04_emulatore seriale USB/Emularore USB Seriale.X'
[b]nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed[/b]
[i]make[2]: *** [dist/default/debug/Emularore_USB_Seriale.X.debug.elf] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2, total time: 1s)[/i]
chiedo a chi possa aiutarmi un eventuale chiarimento sulla natura degli errori, e inoltre se conoscete una guida
valida alla creazione di un proprio progetto tipo per l'uso della classe CDC.
Ho già letto la AN956 della Microchip ma è poco esaustiva per quel che riguarda le impostazioni (inoltre credo che faccia riferimento a vecchie versioni di librerie Microchip).