Ok, I see . . .
So the power on / voltage rise time might be an issue . . .
Well, I should get my easyPic 7 today. But if these RFIDs are pedantic then using the RFID in the field as a click module might have its challenges . . . and I was hoping to pursue that route.
Anyway, ...
RFID Click example not working
Re: RFID Click example not working
ZarDynamix | Fidelis et fortis semper
An embedded solutions company
Site | http://www.zardynamix.com
An embedded solutions company
Site | http://www.zardynamix.com
Re: RFID Click example not working
Hi,
Regards,
Filip.
The RFid Click can read only blue tags, the RFID Reader board can read white cards.1. BUT Why it does NOT read THE WHITE COLOUR CARD.
Regards,
Filip.
Re: RFID Click example not working
final question is this click board can write to the blue tag?
if yes, is there any example of code in lib stock?
if yes, is there any example of code in lib stock?
Re: RFID Click example not working
Hi,
The blue tags cannot be written to.
Regards,
Filip.
The blue tags cannot be written to.
Regards,
Filip.
-
- Posts: 103
- Joined: 15 May 2012 12:30
Re: RFID Click example not working
Hello,
I have that problem too... without MikroE board.
I work with a PIC18F46K22 and RFid Click.
My hardware is :
RFid Click => PIC18F46K22
--------------------------------
SI1 => RA2 (pin 4)
SI0 => RA3 (pin 5)
CS => RA0 (pin 2)
SCK => SCK2 (RD0, pin 19)
SDO => SDI2 (RD1, pin 20)
SDI => SDO2 (RD4, pin 27)
INI => RA1 (pin 3)
I'm stuck in EchoResponse(), just after MCU init...
Partial main code :
Init MCU code :
RFid routines :
My UART debug :
... and so on !
Sometimes, "tmp = ff"...
Really don't know why...
Thanks for your help !
Best regards.
I have that problem too... without MikroE board.
I work with a PIC18F46K22 and RFid Click.
My hardware is :
RFid Click => PIC18F46K22
--------------------------------
SI1 => RA2 (pin 4)
SI0 => RA3 (pin 5)
CS => RA0 (pin 2)
SCK => SCK2 (RD0, pin 19)
SDO => SDI2 (RD1, pin 20)
SDI => SDO2 (RD4, pin 27)
INI => RA1 (pin 3)
I'm stuck in EchoResponse(), just after MCU init...
Partial main code :
Code: Select all
InitMCU();
[...]
UART1_Write_Text("1\r\n");
RFid_Init();
UART1_Write_Text("2\r\n");
Code: Select all
void InitMCU() {
IRCF2_bit = 1;
IRCF1_bit = 1;
IRCF0_bit = 1;
PLLEN_bit = 1;
ANSELA = 0;
ANSELB = 0;
ANSELC = 0;
ANSELD = 0;
ANSELE = 0;
TRISA = 0b00000000;
TRISB = 0b00000000;
TRISC = 0b10011000;
TRISD = 0b00000010;
TRISE = 0b00000000;
[...]
UART1_Init(256000);
delay_ms(100); // Stabilisation UART
}
Code: Select all
#include "RFid.h"
sbit RFid_CS at LATA0_bit;
sbit RFid_CS_Direction at TRISA0_bit;
sbit RFid_IRQ_IN at LATA1_bit;
sbit RFid_IRQ_IN_Direction at TRISA1_bit;
sbit RFid_SSI_1 at LATA2_bit;
sbit RFid_SSI_1_Direction at TRISA2_bit;
sbit RFid_SSI_0 at LATA3_bit;
sbit RFid_SSI_0_Direction at TRISA3_bit;
unsigned char sdata[18];
unsigned char rdata[18];
unsigned short res = 0;
unsigned short dataNum = 0;
unsigned char RFid_ID[10] = {0};
void RFid_Write(unsigned char command, unsigned short length) {
unsigned short i;
RFid_CS = 0;
SPI2_Write(0x00);
SPI2_Write(command);
SPI2_Write(length);
while(length == 0) {
RFid_CS = 1;
break;
}
for(i = 0; i < length; i++) {
SPI2_Write(sdata[i]);
}
RFid_CS = 1;
}
void RFid_Read() {
unsigned short i;
while(1) {
RFid_CS = 0;
SPI2_Write(0x03);
res = SPI2_Read(0);
RFid_CS = 1;
if((res & 0x08) >> 3) {
RFid_CS = 0;
SPI2_Write(0x02);
res = SPI2_Read(0);
dataNum = SPI2_Read(0);
for(i = 0; i < dataNum; i++) {
rdata[i] = SPI2_Read(0);
}
RFid_CS = 1;
break;
}
RFid_CS = 1;
delay_ms(10);
}
}
unsigned short RFid_Echo() {
unsigned int tmp;
unsigned char buffer[64];
RFid_CS = 0;
SPI2_Write(0x00);
SPI2_Write(0x55);
RFid_CS = 1;
while(1) {
RFid_CS = 0;
SPI2_Write(0x03);
tmp = SPI2_Read(1);
RFid_CS = 1;
UART1_Write_Text("1.1.1\r\n");
sprintf(buffer, "tmp = %x\r\n", tmp);
UART1_Write_Text(buffer);
if((tmp & 0x08) >> 3) {
RFid_CS = 0;
SPI2_Write(0x02);
tmp = SPI2_Read(1);
RFid_CS = 1;
UART1_Write_Text("1.1.2\r\n");
sprintf(buffer, "tmp = %x\r\n", tmp);
UART1_Write_Text(buffer);
if(tmp == 0x55) {
return 1;
}
return 0;
}
delay_ms(500);
}
}
unsigned short RFid_GetNFCTag() {
unsigned short i;
unsigned char txt_hex[3];
sdata[0] = 0x26;
sdata[1] = 0x07;
RFid_Write(0x04 , 2);
RFid_Read();
sdata[0] = 0x93;
sdata[1] = 0x20;
sdata[2] = 0x08;
RFid_Write(0x04 , 3);
RFid_Read();
if(res == 0x80) {
for(i = 1; i < dataNum - 3; i++) {
ByteToHex(rdata[i], txt_hex);
strcat(RFid_ID, txt_hex);
}
RFid_ID[10] = 0;
return 1;
}
else
return 0;
}
void RFid_Init() {
unsigned short i;
RFid_CS_Direction = 0;
RFid_IRQ_IN_Direction = 0;
RFid_SSI_1_Direction = 0;
RFid_SSI_0_Direction = 0;
RFid_IRQ_IN = 1;
RFid_CS = 1;
RFid_SSI_1 = 0;
RFid_SSI_0 = 1;
SPI2_Init_Advanced(_SPI_MASTER_OSC_DIV64, _SPI_DATA_SAMPLE_MIDDLE, _SPI_CLK_IDLE_LOW, _SPI_LOW_2_HIGH);
delay_ms(1000);
UART1_Write_Text("1.1\r\n");
while(!RFid_Echo()) {
RFid_IRQ_IN = 0;
delay_ms(100);
RFid_IRQ_IN = 1;
delay_ms(100);
}
UART1_Write_Text("1.2\r\n");
// Calibration
sdata[0] = 0x03;
sdata[1] = 0xA1;
sdata[2] = 0x00;
sdata[3] = 0xF8;
sdata[4] = 0x01;
sdata[5] = 0x18;
sdata[6] = 0x00;
sdata[7] = 0x20;
sdata[8] = 0x60;
sdata[9] = 0x60;
sdata[10] = 0x00;
sdata[11] = 0x00;
sdata[12] = 0x3F;
sdata[13] = 0x01;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0xFC;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x7C;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x3C;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x5C;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x6C;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x74;
RFid_Write(0x07, 0x0E);
RFid_Read();
sdata[11] = 0x70;
RFid_Write(0x07, 0x0E);
RFid_Read();
UART1_Write_Text("1.3\r\n");
// IndexMod & Gain
sdata[0] = 0x09;
sdata[1] = 0x04;
sdata[2] = 0x68;
sdata[3] = 0x01;
sdata[4] = 0x01;
sdata[5] = 0x50;
RFid_Write(0x09, 6);
RFid_Read();
UART1_Write_Text("1.4\r\n");
// Auto FDet
sdata[0] = 0x09;
sdata[1] = 0x04;
sdata[2] = 0x0A;
sdata[3] = 0x01;
sdata[4] = 0x02;
sdata[5] = 0xA1;
RFid_Write(0x09, 6);
RFid_Read();
UART1_Write_Text("1.5\r\n");
// RF communication protocol (ISO/IEC 14443-A)
sdata[0] = 0x02;
sdata[1] = 0x00;
RFid_Write(0x02, 2);
RFid_Read();
// Effacer buffers
for(i = 0; i < 18; i++){
rdata[i] = 0;
sdata[i] = 0;
}
}
Code: Select all
1
1.1
1.1.1
tmp = 0
1.1.1
tmp = 0
1.1.1
tmp = 0
1.1.1
tmp = 0
1.1.1
tmp = 0
Sometimes, "tmp = ff"...
Really don't know why...
Thanks for your help !
Best regards.