a ver, que he estado liado soldando el art2003 y con otras cosillas, perdona que haya tardado tanto en contestar. Muchas gracias de todas maneras, lord lafabre. El codigo del programa principal es:
#include <p18cxxx.h> //Incluye las definiciones de los registros de configuración
//Esta situado en la carpeta del compilador, al igual que 18F2550.lkr
#include "system ypedefs.h" // Required
#include "systemusbusb.h" // Required
#include "io_cfg.h" // Required
#include "useruser.h" // Modifiable
//Configuración del PIC (según "PIC18 CONFIGURATION SETTINGS ADDENDUM"
:
//CPUDIV = OSC1_PLL2 =>[OSC1/OSC2 Src: /1][96MHz PLL Src: /2]
//USBDIV = 2 => Clock source from 96MHz PLL/2
//FOSC = HSPLL_HS => HS oscillator, PLL enabled, HS used by USB
//PLLDIV = 5 => Divide by 5 (20MHz input)
// El esquema de frecuencia esta en la pagina 24 del datasheet
// Se deducen 48 MHz de reloj
//VREGEN = ON => USB Voltage Regulator Enable
//MCLRE = ON => MCLR Enable / Reset.Si se desactiva se puede usar el puerto E
//DEBUG = OFF => Background Debugger disable
//LVP = OFF => Low Voltage ICSP disable
//WDT = OFF => Watchdog Timer HW Disabled - SW Controlled
//CCP2MX = ON => CCP2 input/output is multiplexed with RC1 /CCP2:Capture 2 input/Compare 2 output/PWM 2 output.
#pragma config CPUDIV = OSC1_PLL2, USBDIV = 2,FOSC = HSPLL_HS,PLLDIV = 5,VREGEN = ON
#pragma config MCLRE = ON,DEBUG = OFF,LVP = OFF,WDT = OFF,CCP2MX = ON
//#pragma config MCLRE = ON,PBADEN = ON,STVREN = ON,DEBUG = OFF,LPT1OSC = OFF
//#pragma config FCMEM = OFF,IESO = OFF,BOR = ON,WDT = OFF,LVP = OFF,CCP2MX = ON
/** V A R I A B L E S ********************************************************/
#pragma udata //especifica una sección con variables estáticas no inicializadas, que se almacenará en la memoria de datos
/** P R I V A T E P R O T O T Y P E S ***************************************/
static void InitializeSystem(void);
void USBTasks(void);
/** D E C L A R A T I O N S **************************************************/
#pragma code
/******************************************************************************
* Function: void main(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: Main program entry point.
*
* Note: None
*****************************************************************************/
void main(void)
{
InitializeSystem();
while(1)
{
USBTasks(); // USB Tasks
ProcessIO(); // See useruser.c & .h
}//end while
}//end main
/******************************************************************************
* Function: static void InitializeSystem(void)
*
* PreCondition: None
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: InitializeSystem is a centralize initialization routine.
* All required USB initialization routines are called from
* here.
*
* User application initialization routine should also be
* called from here.
*
* Note: None
*****************************************************************************/
static void InitializeSystem(void)
{
ADCON1 |= 0x0F; // Default all pins to digital
mInitializeUSBDriver(); // See usbdrv.h
UserInit(); // See user.c & .h
}//end InitializeSystem
/******************************************************************************
* Function: void USBTasks(void)
*
* PreCondition: InitializeSystem has been called.
*
* Input: None
*
* Output: None
*
* Side Effects: None
*
* Overview: Service loop for USB tasks.
*
* Note: None
*****************************************************************************/
void USBTasks(void)
{
/*
* Servicing Hardware
*/
USBCheckBusStatus(); // Must use polling method.Ver usbdrv.c
if(UCFGbits.UTEYE!=1)
USBDriverService(); // Interrupt or polling method.Ver usbdrv.c
#if defined(USB_USE_CDC)
CDCTxService(); //ver cdc.c
#endif
}// end USBTasks
/** EOF main.c ***************************************************************/
es decir, practicamente el que viene con el programa sixca. No voy a poner todos los modulos, pq practicamente no los he tocado. Solo el user.c, y el de incializacion de entradas:
#ifndef IO_CFG_H
#define IO_CFG_H
/** I N C L U D E S *************************************************/
#include "autofilesusbcfg.h"
/** T R I S *********************************************************/
#define INPUT_PIN 1
#define OUTPUT_PIN 0
/** U S B ***********************************************************/
#define tris_usb_bus_sense TRISAbits.TRISA1 // Input
#if defined(USE_USB_BUS_SENSE_IO) //Seria en usbcfg.h.No definido actualmente
#define usb_bus_sense PORTAbits.RA1
#else
#define usb_bus_sense 1
#endif
#define tris_self_power TRISAbits.TRISA2 // Input
#if defined(USE_SELF_POWER_SENSE_IO) //Seria en usbcfg.h.No definido actualmente
#define self_power PORTAbits.RA2
#else
#define self_power 1
#endif
/** OUTPUT ***********************************************************/
#define mInitOutput() LATB = 0X00 ; TRISB = 0X00
/** INPUT *****************************************************/
#define mInitInput() TRISA=0xFF; ;
#define InPut1 PORTAbits.RA0
#define InPut2 PORTAbits.RA1
#define InPut3 PORTAbits.RA2
#define InPut4 PORTAbits.RA3
#define InPut5 PORTAbits.RA4
/** ADC ***********************************************************/
// AD Clock = Fosc/4, Acq.Time = 6TAD
// Right justified
//Ya que no usare ningún conversor A/D, lo anulo con adcon0 =0
#define mInitADC() ADCON0=0x00;ADCON2=0x3C;ADCON2bits.ADFM = 1;
#endif //IO_CFG_H
el user no lo pongo (realmente lo unico que hara el pic sera de puente de datos, sin procesamiento, son cosas como LATB = DATA, LATB = PORTA o output_buffer
- = tempoUsb;
if(mUSBUSARTIsTxTrfReady())
{
mUSBUSARTTxRam((byte*)output_buffer,5);
}
) pq ya ocupa mucho, y el tipo de fallo ( su dispositivo ha tenido un mal funcionamiento y puede que no funcione) no creo que tenga nada que ver.
Les agradeceria mucho su ayuda, o algun consejo sobre a que puede deberse, pq con el tamaño del firmware y demas no se ni por donde empezar(sera el firmware, la alimentacion, los cables de datos....)