Технический форум по робототехнике.
avr123.nm.ru » 08 мар 2007, 13:54
А можно в обработчике этого прерывания просто выключить его на некоторое время.
но резистор всеравно советую с конденсатором - это и ногу защищает от статики и всякой дряни.
Master » 08 мар 2007, 18:48
Чего вы думаете, что проблема в питании. Как я понял машинка без бампера нормально функционирует. Следовательно схема питания осуществленна правильно, значит проблема в бампере. Просто нужно уточнить машинка перестает работать сразу при навеске бампера, либо при ударом бампером о препятствие? Так же может быть что бампер коротит на землю, а если прерывание срабатывает не по спадающему фронту, а по нулю н ножке INT, то МК висит постоянно в прерывании. Либо бампер что-то коротит, тогда МК тоже ресетится, на машинке что-то греется? (У меня похожее было с Н-мостом).
avr123.nm.ru » 08 мар 2007, 19:51
Master писал(а):если прерывание срабатывает не по спадающему фронту, а по нулю н ножке INT, то МК висит постоянно в прерывании.
выше я уже предположил это.
SSG » 09 мар 2007, 12:10
Спасибо за советы. Пару дней завален работой.
Как найду полчасика - поэкспериментирую и обязательно сообщу о результатах.
По поводу прерывания: начинает скакать и до столкновения с препятствием.
avr123.nm.ru » 09 мар 2007, 14:30
Выключи его в программе после возникновения на некоторое время и посмотри. Но резистор с конденсатором добавь !
SSG » 09 мар 2007, 15:41
avr123.nm.ru писал(а):Master писал(а):если прерывание срабатывает не по спадающему фронту, а по нулю н ножке INT, то МК висит постоянно в прерывании.
выше я уже предположил это.
Да не по нулю, а по спаду! В генераторе кода Falling Edge для INT0 устанавливается. CVARV - сила! :)
avr123.nm.ru » 09 мар 2007, 16:05
да я ПОНЯЛ ! что по спаду у вас !
Я ж отвечал человеку ! что уже ПРЕДПОЛАГАЛ такой вариат ранее.
SSG » 09 мар 2007, 16:40
Я понял что Вы поняли. И я ему же отвечал :D Сейчас на работе, дома вечером, если найду пару минут и конденсатор, попробую. Мысль с конденсатором и резистором стоящая.
SSG » 12 мар 2007, 00:41
2 AVR123
Премного благодарен! Все работает как нужно. Поставил фильтр на ножку, взял проводок к прерыванию экранированным. Однако все равно интересна истинная причина (хотя на 90% - движки мешают).
Chooze » 12 мар 2007, 07:57
Проблема!!! Какая то странная ерунда, программа из цикла не выходит!!!
Пробовал while, for... главное в других частях программы всё пашет как надо. Не могу понять. Определил функцию записи во флэш, с последующим чтением, писать наченает и переполняет буфер
писал while (i<528) а он шпарит мне 529.530.531.и тд. Может стек перерос... пробовал if (i==528) break; - фиг не работает !!!!???? Может у кого такаяже проблема была как быть???
avr123.nm.ru » 12 мар 2007, 10:09
вы кусок кода покажите.
Chooze » 12 мар 2007, 10:25
Я нагло взял кусок кода из задачи 7 кажется, когда в память пишется.
В задаче работает. А у меня в программе нет!! Проверил переменные - всё в порядке.
while (last_byte_page < 4)
{
dumb_data = 0;
ctr = 0;
while (ctr<528)
{
write_to_flash(dumb_data);
dumb_data++;
ctr++;
}
}
Оригинал.
у меня всё как в задаче.
last_byte_page плюсуется и прёт больше 4 и дальше. а из цикла не выходит. :(
Я потом переделал чтобы только первая страница писалась тоже самое, из цикла не выходит.
Chooze » 12 мар 2007, 10:31
Может есть какоето ограничение по использованию циклов?
Chooze » 12 мар 2007, 10:44
Вечером исходник выложу!! Сейчас на работе! Спасибо!
avr123.nm.ru » 12 мар 2007, 15:45
while (ctr<528)
{
write_to_flash(dumb_data);
dumb_data++;
ctr++;
Тут вставьте ctr = 529;
Кроме того используйте отладку как в avr123.nm.ru/z4.htm
}
и проверьте что ctr не объявлена как char он должна быть двухбайтовой - т.е. int или unsigned int
Если не поможет то попробуй отключить оптимизацию этого учатска программы как написано в HELP
Example:
/* Turn optimization off, for testing purposes */
#pragma opt-
or
/* Turn optimization on */
#pragma opt+