16F1827 table not behaving as expected


Closed Thread
Results 1 to 19 of 19

Hybrid View

  1. #1
    Join Date
    Oct 2005
    Location
    Pinckney, Michigan
    Posts
    91

    Default 16F1827 table not behaving as expected

    I have a table populated with 254 word-size dwell parameters.

    My 16F1827 is generating the proper range of vectors (0 - 254) to get into the table, but it's coming back with nonsense.

    Screen capture below:

    The left portion of the screen is my table with Serout2 commands to report the two variables inquestion, Measurement and DacDwell, immediately upon exiting the table.

    The right portion of the screen capture shows the printout from the two Serout2 commands.

    As you can see, the DacDwell parameter slams between $0000 and $061b, when varying the vector variable just slightly.

    I'm assuming that a byte variable is adequate for vectoring into the table, since there are only 253 "items". Do I have this correct? In fact changing Measurement to a word variable had no effect.

    I know it's probably something stupid I'm doing, but can anyone spot the problem?

    Name:  Dwell_table_trouble.jpg
Views: 691
Size:  132.0 KB

  2. #2
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Well, the table has 254 elements, so it goes from 0 - 253.
    When the value is 254 it doesn't change the output variable.

    But you woud think the other numbers should have a value...

    Can you post the table so I don't have to retype it?
    I'll take a look tomorrow.
    DT

  3. #3
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    For LOOKUP2 your table is limited to 85 list items unless you're using an 18F part..
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  4. #4
    Join Date
    Oct 2005
    Location
    Pinckney, Michigan
    Posts
    91


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Quote Originally Posted by Bruce View Post
    For LOOKUP2 your table is limited to 85 list items unless you're using an 18F part..
    Hi Bruce

    The compiler was not balking at the table size, and I confirmed with Darrel that the table size limit has been expanded, and that the manual has not yet been updated to reflect this.

  5. #5
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Hi Mark,

    You can run a simple test to see what the limit is with the table attached.

    Setup a loop to call your LOOKUP2 routine with an index value from 0 to 99.

    Where does it fail?
    Attached Files Attached Files
    Last edited by Bruce; - 1st April 2011 at 20:48.
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Hi J.,

    When you asked about LOOKUP2 previously, I had to ask.
    The answer I got was 256.

    That was only half right.
    The compiler executable was changed ... but the macro's were not.
    So while the compiler won't complain up to 256 ... the macros only work up to 85. (256/3)

    Charles says the executable will be changed back to 85.
    I think the macros should be changed to work with 256, but I'd have to do it in that case.
    Unless Bruce beats me to it.

    Are those EXT tables looking better yet?
    DT

  7. #7
    Join Date
    Oct 2005
    Location
    Pinckney, Michigan
    Posts
    91


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Quote Originally Posted by Bruce View Post
    Hi Mark,

    You can run a simple test to see what the limit is with the table attached.

    Setup a loop to call your LOOKUP2 routine with an index value from 0 to 99.

    Where does it fail?
    Hi Bruce

    I thought the same thing driving home from work.

    I tried it and it does indeed go "off in the weeds" after reading 85 elements.

    So I take it that mere mortals cannot tweak the macros?

    I can decimate my table to remove the leading zero "placekeepers" and redundant upper section to get below 85 elements, but then I'll have to play some other games to assert some artificial offsets to enter the table correctly under differing circumstances.

    This is a case where the compiler/macros really should be tweaked to allow larger tables, to allow things like thermistor tables, etc.

    Maybe small table limits made sense back when the devices had little code space, but that's not as true anymore.

  8. #8
    Join Date
    Oct 2005
    Location
    Pinckney, Michigan
    Posts
    91


    Did you find this post helpful? Yes | No

    Default Re: 16F1827 table not behaving as expected

    Quote Originally Posted by Darrel Taylor View Post
    Well, the table has 254 elements, so it goes from 0 - 253.
    When the value is 254 it doesn't change the output variable.

    But you woud think the other numbers should have a value...

    Can you post the table so I don't have to retype it?
    I'll take a look tomorrow.
    Hi Darrel

    You're correct, I mispoke, 254 items in the table.

    Thanks for looking.

    Table below:

    '
    '************************************************* ******************************
    '
    ' The table below forms the basis for a variable frequency amplitude modulator, the envelope for which is
    ' generated from the 16F1827 on-board DAC and table below.
    '
    ' This table contains the values for the dwell time between each DAC point
    ' of the envelope. It corresponds to A2D measurement (counts / 4) of the
    ' 5volt analog signal.
    '
    ' Measurement = A2D counts / 4 (full range becomes 0 - 255)
    '
    ' DacDwell = microseconds between DAC points
    '
    '************************************************* ******************************
    '
    DwellTable:
    '
    lookup2 Measurement,[$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '0 - 7
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '8 - 15
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '16 - 23_
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '24 - 31
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '32 - 39
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '40 - 47
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '48 - 55
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '56 - 63
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '64 - 71
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '72 - 79
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '80 - 87
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '88 - 95
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '96 - 103
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '104 - 111
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '112 - 119
    $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,_ '120 - 127
    $5161,$4c48,$47ce,$43d1,$403f,$3d09,$3a21,$377d,_ '128 - 135 1.5pps - 2.2pps
    $3513,$32dd,$30d4,$2ef3,$2d36,$2b99,$2a18,$28b1,_ '136 - 143 2.3pps - 3.0pps
    $2761,$2626,$24fe,$23e7,$22e1,$21e9,$20fe,$2020,_ '144 - 151 3.1pps - 3.8pps
    $1f4d,$1e85,$1dc6,$1d10,$1c63,$1bbe,$1b20,$1a89,_ '152 - 159 3.9pps - 4.6pps
    $19f9,$196e,$18ea,$186a,$17ef,$177a,$1708,$169b,_ '160 - 167 4.7pps - 5.4pps
    $1632,$15cc,$156a,$150c,$14b1,$1458,$1403,$13b0,_ '168 - 175 5.5pps - 6.2pps
    $1360,$1313,$12c8,$127f,$1238,$11f4,$11b1,$1170,_ '176 - 183 6.3pps - 7.0pps
    $1131,$10f4,$10b9,$107f,$1047,$1010,$0fda,$0fa6,_ '184 - 191 7.1pps - 7.8pps
    $0f74,$0f42,$0f12,$0ee3,$0000,$0000,$0000,$0000,_ '192 - 199 7.9pps - 8.2pps & 900Hz w/ no mod
    $0000,$0000,$0000,$0000,$0000,$0000,$5161,$4c48,_ '200 - 207 900Hz w/no mod & 1.5pps - 1.6pps
    $47ce,$43d1,$403f,$3d09,$3a21,$377d,$3513,$32dd,_ '208 - 215 1.7pps - 2.5pps
    $30d4,$2ef3,$2d36,$2b99,$2a18,$28b1,$2761,$2626,_ '216 - 223 2.6pps - 3.3pps
    $24fe,$23e7,$22e1,$21e9,$20fe,$2020,$1f4d,$1e85,_ '224 - 231 3.4pps - 4.1pps
    $1dc6,$1d10,$1c63,$1bbe,$1b20,$1a89,$19f9,$196e,_ '232 - 239 4.2pps - 4.9pps
    $18ea,$186a,$17ef,$177a,$1708,$169b,$1632,$15cc,_ '240 - 247 5.0pps - 5.7pps
    $156a,$150c,$14b1,$1458,$1403,$13b0],dacdwell '248 - 253 5.8pps - 6.3pps
    '
    return

    end
    Last edited by J. Mark Wolf; - 1st April 2011 at 12:48.

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