roboforum.ru

Технический форум по робототехнике.

МикроКонтроллер AVR начинающим - общие вопросы

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

Спасибо за советы. Пару дней завален работой. :cry:  Как найду полчасика - поэкспериментирую и обязательно сообщу о результатах.
По поводу прерывания: начинает скакать и до столкновения с препятствием.

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+


Rambler\'s Top100 Mail.ru counter