реклама на сайте
подробности

 
 
> PIC - глюки или руки кривы?
MiKruSoft
сообщение Jan 25 2005, 09:38
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 25-01-05
Из: МО
Пользователь №: 2 164



PIC16F877A. Пользую PICCLite c MPLABом. Есть функция, внутри в цикле вызов другой (используется для задержки). При работе периодически слетаю на другие адреса программы. Причем, даже в симуляторе. Отловил шаг, на котором это происходит - ничем не отличается от других. Это что, глюк или забыл что-то настроить в пике? cranky.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
andk
сообщение Jan 25 2005, 09:48
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Исходник покажи.
Телепатов здесь нет smile.gif
Go to the top of the page
 
+Quote Post
Vic
сообщение Jan 25 2005, 10:28
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 241
Регистрация: 22-11-04
Из: Санкт-Петербург
Пользователь №: 1 192



С переключением банков все нормально, обычно такое бывает когда банками неправильно рулиш.
Go to the top of the page
 
+Quote Post
MiKruSoft
сообщение Jan 25 2005, 11:21
Сообщение #4





Группа: Новичок
Сообщений: 4
Регистрация: 25-01-05
Из: МО
Пользователь №: 2 164



Логично 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
Go to the top of the page
 
+Quote Post
andk
сообщение Jan 26 2005, 03:31
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 199
Регистрация: 17-12-04
Из: Миасс
Пользователь №: 1 519



Что делает функция Write_DR(fr2[ind])?
Слет всегда после нее?
Стек не пробивает? (Может есть прерывания, и т.п...)

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

Мало информации.
Go to the top of the page
 
+Quote Post
MiKruSoft
сообщение Feb 28 2005, 09:48
Сообщение #6





Группа: Новичок
Сообщений: 4
Регистрация: 25-01-05
Из: МО
Пользователь №: 2 164



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

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

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

Спасибо всем, кто пытался. ! a14.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 02:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01412 секунд с 7
ELECTRONIX ©2004-2016