LCDout and large filesize 18F452 -> paging problem?


Closed Thread
Results 1 to 19 of 19

Hybrid View

  1. #1
    Join Date
    Jan 2008
    Location
    Finland
    Posts
    11


    Did you find this post helpful? Yes | No

    Default

    Code is basicly like this:

    DEFINE LCD_BITS 4
    DEFINE LCD_DREG PORTD
    DEFINE LCD_DBIT 0
    DEFINE LCD_RSREG PORTD
    DEFINE LCD_RSBIT 4
    DEFINE LCD_EREG PORTD
    DEFINE LCD_EBIT 5
    TRISD = %01000000
    LED VAR portD.7
    ...
    --->8---(klipeti-klipeti)--->8--- (lots of stuff)
    ...
    Lcdsub:
    lcdout $FE,2,"hello"
    lcdout $FE,C0,"world"
    return
    ...
    main:
    LED=1 ' This should illuminate the led?
    gosub Lcdsub
    pause 500
    LED=0
    pause 500
    goto Main

    So, if I replace LED=1 with pulsout portD.7,65530 it will blink..
    Otherwise it wont.. BUT..
    If I remove gosubs away, LED=1 will work and it LED will blink..



    Quote Originally Posted by skimask View Post
    Post the code...

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mara View Post
    --->8---(klipeti-klipeti)--->8--- (lots of stuff)
    ...
    ...
    It's this that makes it suspicious.


    And which version of PBP are you using?
    Last edited by skimask; - 24th January 2008 at 16:02.

  3. #3
    Join Date
    Jan 2008
    Location
    Finland
    Posts
    11


    Did you find this post helpful? Yes | No

    Default

    > It's this that makes it suspicious.
    yep, I know.. the code is 500 lines...
    I just tried to save some bandwidth.. o:-)

    > And which version of PBP are you using?[/QUOTE]
    pbpro v:2.50a and uCodeStudio+ v:3.005

  4. #4
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Ok, how about this code, and ONLY this code:

    Code:
    DEFINE LCD_BITS    4
    DEFINE LCD_DREG   PORTD
    DEFINE LCD_DBIT    0	
    DEFINE LCD_RSREG PORTD
    DEFINE LCD_RSBIT  4	
    DEFINE LCD_EREG   PORTD	
    DEFINE LCD_EBIT    5		
    TRISD = %10000000
    LED VAR portD.7
    Lcdsub:  lcdout $FE,2,"hello" : lcdout $FE,C0,"world" : return
    main:  LED=1 : gosub Lcdsub : pause 500 : LED=0 : pause 500 : goto Main
    END
    Last edited by skimask; - 24th January 2008 at 18:09.

  5. #5
    Join Date
    Jan 2008
    Location
    Finland
    Posts
    11


    Did you find this post helpful? Yes | No

    Default Looong IF-THEN-ELSE structures?

    > Ok, how about this code, and ONLY this code:

    Well, I dunno.. BUT I got another question..

    What would happen if IF-THEN-ELSE overlaps from memory-page to another? Is it allowed? Is pbp-compiler capable of handle veeeeery loooooong IF-THEN-ELSE structures (like 200lines long?) including gosubs from page to page? If not-should I get a warning? o:-)

  6. #6
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mara View Post
    > Ok, how about this code, and ONLY this code:
    Well, I dunno.. BUT I got another question..
    What would happen if IF-THEN-ELSE overlaps from memory-page to another? Is it allowed? Is pbp-compiler capable of handle veeeeery loooooong IF-THEN-ELSE structures (like 200lines long?) including gosubs from page to page? If not-should I get a warning? o:-)
    I don't have any problem with what you're talking about, with 2.50a anyways. But quite frankly, I just avoid it altogether by just making the 'middle' of the If/Then another routine.
    I've had some programs (one in particular), over 4300 lines long (and that's compacted with a lot of colons like I do often, uncompacted, figure roughly 13,000+ lines). Never had a problem with the amount of code inside of an If/Then, Select Case, While/Wend, or otherwise.

    You tend to forget things like RETURN after a GOSUB, or maybe you RETURN from somewhere that you had GOTO'd instead of GOSUB'd. Keep that in mind. I just fixed a buried GOSUB (one of the drawbacks of 'compacting' source code) that would only show up after the loop went thru itself 32 times and ended up causing a stack overflow which killed my entire OS on the one project. I've been fighting it for over 6 months now.

    And paging really isn't so much of an issue, moreso with 18F series PICs, and even moreso with PBP for the last few years.

  7. #7
    Join Date
    Jan 2008
    Location
    Finland
    Posts
    11


    Did you find this post helpful? Yes | No

    Default

    > You tend to forget things like RETURN after a GOSUB..

    Yep, gosubs and if-then-else-endif structures are like women-
    one has to be veeery careful with them.. o:-)

    I downsized the code a little bit - any comments?

    It works if naytto is low,
    If naytto is high then portD.7 wont go high (except pulsout-command)
    Last edited by mara; - 24th January 2008 at 21:14. Reason: pdf updated

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