Buenas!!
Estoy "traduciendo" el driver que trae el CCS (para manejar una MMC) para que pueda ser compilado en HTSOFT PIC18, que es el compilador con el que ya tengo hecho un 75% del proyecto... Me salto la duda, nunca habia visto una declaracion de este tipo:
Parte del codigo del driver mmc_spi.c:
enum MMC_EC {
MMC_EC_OK = 0,
MMC_EC_NOT_IDLE = 1, //after reset command, device wasn't in idle state
MMC_EC_NOT_INIT = 2, //after init command, device had an error
MMC_EC_NO_CRC = 3, //CRC wouldn't turn off
MMC_EC_SET_READ_BLOCKSIZE_FAIL = 4, //gave us an error during set blocksize
MMC_EC_SET_WRITE_BLOCKSIZE_FAIL = 5, //gave us an error during set blocksize
MMC_EC_SET_MULTI_BLOCKSIZE_FAIL = 6, //gave us an error during set blocksize
MMC_EC_SET_WRITE_ADDRESS_FAIL = 7, //gave us an error when we told it we want to write block
MMC_EC_BLOCK_NOT_WRITTEN = 8, //after sending block, it gave us this response
MMC_EC_SET_READ_ADDRESS_FAIL = 9, //gave us an error when we told it we wanted to read block
MMC_EC_ERASE_SECTOR_START_FAIL = 10, //mmc gave us an error when we set the start sector for erase
MMC_EC_ERASE_SECTOR_END_FAIL = 11, //mmc gave us an error when we set the end sector for erase
MMC_EC_ERASE_SECTORS_FAIL = 12, //mmc gave us an error when we told it to erase tagged sectors
MMC_EC_BAD_STATE = 13, //we cant start/continue a multi transfer because we didn't start/finish the last one
MMC_EC_START_MULTI_READ_FAIL = 14, //mmc gave us an error when we started a multi-read
MMC_EC_READ_NEXT_BLOCK_FAIL = 15, //mmc gave us an error when started to read the next block (in multi-read)
MMC_EC_STOP_TRANSMISSION_FAIL = 16, //mmc gave us an error when tried to stup a multi read/write transmission
MMC_EC_WRITE_ALWAYS_BUSY = 17 //after a block write, we waited longer than timeout period for busy signal to end
};
//#define MMC_DEBUG PRINTF //uncomment this line to print out debug messages
#define MMC_DEBUG(a,b,c,d,e,f,g,h,i,j,k) //uncomment this line to not print out debug messages
/////*** END USER CONFIG ***/////
//if you want to slow down the speed of the MMC clock, define delay_clk to a delay_xx() routine
//#define mmc_delay_clk() delay_us(1)
#define mmc_delay_clk()
#define MMC_BLOCK_SIZE 512
int16 mmc_last_result=0;
// FUNCTIONS
//public functions
MMC_EC mmc_init();
MMC_EC mmc_modify_byte(int32 address, int8 val);
MMC_EC mmc_modify_block(int32 address, int16 block_size, int *ptr);
MMC_EC mmc_write_block(int32 address, int16 block_size, int *ptr);
#define mmc_read_byte(a,p) mmc_read_block(a,1,p)
MMC_EC mmc_read_block(int32 address,int16 block_size, int *ptr);
MMC_EC mmc_erase(int32 address, int32 sectors);
MMC_EC mmc_read_enable(int32 address, int16 block_size);
MMC_EC mmc_read_mult_block(int *ptr);
MMC_EC mmc_read_disable(void);
Se ve que en vez de declarar una funcion del tipo int, char o void... declara una funcion tipo MMC_EC
si tuviera que bajar un poco el nivel de esta declaracion, que es lo que se esta haciendo al declarar de esta forma? De mas esta decir que el compilador de HTSOFT no me lo toma
No esta de mas preguntar , hay alguna forma de mezclar en un mismo codigo (como quien mezcla assembler con C) codigos para distintos compiladores? por ejemplo venir escribiendo todo para HTSOFT y poner en alguna parte del programa algo hecho para compilar con CCS... jeje, soñar es gratis.. pero a lo mejor se puede hacer.
Desde ya muchas gracias!!!