Здравствуйте. Есть массив структур который не влазит в один банк. Если объеденить несколько банков, то возникает проблема генерации кода перехода между банками. Вопрос: "Как заставить С18 генерировать код выбора нужного банка при обращении к большому массиву?" Какой выход есть из сложившейся ситуации? Выбросить компилятор не предлагать :) P18F458 Спасибо. Денис.
Microchip C18 banksel
Jun 14, 2005
11 Replies
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