Microchip C18 banksel

Здравствуйте. Есть массив структур который не влазит в один банк. Если объеденить несколько банков, то возникает проблема генерации кода перехода между банками. Вопрос: "Как заставить С18 генерировать код выбора нужного банка при обращении к большому массиву?" Какой выход есть из сложившейся ситуации? Выбросить компилятор не предлагать :) P18F458 Спасибо. Денис.

Reply to
Denis Kondratenko
Loading thread data ...
Reply to
Alexey V Bugrov
Reply to
Anatoly Mashanov
Reply to
Alexey V Bugrov

Alexey V Bugrov пишет:

Да мне и самому странно... ... ac[3].my_num = 0x14; ac[3].snd_ptr = &ext_out[6]; ac[3].snd_bit_num = 3; ac[3].active_ptr = &ext_in[0]; ac[3].active_bit_num = 3; ac[3].a0_ptr = &ext_out[1]; ac[3].a0_bit_num= 4; ac[3].a1_ptr = &ext_out[1]; ac[3].a1_bit_num= 5; ...

Получаем:

MOVLW 0x14 MOVWF 0xff, BANKED //тут еще в пределах банка MOVLW 0xc MOVWF _tmp_1, BANKED MOVLW 0x4 MOVLW 0x4 MOVWF 0xd, BANKED //это уже в другом банке //и т.д. преключение BSR не сделал...

Reply to
Denis Kondratenko

м-да... появилась косвенная адресация... все вроде красиво. но. все таки ошибки в сишной программе нет, а она не работает. оптимизация оптимизацией, но нельзя же оптимизировать до ошибок.

и если в одном модуле объявляются множество переменных, общим размером больших чем один банк, то чтобы нормально линковать, их что с помощью #pragma раскладывать по адресам?

Денис

Reply to
Denis Kondratenko
Reply to
Alexey V Bugrov

Спасибо большое. недоразумение возникло после того как перетащил программу с HI-TECH, на C18. HI-TECH сам разбрасывал переменные, заботился о переключении банков и размещении массива структур больше чем один банк.

Денис

Reply to
Denis Kondratenko
Reply to
George Shepelev

спасибо всем. вот нашел еще информацию от Микрочипа:

formatting link
Денис

Reply to
Denis Kondratenko
Reply to
Anatoly Mashanov
Reply to
George Shepelev

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.