Memory use - how much do you use?


Closed Thread
Results 1 to 17 of 17

Hybrid View

  1. #1
    Join Date
    Jul 2003
    Posts
    2,358


    Did you find this post helpful? Yes | No

    Default

    If you compile using something like Microchips Assembler (which you would do for things like the 18F series), then looking at the end of the generated .LST file you will find a couple of lines like...

    Program Memory Bytes Used: 15998
    Program Memory Bytes Free: 386

  2. #2


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Melanie View Post
    If you compile using something like Microchips Assembler (which you would do for things like the 18F series), then looking at the end of the generated .LST file you will find a couple of lines like...

    Program Memory Bytes Used: 15998
    Program Memory Bytes Free: 386
    Thank you Melanie

    But where can I see how much my variables need/consume space? Perhaps the same way as program memory bytes used are showed...

  3. #3
    Join Date
    Sep 2005
    Location
    Campbell, CA
    Posts
    1,107


    Did you find this post helpful? Yes | No

    Default

    I don't know if it is valid, but it seems to work for me -

    To figure how much free RAM I have, I create a dummy aray variable and compile.

    dummy var byte (1000)

    If there is no compile error, I figure I have at least 1000 bytes of free memory. I delete the line and go on.


    I use MCLoader often in my programs. It occupies some space in high memory. I used to find that I would compile a program and get no errors, only to find that when I actually loaded the code in the part (that already had MCLoader in it), I got an over-run error. I solved that problem by including the following lines at the very end of my program -

    Code:
    ASM
         ORG 0x1fcee        ; a few bytes below MCLoader when used in a 128K part
         nop
    ENDASM
    You can put any address you want after the ORG statement. If your program gets bigger than that, you will get a compile error. I have found this technique to be useful in lots of ways.
    Charles Linquist

  4. #4
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    This might help.
    It is a little program I have been playing with that reads the LST file and pulls some info from it.

    It is a work in progress so it may not be 100% accurate and it seems to work better on 18Fs.
    Some of those LST file can be quite large.

    Click on the link below and save. The is nothing to install. Just click and run.
    http://www.mac.mf3x3.com/downloads/lst/LST_V.exe

    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=3098&stc=1&d=123165757 1">
    Attached Images Attached Images  
    Dave
    Always wear safety glasses while programming.

  5. #5


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    This might help.
    It is a little program I have been playing with that reads the LST file and pulls some info from it.

    It is a work in progress so it may not be 100% accurate and it seems to work better on 18Fs.
    Some of those LST file can be quite large.

    Click on the link below and save. There is nothing to install. Just click and run.
    http://www.mac.mf3x3.com/downloads/lst/LST_V.exe
    Thank you Charles and Dave!

    The List View seems to work just perfectly ...
    I just don't understand why not PBP do show more info especially when it would be quite easy to incorporate all that info into the compilation output... Perhaps the time is not ready yet?

    Thank you all for the help on this matter

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink With MPLAB, now ...

    Hi,

    Thanks, Dave ... nice tool. ( heuuu .. could you just keep the last opened folder in the "open" window ??? )

    Another way in MPLAB ... the "Memory usage gauge" works with PBP !!!

    just open the "mem usage Gauge" and use " File \ Import \ Myfile.hex " in the menu ... the program "Camembert" ( understand : meter ) will work as it should ... but not the Data one ...

    Alain
    Last edited by Acetronics2; - 11th January 2009 at 14:32.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Acetronics View Post
    Thanks, Dave ... nice tool. ( heuuu .. could you just keep the last opened folder in the "open" window ??? )
    Thanks.
    That is one of the things I will add on the next version (someday).

    BTW. Here is the source code, written in Liberty Basic.
    I will most likely use Python the next time.
    Code:
    [setup.main.Window]
    
        '-----Begin code for #main
    
        nomainwin
        WindowWidth = 550
        WindowHeight = 225
        UpperLeftX=int((DisplayWidth-WindowWidth)/2)
        UpperLeftY=int((DisplayHeight-WindowHeight)/2)
    
    
        '-----Begin GUI objects code
    
        statictext #main.statictext1, "Code Path and Name",   5,  47, 155,  20
      '  TextboxColor$ = "white"
        textbox #main.name,   5,  67, 530,  25
        statictext #main.statictext3, "Program Memory",   5, 122, 120,  20
        statictext #main.statictext4, "Chip",  10,  17,  27,  20
        textbox #main.chip,  45,  17, 100,  25
        statictext #main.statictext6, "Free", 240, 102, 105,  20
        textbox #main.ByteWord, 130, 122, 50,  25
        textbox #main.FreeWord, 210, 122, 100,  25
        statictext #main.statictext8, " Used", 355, 102,  55,  20
        textbox #main.UsedWords, 325, 122, 100,  25
        statictext #main.statictext12, "Percent Used", 440, 102,  82,  20
        textbox #main.PercentWord, 435, 122, 100,  25
        button #main.btOPEN,"OPEN",[btOPEN], UL, 345,  17,  80,  25
        button #main.btREFRESH,"REFRESH",[btREFRESH], UL, 440,  17,  95,  25
        statictext #main.statictext16, "SRAM (BYTES)",  35, 152, 120,  20
     '   statictext #main.statictext15, "EEPROM (BYTES)",  30, 177, 140,  20
        textbox #main.ramF, 210, 152, 100,  25
     '   textbox #main.eepF, 210, 182, 100,  25
        textbox #main.ramU, 325, 152, 100,  25
     '   textbox #main.eepU, 325, 182, 100,  25
        textbox #main.ramP, 435, 152, 100,  25
     '   textbox #main.eepP, 435, 182, 100,  25
        statictext #main.txtWORKING, "WORKING", 185,  17,  85,  20
        statictext #main.txtFINISHED, "FINISHED", 185,  17,  75,  20
    
    
        '-----End GUI objects code
    
        open "LST VIEW" for window as #main
        print #main.UsedWords, "!font ms_sans_serif 10 bold"
        print #main, "font ms_sans_serif 10"
        print #main.statictext3, "!font ms_sans_serif 10 bold"
        print #main.statictext16, "!font ms_sans_serif 10 bold"
     '   print #main.statictext15, "!font ms_sans_serif 10 bold"
        print #main.txtWORKING, "!font ms_sans_serif 10 bold"
        print #main.txtFINISHED, "!font ms_sans_serif 10 bold"
        print #main, "trapclose [quit.main]"
    
        [main.inputLoop]   'wait here for input event
       ' print #handle.ext, "!hide"
        print #main.txtWORKING, "!hide"
        print #main.txtFINISHED, "!hide"
        wait
    
        [btOPEN]   'Perform action for the button named 'btOPEN'
        filedialog "OPEN ","C:\*.lst", openfile$
        if openfile$ = "" then wait
        [rFresh]
        open openfile$ for input as #Lfile
        print #main.name, openfile$
        print #main.txtWORKING, "!show"
        print #main.txtFINISHED, "!hide"
        [LOOPcn]
        line input #Lfile, line$
        if mid$(line$,29,9)= "RAM_START" then RS$ = mid$(line$,68,6)
        if mid$(line$,29,7)= "RAM_END" then RE$ = mid$(line$,68,6)
        if mid$(line$,69,11)= "RAM_START +" then RFIN$ = mid$(line$,81,6)
       ' if mid$(line$,29,9)= "RAM_START" then #main.ramF,mid$(line$,68,6)
       ' if mid$(line$,29,7)= "RAM_END" then #main.ramU,mid$(line$,68,6)
        if mid$(line$,1,26)= "Program Memory Bytes Used:" then #main.UsedWords,mid$(line$,27,92)
        if mid$(line$,1,26)= "Program Memory Words Used:" then #main.UsedWords,mid$(line$,27,92)
        if mid$(line$,1,26)= "Program Memory Bytes Free:" then #main.FreeWord,mid$(line$,27,92)
        if mid$(line$,1,26)= "Program Memory Words Free:" then #main.FreeWord,mid$(line$,27,92)
        if mid$(line$,1,2)= "__" then #main.chip,mid$(line$,3,12)
        if eof(#Lfile) = -1 then [closeFILE1]
        goto [LOOPcn]
        '###################################################
        [closeFILE1]
        close #Lfile
        open openfile$ for input as #Lfile
        [LOOPpm]
        line input #Lfile, line$
        if mid$(line$,1,26)= "Program Memory Bytes Used:" then #main.ByteWord,mid$(line$,16,5)
        if mid$(line$,1,26)= "Program Memory Words Used:" then #main.ByteWord,mid$(line$,16,5)
        if eof(#Lfile) = -1 then [closeFILE2]
        goto [LOOPpm]
        '####################################################
        [closeFILE2]
        close #Lfile
        print #main.chip, "!contents? cName$"
        bFile$ = "C:\PBP\";(trim$(cName$));".bas"
      '  print #main.eepP,bFile$
       goto [closeFILE]
        wait
    
        [btREFRESH]   'Perform action for the button named 'btREFRESH'
        if openfile$ = "" then [rfERROR]'notice "SELECT FILE"
        goto [rFresh]
        wait
    
        [closeFILE]
      '  close #Lfile
        print #main.UsedWords,"!contents? UW"
        print #main.FreeWord,"!contents? FW"
        TW = UW + FW
        PW = (UW / TW) * 100
        print #main.PercentWord,using("###.##",PW)
        ramS = hexdec(RS$)
        ramE = hexdec(RE$)
        ramT = ramE - ramS + 1
        ramF = hexdec(RFIN$)
        ramU = ramF - ramS
        ramFree = ramT - ramU
        ramP = (ramU / ramT) * 100
        print #main.ramF,ramFree
        print #main.ramU,ramU
        print #main.ramP,using("###.##",ramP)
        print #main.txtWORKING, "!hide"
        print #main.txtFINISHED, "!show"
        wait
    
        [rfERROR]
        notice "SELECT FILE"
        goto [main.inputLoop]
        wait
    
        [quit.main] 'End the program
        close #main
        end
    Dave
    Always wear safety glasses while programming.

Similar Threads

  1. Need the code to write to a memory
    By Hamlet in forum General
    Replies: 0
    Last Post: - 20th August 2007, 00:22
  2. Replies: 4
    Last Post: - 2nd March 2007, 06:12
  3. sample code for M25P32
    By Pedro Santos in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 9th January 2007, 02:37
  4. Use internal program memory like DATA memory
    By flotulopex in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 30th December 2006, 18:38
  5. memory button
    By docwisdom in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 12th February 2006, 09:47

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