Od kilku dni siedzę nad programem opierającym się o FreeRTOS dla Atmegi32/128. Mam niesamowity problem z dobraniem wielkości stosu dla każdego z tasków. jakimi regułami się kierować? Obecnie mam 8 tasków. Dla każdego przydzielony stack wielkości 130. Mam też 4 kolejki komunikatów, nie przekraczajace wielkością 6 bajtów kazda. Heap size ustawiłem dla Atmegi 128 na 2000 czyli połowę ramu. W zależności od tego jakie ustawię wielkości stosów i heap size program zachowuje się inaczej. Albo się wiesza od razu, albo się wiesza po czasie, albo działa w zupełnie nieprzewidywalny sposób. Ewidentnie coś ze stosem nie tak.
Najbardziej mnie dziwi, że czasami (jeszcze kiedy program był mniejszy) zmniejszenie przydzielonego stacku rozwiązywało problem. Dlaczego przydzielenie dużo za dużej wartości (ale nadal jest rezerwa w heap size) sypie program? Mogę dać kod ale uprzedzam, że jest bardzo zabałaganiony.
Wszystko w nim działa, ale czasami dodanie jednej instrukcji do pętli wszystko psuje.
Najbardziej mnie dziwi, że czasami (jeszcze kiedy program był mniejszy) zmniejszenie przydzielonego stacku rozwiązywało problem. Dlaczego przydzielenie dużo za dużej wartości (ale nadal jest rezerwa w heap size) sypie program? Mogę dać kod ale uprzedzam, że jest bardzo zabałaganiony.
Wszystko w nim działa, ale czasami dodanie jednej instrukcji do pętli wszystko psuje.