Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC - глюки или руки кривы?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры
MiKruSoft
PIC16F877A. Пользую PICCLite c MPLABом. Есть функция, внутри в цикле вызов другой (используется для задержки). При работе периодически слетаю на другие адреса программы. Причем, даже в симуляторе. Отловил шаг, на котором это происходит - ничем не отличается от других. Это что, глюк или забыл что-то настроить в пике? cranky.gif
andk
Исходник покажи.
Телепатов здесь нет smile.gif
Vic
С переключением банков все нормально, обычно такое бывает когда банками неправильно рулиш.
MiKruSoft
Логично smile.gif
Примерно так:
//*************
#define DelayUs() { ubyte i; i = 100; do {RE0 = 0; RE0 = 1;} while(--i); }
//-------------
void DelayM(unsigned char cnt)
{
ubyte inn;
do
{
inn = 10;
do
{
DelayUs(); //
}
while(--inn);
}
while(--cnt);
}
//-------------

main()
{
ubyte ind;
for(ind = 0; ind < 16; ind ++)
{
DelayM(100);
Write_DR(fr2[ind]); // байтовый массив
DelayM(100); // --------> слёт
}
}
//***************************
Слетает, когда ind имеет значение 5 (i и inn при этом могут быть разными). При слёте переменная ind сбрасывается в 0. И снова по кругу. Если цикл на уменьшение - ind не сбрасывается, а принимает начальное значение.
асм коду соответствует
------------------------------
Чувствую, что что-то криво, принимаю любые идеи %)
------------------------------
Vic: Про банки спасибо - уже смотрю smile.gif
andk
Что делает функция Write_DR(fr2[ind])?
Слет всегда после нее?
Стек не пробивает? (Может есть прерывания, и т.п...)

>При слёте переменная ind сбрасывается в 0. И снова по кругу. Если цикл
>на уменьшение - ind не сбрасывается, а принимает начальное значение.
До слета ( DelayM(100) второй раз) ind нормальная или уже битая?

Мало информации.
MiKruSoft
Прошу прощения - был в командировке, до форума не ходил smile.gif

Проблема разрешилась совершенно простейшим образом.

При программировании программатор устанавливал WDT в ON -
вот и слёты и глюки.

Спасибо всем, кто пытался. ! a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.