Go Down

Topic: [SOLUCIONADO] No puedo inicializar tarjeta micro SD en Arduino MEGA (Read 1 time) previous topic - next topic

mrfloid

Arduino: AT MEGA 2560
Módulo lectora de tarjeta micro SD: CATALEX "MicroSD Card Adapter"

Tarjeta microSD de 1GB formateada según software Sdformatter

Librería que estoy utilizando: SdFat
https://github.com/greiman/SdFat

*******************************************

Anteriormente utilicé sin éxito la librería SD estándar del Arduino sin éxito.
Estuve consultando muchos posts y me desconciertan algunas observaciones que encuentro en relación a la detección del pin SS (que en el caso de mi módulo se llama CS).

Lo cierto es que según Siddharth
http://embedjournal.com/arduino-sd-card-initialization-failed/

haría falta agregar dos líneas en el código y conectar el pin CS del módulo SD al nro 10 del Arduino y no al pin 53 como suele aparecer en la mayor parte de las referencias...

Aún habiendo agregado estas líneas y modificado el conexionado sigo con el mismo error.
Es esto usual para AT MEGA 2560?

No entiendo bien que debería hacer para que la tarjeta sea reconocida  :smiley-confuse:
Alguna sugerencia?

Muchas gracias

PD: Aún me queda probar que sucede con otras tarjetas micro SD. Al parecer esta está en buen estado según la respuesta que me devuelve la PC cuando corro la instrucción chkdsk.

surbyte

Lee las normas del foro. Primer hilo de Software/hardware/Proyectos.
Luego edita todos los enlaces, no simplemente pegados como has hecho.
No es excusa que seas nuevo, todo persona que llega a cualquier foro debe respetar las normas del mismo.


Hace 1 o 2 dias se debatió este tema. 
La posible solución es que bajes la velocidad del SPI al momento de la inicialización de la SD.
Busca el hilo.


mrfloid

Surbyte, no encontré ese hilo del que me hablas.
Reedito el mensaje que había escrito de acuerdo a las normas del foro y acoto algo más.


HARDWARE DEL QUE DISPONGO:

Arduino: AT MEGA 2560
Módulo lectora de tarjeta micro SD: CATALEX "MicroSD Card Adapter"

Tarjeta microSD de 1GB formateada según software Sdformatter

Librería que estoy utilizando: SdFat
SdFat

*******************************************

Anteriormente utilicé sin éxito la librería SD estándar del Arduino sin éxito.
Estuve consultando muchos posts y me desconciertan algunas observaciones que encuentro en relación a la detección del pin SS (que en el caso de mi módulo se llama CS).

Lo cierto es que según Siddharth
embedjournal - Siddharth

haría falta agregar dos líneas en el código y conectar el pin CS del módulo SD al nro 10 del Arduino y no al pin 53 como suele aparecer en la mayor parte de las referencias...

Aún habiendo agregado estas líneas y modificado el conexionado sigo con el mismo error.
Es esto usual para AT MEGA 2560?

No entiendo bien que debería hacer para que la tarjeta sea reconocida  :smiley-confuse:
Alguna sugerencia?

Muchas gracias

PD: Aún me queda probar que sucede con otras tarjetas micro SD. Al parecer esta está en buen estado según la respuesta que me devuelve la PC cuando corro la instrucción chkdsk.

mrfloid

No encontré el hilo que mencionaba Surbyte pero en estas dos links encontré información que me permitió entender lo que me estabas sugiriendo.

electroensaimada
prometec

Reduje la velocidad del SPI hasta el valor SPI_CLOCK_DIV128 perro no tuve éxito.
Esta implementación la realicé sobre los códigos de ejemplo SdInfo de la librería SDFat que mencioné antes y CardInfo de la librería SD.

Habrá otros motivos posibles?

Otras cosas que probé: vi que en varios lugares que se mencionaba la necesidad de iniciar la comunicación SPI.begin(), algo no incluido en los códigos que cito... Se supone que si los códigos trabajan sobre la comunicación SPI esta línea estará contemplada en algún lado, pero en fin: probé agregarlos en el código pero tampoco tuve éxito

Muchas gracias

surbyte

Aca esta el hilo... que cómodo eres!!!
El último hilo de la primer página de Software. No había  mucho para buscar.
El hilo tiene fecha 11/11/16. Tarjeta SD, localizada e iniciada pero no leido el contenido
Mira la parte de la inicialización de la SD donde se cambia la velocidad a SPI_HALF_SPEED o SPI_QUARTER_SPEED
Eso a veces soluciona las cosas.

El IDE viene con la librería SD. Porque no usas la librería SD con sus ejemplos como CARD_INFO.ino o algo así y la pruebas haciendo los cambios para el MEGA. (no uses 10 o 4 para CS, sino 53 si mal recuerdo).
Prueba con esto y nos dices.

Los errores o salidas del monitor los presentas como códigos o sea usando tags o capturas.
Gracias.

mrfloid

Resulta que en mis apuntes había invertido la posición de los pines MOSI y MISO... :smiley-confuse:
Y así venía haciendo las pruebas... El asunto está solucionado.

Muchas gracias Surbyte por tu ayuda!


PD:
Aunque el problema era mas simple de lo que parecía, no llego a comprender algunas de las posibles soluciones que fueron apareciendo en mi búsqueda. No se si cabe el espacio aquí para que puedas (o pueda alguien) minimamente aclarar algunas cuestiones que me exceden, ya que los foros son la mayor fuente de información que tenemos para aprender sobre Arduino. De hecho, para CATALEX microSD ni siquiera hay una hoja de datos como la gente (la única que existe está en chino mandarín).

Entendí lo del ajuste de la velocidad y el importante rol que ocupa el pin CS (o SS) en este asunto de la sincronización en la transferencia de datos. Pero por ejemplo, no entiendo por qué hay quienes requieren reemplazar las lineas

 if (!SD.begin(chipSelect)) {... 

por 

while (!card.init(SPI_HALF_SPEED, chipSelect)) {...

para que la cosa funcione.
O que tengan que modificar el conexionado del pin 53 por otra posición que no es la "estándar" para la placa MEGA.

Es indudable que como newbie me toca leer mucho sobre cada dispositivo antes de poder hacerlo andar. Pero como placas Arduino hay muchas, módulos también y librerías ni hablar, las combinatorias posibles son mayores a las que uno supone y así también los problemas que van surgiendo.

Nuevamente gracias por su tiempo.



surbyte

Si es dificl, y es mucho para leer y para asimilar.
Es bueno que te des cuenta de eso porque entonces el siguiente paso será con mas cautela. 
No hay que subestimar a Arduino, y hay que tener en cuenta que hoy compramos barato y lo barato a todos no sale caro.. fallos en las soldaduras por ejemplo. 
Luego lidiar con librerías y para terminar hacer que todo funcione.
Yo tmb he tenido todos los problemas con las SD. Malas conexiones, luchar con las inicialización, cambiar la velocidad del SPI, etc, etc.. hasta que una SD funcionaba y otra no. Formateadas igual. Son muchos detalles. 
Hay que anotarlos y seguir avanzando.

mrfloid

Uffff ahora que el modulo CATALEX se sube al barco de mi proyecto y la tarjeta uSD es reconocida, resulta que hay conflicto entre la comunicación con la pantalla lcd 16x2. Dejo de ver textos en pantalla que deberían aparecer... Si si ya se jajaj consultaré otros hilos antes de sumar uno nuevo a la causa

Go Up