|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:18 am
|
Страница 1 от 1
|
[ 5 мнения ] |
|
| Автор |
Съобщение |
|
nikolovs
Ранг: Ориентиран
Регистриран на: Съб Май 17, 2008 11:01 pm Мнения: 238
|
 Препълване на стек
Здравейте на всички колеги. Програмирам един PIC18f4620 на MicroC pro for PIC version 3.2 пуснат на 12мхз ,като управлявам един графичен LCD и реализирам менюта и под менюта . Проблема е следния - след доста код на протеуса процесора се оспива и изписва ,че стека е препълнен .При писането на кода не ми е много ясно как да предотвраря това . Използвам само глобални променливи , кода сам разбил на функции с цел малко да ми е по прегледно когато пиша .Заел съм едва 20% от ROM паметта .Как вие оптимизирате кода , когато пишете и то доста код с много библиотечни функции  .
|
| Вто Апр 13, 2010 10:07 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Ами много зависи как си го писал тоя код, и с 1% може да препълниш стека. CCS си има инспектор на стека, но има случаи когато няма как да ти покаже препълването. Най-вече избягвай да викаш функция от друга функция, не казвам да не го правиш, ама като извикаш 4-5 функции една в друга, и ти дойде прекъсване иси готов, щото и там сигурно изпозвлаш функции. Я постни тоя код да го видим, и ще се види що ти препълва стека. Не забравяй че микроконтролерите не са РС, особенно пък тия на мкрочип.
|
| Вто Апр 13, 2010 10:23 pm |
|
 |
|
nikolovs
Ранг: Ориентиран
Регистриран на: Съб Май 17, 2008 11:01 pm Мнения: 238
|
Ами тогава най добре е да не разбивам кода на функции , за да не се препълва стека .Е да не е персонален компютър , микроконтролера си е с хардуерен стек , май беше с 31 нива в спецификацията го пишеше. Трябва да постна кода , но просто трябва да разбера да предотвратявам това .
|
| Вто Апр 13, 2010 10:32 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
Е това е крайност, но трябва да се внимава кое от къде викаш. Иначе е 31 нива, и емного чудно как успяваш да го препълниш, аз отдавна не ги позлвам пикльовците и бях забравил че тая серия са 32 нива, тва доста упоритост трябва да го препълниш, да нямаш фукция в прекъсване и да не излизаш от него или нещо подобно, да имаш изход с гото.
|
| Вто Апр 13, 2010 10:54 pm |
|
 |
|
ToHu
Ранг: Форумен бог
Регистриран на: Нед Сеп 26, 2004 9:21 pm Мнения: 30686 Местоположение: София
|
дай да видим това images.c че не се компилира без него, още не мога съвсем да вдяна какво правиш ама ....
|
| Вто Апр 13, 2010 11:22 pm |
|
|
|
Страница 1 от 1
|
[ 5 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 3 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|