Can you post your complete code?
I have to understand what are youīre trying to do.
regards Rob
Can you post your complete code?
I have to understand what are youīre trying to do.
regards Rob
You might try using WRITE to store the data. That might isolate the problem to your DATA or READ statements.
Maybe this one will help you.
I donīt try before working with SERIN2 but give it a try. You can change this part with storing data to eeprom too. Itīs only to see how to realize that, if iīm not wrong.
To store data on eeprom use
DATA @$00,$D7,$7C,$4B,$02,$2D,$C9,$80,$3A,$C4,$72
Code:Loop VAR BYTE ReadTag VAR BYTE[2] ConvTag VAR WORD Tag VAR WORD[5] Tag(1) = $D77C Tag(2) = $4B02 Tag(3) = $2DC9 Tag(4) = $803A Tag(5) = $C472 ' -----[ Program Code ]---------------------------------------------------- Main: LOW PORTB.3 ' activate the reader SERIN2 PORTB.2, T2400, [WAIT($0A,"100050"), STR ReadTag\2] HIGH PORTB.3 ' deactivate reader Check_List: ConvTag = ReadTag(0)*$100 + ReadTag(1) FOR Loop = 1 to 5 IF ConvTag = Tag(Loop) THEN Tag_found NEXT Loop GOTO Bad_Char Bad_Char: ' try next tag '.... '.... GOTO main Tag_Found:
Are you sure you're programming your tag numbers in EEPROM at burn time? You should be
able to read back the .hex after programming to check.
I donīt wrote the code before for storing on eeprom.
But maybe this could work
Error corrected... SorryCode:DATA @$00, $D7, $7C, $4B, $02, $2D, $C9, $80, $3A, $C4, $72 Loop VAR BYTE ReadTag VAR BYTE[2] Tag VAR WORD[5] TmpTag VAR BYTE[10] ConvTag VAR WORD ' -----[ Program Code ]---------------------------------------------------- FOR Loop= 0 TO 9 ' Reading Data from EEprom Adr: $00 -$09 READ Loop,TmpTag(Loop) NEXT Loop Main: LOW PORTB.3 ' activate the reader SERIN2 PORTB.2, T2400, [WAIT($0A,"100050"), STR ReadTag\2] HIGH PORTB.3 ' deactivate reader Check_List: FOR Loop = 0 TO 8 STEP 2 ' Calculate Word from HighByte + LowByte Tag(Loop/2) = TmpTag(Loop)*$100+TmpTag(Loop+1) NEXT Loop ConvTag = ReadTag(0)*$100+ReadTag(1) ' Conversion of ReadTag to WORD FOR Loop = 0 TO 4 ' Compare if ReadTag compares to Database in Eeprom IF ConvTag = Tag(Loop) THEN Tag_found NEXT Loop GOTO Bad_Char Bad_Char: ' try next tag '.... '.... GOTO main Tag_Found:
Last edited by Robson; - 25th August 2007 at 18:16.
I have simplified my program to isolate the issue. I believe it lies with the READ command. This is my simplified code.
At this point I am just trying to read a byte form the EEPROM and display it on the LCD just to prove it is being read. I see the EEPROM data in the EEPROM data window on my EPICWin programming software. So I guess it is writing the EEPROM data at burn time. However all I can debug on the LCD so far is just 0. This leads me to think that the problem is with the READ command. With the above example I would think that the LCD would display 2A or at least something other than just 0's.Code:CMCON = 7 DEFINE OSC 20 char VAR Byte ' character from table ' - LCD Stuff - i con 254 clrlcd con 1 cgram con 64 ddram con 128 n96n con $4054 pause 1000 serout2 portb.7,n96n,[i,clrlcd] pause 1 Tag1 DATA @$00,$10,$2A,$54,$FF,$7C Main: READ $02, char ' get tag data from table 'Debug to LCD serout2 portb.7,n96n,[i,clrlcd] pause 500 serout2 portb.7,n96n,[i,ddram+0] serout2 portb.7,n96n,[HEX char] serout2 portb.7,n96n,[i,ddram+6] serout2 portb.7,n96n,[DEC char] pause 1000 end
"Program/Verify Data" must be checked for it to write EEPROM data when programming.
<img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1940&stc=1&d=118807518 2">
<br>
DT
Bookmarks