Esempio n. 1
0
error SD_CalculaDireccion(byte * dir, dato buf[][tam_dato]){
	long Auxiliar;
	byte i;
	
    Auxiliar = dir[0];
    Auxiliar <<= 8;
    Auxiliar |= dir[1];
    Auxiliar <<= 8;
    Auxiliar |= dir[2];
    Auxiliar <<= 8;
    Auxiliar |= dir[3];
    
	Auxiliar += 1;

    dir[0]=(byte)(Auxiliar>>24);
    dir[1]=(byte)(Auxiliar>>16);
    dir[2]=(byte)(Auxiliar>>8);
    dir[3]=(byte)(Auxiliar);
    
    SD_Assert();
    
    for(i=0;i<4;i++)
    	buf[0][i] = dir_lectura[i];
    for(;i<8;i++)
    	buf[0][i] = dir_escritura[i-4];
    for(;i<12;i++)
    	buf[0][i] = dir_base_lat[i-8];
    for(;i<16;i++)
        buf[0][i] = dir_base_lon[i-12];
    buf[0][i] = id;
    
    (void) SD_WriteSector((UINT32) u16FAT_Data_BASE, (UINT8 *) buf); //2600 sector del archivo binario, hacer vble global
    return _ERR_OK;            
}
Esempio n. 2
0
esint8 if_writeBuf(hwInterface* file,euint32 address,euint8* buf)
{
	if ( SD_WriteSector(address, buf, 1) == SD_TRUE)
		return 0;
	else
		return (-1);
}
Esempio n. 3
0
error SD_Escribir(byte *direccion, dato buf[][tam_dato]){
	UINT32 u32SD_Block; // Convertimos la direccion en una variable de 32 bits
    byte tem;
    
    SPI_Init();
    u32SD_Block = direccion[0];
    u32SD_Block <<= 8;
    u32SD_Block |= direccion[1];
    u32SD_Block <<= 8;
    u32SD_Block |= direccion[2];
    u32SD_Block <<= 8;
    u32SD_Block |= direccion[3];
    
    tem = SD_WriteSector(u32SD_Block, (UINT8 *) buf);
    
    (void)Cpu_Delay100US(100);
    ban_SDvacia=0;
    return _ERR_OK;
}
Esempio n. 4
0
error SD_LeerDireccion(){
	UINT32 u32SD_Arch;
    int h=0, i=0;
    (void)SD_Assert();
    
    //u32SD_Block=DIRECCION_BIN; //Cargar la direccion del sector fisico donde se encuentran las direcciones de lectura y escritura 
    //(UINT32) u16FAT_Data_BASE
    (void)SD_ReadSector((UINT32) u16FAT_Data_BASE, (UINT8 *) Buffer_Envio); //Lee el sector que contiene las direcciones de lectura y escritura
    
    for(i=0;i<4;i++)
    	dir_lectura[i] = Buffer_Envio[0][i]; 
    												//Se guardan las direcciones en las variables
    for( ;i<8;i++)
    	dir_escritura[i-4] = Buffer_Envio[0][i];
    
    for( ;i<12;i++)
    	dir_base_lat[i-8] = Buffer_Envio[0][i];
    
    for( ;i<16;i++)
        dir_base_lon[i-12] = Buffer_Envio[0][i];
    
    id = Buffer_Envio[0][i];
    
    if(dir_lectura[0]==0&&dir_lectura[1]==0&&dir_lectura[2]==0&&dir_lectura[3]==0&&
    		dir_escritura[0]==0&&dir_escritura[1]==0&&dir_escritura[2]==0&&dir_escritura[3]==0){
    	u32SD_Arch=(UINT32) u16FAT_Data_BASE + 1; //Establece el segundo sector del archivo como el inicio de lectura y escritura
    	dir_lectura[0]=(byte)(u32SD_Arch>>24);
		dir_lectura[1]=(byte)(u32SD_Arch>>16);
		dir_lectura[2]=(byte)(u32SD_Arch>>8);
		dir_lectura[3]=(byte)(u32SD_Arch);
		dir_escritura[0]=(byte)(u32SD_Arch>>24);
		dir_escritura[1]=(byte)(u32SD_Arch>>16);
		dir_escritura[2]=(byte)(u32SD_Arch>>8);
		dir_escritura[3]=(byte)(u32SD_Arch);
		SD_Assert();
		for(i=0;i<4;i++)
			Buffer_Envio[0][i] = dir_lectura[i];
		for(;i<8;i++)
			Buffer_Envio[0][i] = dir_escritura[i-4];
		(void) SD_WriteSector((UINT32) u16FAT_Data_BASE, (UINT8 *) Buffer_Envio); //2600 sector del archivo binario, hacer vble global
    }