Microchip C18 banksel

Jun 14, 2005 11 Replies

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


Hi Denis, hope you are having a nice day!

14 éÀÎ 05, Denis Kondratenko wrote to All:

DK> åÓÔØ ÍÁÓÓÉ× ÓÔÒÕËÔÕÒ ËÏÔÏÒÙÊ ÎÅ ×ÌÁÚÉÔ × ÏÄÉÎ ÂÁÎË. DK> åÓÌÉ ÏÂßÅÄÅÎÉÔØ ÎÅÓËÏÌØËÏ ÂÁÎËÏ×, ÔÏ ×ÏÚÎÉËÁÅÔ ÐÒÏÂÌÅÍÁ ÇÅÎÅÒÁÃÉÉ ËÏÄÁ DK> ÐÅÒÅÈÏÄÁ ÍÅÖÄÕ ÂÁÎËÁÍÉ. ÷ÏÐÒÏÓ: "ëÁË ÚÁÓÔÁ×ÉÔØ ó18 ÇÅÎÅÒÉÒÏ×ÁÔØ ËÏÄ DK> ×ÙÂÏÒÁ ÎÕÖÎÏÇÏ ÂÁÎËÁ ÐÒÉ ÏÂÒÁÝÅÎÉÉ Ë ÂÏÌØÛÏÍÕ ÍÁÓÓÉ×Õ?"

á ÒÁÚ×Å ÏÎ ÅÇÏ ÎÅ ÇÅÎÅÒÉÔ? íÅÎÑ, ÎÁÐÒÉÍÅÒ, ÚÁËÏÌÅÂÙ×ÁÅÔ ÔÏ, ÞÔÏ ÏÎ ×ÓÅÇÄÁ ×ÙÞÉÓÌÑÅÔ ÐÏÌÎÙÅ (Ä×ÕÈÂÁÊÔÎÙÅ) ÁÄÒÅÓÁ ÓÍÅÝÅÎÉÊ ÐÒÉ ÏÂÒÁÝÅÎÉÉ Ë ÜÌÅÍÅÎÔÁÍ ÍÁÓÓÉ×Á, ÄÁÖÅ ÅÓÌÉ ÏÎ ÎÁÈÏÄÉÔÓÑ × ÐÒÅÄÅÌÁÈ ÏÄÎÏÇÏ ÂÁÎËÁ.

WBR, AVB

Hello Denis!

14 Jun 05 19:30, you wrote to All:

DK> åÓÔØ ÍÁÓÓÉ× ÓÔÒÕËÔÕÒ ËÏÔÏÒÙÊ ÎÅ ×ÌÁÚÉÔ × ÏÄÉÎ ÂÁÎË.

ðÏÎÁÄÏÂÉÌÏÓØ ÓÄÅÌÁÔØ ËÏÌØÃÅ×ÏÊ ÂÕÆÅÒ 256 ÂÁÊÔ × PIC16F876. ðÒÉÛÌÏÓØ ÎÁÐÉÓÁÔØ ÐÒÏÃÅÄÕÒÕ ÚÁÐÉÓÉ ÐÏ ÎÏÍÅÒÕ ÑÞÅÊËÉ É ÐÒÏÃÅÄÕÒÕ ÞÔÅÎÉÑ ÐÏ ÎÏÍÅÒÕ ÑÞÅÊËÉ. ÷ÙÞÉÓÌÅÎÉÅ ÁÄÒÅÓÁ É ÓÒÁÝÉ×ÁÎÉÅ ÉÚ ËÕÓËÏ× ×Ï ×ÓÅÈ 4 ÓÔÒÁÎÉÃÁÈ ÂÙÌÏ ËÏÛÍÁÒÏÍ, ÎÏ ÉÚ×ÎÅ ÂÕÆÅÒ ×ÉÄÅÌÓÑ ËÁË ËÏÌØÃÅ×ÏÊ.

Anatoly

Hi Denis, hope you are having a nice day!

15 éÀÎ 05, Denis Kondratenko wrote to Alexey V Bugrov:

DK> äÁ ÍÎÅ É ÓÁÍÏÍÕ ÓÔÒÁÎÎÏ... DK> ... DK> ac[3].my_num = 0x14; DK> ac[3].snd_ptr = &ext_out[6]; DK> ac[3].snd_bit_num = 3; DK> ac[3].active_ptr = &ext_in[0]; DK> ac[3].active_bit_num = 3; DK> ac[3].a0_ptr = &ext_out[1]; DK> ac[3].a0_bit_num= 4; DK> ac[3].a1_ptr = &ext_out[1]; DK> ac[3].a1_bit_num= 5; DK> ...

DK> ðÏÌÕÞÁÅÍ:

DK> MOVLW 0x14 DK> MOVWF 0xff, BANKED //ÔÕÔ ÅÝÅ × ÐÒÅÄÅÌÁÈ ÂÁÎËÁ DK> MOVLW 0xc DK> MOVWF _tmp_1, BANKED DK> MOVLW 0x4 DK> MOVLW 0x4 DK> MOVWF 0xd, BANKED //ÜÔÏ ÕÖÅ × ÄÒÕÇÏÍ ÂÁÎËÅ DK> //É Ô.Ä. ÐÒÅËÌÀÞÅÎÉÅ BSR ÎÅ ÓÄÅÌÁÌ...

á ÐÏÐÒÏÂÕÊ ÔÁË:

unsigned i = 3;

ac[i].field = somthing;

÷ ÜÔÏÍ ÓÌÕÞÁÅ ÏÎ ÄÏÌÖÅÎ ×ÙÞÉÓÌÑÔØ ÓÍÅÝÅÎÉÑ. ÷ Ô×ÏÅÍ ×ÁÒÉÁÎÔÅ ÏÎ ÐÒÏÓÔÏ ÐÏÔÉÍÉÚÉÒÕÅÔ ×ÓÅ ÎÁÆÉÇ ÚÁ ÓÞÅÔ ÆÁËÔÉÞÅÓËÉ ËÏÎÓÔÁÎÔÎÏÇÏ ÁÄÒÅÓÁ ÑÞÅÊËÉ.

WBR, AVB

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 не сделал...

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

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

Денис

Hello, Denis! You wrote to Alexey V Bugrov on Wed, 15 Jun 2005 07:15:38 +0000 (UTC):

DK> Í-ÄÁ... DK> ÐÏÑ×ÉÌÁÓØ ËÏÓ×ÅÎÎÁÑ ÁÄÒÅÓÁÃÉÑ... ×ÓÅ ×ÒÏÄÅ ËÒÁÓÉ×Ï. DK> ÎÏ. ×ÓÅ ÔÁËÉ ÏÛÉÂËÉ × ÓÉÛÎÏÊ ÐÒÏÇÒÁÍÍÅ ÎÅÔ, Á ÏÎÁ ÎÅ ÒÁÂÏÔÁÅÔ. DK> ÏÐÔÉÍÉÚÁÃÉÑ ÏÐÔÉÍÉÚÁÃÉÅÊ, ÎÏ ÎÅÌØÚÑ ÖÅ ÏÐÔÉÍÉÚÉÒÏ×ÁÔØ ÄÏ ÏÛÉÂÏË.

îÅ ÓÏ×ÓÅÍ ÔÁË. ÷ ÏÂÝÅÍ ÓÌÕÞÁÅ ÎÉËÔÏ ÎÅ ÏÂÅÝÁÌ, ÞÔÏ ÏÎ ÓÍÏÖÅÔ ÒÁÂÏÔÁÔØ Ó ÂÌÏËÏÍ ÐÅÒÅÍÅÎÎÙÈ, ÒÁÚÍÅÒÏ× ÂÏÌØÛÅ ÞÅÍ ÂÁÎË. óÁÍ ËÏÍÐÉÌÑÔÏÒ Ï ÜÔÏÍ ÎÉÞÅÇÏ ÎÅ ÚÎÁÅÔ. ïÎ ÎÉËÁË ÎÅ ÍÏÖÅÔ ÚÎÁÔØ ÐÅÒÅÓÅËÁÅÔ ÂÌÏË ÇÒÁÎÉÃÕ ÓÔÒÁÎÉÃÙ ÉÌÉ ÎÅÔ. åÓÌÉ ËÁÖÄÙÊ ÒÁÚ ×ÓÔÁ×ÌÑÔØ ÂÁÎËÓÅÌÙ ÐÅÒÅÄ ÏÂÒÁÝÅÎÉÑÍÉ Ë ÐÅÒÅÍÅÎÎÙÍ, ÔÏ ÂÕÄÅÔ ÏÞÅÎØ ÍÎÏÇÏ ÐÕÓÔÏÇÏ ËÏÄÁ. îÁ ×ÓÑËÉÊ ÓÌÕÞÁÊ ÐÏÐÒÏÂÕÊ ×ÙËÌÀÞÉÔØ ÏÐÔÉÍÉÚÁÃÉÀ -On- (ÚÁÐÒÅÝÅÎÉÅ ÏÐÔÉÍÉÚÁÃÉÉ ÐÅÒÅËÌÀÞÅÎÉÑ ÂÁÎËÏ×), ÍÏÖÅÔ ÂÙÔØ ÐÏÍÏÖÅÔ. ÷ ÜÔÏÍ ÓÌÕÞÁÅ ÂÁÎËÓÅÌ ÂÕÄÅÔ ×ÓÔÁ×ÌÑÔØÓÑ ÐÅÒÅÄ ËÁÖÄÙÍ ÏÂÒÁÝÅÎÉÅÍ Ë ÐÅÒÅÍÅÎÎÙÍ.

DK> É ÅÓÌÉ × ÏÄÎÏÍ ÍÏÄÕÌÅ ÏÂßÑ×ÌÑÀÔÓÑ ÍÎÏÖÅÓÔ×Ï ÐÅÒÅÍÅÎÎÙÈ, ÏÂÝÉÍ DK> ÒÁÚÍÅÒÏÍ ÂÏÌØÛÉÈ ÞÅÍ ÏÄÉÎ ÂÁÎË, ÔÏ ÞÔÏÂÙ ÎÏÒÍÁÌØÎÏ ÌÉÎËÏ×ÁÔØ, ÉÈ DK> ÞÔÏ Ó ÐÏÍÏÝØÀ #pragma ÒÁÓËÌÁÄÙ×ÁÔØ ÐÏ ÁÄÒÅÓÁÍ?

îÅÔ. îÅÌØÚÑ ÄÏÐÕÓËÁÔØ, ÞÔÏÂÙ ÂÌÏËÉ ÐÅÒÅÍÅÎÎÙÈ ÐÅÒÅÓÅËÁÌÉ ÇÒÁÎÉÃÙ ÓÔÒÁÎÉÃÙ. óÏ ÓÔÁÎÄÁÒÔÎÙÍ ÆÁÊÌÏÍ ÌÉÎËÅÒÁ ÜÔÏ ×ÏÏÂÝÅ-ÔÏ ÎÅ×ÏÚÍÏÖÎÏ. åÓÌÉ ÎÕÖÎÏ ÓÔÏÌØËÏ ÍÎÏÇÏ ÐÅÒÅÍÅÎÎÙÈ × ÏÄÎÏÍ ÂÌÏËÅ, ÔÏ ÒÁÚÂÅÊ ÉÈ ÎÁ Ä×Å ÓÅËÃÉÉ Ó ÐÏÍÏÝØÀ #pragma section udata (ÉÌÉ idata). ôÏÇÄÁ ËÏÍÐÉÌÑÔÏÒ ÓÁÍ ÐÒÅËÒÁÓÎÏ ÒÁÚÂÅÒÅÔÓÑ ËÁË Ë ÐÅÒÅÍÅÎÎÙÍ ÏÂÒÁÝÁÔØÓÑ, É ÌÉÎËÅÒ ÓÍÏÖÅÔ ÒÁÚÌÏÖÉÔØ ÓÅËÃÉÉ ÐÏ ÒÁÚÎÙÍ ÂÁÎËÁÍ. çÌÁ×ÎÏÅ, ÞÔÏÂÙ ÒÁÚÍÅÒ ÓÅËÃÉÉ ÎÅ ÐÒÅ×ÙÛÁÌ ÒÁÚÍÅÒÁ ÂÁÎËÁ.

WBR, AVB

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

Денис

Anatoly, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

óÒÅÄÁ éÀÎØ 15 2005 07:04, Anatoly Mashanov wrote to Denis Kondratenko:

AM> ðÏÎÁÄÏÂÉÌÏÓØ ÓÄÅÌÁÔØ ËÏÌØÃÅ×ÏÊ ÂÕÆÅÒ 256 ÂÁÊÔ × PIC16F876. ðÒÉÛÌÏÓØ AM> ÎÁÐÉÓÁÔØ ÐÒÏÃÅÄÕÒÕ ÚÁÐÉÓÉ ÐÏ ÎÏÍÅÒÕ ÑÞÅÊËÉ É ÐÒÏÃÅÄÕÒÕ ÞÔÅÎÉÑ ÐÏ AM> ÎÏÍÅÒÕ ÑÞÅÊËÉ. ÷ÙÞÉÓÌÅÎÉÅ ÁÄÒÅÓÁ É ÓÒÁÝÉ×ÁÎÉÅ ÉÚ ËÕÓËÏ× ×Ï ×ÓÅÈ 4 AM> ÓÔÒÁÎÉÃÁÈ ÂÙÌÏ ËÏÛÍÁÒÏÍ, ÎÏ ÉÚ×ÎÅ ÂÕÆÅÒ ×ÉÄÅÌÓÑ ËÁË ËÏÌØÃÅ×ÏÊ.

çÏÒÁÚÄÏ ÐÒÏÝÅ ÂÙÌÏ ÂÙ ÎÁÐÉÓÁÔØ ÐÒÏÃÅÄÕÒÙ ÞÔÅÎÉÑ ÉÚ ÔÅËÕÝÅÊ ÑÞÅÊËÉ É ÚÁÐÉÓÉ × ÔÅËÕÝÕÀ ÑÞÅÊËÕ Ó Á×ÔÏÍÏÄÉÆÉËÁÃÉÅÊ ÁÄÒÅÓÁ, ÂÅÚ ×ÓÑËÉÈ ÎÏÍÅÒÏ×.

çÅÏÒÇÉÊ

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

formatting link
Денис

Hello George!

16 Jun 05 02:45, you wrote to me:

AM>> ×Ï ×ÓÅÈ 4 ÓÔÒÁÎÉÃÁÈ ÂÙÌÏ ËÏÛÍÁÒÏÍ, ÎÏ ÉÚ×ÎÅ ÂÕÆÅÒ ×ÉÄÅÌÓÑ ËÁË AM>> ËÏÌØÃÅ×ÏÊ.

GS> çÏÒÁÚÄÏ ÐÒÏÝÅ ÂÙÌÏ ÂÙ ÎÁÐÉÓÁÔØ ÐÒÏÃÅÄÕÒÙ ÞÔÅÎÉÑ ÉÚ ÔÅËÕÝÅÊ ÑÞÅÊËÉ É GS> ÚÁÐÉÓÉ × ÔÅËÕÝÕÀ ÑÞÅÊËÕ Ó Á×ÔÏÍÏÄÉÆÉËÁÃÉÅÊ ÁÄÒÅÓÁ, ÂÅÚ ×ÓÑËÉÈ ÎÏÍÅÒÏ×.

õ ÍÅÎÑ ÂÕÆÅÒ ÂÙÌ ÎÅ ÐÒÏÓÔÏ ËÏÌØÃÅ×ÙÍ, × ÎÅÍ ÄÏÌÖÎÁ ÂÙÌÁ ÔÁËÖÅ ÈÒÁÎÉÔØÓÑ ÉÓÔÏÒÉÑ ËÏÍÁÎÄ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏ CTRL/E (ËÁË × HÏÒÔÏÎÅ) ÍÏÖÎÏ ÂÙÌÏ ×ÙÚÙ×ÁÔØ ÐÒÅÄÙÄÕÝÉÅ ËÏÍÁÎÄÙ, ÒÅÄÁËÔÉÒÏ×ÁÔØ É ÓÎÏ×Á ××ÏÄÉÔØ. á×ÔÏÍÏÄÉÆÉËÁÃÉÑ ÚÄÅÓØ ÎÅÄÏÓÔÁÔÏÞÎÁ.

Anatoly

Anatoly, ÔÙ Åݣ ÚÄÅÓØ ÓÉÄÉÛØ?

ðÑÔÎÉÃÁ éÀÎØ 17 2005 19:05, Anatoly Mashanov wrote to George Shepelev:

AM>>> ×Ï ×ÓÅÈ 4 ÓÔÒÁÎÉÃÁÈ ÂÙÌÏ ËÏÛÍÁÒÏÍ, ÎÏ ÉÚ×ÎÅ ÂÕÆÅÒ ×ÉÄÅÌÓÑ ËÁË ^^^^^^^^^^^^^^^^^^^^^^^ AM>>> ËÏÌØÃÅ×ÏÊ. ^^^^^^^^^ GS>> çÏÒÁÚÄÏ ÐÒÏÝÅ ÂÙÌÏ ÂÙ ÎÁÐÉÓÁÔØ ÐÒÏÃÅÄÕÒÙ ÞÔÅÎÉÑ ÉÚ ÔÅËÕÝÅÊ GS>> ÑÞÅÊËÉ É ÚÁÐÉÓÉ × ÔÅËÕÝÕÀ ÑÞÅÊËÕ Ó Á×ÔÏÍÏÄÉÆÉËÁÃÉÅÊ ÁÄÒÅÓÁ, ÂÅÚ GS>> ×ÓÑËÉÈ ÎÏÍÅÒÏ×. AM> õ ÍÅÎÑ ÂÕÆÅÒ ÂÙÌ ÎÅ ÐÒÏÓÔÏ ËÏÌØÃÅ×ÙÍ,

æÏÒÍÕÌÉÒÏ×ÁÌ ÂÙ ÔÏÞÎÅÅ (ÓÍ. ÐÏÄޣÒËÎÕÔÏÅ)...

AM> × ÎÅÍ ÄÏÌÖÎÁ ÂÙÌÁ ÔÁËÖÅ ÈÒÁÎÉÔØÓÑ ÉÓÔÏÒÉÑ ËÏÍÁÎÄ ÄÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏ AM> CTRL/E (ËÁË × HÏÒÔÏÎÅ) ÍÏÖÎÏ ÂÙÌÏ ×ÙÚÙ×ÁÔØ ÐÒÅÄÙÄÕÝÉÅ ËÏÍÁÎÄÙ, AM> ÒÅÄÁËÔÉÒÏ×ÁÔØ É ÓÎÏ×Á ××ÏÄÉÔØ.

úÁÐÉÓÉ × ÂÕÆÅÒ ÐÅÒÅÍÅÎÎÏÊ ÄÌÉÎÙ?

AM> á×ÔÏÍÏÄÉÆÉËÁÃÉÑ ÚÄÅÓØ ÎÅÄÏÓÔÁÔÏÞÎÁ.

÷ ÐÒÉÎÃÉÐÅ ÔÏÖÅ ÍÏÖÎÏ ÏÂÏÊÔÉÓØ Á×ÔÏÍÏÄÉÆÉËÁÃÉÅÊ, ÎÏ Ó ×ÏÚÍÏÖÎÏÓÔØÀ ÐÏÌÕÞÅÎÉÑ/ÚÁÄÁÎÉÑ ÐÏÌÎÙÈ ÁÄÒÅÓÏ× (ÎÅ ÉÎÄÅËÓÏ×) ÄÌÑ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ × ÂÕÆÅÒÅ (ÄÌÉÎÕ ÂÕÆÅÒÁ ÍÏÖÎÏ ÓÄÅÌÁÔØ ÂÏÌØÛÅ 256 ÂÁÊÔ, ÎÏ ÁÄÒÅÓÁ ÚÁÊÍÕÔ ÂÏÌØÛÅ ÍÅÓÔÁ...). ðÒÁ×ÄÁ Ó ÏÐÒÅÄÅÌÅÎÉÅÍ ×ÏÚÍÏÖÎÏÓÔÉ ÐÅÒÅÐÏÌÎÅÎÉÑ ÂÕÆÅÒÁ ÂÕÄÕÔ ÐÒÏÂÌÅÍÙ. äÅÊÓÔ×ÉÔÅÌØÎÏ, ÎÅ ÓÌÉÛËÏÍ ÐÒÉÑÔÎÁÑ ÚÁÄÁÞËÁ...

çÅÏÒÇÉÊ

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required