Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 13.02.2008, 11:09   #1
soecho
Member
 
Регистрация: 26.02.2007
Сообщений: 88
Вес репутации: 115/49
soecho will become famous soon enoughsoecho will become famous soon enough
По умолчанию Как проверить переполнение стека

PIC16. В программе используется прерывание, много ветвлений и работы с USART, поэтому запустить в пошаговом режиме и MPLAB SIM не удасться. Как еще можно проверить?
soecho вне форума   Ответить с цитированием
Старый 13.02.2008, 12:03   #2
picavr
Senior Member
 
Регистрация: 13.02.2008
Сообщений: 167
Вес репутации: 117/47
picavr will become famous soon enoughpicavr will become famous soon enough
По умолчанию Re: Как проверить переполнение стека

кроме анализа программы на глубину загрузки стека или симуляции в МПЛАБ - Более Никак.

А почему нельзя в отладчике?... как раз тут только и можно...
Шагай по самой глубокой ветке в теле основной программы и вызывай прырывания, если вложенные то же вызывай ...
picavr вне форума   Ответить с цитированием
Старый 13.02.2008, 12:33   #3
jsi
Member
 
Регистрация: 26.02.2007
Сообщений: 39
Вес репутации: 100/49
jsi will become famous soon enoughjsi will become famous soon enough
Smile Re: Как проверить переполнение стека

Цитата:
Сообщение от soecho Посмотреть сообщение
PIC16. В программе используется прерывание, много ветвлений и работы с USART, поэтому запустить в пошаговом режиме и MPLAB SIM не удасться. Как еще можно проверить?
Здравствуйте !

Так это проще простого. Если программа выполняется корректно, тогда все о.к. Ну а ежели вылетает на рестарт, то ищите это самое переполнение.
jsi вне форума   Ответить с цитированием
Старый 13.02.2008, 13:03   #4
IceS
Super Moderator
 
Регистрация: 01.03.2007
Адрес: St. Petersburg
Возраст: 41
Сообщений: 3,246
Вес репутации: 3684/116
IceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond reputeIceS has a reputation beyond repute
Отправить сообщение для IceS с помощью ICQ
По умолчанию Re: Как проверить переполнение стека

Цитата:
Сообщение от jsi Посмотреть сообщение
Здравствуйте !

Так это проще простого. Если программа выполняется корректно, тогда все о.к. Ну а ежели вылетает на рестарт, то ищите это самое переполнение.
Ну не обязательно на рестарт, она может куда угодно, откуда угодно прыгнуть. Девайс может глючить по страшному, а может работать нормально (до поры, до времени).
IceS вне форума   Ответить с цитированием
Старый 13.02.2008, 14:09   #5
soecho
Member
 
Регистрация: 26.02.2007
Сообщений: 88
Вес репутации: 115/49
soecho will become famous soon enoughsoecho will become famous soon enough
По умолчанию Re: Как проверить переполнение стека

Хороший ответ. Вопрос: "Как найти переполнение стека?", ответ: " то ищите это самое переполнение". Вылетать действительно может куда угодно и когда угодно. Например, если совпадает время прерывания и заход в ветку с уровнем 8. В остальных случаях будет работать корректно. Если умножить, что это 5 тыс строк, написанных, для экономии памяти через call, то поиск вручную - та еще задача
soecho вне форума   Ответить с цитированием
Старый 13.02.2008, 14:15   #6
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,945
Вес репутации: 5817/175
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Как проверить переполнение стека

Цитата:
Сообщение от soecho Посмотреть сообщение
Хороший ответ. Вопрос: "Как найти переполнение стека?", ответ: " то ищите это самое переполнение". Вылетать действительно может куда угодно и когда угодно. Например, если совпадает время прерывания и заход в ветку с уровнем 8. В остальных случаях будет работать корректно. Если умножить, что это 5 тыс строк, написанных, для экономии памяти через call, то поиск вручную - та еще задача
а что не нравится в ответе?

вот и не делайте глубину вложения больше 7. Там всё считается на раз. Обычно компилятор может нарисовать дерево вызовов.
Greg вне форума   Ответить с цитированием
Старый 13.02.2008, 16:18   #7
soecho
Member
 
Регистрация: 26.02.2007
Сообщений: 88
Вес репутации: 115/49
soecho will become famous soon enoughsoecho will become famous soon enough
По умолчанию Re: Как проверить переполнение стека

В ответе не нравится отсутствие конструктивного ответа. MPLAB рисует дерево вложений? Где? Как? Про это собственно и вопрос. Как увидеть дерево вложений, а не лазить по году
soecho вне форума   Ответить с цитированием
Старый 13.02.2008, 16:37   #8
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,945
Вес репутации: 5817/175
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Как проверить переполнение стека

Цитата:
Сообщение от soecho Посмотреть сообщение
В ответе не нравится отсутствие конструктивного ответа. MPLAB рисует дерево вложений? Где? Как? Про это собственно и вопрос. Как увидеть дерево вложений, а не лазить по году
mplab насколько знаю, не рисует. Рисует т.н. компилятор. Я лично пользуюсь хайтеком. Для 16 пиков лучше ничего не придумано.
Иначе - действительно ползать и считать эти вложенные call-ы
Greg вне форума   Ответить с цитированием
Старый 13.02.2008, 17:14   #9
soecho
Member
 
Регистрация: 26.02.2007
Сообщений: 88
Вес репутации: 115/49
soecho will become famous soon enoughsoecho will become famous soon enough
По умолчанию Re: Как проверить переполнение стека

хайтек, насколько я понимаю это Си, а у меня код на асм, или можно посмотреть и с асм?
soecho вне форума   Ответить с цитированием
Старый 13.02.2008, 18:14   #10
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,945
Вес репутации: 5817/175
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Как проверить переполнение стека

Цитата:
Сообщение от soecho Посмотреть сообщение
хайтек, насколько я понимаю это Си, а у меня код на асм, или можно посмотреть и с асм?
Да, это Си. С какого-то момента перестал быть важен "полный контроль", ручное переключение банков и страниц и прочие достоинства языков низкого уровня.
Гораздо важнее стала читабельность программы и возможность её дальнейшего сопровождения "не программистом" контроллеров.
Greg вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OS для PIC24H? timday Инструментарий 217 31.03.2010 12:18
[нужны идеи] Датчик обмерзания, или как определить наличие снежной шубы Picozoid Общетехнические вопросы 25 15.12.2009 05:56
Как в объявленной переменной обозначить биты? VAV Продукция MICROCHIP 4 28.02.2008 15:55
Как проверить PIC18F252 Franky Продукция MICROCHIP 7 17.10.2007 13:54


Часовой пояс GMT +3, время: 06:14.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot