Autor Tema: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC  (Leído 5209 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado mmX

  • PIC10
  • *
  • Mensajes: 37
COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« en: 26 de Marzo de 2009, 18:18:26 »
Hola, saludos a todos, les comento que estoy trabajando en un proyecto algo ambicioso, un variador de frecuencia para motores de 75 HP y utilizaré un dsPic33fj256mc710 , resulta que tengo experiencia trabajando en el compilador PIC C , CCS. Y he compilado algunos archivos sin errores, pero al momento de pasarlo al PROTEUS el micro se queda totalmente inmovil. En el proteus, he trabajado con el dspic33fj32mc204, y he compilado tambien algunos ejemplos pero sin exito. Me he visto en la necesidad de utilizar el Microchip C30 que también es potente, pero es mas engorroso en manejar los registros del microcontrolador.

Alguien sabe, a que se deben estos errores? gracias de antemano.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #1 en: 26 de Marzo de 2009, 19:34:05 »
Que version de CCS utilizas??
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #2 en: 26 de Marzo de 2009, 19:55:21 »
Porque engorroso?

Saludos!
Control Automático, DSP & Microcontroladores

Desconectado mmX

  • PIC10
  • *
  • Mensajes: 37
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #3 en: 26 de Marzo de 2009, 21:01:12 »
la version que utilizo es 4.057.  A continuación les cuelgo la librería del dsPIc que utilizo, y primero que a mi parecer le faltan muuuuuchisimas funciones, como la SET_MOTOR_PWM() , SET_DEAD_TIME(), entre otras..... Lei en algun foro que las direcciones de los registros estaban mal hechas pero no se que tan verdad sea esa afirmacion.

Lo de engorroso es  porque a mi parecer es mucho más fácil programar el micro con el PIC C que con el C30 o C18 ya que no hay que andar seteando bits para la configuracion de los registros. Por ejemplo. Para configurar el timer1 seria algo como "setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1)". mientras que con el C30 una configuración tipica sería:
T1CON = 0;
TMR1 = 0;
PR1 = Fcy/512;
T1CON = 0x8030;

Cuestión de gustos pues....

Código: [Seleccionar]
//////// Standard Header file for the DSPIC33FJ32MC204 device ////////////////
#device DSPIC33FJ32MC204
#nolist
//////// Program memory: 11264x24  Data RAM: 2048  Stack: 31
//////// I/O: 43   Analog Pins: 9
//////// Fuses: WRTB,NOWRTB,CPBH,CPBS,NOCPB,PROTECTS,NOPROTECT,WRT,NOWRT,FRC
//////// Fuses: FRC_PLL,PR,PR_PLL,NOCKSFSM,CKSFSM,SC,LPRC,OSCIO,NOOSCIO,EC
//////// Fuses: HS,NOPR,WDT,NOWDT,WINDIS,NOWINDIS,WPRES128,WPRES32,WPOSTS1
//////// Fuses: WPOSTS2,WPOSTS3,WPOSTS4,WPOSTS5,WPOSTS6,WPOSTS7,WPOSTS8
//////// Fuses: WPOSTS9,WPOSTS10,WPOSTS11,WPOSTS12,WPOSTS13,WPOSTS14
//////// Fuses: WPOSTS15,WPOSTS16,NOPUT,PUT2,PUT4,PUT8,PUT16,PUT32,PUT64
//////// Fuses: PUT128,XT,FRC_PS,ALTI2C,NOALTI2C,IESO,NOIESO,PROTECTH
//////// Fuses: FRC_DIV_BY_16,IOL1WAY,NOIOL1WAY,DEBUG,NODEBUG,COE,NOCOE,JTAG
//////// Fuses: NOJTAG,ICS0,ICS1,ICS2,ICS3,PWMPIN,NOPWMPIN,HPOL_HIGH
//////// Fuses: HPOL_LOW,LPOL_HIGH,LPOL_LOW
////////
////////////////////////////////////////////////////////////////// I/O
// Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
//                         PORT_x_PULLUPS(), INPUT(),
//                         OUTPUT_LOW(), OUTPUT_HIGH(),
//                         OUTPUT_FLOAT(), OUTPUT_BIT()
// Constants used to identify pins in the above are:

#define PIN_A0  5648
#define PIN_A1  5649
#define PIN_A2  5650
#define PIN_A3  5651
#define PIN_A4  5652
#define PIN_A7  5655
#define PIN_A8  5656
#define PIN_A9  5657
#define PIN_A10  5658

#define PIN_B0  5696
#define PIN_B1  5697
#define PIN_B2  5698
#define PIN_B3  5699
#define PIN_B4  5700
#define PIN_B5  5701
#define PIN_B6  5702
#define PIN_B7  5703
#define PIN_B8  5704
#define PIN_B9  5705
#define PIN_B10  5706
#define PIN_B11  5707
#define PIN_B12  5708
#define PIN_B13  5709
#define PIN_B14  5710
#define PIN_B15  5711

#define PIN_C0  5744
#define PIN_C1  5745
#define PIN_C2  5746
#define PIN_C3  5747
#define PIN_C4  5748
#define PIN_C5  5749
#define PIN_C6  5750
#define PIN_C7  5751
#define PIN_C8  5752
#define PIN_C9  5753

////////////////////////////////////////////////////////////////// Useful defines
#define FALSE 0
#define TRUE 1

#define BYTE unsigned int8
#define BOOLEAN int1

#define getc getch
#define fgetc getch
#define getchar getch
#define putc putchar
#define fputc putchar
#define fgets gets
#define fputs puts

////////////////////////////////////////////////////////////////// WDT
// Watch Dog Timer Functions: SETUP_WDT() and RESTART_WDT()
//
// Constants used for SETUP_WDT() are:
#define WDT_ON      1
#define WDT_OFF     0

////////////////////////////////////////////////////////////////// Control
// Control Functions:  RESET_CPU(), SLEEP(), RESTART_CAUSE()
// Constants passed into RESTART_CAUSE() are:
#define RESTART_POWER_UP      0x0003
#define RESTART_BROWNOUT      0x0001
#define RESTART_WATCHDOG      0x0010
#define RESTART_SOFTWARE      0x0040
#define RESTART_MCLR          0x0080
#define RESTART_ILLEGAL_OP    0x4000
#define RESTART_TRAP_CONFLICT 0x8000
//
// Constants passed into SLEEP() are:
#define SLEEP_FULL      0  // Default
#define SLEEP_IDLE      1  // Clock and peripherals don't stop

////////////////////////////////////////////////////////////////// INTERNAL RC
// Constants used in setup_oscillator() are:
#define OSC_INTERNAL     32
#define OSC_CRYSTAL       1
#define OSC_CLOCK         2
#define OSC_RC            3
#define OSC_SECONDARY    16

////////////////////////////////////////////////////////////////// Timer
// Timer Functions: SETUP_TIMERx, GET_TIMERx, GET_TIMERxy,
// SET_TIMERx, SET_TIMERxy
// Constants used for SETUP_TIMERx() are:
//      (or (via |) together constants from each group)
#define TMR_DISABLED 0x0000
#define TMR_INTERNAL 0xA000
#define TMR_EXTERNAL 0xA002
#define T1_EXTERNAL_SYNC 0xA006 //This only applies to Timer1
#define T1_EXTERNAL_RTC  0xC002 //This only applies to Timer1

#define TMR_DIV_BY_1   0x0000
#define TMR_DIV_BY_8   0x0010
#define TMR_DIV_BY_64  0x0020
#define TMR_DIV_BY_256 0x0030
#define TMR_32_BIT     0x0008 // Only for even numbered timers

/////////////////////////////////////////////////////////// INPUT CAPTURE
// Functions: SETUP_CAPTURE, GET_CAPTURE,
//
// Constants used for SETUP_CAPTURE() are:
#define CAPTURE_OFF               0x0000  // Capture OFF
#define CAPTURE_EE                0x0001  // Capture Every Edge
#define CAPTURE_FE                0x0002  // Capture Falling Edge
#define CAPTURE_RE                0x0003  // Capture Rising Edge
#define CAPTURE_DIV_4             0x0004  // Capture Every 4th Rising Edge
#define CAPTURE_DIV_16            0x0005  // Capture Every 16th Rising Edge
#define CAPTURE_INTERRUPT_ONLY    0x0007  // Interrupt on Rising Edge when in Sleep or Idle

// The following defines can be ORed | with above to configure interrupts
#define INTERRUPT_EVERY_CAPTURE   0x0000  // Interrupt on every capture event
#define INTERRUPT_SECOND_CAPTURE  0x0020  // Interrupt on every second capture event
#define INTERRUPT_THIRD_CAPTURE   0x0040  // Interrupt on every third capture event
#define INTERRUPT_FOURTH_CAPTURE  0x0060  // Interrupt on every fourth capture event

// The following defines can be ORed | with above to select timer
#define CAPTURE_TIMER2            0x0080  // On capture event Timer 2 is captured
#define CAPTURE_TIMER3            0x0000  // On capture event Timer 3 is captured

// The following defines can be ORed | with above to select idle operation mode
#define CAPTURE_HALT_IDLE         0x2000  // Capture module halts during idle mode
#define CAPTURE_CONTINUE_IDLE     0x0000  // Capture module continues during idle mode

/////////////////////////////////////////////////////////// OUTPUT COMPARE
// Functions: SETUP_COMPARE, SET_PWM_DUTY, SET_COMPARE_TIME
//
// Constants used for SETUP_COMPARE() are:
#define COMPARE_OFF               0x0000  // Compare OFF
#define COMPARE_SET_ON_MATCH      0x0001  // Pin from low to high on match
#define COMPARE_CLR_ON_MATCH      0x0002  // Pin from high to low on match
#define COMPARE_TOGGEL            0x0003  // Pin will toggle on every match occurrence
#define COMPARE_SINGLE_PULSE      0x0004  // Pin will generate single pulse on first match
#define COMPARE_CONT_PULSE        0x0005  // Pin will pulse for every match
#define COMPARE_PWM               0x0006  // Compare operates as PWM with fault pin disabled
#define COMPARE_PWM_FAULT         0x0007  // Compare operates as PWM with fault pin enabled

// The following defines can be ORed | with above to select timer
#define COMPARE_TIMER2            0x0000  // Timer 2 is the base timer
#define COMPARE_TIMER3            0x0008  // Timer 3 is the base timer

// The following defines can be ORed | with above to select idle operation mode
#define COMPARE_HALT_IDLE         0x2000  // Compare module halts during idle mode
#define COMPARE_CONTINUE_IDLE     0x0000  // Compare module continues during idle mode


////////////////////////////////////////////////////////////////// ADC
// ADC Functions: SETUP_ADC(), SETUP_ADC_PORTS()
//                SET_ADC_CHANNEL(), READ_ADC()
//
// Constants used for SETUP_ADC() are:
// Clock is at ADCS<5:0> of ADCON3 Reg. (0x02A4)
// Tad = (Tcy/2)*(ADCS<5:0>+1)
#define ADC_CLOCK          0x0000     // External
#define ADC_CLOCK_DIV_2    0x0001
#define ADC_CLOCK_DIV_4    0x0003
#define ADC_CLOCK_DIV_8    0x0007
#define ADC_CLOCK_DIV_16   0x000F
#define ADC_CLOCK_DIV_32   0x001F
#define ADC_CLOCK_DIV_64   0x003F   
#define ADC_CLOCK_INTERNAL 0x8000     // Internal

// The following may be OR'ed in with the above using |
// Auto-Sample Time bits
#define ADC_TAD_MUL_0      0x0000
#define ADC_TAD_MUL_2      0x0200
#define ADC_TAD_MUL_4      0x0400
#define ADC_TAD_MUL_8      0x0800
#define ADC_TAD_MUL_16     0x1000
#define ADC_TAD_MUL_31     0x1F00

// Constants used in READ_ADC() are:
#define ADC_START_AND_READ 0x07
#define ADC_START_ONLY     0x01
#define ADC_READ_ONLY      0x06

// Constants used in SETUP_ADC_PORTS() are:
// First argument:
// OR together desired pins
#define sAN0                0x0001 //| B0
#define sAN1                0x0002 //| B1
#define sAN2                0x0004 //| B2
#define sAN3                0x0008 //| B3
#define sAN4                0x0010 //| B4
#define sAN5                0x0020 //| B5
#define sAN6                0x0040 //| B6
#define sAN7                0x0080 //| B7
#define sAN8                0x0100 //| B8
#define NO_ANALOGS      0           // None
#define ALL_ANALOG      0xFFFFFFFF  //

// Optional Second argument:
#define VSS_VDD            0x0000 // Range 0-Vdd
#define VREF_VREF          0x3000 // Range VrefL-VrefH
#define VREF_VDD           0x2000 // Range VrefL-Vdd
#define VSS_VREF           0x1000 // Range 0-VrefH


////////////////////////////////////////////////////////////////// INT
// Interrupt Functions: ENABLE_INTERRUPTS(), DISABLE_INTERRUPTS(),
//                      CLEAR_INTERRUPT(), INTERRUPT_ACTIVE(),
//                      EXT_INT_EDGE()
//
// Constants used in EXT_INT_EDGE() are:
#define L_TO_H              0x40
#define H_TO_L                 0
//
// Constants used in other interrupt functions are:
#define INTR_GLOBAL               0x400
#define INTR_NORMAL               0x100
#define INTR_ALTERNATE            0x200
#define INTR_NESTING              0x300
#define INTR_LEVEL0               0x500
#define INTR_LEVEL1               0x501
#define INTR_LEVEL2               0x502
#define INTR_LEVEL3               0x503
#define INTR_LEVEL4               0x504
#define INTR_LEVEL5               0x505
#define INTR_LEVEL6               0x506
#define INTR_LEVEL7               0x507

#define INT_OSCFAIL               1
#define INT_ADDRERR               2
#define INT_STACKERR              3
#define INT_MATHERR               4
#define INT_DMAERR                5
#define INT_EXT0                  6
#define INT_OC1                   8
#define INT_TIMER1                9
#define INT_TIMER2                12
#define INT_TIMER3                13
#define INT_SPI1                  14
#define INT_RDA                   15
#define INT_TBE                   16
#define INT_ADC1                  17
#define INT_SI2C                  19
#define INT_MI2C                  20
#define INT_CN1                   21
#define INT_IC7                   22
#define INT_RDA2                  29

#list

Saludos.

Soy nuevo en el foro, espero poder ir ayudando a todos con sus dudas y colaborando en lo que pueda. Más adelante iré publicando mis avances.
« Última modificación: 26 de Marzo de 2009, 21:27:50 por mmX »

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #4 en: 26 de Marzo de 2009, 22:20:11 »
Bueno primero bienvenido ... estas en el foro de mas completo para PIC ...

en cuanto a lo de engorroso en eso no hay duda! .  :P (desde ese punto de vista!)

Según varios comentarios anteriores el PICC aún no está completamente depurado para dsPIC.

Muchooooss ... (me incluyo) ... utilizamos C30 por tal motivo; tambien empresas que distribuyen librerias o aplicaciones ... por ejemplo, FreeRTOS distribuye su RTOS para microchip en C30, tambien Micrium, AVIX, Segger .. etc etc ... . Es cuestión de acostumbrarse, ya una vez hechas todas las funciones de los perifericos, es muy sencillo reciclar el código de proyectos viejos a proyectos nuevos.

Ademas, el C30 funciona excelente ... solo tuve un problema con la asignacion de memoria dinamica pero eso parece que lo solucionaron en la version 3.11.

Saludos!
« Última modificación: 26 de Marzo de 2009, 22:28:36 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado mmX

  • PIC10
  • *
  • Mensajes: 37
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #5 en: 27 de Marzo de 2009, 10:07:18 »
Bueno, será empezar a darle con el C30, también tengo el HI TECH C vamos a ver con cual me llevo mejor... Gracias!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #6 en: 27 de Marzo de 2009, 10:41:41 »
Bienvenido al mundo de los bugs y sus soluciones!!! :D :D

Te pongo un listado de los cambios hasta la version actual, donde comentan que cosa soluciona cada nueva version.
Tal vez tu solucion es usar una version mas estable de CCS, que ande bien para los DSPICs.

Citar
RECENT CHANGES
 4.089  A duplicate filename error on install is fixed
 4.088  The PCW IDE debugger interface to the ICD has improved speed and functionality
 4.088  A problem with printf'ing bit arrays inside a structure is fixed
 4.088  #PIN_SELECT has been added to PCH for the new parts with PPS
 4.087  A problem with initializing constant structures with large pointers to RAM is fixed
 4.087  A number of PCD issues have been resolved
 4.087  Pin select fuses for parts with multiple ICSP pins have changed, see readme.txt
 4.086  Some I2C bugs with some PCD parts have been fixed
 4.086  Fuses for OSCIO/NOOSCIO have been flipped for several dsPIC33 parts
 4.086  PCD USE SPI now correctly defaults to MSB first
 4.085  A number of optimization issues on 24 parts have been fixed
 4.085  A PCW IDE problem invoking the ICD software due to the CRC is fixed
 4.084  CAN Bus drivers for the 24 bits parts is included with this release
 4.084  Support for Microchips ICD3 has been added
 4.084  Some 24 bit compiler byte/word access issues are fixed
 4.084  A problem with PIC18 expresions that require a lot of scratch memory is fixed
 4.084  Port addresses for some 24 bit parts were defined wrong and this is fixed
 4.083  Some issues with the format of configuration data in some hex files is fixed
 4.083  A bug in accessing odd bytes in memory over 8K is fixed for PCD
 4.082  Some problems with ROM pointers have been fixed
 4.082  If you use pointers to ROM see the readme.txt file for possible syntax changes
 4.081  A PCD flaw in the 32 bit less than is fixed
 4.081  An optimization bug affecting delay_us() in some programs is fixed
 4.080  A PCD problem causing a overwrite of the W0 register in some expresions is fixed
 4.080  A bug when mixing signed and unsigned variables in some relational expresions is fixed
 4.080  A problem disabling interrupts for functions called froman ISR and MAIN is fixed
 4.079  Some math functions have been improved or fixed
 4.079  Some PCD debugging issues have been fixed
 4.078  A number of optimization issues on 24 parts have been fixed
 4.078  The PIC24/dsPIC %f has been improved
 4.078  A configuration word problem with PIC24 GB parts is fixed
 4.078  The arguments to SETUP_CCPx() have changed a little for some parts, see the device header file
 4.078  A baud rate problem with some calls to setup_uart() is fixed
 4.077  A memory allocation problem in PCD has been fixed
 4.077  Some problems with slave I2C have been fixed, see the newest EX_SLAVE.C
 4.077  A problem with recusive #defines is fixed
 4.076  The COFF file format has been modified to allow MPLAB to read complex structures
 4.076  A number of PCD issues fixed including access to high memory locations
 4.076  Type casting of unsigned constants to signed constants modified for ANSI
 4.075  A debugger problem with 88x parts is fixed
 4.075  The debugger now offers an option to freeze the PIC peripherals
 4.075  A PCD bug setting and clearing bits in high memory locations is fixed
 4.074  A bug in structure bit to byte transfers is fixed
 4.074  A PCD problem with &=0xff on an int16 is fixed
 4.074  A problem in setup_counters() for some chips is fixed
 4.073  UART definitions for some chips were wrong in 4.072
 4.072  A number of bug fixes made for the PCD (24 bit) compiler
 4.072  Setup_WDT() and Setup_Counters() have been updated for the newest chips
 4.072  Using just UNSIGNED for variable types in PCD now yields a int16, not an int8
 4.072  I2C slave now defaults to the clock streatch mode for all chips that support it
 4.071  A debugger problem is resolved
 4.070  Some IDE issues including hidden debugger screens have been fixed
 4.070  I2C slave algorithms have been updated for some chips
 4.069  Compiler R/W files are now kept in the windows APPDATA directory
 4.069  An interrupt bug on many PCD devices is fixed
 4.069  A PCD optimization error is fixed
 4.068  RS232 software timing improved a little
 4.068  A math error (since 4.067) when mixing ints and floats is fixed
 4.067  An addressmod bug has been fixed
 4.067  A problem with LCD_SYMBOL when using more than 8 segments per symbol is fixed
 4.067  An undeserved syntax error some users got in #bit is fixed
 4.067  A number of PCD problems have been fixed
 4.066  New PCD built in functions have been added
 4.066  A problem with Vista access violations is fixed
 4.065  Issues using the ICD with chips that do not report a device ID are solved
 4.065  A number of PCD problems have been fixed including problems with bit fields in structures
 4.064  Support for Real-ICE and ICD2 has been added
 4.063  A number of bug fixes made for the PCD (24 bit) compiler
 4.062  An error concerning extra data on a #device line has been corrected
 4.061  A problem with #USE SPI and the hardware SPI pins is fixed
 4.061  A problem linking for ICD debugging is fixed
 4.061  24 Bit Wizard added to the IDE
 4.060  Support has been added to allow multiple ICD units connected to the same PC
 4.059  An optimization problem involving getc() in an expresion is fixed
 4.059  A problem managing breakpoints in the IDE is fixed
 4.058  Chip specific PCD interrupt problems are now fixed
 4.058  A bug involving pointers to functions is fixed
 4.057  A number of PCD bug fixes were made
 4.056  More PCD updates have been made
 4.056  A problem with rom pointers is fixed
 4.056  A problem reserving ICD ROM on some parts is fixed

Me olvidaba, puedes entrar a ver este listado ingresando aqui:

http://www.ccsinfo.com/devices.php?page=versioninfo
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado vtasco

  • PIC12
  • **
  • Mensajes: 72
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #7 en: 27 de Marzo de 2009, 23:06:31 »
En mi caso particular, no pude encontrar las funciones en ccs para usar el módulo dsp del procesador.
Existen funciones para eso?

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #8 en: 28 de Marzo de 2009, 12:49:10 »
.... Por ejemplo. Para configurar el timer1 seria algo como "setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1)". mientras que con el C30 una configuración tipica sería:
T1CON = 0;
TMR1 = 0;
PR1 = Fcy/512;
T1CON = 0x8030;

Cuestión de gustos pues....

...

bueno pero con el ccs ¡también lo puedes hacer!, es mas, hay casos donde es conveniente hacerlo asi ya que parte del festival de bug del ccs tiene que con las funciones pre-built.

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado mmX

  • PIC10
  • *
  • Mensajes: 37
Re: COMPILADOR CCS CON ERRORES PARA DSPIC33fjMC
« Respuesta #9 en: 31 de Marzo de 2009, 11:53:05 »
La version 4.084 mejoró notablemente pero aun hay ciertas incongruencias en las definiciones de los dsPIC, por ejemplo: el 33fj32MC204 no cuenta con modulo de control de motores PWM, mas sin embargo el 33fj32GPMC204 SI, cosa que en la vida real es falso. Asi que si, todo un festival esto del CCS para dsPIC's.... Gracias a todos por su respuesta, ya me he puesto a darle con el C30...


 

anything