Lecto-grabador de tarjetas MMC, SD, MicroSD con PIC16F877A

Hola he estado haciendo un proyecto con una SD, en proteus todo va bien, se inicia la tarjeta y luego el comando 41y funciona, el problema es cuando lo hago en el circuito, el reset de la tarjeta funciona pero cuando le envio el comando 41 esta hace corto y se apaga la fuente de poder es una ATX, que tiene alimentación de 3.3 V, uso un pic18f4550. cual sera el problema? es un poco raro que la tarjeta haga corto no?
 
La memoria hace corto??? eso es muy raro y lo puedes descartar haciendo el cambio de la tarjeta, yo creo que es otra parte de tu circuito ya que la memoria explotaria literalmente si tuviera la capacidad de absorber mas de 1 amp. Yo tambien apenas inicio en este proyecto, y lo estoy haciendo en lenguaje sagrado "ENSAMBLADOR" jeje... pronto hare mi aporte ¡¡
 
Moyano Jonathan dijo:
Lo que plantea pablo es intersante, hay alguna forma de que el pic me notifique cuando la targeta está puesta en el zocalo o no?
Hola, para el proyecto que yo estoy realizando hago esa comprobación por software:

while(SD_Init()!=0)//(Ciclo para detectar si la tarjeta SD está insertada)
{
//No SD card detected (puedes usar printf ("Inserte una tarjeta SD correcta") o algo parecido)
}


Mi función SD init devuelve 1 si la SD se inicializa correctamente o 0 si hay algún fallo, luego me sirve para inicializar la tarjeta en modo SPI, para comprobar si hay tarjeta insertada o en caso de tener una insertada, saber si se ha detectado correctamente o no.

No se si es eso lo que querías decir.

Saludos
 
Última edición:
La duda es la siguiente, quiero mezclar mediante programación en un microcontrolador 2 archivos WAV para que suenen al mismo tiempo por un mismo altavoz, y no tengo claro como hacerlo.
¿Seria sumar el valor de las muestras? ¿Sumar y dividir por 2? ¿Van por ahi los tiros o no tiene nada que ver el sumar?
La duda queda expresada de forma mas extendida en el tema creado hoy por mi aqui
 
Chico3001 dijo:
decodificas ambos wav y los sumas entre si... ya sea de forma analogica con un operacional a la salida de los DACs... o de forma digital..

Gracias por la respuesta. Prefiero hacerlo de forma digital, para ahorrar componentes y consumo del circuito.

Supongamos que los 2 WAV son de 8 bits por muestra y quiero una salida de 8 bits tambien.
Las 2 primeras muestras son 23 y 4D. Sumas 23 + 4D = 70.
Las 2 sigientes muestras son de valor F2 y 9C. Sumar las 2 F2+ 9C = 18E. <-overflow

A esto me refiero si hay que dividir por 2 la suma de las muestras. O si en caso de overflow esta muestra quedaria mejor como FF.
M1->70/2=38
M2->18E/2=C7
o
M1->70
M2->FF

¿Que sería mejor?
 
Hola.
Si expresas matemáticamente el funcionamiento de un mezclador análogo te puede dar una luz sobre el asunto ya que son prácticamente iguales (toma en cuenta la amplitud y otras cosas), ésto lo aplique con un dsPIC, pero claro, no se como estas tratando internamente la decodificación de los archivo wav.
Por otro lado puedes leer Mixing Digital Audio como ejemplo para 8 bits.

Saludos.
 
Amigos, consulta tomando como referencia este párrafo...

Código:
-Enviar el comando 24 0x58, 0xXX,0xXX,0xXX,0xXX,0xYY. Los 4 bytes XX corresponden a la dirección a partir de la cual se quieren guardar los datos. 0xYY corresponde al byte de CRC y como la tarjeta esta en modo SPI pueden tomar cualquier valor ya que no se consideran.
¿Porqué el comando CMD24 es igual a 0x58, como se obtiene el mismo?
¿En donde 0xXX, 0xXX, 0xXX, 0xXX, 0xXX; es el byte 0 de la dirección del offset a grabar?

No consigo ningún manual o tutorial que explique con manzanas esta parte :p

Yo encontré un source code pero aparentemente es para utilizar el SD Bus y no el SPI, ya que en ningun momento hace uso de el pin CS/SS y si lo hace con pienes nombrados CMD, CLK, DAT0... A quien le interese solo me avisa y lo cuelgo en el post... De momento me gustaría que alguien me aclare esas dudas consultadas arriba ;)

Ahi lo hice andar. Ahora estoy viendo lo de fat 16 pero la leí con comunicacion serie y la grabe bien. CUALQUIER AYUDA QUE NECESITEN AVISEN. Aca mando los pasitos pero despues deescribir hay que esperar una sola respuesta.
 
Última edición por un moderador:
Hola amigo saludo tengo una pregunta como puede manejar el FAT16 con ccs compiler tengo un pic16f877a.
les agradezco cualquier guía ya que por lo visto no ahí librerías para este manejo.
 
Versión, no lo sé, pero el archivo tiene el año 2007.
/////////////////////////////////////////////////////////////////////////
//// fat_ex_shell.c ////
//// ////
//// This is a neat little shell utility that resembles a DOS or ////
//// UNIX type shell in order to manipulate files on the FAT file ////
//// system. This is mostly for demonstration purposes on how to use ////
//// some of the basic functionality of the FAT library. ////
//// ////
/////////////////////////////////////////////////////////////////////////
//// (C) Copyright 2007 Custom Computer Services ////
//// This source code may only be used by licensed users of the CCS ////
//// C compiler. This source code may only be distributed to other ////
//// licensed users of the CCS C compiler. No other use, ////
//// reproduction or distribution is permitted without written ////
//// permission. Derivative programs created using this software ////
//// in object code form are not restricted in any way. ////
/////////////////////////////////////////////////////////////////////////
Así que desde ese entonces debe venir ese ejemplo en las instalaciones.

Usa el buscador de Windows, posiblemente así la puedas encontrar. (Yo hago eso)
O búscala con el nombre que viene interno. "fat_ex_shell.c" Posiblemente en versiones anteriores así se llame.

Si de plano no la encuentras, ya es tiempo de que actualices el compilador, porque la versión que tienes ya es obsoleta.
La versión actual a esta fecha, es la v5.056
 
Lo que voy hacer es a migrar de versión y cuando la instalo y estudio el ejemplo le cuento haber como me fue.
Gracias por tu tiempo.



la ultima pregunta por hoy.
D@rkbytes, sabes de una versión de 5.056 que no se tenga que pagar jejejeje y que no se un demo de 30 días. Las que veo discretamente gratis son versiones mas viejas.
 
Última edición:
Hola D@rkbytes ya actualice la versión de mi PIC C y me encuentro estudiando el ejemplo que me comentaste en líneas anteriores (ex_fat.c) pero cada línea que voy analizando me pregunto si esta librería me ayudara para lo que tengo en mente.
El ejercicio que tengo en mente es con un pic16f877a comunicarme con una SD por el puerto SIP y así de esta manera poder grabar archivo que el micro necesite utilizar más adelante. Por ejemplo
Antes yo grababa en la memoria del PIC un número que para ese caso era una clave ‘123456’ pero ahora lo que me gustaría es grabar ese número en la memoria SD y cuando lo necesite el PIC que se comunique con la memoria y devuelva el dato,
De esta misma manera me gustaría grabar audio y reproducirlo cuando el pic asi lo solicite.
Pensé que para el formato de audio podía ser mp3, o algo que se ajuste a los recursos del pic.
Por este último punto, pensé que tengo que aprender a manejar el arregle de FAT, pero si crees que puedo manejarlo de otra manera el tema te agradezco tu orientación.
 
Si ese ejemplo tiene la posibilidad de escritura, si te puede servir. No lo he usado.
Reproducir archivos MP3 con un PIC desde una microSD, si es posible pero no es tarea fácil.
Yo lo he hecho con un PIC18F2550 y con un muestreo de 44.1 KHz. (Monoaural)

Ahora ya no hago el proceso con el PIC, ahora lo hago con módulos WT5001M02 v1.00
Es mucho más sencillo, ya que se puede usar USART o SPI como protocolos de comunicación.
Tienen otras características interesantes y aparte se pueden usar memorias en formato FAT16 y FAT32 y de más de 2 GB.

Así que mejor vete por el lado de ese módulo o por otro de los tantos que existen actualmente. ;)
 
hola D@rkbytes me encuentro estudiando el módulo WT5001M02 28P que me comentaste y como bien dijiste, ahorra mucho tiempo de trabajo. Pero me Ha surgido una duda, los protocolos de comunicación para su control son los mismo tanto para el serial control RS232, como para el del SPI.
protocolo de comunicacion.jpg
 
Arriba