Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: [u]nsigned en 6 Junio 2020, 07:20 am



Título: RC522 y Arduino UNO/MEGA usando IRQ (interrupts)
Publicado por: [u]nsigned en 6 Junio 2020, 07:20 am
Hola, estoy aprendiendo Arduino. Tengo un lector RFID modelo RC522 y lo quiero usar con tarjetas.

(https://i1.wp.com/saber.patagoniatec.com/wp-content/uploads/2016/07/Tutorial-RFID-1.jpg?w=1080&ssl=1)

Todos, absolutamente todos los ejemplos que he encontrado son usando el metodo polling, es decir meter una rutina que constantemente esté verificando si se leyo algo, dentro de la funcion loop del programa Arduino.

Mi duda es si algun heroe sin capa podria darme un ejemplo basico de como usar el pin IRQ del RC522 asi poder manejar la lectura con las interrupciones de mi Arduino. Tambien tengo un arduino Mega como opcion B


Título: Re: RC522 y Arduino UNO/MEGA usando IRQ (interrupts)
Publicado por: rub'n en 6 Junio 2020, 09:07 am
Hola, estoy aprendiendo Arduino. Tengo un lector RFID modelo RC522 y lo quiero usar con tarjetas.

(https://i1.wp.com/saber.patagoniatec.com/wp-content/uploads/2016/07/Tutorial-RFID-1.jpg?w=1080&ssl=1)

Todos, absolutamente todos los ejemplos que he encontrado son usando el metodo polling, es decir meter una rutina que constantemente esté verificando si se leyo algo, dentro de la funcion loop del programa Arduino.

Mi duda es si algun heroe sin capa podria darme un ejemplo basico de como usar el pin IRQ del RC522 asi poder manejar la lectura con las interrupciones de mi Arduino. Tambien tengo un arduino Mega como opcion B

Que tal hommie? no tengo esa tarjeta si quiero es la PN532, por lo visto en el loop debes tener un condicional y con una variable booleana volatile, que sete a false una vez entrado en ese condicional.

Código
  1. #include <SPI.h>
  2. #include <MFRC522.h>
  3. #include <String.h>
  4.  
  5. #define RST_PIN     8
  6. #define SS_PIN      9
  7.  
  8. MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance
  9.  
  10. volatile bool cardPresent; //variable como flag
  11.  
  12. void setup()
  13. {
  14.  Serial.begin(9600);       // Initialize serial communications with the PC
  15.  while (!Serial);      // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
  16.  SPI.begin();          // Init SPI bus
  17.  mfrc522.PCD_Init();       // Init MFRC522
  18.  mfrc522.PCD_WriteRegister(MFRC522::ComIrqReg, 0x80); //Clear interrupts
  19.  mfrc522.PCD_WriteRegister(MFRC522::ComIEnReg, 0x7F); //Enable all interrupts
  20.  mfrc522.PCD_WriteRegister(MFRC522::DivIEnReg, 0x14);
  21.  Serial.println(F("Ready..."));
  22.  attachInterrupt(0, isr, RISING);
  23. }
  24.  
  25. void loop()
  26. {
  27. if (cardPresent)
  28.    {
  29.    Serial.println(F("Interrupt"));
  30.    mfrc522.PCD_WriteRegister(MFRC522::ComIrqReg, 0x80); //Clear interrupts
  31.    cardPresent = false;
  32.    }
  33. }
  34.  
  35. void isr()
  36. {
  37.   cardPresent = true;
  38. }
  39. }

Pasate por aqui https://arduino.stackexchange.com/questions/9656/using-interrrupts-with-rc522

Y sino funciona, por educacion aunque sea, ayuda con el codigo LMAOOO  :xD si quieres.


Título: Re: RC522 y Arduino UNO/MEGA usando IRQ (interrupts)
Publicado por: [u]nsigned en 9 Junio 2020, 03:54 am
Mañana lo pruebo. Pero Ya habia visto ese ejemplo y creo que seguiria siendo polling, ademas ahi no usan el puerto IRQ del RC522