Autor Tema: rfid id-20 innovations con pic 16f628a recepcion de datos ascii serin? serin2?  (Leído 6720 veces)

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

Desconectado pablovillarroel

  • PIC10
  • *
  • Mensajes: 1
hola a todos, primero que todo quiero agradecer a este foro por dar la posibilidad de aprender y asi mismo mostrar nuestras dudas.

Les cuento: lo que estoy intentando hacer es  comunicar el lector rfid id-20 de innovations con el pic 16f628a, los datos que recibo del lector rfid es en formato ascii  TTL Data (inverted),los datos que recibo corresponden al id (identificacion) del Tag. Una ves recibido el dato (id tag en formato ascii) lo quiero almacenar en la eeprom del pic, para posteriormente  cuando vuelva a ingresar  el tag el pic me compare si es el mismo id que almacene en la eeprom y si es igual,que el programa ejecute otra accion, en este caso enviar una palabra por otro pin del pic hacia el puerto serie del pc para poder visualizar.

Estoy ocupando la instruccion SERIN  para poder registrar el id en formato ascii en el microcontrolador en la memoria eeprom,pero no obtengo resultado ya que en el programa al visualizar en el pc me aparece solo AUTO1 independiente del tag que registre.
Alomejor tengo que ocupar serin2 pero no lo tengo muy claro. por favor si me pueden ayudar a poder recibir estos datos ascii.
desde ya muchs gracias por su tiempo y disposicion al que comente el tema.

Esta es la forma de salida del lector en formato ascii.
Output Data Structure – ASCII

STX (02h) - DATA (10 ASCII) -  CHECK SUM (2 ASCII)  - CR -  LF  - ETX (03h)
[The 1byte (2 ASCII characters) Check sum is the “Exclusive OR” of the 5 hex bytes (10 ASCII) Data characters.]

El programa que hice es el siguiente y esta en basic.

include "modedefs.bas"

auto1 var byte
auto2 var byte
auto11 var byte
auto12  var byte
id var byte
led var portb.2

inicio:
serin portb.0,N9600,auto1
pause 500
WRITE 10,auto1      ;guardar en la EEPROM0 el valor de auto1
read 10,auto11

if auto1=0 then inicio

inicios:
serin portb.0,N9600,auto2
pause 500
WRITE 11,auto2      ;guardar en la EEPROM1 el valor de auto2
read 11,auto12

if auto2=0 then inicios
interrupcion:

ON INTERRUPT GOTO envia
INTCON=%10010000
prog:
 high led
 pause 200
 low led
 pause 200
goto prog

disable
envia:
serin portb.0,N9600,id
pause 500
if id=auto11 then
   serout portb.1,N2400,["AUTO1"]
else
     serout portb.1,N2400,["auto1no"]
if id=auto12 then
      serout portb.1,N2400,["AUTO2"]
else
     serout portb.1,N2400,["auto2no"]

   endif
endif
id=0

INTCON=%10010000
RESUME
ENABLE
goto interrupcion
END

 

Desconectado lowus

  • PIC10
  • *
  • Mensajes: 11
Re: rfid id-20 innovations con pic 16f628a recepcion de datos ascii serin? serin2?
« Respuesta #1 en: 20 de Octubre de 2010, 13:03:55 »
HOla Pablo como estás?, el tema es un poco viejo y no se si pudiste resolverlo, yo quería preguntarte, tengo un lector ID-12 de innovations, pero no he podido leer las tarjetas RFID, incluso intenté adaptar tu programa, mi pregunta es: ¿si quiero simplemente mostrar el serial de la tarjeta rfid en un LCD que debo hacer?
cuando dices "serin portb.0,N9600,auto1" ¿ya con esto guarda el serial de la tarjeta en la variable auto1? a mi no me funciona, no me guarda nada. si puedes ayudarme, muchas gracias

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re: rfid id-20 innovations con pic 16f628a recepcion de datos ascii serin? seri
« Respuesta #2 en: 20 de Octubre de 2010, 17:17:15 »
Que tal lowus,

Yo tengo experiencia con ese lector. Y es muy simple de usar. Con respecto a tu pregunta de que si con el "serin portb.0,N9600,auto1" se captura el ID de la tarjeta.
La respuesta es no.
El lector envia un frame que como pablovillarroel lo expone es:
STX (02h) - DATA (10 ASCII) -  CHECK SUM (2 ASCII)  - CR -  LF  - ETX (03h)
[The 1byte (2 ASCII characters) Check sum is the “Exclusive OR” of the 5 hex bytes (10 ASCII) Data characters.]

Lo que quiere decir que debe eliminar el primer caracter que es STX (02h), este caracter es para hacerte saber el inicio de la cadena, despues de ese caracter es que se envian los 10 caracteres ASCII que contiene el ID de la tarjeta, despues viene el checksum, un retorno de carro
y un fin de transmision que es el caratere ETX(03h)

Saludos y espero qeu te haya diso de ayuda.

Elreypic.

Desconectado javierdavid2006

  • PIC10
  • *
  • Mensajes: 15
Re: rfid id-20 innovations con pic 16f628a recepcion de datos ascii serin? serin2?
« Respuesta #3 en: 13 de Noviembre de 2010, 20:04:22 »
Hola reypic2, estoy intentando usar el id12 que tu ya lo has usado pero no tengo buenos resultados, solologre hacerlo funcionar conectandolo a la computadora y usando el hiperterminal, me podrias ayudar con el codigo para este programa, lo estoy haciendo en ccs con el 16f877a el programa es el siguiente

#include <16F877a.h>
#fuses XT,NOWDT
#use delay(clock= 4000000)
#use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,bits=8)
#include <lcd.c>
char cadena[];
int  i=0;


#int_rda
rda_isr()
{
for(i=0;i<14;i++){
cadena=getchar();
}
}

void main(){
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc,"\f%09X",cadena);
}

Me da Warning 208 Line24(1,8):Function not void and does not return a value rda_isr,ademas que solo lee el 02, que debe ser el del inicio de la transmision del dato, despues todo es cero.

Gracias forero y ayudame por favor......


 

anything