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).

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)


