Aquelas piras inexplicáveis que só circuitos têm...

Poisentão, estou tentando acessar um SD Card com um PIC24.
Primeiro tentei fazer a SPI do maldito funcionar, não ia nem a pau, mudei o MISO de pino e a SPI do PIC começou a funcionar. Estranho, mas funcionou, bola prá frente.
Religuei o SD Card com o pino modificado (num protoboard), e toca testar.
O SD Card deve ser inicializado com uma série de comandos, e ele dá respostas para os comandos. Primeiro manda um comando 0, ele respondeu certo. Manda um comando 8, ele manda várias respostas, todas certas. Aí tem que entrar num loop, mandando os comandos 55 e 41 até que ele baixe um flag de Idle e diz que tá pronto prá briga. O primeiro par de 55 e 41 ele respondia direito, dizendo que estava em idle. A partir do segundo, ele simplesmente não respondia mais nada, nunca.
Fuça daqui, fuça dali, nada. Começo a mudar coisas no código, nada. Baixo tutoriais, códigos de exemplo, nenhuma luz. Fuço em códigos de drivers, bibliotecas, nada. Ligo analisador lógico pra procurar qualquer pista, nada. Penso em largar o trabalho e vender coco na praia, mas moro longe da praia.
Num lampejo de desespero, decido dar uma olhada como a alimentação está se comportando, vai que tem algum bode. Ligo o osciloscópio, e quando vou medir a alimentação, me toco que esqueci de ligar o fiozinho do Vcc no cartão. Coloco o fiozinho, e o cartão passa a responder.
Aí eu me pergunto: por que com mil raios caindo sobre a minha cabeça este cartão fidumaégua respondia os primeiros comandos bunitinho e parava de responder bem depois, pro meu desespero? Por que não ficava morto desde o primeiro comando? Acho que ele foi fabricado assim só prá me atazanar mesmo.
Primeiro tentei fazer a SPI do maldito funcionar, não ia nem a pau, mudei o MISO de pino e a SPI do PIC começou a funcionar. Estranho, mas funcionou, bola prá frente.
Religuei o SD Card com o pino modificado (num protoboard), e toca testar.
O SD Card deve ser inicializado com uma série de comandos, e ele dá respostas para os comandos. Primeiro manda um comando 0, ele respondeu certo. Manda um comando 8, ele manda várias respostas, todas certas. Aí tem que entrar num loop, mandando os comandos 55 e 41 até que ele baixe um flag de Idle e diz que tá pronto prá briga. O primeiro par de 55 e 41 ele respondia direito, dizendo que estava em idle. A partir do segundo, ele simplesmente não respondia mais nada, nunca.
Fuça daqui, fuça dali, nada. Começo a mudar coisas no código, nada. Baixo tutoriais, códigos de exemplo, nenhuma luz. Fuço em códigos de drivers, bibliotecas, nada. Ligo analisador lógico pra procurar qualquer pista, nada. Penso em largar o trabalho e vender coco na praia, mas moro longe da praia.
Num lampejo de desespero, decido dar uma olhada como a alimentação está se comportando, vai que tem algum bode. Ligo o osciloscópio, e quando vou medir a alimentação, me toco que esqueci de ligar o fiozinho do Vcc no cartão. Coloco o fiozinho, e o cartão passa a responder.
Aí eu me pergunto: por que com mil raios caindo sobre a minha cabeça este cartão fidumaégua respondia os primeiros comandos bunitinho e parava de responder bem depois, pro meu desespero? Por que não ficava morto desde o primeiro comando? Acho que ele foi fabricado assim só prá me atazanar mesmo.