| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| Препълване на стек http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=7739 |
Страница 1 от 1 |
| Автор: | nikolovs [ Вто Апр 13, 2010 10:07 pm ] |
| Заглавие: | Препълване на стек |
Здравейте на всички колеги. Програмирам един PIC18f4620 на MicroC pro for PIC version 3.2 пуснат на 12мхз ,като управлявам един графичен LCD и реализирам менюта и под менюта . Проблема е следния - след доста код на протеуса процесора се оспива и изписва ,че стека е препълнен .При писането на кода не ми е много ясно как да предотвраря това . Използвам само глобални променливи , кода сам разбил на функции с цел малко да ми е по прегледно когато пиша .Заел съм едва 20% от ROM паметта .Как вие оптимизирате кода , когато пишете и то доста код с много библиотечни функции |
|
| Автор: | ToHu [ Вто Апр 13, 2010 10:23 pm ] |
| Заглавие: | |
Ами много зависи как си го писал тоя код, и с 1% може да препълниш стека. CCS си има инспектор на стека, но има случаи когато няма как да ти покаже препълването. Най-вече избягвай да викаш функция от друга функция, не казвам да не го правиш, ама като извикаш 4-5 функции една в друга, и ти дойде прекъсване иси готов, щото и там сигурно изпозвлаш функции. Я постни тоя код да го видим, и ще се види що ти препълва стека. Не забравяй че микроконтролерите не са РС, особенно пък тия на мкрочип. |
|
| Автор: | nikolovs [ Вто Апр 13, 2010 10:32 pm ] |
| Заглавие: | |
Ами тогава най добре е да не разбивам кода на функции , за да не се препълва стека .Е да не е персонален компютър , микроконтролера си е с хардуерен стек , май беше с 31 нива в спецификацията го пишеше. Трябва да постна кода , но просто трябва да разбера да предотвратявам това . |
|
| Автор: | ToHu [ Вто Апр 13, 2010 10:54 pm ] |
| Заглавие: | |
Е това е крайност, но трябва да се внимава кое от къде викаш. Иначе е 31 нива, и емного чудно как успяваш да го препълниш, аз отдавна не ги позлвам пикльовците и бях забравил че тая серия са 32 нива, тва доста упоритост трябва да го препълниш, да нямаш фукция в прекъсване и да не излизаш от него или нещо подобно, да имаш изход с гото. |
|
| Автор: | ToHu [ Вто Апр 13, 2010 11:22 pm ] |
| Заглавие: | |
дай да видим това images.c че не се компилира без него, още не мога съвсем да вдяна какво правиш ама .... |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|