PIC18F4620 Write Command


Closed Thread
Results 1 to 6 of 6

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,624


    Did you find this post helpful? Yes | No

    Default Re: PIC18F4620 Write Command

    Hi,
    WRITE is used to write values to on chip EEPROM, which the 18F4620 has 1024 bytes of.
    You're trying to write to location $4205 which is WAY out of range of the available 1024 bytes.

    WRITE 0, step ' <---Will write to the first EEPROM location
    WRITE 1023, step '<---Will write to the last EEPROM location

    /Henrik.

  2. #2
    Join Date
    Feb 2009
    Posts
    12


    Did you find this post helpful? Yes | No

    Default Re: PIC18F4620 Write Command

    Dear Heckler,
    Good day!
    Sorry about the post. Long time no do the posting. Forgot how to post the code format.

    Aside Henrik,
    I do read the datasheet of PIC18F4620 and know the EEPROM address is 0 to 1023.
    I also try your suggestion like below code,

    Code:
    Checking Step:
     READ $ 200, step
     step = step + 1
     WRITE $200, step
     DEBUG "step = ",DEC step,10,13 
     
     if step = 1 then power_on
     '.......... continue step increase until step is 14.
     If step = 14 then multimeter_judge
     goto Checking Step
    
    multimeter_judge:
     multimeter_string (64) = 0
     DEBUGIN timeout,meter_ng, STR multimeter_string\64
     WRITE $100, multimeter_string(0)
     WRITE $101, multimeter_string(1)
     WRITE $102, multimeter_string(2)
     WRITE $103, multimeter_string(3)
    
     if multimeter_string (2)= "H" then judge_ng
     goto multimeter_judge
    
     judge_ng:
     DEBUG STR multimeter_string(2),10,13 
    ' Sorry I must highlight here for other step is NG, the result can show in hyperterminal except step = 14, the program can run but no output shown in hyperterminal through comport

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,624


    Did you find this post helpful? Yes | No

    Default Re: PIC18F4620 Write Command

    Hi,
    I do read the datasheet of PIC18F4620 and know the EEPROM address is 0 to 1023.
    So why did you try writing to $4205 then?

    Anyway,
    What version of PBP are you using? Step is a reserved a word and has been for as long as I can remember, I'm surprised that code even compiles.

    I don't have a 4620 to test with but I do have a 4520 so I tried the following code:
    Code:
    i VAR WORD
    Char VAR BYTE
    
    Boot:
    HSEROUT ["Program start",13,13]
    HSEROUT ["Writing EEPROM, starting at location $0000..."]
    
    i = 0
    For Char = "A" to "Z"
      WRITE i, Char
      i = i + 1
    NEXT
    
    HSEROUT ["Done.",13]
    HSEROUT ["Writing EEPROM, starting at location $0200..."]
    
    i = $200
    For Char = "A" to "Z"
      WRITE i, Char
      i = i + 1
    NEXT
    HSEROUT ["Done.",13]
    
    PAUSE 1000
    
    HSEROUT ["Reading EEPROM, starting at $0000: "]
    
    For i = 0 to 25
      Read i, Char
      HSEROUT[Char]
    NEXT
    HSEROUT[13]
    
    HSEROUT ["Reading EEPROM, starting at $0200: "]
    For i = 512 to 537
      Read i, Char
      HSEROUT[Char]
    NEXT
    HSEROUT[13,13, "Program end.",13]
    
    PAUSE 10
    
    END
    And it produces the following output
    Code:
    Program start
    
    Writing EEPROM, starting at location $0000...Done.
    Writing EEPROM, starting at location $0200...Done.
    Reading EEPROM, starting at $0000: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    Reading EEPROM, starting at $0200: ABCDEFGHIJKLMNOPQRSTUVWXYZ
    
    Program end.
    Which shows that, at least at this end, both WRITE and READ works as expected.

    I can't really tell what's going on in your case and I don't really understand what exactly the problem is. Can you try and explain it a little better?
    If you contunue to have issues you need to boil the code down to a short example that shows the problem and post that code.

    /Henrik.

  4. #4
    Join Date
    Feb 2009
    Posts
    12


    Did you find this post helpful? Yes | No

    Default Re: PIC18F4620 Write Command

    Hi! Good day! Henrik,
    So why did you try writing to $4205 then?
    I am using the program which my senior written and him already left the company. So, i not sure what is going to be happen using that command. Now, i understand from your explaination.

    Sorry for making you confuse.

    Let me show u the exact code that found error part.
    Code:
    'Extract part of the code that have an error
    STEP_SELECT:
    
        read $101,STEP_ADDRESS
        STEP_ADDRESS = STEP_ADDRESS + 1
        WRITE $101,STEP_ADDRESS
    
        NG_COUNTER = 0
        write $103,NG_COUNTER
    
        DEBUG "CHECKING STEP_ADDRESS = ",DEC STEP_ADDRESS,10,13
    'Here, the result still can see at hyperterminal screen 
    
        if STEP_ADDRESS = 1 then MULTIMETER_JUDGE 
        if STEP_ADDRESS = 2 then ADDR_30       
        if STEP_ADDRESS = 3 then ADDR_31       
        if STEP_ADDRESS = 4 then ADDR_32       
        if STEP_ADDRESS = 5 then ADDR_33       
        if STEP_ADDRESS = 6 then ADDR_34       
        if STEP_ADDRESS = 7 then ADDR_35       
        if STEP_ADDRESS = 8 then ADDR_36       
        if STEP_ADDRESS = 9 then ADDR_37       
        if STEP_ADDRESS = 10 then ADDR_38      
        if STEP_ADDRESS = 11 then ADDR_39      
        if STEP_ADDRESS = 12 then ADDR_40     
        if STEP_ADDRESS = 13 then ADDR_41      
        if STEP_ADDRESS = 14 then CHARGING_CHECK      
        if STEP_ADDRESS = 15 then CHARGING_CHANGE_DC  
        if STEP_ADDRESS = 16 then END_PROCESS 
    
    goto STEP_SELECT
    
    CHARGING_CHECK:
        HIGH RLY5_1_CHARGING_SUPPLY         
        PAUSE 1000
        LOW RLY5_1_CHARGING_SUPPLY         
        goto MULTIMETER_JUDGE
    goto STEP_SELECT
    
    MULTIMETER_JUDGE:
        READ $101,STEP_ADDRESS:WRITE $101,STEP_ADDRESS
    
        IF STEP_ADDRESS = 0 then 
            DEBUG "STEP_ADDRESS =  ",DEC STEP_ADDRESS,10,13
    'Here, the result still can see at hyperterminal screen 
            serOut GPIB_TX,N9600,["F5,R5,PR2,CO1,HI+00.200E-3,LO-01.000E-3",13]
            pause 500
            GOTO CONT_CURRENT_CHECK
        endif 
    
        IF STEP_ADDRESS = 1 and VERSION_SW = 1 then 
            DEBUG "(J4) STEP_ADDRESS =  ",DEC STEP_ADDRESS,10,13
    'Here, the result still can see at hyperterminal screen 
        	SerOut GPIB_TX,N9600,["F5,R7,PR2,CO1,HI+090.00E-3,LO+070.00E-3",13]
            pause 500
            GOTO CONT_CURRENT_CHECK
        ENDIF    
        
        IF STEP_ADDRESS = 14 THEN 
            DEBUG "STEP_ADDRESS =  ",DEC STEP_ADDRESS,10,13
    'At here, the result can't see at hyperterminal screen...i wonder why this happen? 
        	SerOut GPIB_TX,N9600,["F5,R7,PR2,CO1,HI+420.00E-3,LO+380.00E-3",13]
            pause 500
            GOTO CONT_CURRENT_CHECK
        ENDIF
    
    CONT_CURRENT_CHECK:
    I only show the part of the program that error occurred. Hopefully u can understand that.
    TQ and BR
    Last edited by csooi08; - 26th November 2013 at 04:58.

Similar Threads

  1. Required Time for WRITE Command
    By rsocor01 in forum General
    Replies: 2
    Last Post: - 1st December 2011, 01:21
  2. EEPROM WRITE Command
    By aajgss in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 20th October 2011, 07:58
  3. EEPROM Write command with interrupts??
    By Elnino in forum General
    Replies: 4
    Last Post: - 23rd November 2009, 07:44
  4. help with write command
    By cphillips82 in forum General
    Replies: 9
    Last Post: - 21st April 2008, 00:49
  5. Using the Write Command
    By in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 16th April 2003, 03:09

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts