Autor Tema: Usar RFID RC522 y modulo uSD  (Leído 3406 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Usar RFID RC522 y modulo uSD
« en: 13 de Noviembre de 2018, 20:57:52 »
Hola gente, muy buenas noches. Acudo a ustedes como última opción,  sinceramente no encuentro la solución al problema.
Resulta que quiero hacer un control de acceso con un micro 18F4550, un módulo Rc522 y un módulo uSD. La cuestión es la siguiente
tengo un programa funcionando, pero el problema es que funciona una sola vez, es decir en el código tengo un "While (TRUE)" resulta que ejecuta el código una sola vez, y no entiendo porque.
Si alguno pudiera darme una mano, estoy usando las librerías de  Suky v1.9 y uso los dos módulos conectados por SPI a nivel hardware.
Como compilador uso CCS.

Creo que el problema esta en la programación ya que el código anda, pero solo una vez. Leo el tag RFID y guardo en un archivo .txt pero solo lo hace una vez. Y creo que el problema esta en el chip select del módulo Rc522 ya que al inicio del programa esta a un nivel logico bajo (CS=0) y después de leer el primer tag se pone a 1, apagando el módulo.
Cabe resaltar que esto sucede solo cuando uso uso los dos módulos juntos, cuando lo uso solo el Rc522 hace todas las lecturas seguidas sin ningún problema. Así que deduzco que el problema está en el código al unir los dos programas. 
Acá les dejo el código para ver si me pueden dar una mano. Muchas gracias de antemano!!




Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Usar RFID RC522 y modulo uSD
« Respuesta #1 en: 16 de Noviembre de 2018, 09:47:11 »
Seguramente tu problema venga de:

- La libreria de Suky usa el SPI por Hardware
- La libreria del RC522 realiza un SPI por software

Y si son los mismos pines entonces vas a tener problemas. Podes probar para no cambiar nada, usar 3 pines mas (distintos del SPI por hardware) para el RC522.

Sino deberias usar aunque sea las funciones de HardwareSPI.c  (ReadMedia y WriteMedia)

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:Usar RFID RC522 y modulo uSD
« Respuesta #2 en: 16 de Noviembre de 2018, 11:35:03 »

Hola KILLERJC. Gracias por tu aporte.

Tengo la duda de como quedaría declarados los pines? Porque por lo que se (si no estoy equivocado) al usar:
#define MFRC522_CS PIN_B4               
#define MFRC522_SCK PIN_B1
#define MFRC522_SI  PIN_C7                         
#define MFRC522_SO  PIN_B0             
#define MFRC522_RST PIN_c5
Estoy declarando a nivel Hardware, si pudieras orientarme un poco mas seria genial. Nuevamente muchas gracias por tomarte el tiempo para ayudarme.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Usar RFID RC522 y modulo uSD
« Respuesta #3 en: 16 de Noviembre de 2018, 13:07:30 »
Pasos a seguir:

En caso de tener pines de sobra:

1- Buscar 5 pines libres mas que NO utilices
2- Conectar el RC522 a esos pines
3- Acomodar los define a los nuevos valores de pines

En caso de NO tener pines de sobra:

1- Modificar la libreria del RC522 para que use el SPI por Hardware. ( ver si es factible el uso del mismo )

Pongo "ver si es factible" debido a que el SPI por hardware de Microchip cambia de estado de CS cada 8 bits enviados.  Y esto puede traer problemas en algunos micros que esperan tener el CS para siempre en bajo. De ultima en este caso necesitarias acomodar el CS en otro pin aparte.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Usar RFID RC522 y modulo uSD
« Respuesta #4 en: 16 de Noviembre de 2018, 15:31:31 »
Otra posibilidad sería el deshabilitar el SPI harware después de usar el SD.

El flujo que veo en el código es el siguiente:
1.- Inicializa el lector RC522
2.- Realiza lectura de tarjeta si esta fue detectada
3.- Inicializa el SD card (Aquí se inicializa el módulo periférico del hardware del SPI)
4.- Crea el archivo texto en la SD card si esta fue inicializada correctamente
5.- Repite desde el paso 1

Pero, en el paso 3, al inicializar el SD card se inicializa el módulo periférico del SPI haciendo que los puertos respectivos no puedan ser manipulados nuevamente por la librería del RC522, por lo tanto, el proceso solo se realiza una vez.

Lo que pudieras hacer es lo siguiente:

1.- Inicializa el lector RC522
2.- Realiza lectura de tarjeta si esta fue detectada
3.- Inicializa el SD card (Aquí se inicializa el módulo periférico del hardware del SPI)
4.- Crea el archivo texto en la SD card si esta fue inicializada correctamente
5.- Deshabilita el módulo periférico del hardware del SPI, colocando en 0 el bit SSPEN del registro SSPCON1, permitiendo así la reinicialización del lector RC522
6.- Repite desde el paso 1

Espero que esto te ayude a resolver el problema.

elreypic.
P.S Definitivamente la opción más sencilla y rápida es la que te propone KILLERJC, si es que tienes 3 pines extras disponibles para: MFRC522_SCK, MFRC522_SI y MFRC522_SO. Con esto ya no necesitarías la circuitería extra que has colocado (los transistores y lon inversores).

Desconectado luchi94

  • PIC10
  • *
  • Mensajes: 17
Re:Usar RFID RC522 y modulo uSD
« Respuesta #5 en: 16 de Noviembre de 2018, 17:48:35 »
Efectivamente como sugirió  KILLERJC el problema se soluciono cambiando los pines del RC522. Muchas gracias por tomarse un tiempo para ayudarme.
Gracias  elreypic2 porque acá no se vio pero me estuvo ayudando por correo electrónico.

Muchisimas gracias a los dos por su ayuda, tiempo y dedicación.