4 horas sem saber porque uma certa rotina trava o sistema quando carregava muitos bytes.
Era só comentar a rotina e funcionava normal.
Pensei que era o tamanho do Buffer na RAM,mas era apenas 4608 bytes num micro com 20k.
As vezes a rotina funcionava 'pela metade',as vezes travava tudo.
Achei que era a temporização do SD CARD,mas testando a velocidade com poucos bytes,gravava e lia normalmente.
Oque podia ser?
Não tenho experiencia com SD CARDs,então podia ser qualquer coisa no programa.
Foi aí que depois de muitas horas(que Noob eu..)percebí algo.
Veja uma das rotinas que ficava 'doida';
- Código: Selecionar todos
unsigned char SD_Image_1[511];
u8 Imagem_Buf[4607];
u32 sd_size;
......
void Grava_SD(void)
{
u8 i,m;
u16 Bloco;
u16 Ponto;
Bloco = 80;
Ponto = 0;
for(m=0;m<9;m++)
{
for(i=0;i<512;i++)
{
SD_Image_1[i] = picture[Ponto];
Ponto++;
}
SD_WriteSingleBlock(Bloco,SD_Image_1);
Bloco++;
}
}
//................
Fácil o problema,não é?
O compilador(Keil)não me alertou em nada...