Witam serdecznie,
piszę obecnie w Bascomie dość rozbudowany projekt na Atmegę32 używający przerwania Timera T0 oraz komunikacji z drugim mikrokontrolerem za pomocą kontroli przerwania Urxc i bufora nadawania. Projekt nie używa procedur ani funkcji zawierających zmienne lokalne ani skoków Gosub. Jedynym elementem zwiększającym stos jest przerwanie od Timera T0 oraz przerwanie odebranych danych Uart-u. Projekt zawiera rozbudowane menu i wszystkie skoki bezwarunkowe GOTO. Przerwanie Timera T0 jest generowane co 1 milisekundę. Sam system pracuje bezproblemowo, do momentu kiedy wielkość kodu wynosi poniżej 50% pamięci flesz. Po dalszym rozbudowaniu menu i zwiększeniu się kodu powyżej 50% zaczynają się schody, polegające najczęściej na zablokowaniu się wysyłania danych po UART albo zablokowaniu odbioru.
Proszę o jakąś podpowiedź bo już nie wiem co robić.
Czy można w jakiś sposób kontrolować stos przy obsłudze przerwań.
Pierwsze moje problemy zaczęły się od wielkości kodu na poziomie 40% ale "wyrzucenie" procedur i skoków Gosub dało mi dodatkowe 10% kodu. Niestety końca programu nie widać a mnie skończyły się pomysły. Dodam, że próby ze zmianami wielkości ramki i stosów nic nie dają.
Dziękują za radę.
Proszę zmienić tytuł wiadomości - regulamin p.11.1
[zumek]
piszę obecnie w Bascomie dość rozbudowany projekt na Atmegę32 używający przerwania Timera T0 oraz komunikacji z drugim mikrokontrolerem za pomocą kontroli przerwania Urxc i bufora nadawania. Projekt nie używa procedur ani funkcji zawierających zmienne lokalne ani skoków Gosub. Jedynym elementem zwiększającym stos jest przerwanie od Timera T0 oraz przerwanie odebranych danych Uart-u. Projekt zawiera rozbudowane menu i wszystkie skoki bezwarunkowe GOTO. Przerwanie Timera T0 jest generowane co 1 milisekundę. Sam system pracuje bezproblemowo, do momentu kiedy wielkość kodu wynosi poniżej 50% pamięci flesz. Po dalszym rozbudowaniu menu i zwiększeniu się kodu powyżej 50% zaczynają się schody, polegające najczęściej na zablokowaniu się wysyłania danych po UART albo zablokowaniu odbioru.
Proszę o jakąś podpowiedź bo już nie wiem co robić.
Czy można w jakiś sposób kontrolować stos przy obsłudze przerwań.
Pierwsze moje problemy zaczęły się od wielkości kodu na poziomie 40% ale "wyrzucenie" procedur i skoków Gosub dało mi dodatkowe 10% kodu. Niestety końca programu nie widać a mnie skończyły się pomysły. Dodam, że próby ze zmianami wielkości ramki i stosów nic nie dają.
Dziękują za radę.
Proszę zmienić tytuł wiadomości - regulamin p.11.1
[zumek]