No logro hacer andar este ni otro codigo similar .... ¿quien me ayuda?
Ya probé varios códigos, pero vengo mal ... un par de ellos he logrado que lean la memoria, por lo que supongo que está bien conectada.
Estoy trabajando con un Atmegha32 a 16MHz, no se si la velocidad influye en mi problema, pero por las dudas les comento.
Las memorias que pruebo son de 512Mb y de 4Gb. Para conectarla uso los pines 5,6,7,8 del Atemga
Y estoy tratando de utilizar la libreria de CHAN porque pareceria ser la mas optimizada y desarrollada. En mi caso con la Petit FAT es suficiente.
Adapté todo al siguiente codigo para hacer un debug por el RS232, pero cuando llego a pf_opendir da error FR_NOT_ENABLED, aparentemente no encuentra nada y me manda el mensaje por el RS232 avisando que se quedó en ese paso ¿que es lo que esta mal, si es igual a los pasos que supuestamente funciona en otros ejemplos?
Alguien me ayuda a destrabarme ... ????
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <string.h>
#include <stdlib.h>
#include <util/delay.h>
#include "diskio.h"
#include "pff.h"
#include "UART_routines.h"
FATFS Fs; /* File system object */
DIR Dir; /* Directory object */
FILINFO Fno; /* File information */
WORD rb; /* Return value. */
BYTE buff[100];
void PORTS_Init(void)
{
// Set MOSI y SCK output
DDRB |= (1<<7)|(1<<5)|(1<<3)|(1<<2)|(1<<1)|(1<<0);
DDRD |= (1<<5)|(1<<4);
PORTB = 0x00;
SPCR = (1<<6)|(1<<4)|(1<<0);
//Inicializa Ports para la UART
PORTD = 0x00;
DDRD = 0xFE;
}
int main (void)
{
BYTE i;
PORTS_Init();
//Inicializa UART para comunicación via RS232
uart0_init();
TX_NEWLINE;
TX_NEWLINE;
while(1){
_delay_ms(10);
TX_NEWLINE; //JK
transmitString_F(PSTR("Inserte Tarjeta"));
if (pf_mount(&Fs) ) continue; /* Initialize FS */
TX_NEWLINE; //JK
transmitString_F(PSTR("Inicializado"));
while(1){
if (pf_opendir(&Dir, ""))
TX_NEWLINE;
transmitString_F(PSTR("Error Opendir"));
break;
while (!pf_readdir(&Dir, &Fno) && Fno.fname[0]) {
_delay_ms(100);
if( strstr(Fno.fname, ".txt") ){ // TXT file
TX_NEWLINE; //JK
transmitString_F(PSTR("listando archivos ..."));
//TX_NEWLINE;
//transmitString_F(PSTR(Fno.fname));
if(pf_open(Fno.fname)) continue; // open file
if( strstr(Fno.fname, "BLANK") ){
codigo .....
}
else{
codigo .....
}
_delay_ms(5000);
}
}
}
}
}