Buenos dias,
Tras dos semanas desde que consegui que me compilara la libreria de suky en Hitech, he realizado algun avance, pero aun no puedo escribir en la SD por FAT.
He conseguido que lea y escriba bloques, si la direccion que le pongo es "alta".
He conseguido que me Inicie la FAT, sin errores, pero los datos leidos en BufferFAT, no son los correctos. Tras leerme este post entero, me descargue ayer una libreria adaptada de la de suky que pone de Grabriel j. barchuck, he ido viendola y copiando los trozos que veo segun avanzo (por no empezar de cero).
Segun la explicacion cuando el BufferFAT[0] !=0xEB, entonces se leee una direccion posterior que nos indica la diferencia entre el sector fisico y logico.
En mi caso este valor es 129 (81h) o 135(87h) en dos tarjetas que tengo.
La cuestion es que intentando leer el sector 0 en esa direccion me da error (return(0)).
Continuando veo que se ha modificado tambien la rutina de read_block y el codigo añadido es:
// if(SDCARD_Modo == SDCARD_MODO_HC)
// Address = Address / BLOCK_SIZE;
/********************************************/
/* Agregado por el Ing. Gabriel J. Baruchuk, en función del brasilero */
UINT32_VAL MMCSDAddress;
if(SDCARD_Modo == SDCARD_MODO_NORMAL)
{
#byte sectorL = Address
#byte sectorH = Address+1
#byte sectorHL = Address+2
MMCSDAddress.LB = 0;
MMCSDAddress.HB = sectorL;
MMCSDAddress.UB = sectorH;
MMCSDAddress.MB = sectorHL;
MMCSDAddress.Val <<= 1;
MMCSDAddress.HB = MMCSDAddress.HB & 0xFE;
}
else
MMCSDAddress = Address;
/********************************************/
Esto me da error en la compilacion pues no reconoce el #byte.
Una ayudita de que hace lo anterior, para adaptarlo al Hi-tech?