This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Relocation of array into code from other bank

Hi,
Following are my questions:
1. I use 128K version of 80C51 and define
common area (0-3fff) and 2 other banks.
from (4000 - ffff) When I define a font
table (array) in one bank. After
compilation, I found the common area
grows, seems like it relocate the font
array into the common area instead of
the bank area.
2. I am working on video application, I
have a display v-sync interrupt every
1/60 sec. If I stay in this interrupt
too long (> 1.5 ~ 2 ms) system hang up.
if short delay (1 ms) then everything
works fine. Any idea?

I know interrupt should be as short as
possible but is there any restriction
on how long can we stay in interrupt
service routine?

Really appreciate if someone can help
me on these issues.

Thanks

Parents
  • seems like it relocate the font

    Don't guess --- check. Look into the map files to see where that array actually ended up.

    I know interrupt should be as short as
    possible but is there any restriction
    on how long can we stay in interrupt
    service routine?


    It's really quite simple: make it as short as possible, and if you get a hang-up, make it even shorter. There's not fixed upper limit, per se, other than you obviously can't allow the interrupt handler to take longer than the time between two interrupts...

    And what on earth are you doing in an IRQ handler that takes an entire millisecond?

    [And please: don't post several unrelated questions in the same article --- one subject per posting/thread is the idea]

Reply
  • seems like it relocate the font

    Don't guess --- check. Look into the map files to see where that array actually ended up.

    I know interrupt should be as short as
    possible but is there any restriction
    on how long can we stay in interrupt
    service routine?


    It's really quite simple: make it as short as possible, and if you get a hang-up, make it even shorter. There's not fixed upper limit, per se, other than you obviously can't allow the interrupt handler to take longer than the time between two interrupts...

    And what on earth are you doing in an IRQ handler that takes an entire millisecond?

    [And please: don't post several unrelated questions in the same article --- one subject per posting/thread is the idea]

Children
No data