RFID-dva bajta viška

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
majstor1
Pocetnik na forumu
Pocetnik na forumu
Posts: 47
Joined: 17-10-2014, 13:43

RFID-dva bajta viška

Post by majstor1 »

Pozdrav svima,
programiram na EASYPIC5, 18F4620, 8 MHz u Mikrobasic-u i pokušavam pročitati 14 bajtni kod kartice pomoću RFID čitača. Problem je što uvijek dobijem nakon očitavanja još dva bajta (to su prva dva bajta u nizu od 14 bajtova). Na kontrolnom terminalu dobijem sljedeće:
Received: 2
Received: 52 55 48 48 65 49 69 52 53
Received: 65 53 56 3
Received: 77 (ovo su moja dva kontrolna bajta koji signaliziraju da je sve pročitano)
Received: 2 52 (ovo su dva problematična bajta)

Ima li tko kakvu ideju gdje griješim?

Moj kod:
program Usart_Test
dim i as byte [14]
dim kraj, start as byte
dim brojac as byte
dim b as byte [15]

main:
INTCON=0 ' onamogućeni su spoljni interapti
CMCON=7
ADCON0 = 0x0F
ADCON1 = 0x0F
USART_init(9600) ' initialize USART module
kraj=0
start=0
brojac=0
trisc.6=0
trisc.7=1

pocetak:
b[1]=0
b[2]=0
b[3]=0
b[4]=0
b[5]=0
b[6]=0
b[7]=0
b[8]=0
b[9]=0
b[10]=0
b[11]=0
b[12]=0
b[13]=0
b[14]=0

brojac=0
start=0


while kraj<1
if (USART_Data_Ready()) then
inc (brojac) ' count to 14
i[brojac] = USART_Read()
USART_Write (i[brojac])

if brojac =14 then
kraj=1
end if
end if

wend
kraj=0
delay_ms(500)
USART_Write (77) ' control byte - transmition is finished
goto pocetak
end.
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3508
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Re: RFID-dva bajta viška

Post by trax »

Za sta ti sluzi ova linija:

Code: Select all

USART_Write (77) ' control byte - transmition is finished
Sta ce ti se desiti kada u kartici bude ta vrijednost, negdje na sredini?

Vrlo je moguce da kada ti citac procita karticu i posalje podatke na UART on odma nastavi da cita karticu jos jednom a PIC ti to primi u svoj UART RX FIFO Buffer koji je vjerovatno 2 bajta. Slijedeci put kada ti program uleti u petlju on vec ima ta dva prva bajta procitana u bufferu od ranije i njih ti prvo izbaci, pa onda ostatak.

Mozda ovako:

Code: Select all

while USART_Data_Ready()
   USART_Read()
wend

while kraj<1
if (USART_Data_Ready()) then
inc (brojac) ' count to 14
i[brojac] = USART_Read()
USART_Write (i[brojac])
..
..
..
izbrisi i onu pauzu:

Code: Select all

delay_ms(500)
majstor1
Pocetnik na forumu
Pocetnik na forumu
Posts: 47
Joined: 17-10-2014, 13:43

Re: RFID-dva bajta viška

Post by majstor1 »

Pozdrav,

USART_Write (77) ' control byte - transmition is finished
Tom linijom sam samo provjeravao kada završava ciklus od 14 učitavanja.

U međuvremenu sam pločicu RDM6300 provjeravao sa osciloskopom i ona radi savršeno. U jednom ciklusu pošalje samo 14 byte-ova i stane. Nakon slanja dva moja kontrolna byte (USART_Write (77) ' control byte - transmition is finished) PIC sam generira prva dva byta i spreman je za novo čitanje, a ja stvarno ne znam gdje je problem. Možda negdje u samom PIC (USART registrrir ili nešto slično). Promjenio sam 18F4620 sa 18F2620 i opet isti rezultat. Starno sam lud, već mjesec dana, a nemam pomaka.
Hvala na pomoći.
User avatar
trax
Administrator sajta
Administrator sajta
Posts: 3508
Joined: 08-01-2005, 18:04
Location: 75k, BA
Contact:

Re: RFID-dva bajta viška

Post by trax »

Da li si probao sa ovim gore sto sam ti ranije predlozio?
majstor1
Pocetnik na forumu
Pocetnik na forumu
Posts: 47
Joined: 17-10-2014, 13:43

Re: RFID-dva bajta viška

Post by majstor1 »

Pozdrav,
jesam i uspjelo je. Radi!!!
Puno hvala, nakon više od mjesec dana proradilo je.
majstor1
Pocetnik na forumu
Pocetnik na forumu
Posts: 47
Joined: 17-10-2014, 13:43

Re: RFID-dva bajta viška

Post by majstor1 »

Od sreće sam i zaboravio http://www.elektronika.ba/forum/posting ... =3&t=15611#. Ovo je kod:

' *
' * Project name
' Usart_and RFID Test
' * Description
' This code demonstrates how to use usart library routines and RFID reader.
' Upon reading via RFID (type RDM6300), PIC MCU immediately sends it to the
' PC via UART.
' * Test configuration
' MCU P18F2620
' Dev.Board EasyPIC5
' Oscillator HS, 08.0000 MHz
' Ext. Modules -
' SW mikroBasic v7.0
' * NOTES
' - Connect Rx to RC7 and Tx to RC6.
' *

program Usart_and RFID Test
dim start, counter as byte
dim i as byte [14]

main:
INTCON=0
TRISC.6=0
TRISC.7=1
ADCON0 = 0x0F
ADCON1 = 0x0F
USART_init(9600) ' initialize USART module

START:
counter=0
start=0

while USART_Data_Ready()
USART_Read()
wend

while counter<14
if (usart_data_ready()) then
inc (counter)
i[counter] = USART_Read()
USART_Write (i[counter])
end if
wend

delay_ms (1000)

goto START
end.
Post Reply