Технический форум по робототехнике.
avr123.nm.ru » 09 окт 2006, 18:50
Chip_SET писал(а):Глупый вопрос... как узнать завелся ли кварц?
я в курсе рекомендую ставить в прогу средства диагностики без приборов, т.е. светодиод например может по разному мигать в разных частях программы и тест сообщения выдавать на UART и на ПК как в задачах 4 и 5
avr123.nm.ru/z4.htm /z5.htm
чтоб не нужно было искать осцил.
=======
можете просто залить спец прогу мигания светодиодом и прикинуть частоту по миганию да и вообще факт запуска кварца.
avr123.nm.ru » 09 окт 2006, 18:54
в 200 примерах PROTEUS СУППЕР !!! проекты proteu123.narod.ru
Chip_SET » 10 окт 2006, 15:22
Дело пошло. Начал переписывать управляющую программу под КодВижнАВР. Сейчас делаю программу тестовых движений :)
Chip_SET » 12 окт 2006, 15:38
Очередной глупый вопрос... :roll:
Вот тут. В таблице одни цифры указаны, а в самой программе совершенно другие. Можете что либо сказать по этому поводу?
Chip_SET » 13 окт 2006, 16:19
Что то у меня по прерываниям МК слишком чуствительный. Вешаю кнопку и оно постоянно срабатывает. Кнопку снял все нормально. Ставил по ниспадающему и по нулю. Одно и то же.
avr123.nm.ru » 13 окт 2006, 18:08
можкт что-то не так поняли ? посмотрите о прерываниях avr123.nm.ru/03.htm и проверте код в VMLAB.
Chip_SET » 13 окт 2006, 21:24
Наверно проблема в отсутствии подтягивающих резисторах. Завтра проверю. Вроде программу переписал нормально, но возникла новая проблема. Двигатель (вперед-назад) странно себя ведет надо менять, а это значит переделать весь редуктор. Т.к. шестеренка которая стоит на двигателе металлическая и не снимается, а подходящих пластмассовых нет :evil: Еще пару недель гимора.
avr123.nm.ru » 13 окт 2006, 22:09
Chip_SET писал(а):Наверно проблема в отсутствии подтягивающих резисторах.
включите внутренние подтяжки avr123.nm.ru/02.htm
Chip_SET » 14 окт 2006, 11:49
Я пока программу не изменял. Поставил внешние резисторы. Стало нормально срабатывать но программа не отрабатывает их. В КодВижн стоят установки на вход, подтяжка на Т.
Вот код на обработку:
- Код: Выделить всё • Развернуть
interrupt [EXT_INT1] void ext_int1_isr(void)
{
// Place your code here
if(this_move==BR) go(FL);
if(this_move==BL) go(FR);
else go(F);
// светодиод
PORTC.4=1; // горим
for(d=DELAY;d>0;d--);
for(d=DELAY;d>0;d--);
PORTC.4=0; // гасим
this_move=F;
}
Chip_SET » 14 окт 2006, 12:12
Инициализация прерываний:
- Код: Выделить всё • Развернуть
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Falling Edge
// INT1: On
// INT1 Mode: Falling Edge
GICR|=0xC0;
MCUCR=0x00;
//MCUCR=0x0A;
GIFR=0xC0;
Chip_SET » 16 окт 2006, 17:26
Вот еще кусок кода:
- Код: Выделить всё • Развернуть
unsigned char next_move(void){
unsigned char pp, i;
pp = rand()/327; // получаем случайное число 0..99
for (i=0;i<7;i++){ // ищем соответствие в таблице вероятностей
if (p[this_move][i] > pp) break;
}
this_move = i; // записываем новое полученное направление как текущее
return(i);
}
Chip_SET » 16 окт 2006, 17:27
Кто нибудь подскажет где грабли?
avr123.nm.ru » 16 окт 2006, 17:55
прерывания не отрабатывает ?
а бит I в SREG установлен ?
посмотри что происходит в VMLAB
Chip_SET » 26 окт 2006, 15:06
Дело в том что когда кнопку нажимаешь то загорается светодиод. Не идет обработка на движение. Светодиод стоит специально для отображения работы кнопки.