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.
RFID-dva bajta viška
Moderators: pedja089, stojke369, [eDo], trax
Re: RFID-dva bajta viška
Za sta ti sluzi ova linija:
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:
izbrisi i onu pauzu:
Code: Select all
USART_Write (77) ' control byte - transmition is finished
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])
..
..
..
Code: Select all
delay_ms(500)
Re: RFID-dva bajta viška
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.
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.
Re: RFID-dva bajta viška
Da li si probao sa ovim gore sto sam ti ranije predlozio?
Re: RFID-dva bajta viška
Pozdrav,
jesam i uspjelo je. Radi!!!
Puno hvala, nakon više od mjesec dana proradilo je.
jesam i uspjelo je. Radi!!!
Puno hvala, nakon više od mjesec dana proradilo je.
Re: RFID-dva bajta viška
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.
' *
' * 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.