roboforum.ru

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

помогите разобраться с бесконечным циклом

помогите разобраться с бесконечным циклом

DrZugrik » 22 янв 2010, 17:48

привет всем! подскажите что нетак? стандартная схема в протеусе взятая с сайта (http://myrobot.ru/stepbystep/r_firstbot2.php) все работате кроме бесконечного цикла while(1). Вот мой код:
Код: Выделить всёРазвернуть
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{DDRB = 0xff;
DDRD = 0x00;
PORTD = 0x00;
while(1)
{  if (!(PIND & (1<<PIND6)))
{ PORTB |=  _BV(PB0);  //1
   PORTB &= ~_BV(PB1);  //0
   PORTB |=  _BV(PB2);  //1
   PORTB &= ~_BV(PB3);  //0
}
else
{ PORTB |=  _BV(PB1);  //1
   PORTB &= ~_BV(PB0);  //0
   PORTB |=  _BV(PB3);  //1
   PORTB &= ~_BV(PB2);  //0
}
}
}


суть вот в чем - движки изначально крутятся допустим (вправо), если свет падает на фотодиод то подается сигнал и движки начинают крутиться в другую сторону(влево), цикл идет заново, и если свет не попадает, то движки крутятся опять как и раньше (вправо) пока на диод опять не упадет свет. В протеусе моделирую схему, все работает как только на диод падает свет вижки меняют направление, но если свет убрать, то невозвращаются в нужную сторону, т.е. цикл бесконечный не пашет. Извиняюсь за путаное объяснение, вообщем, подскажите может гддето чтото напортачил... кроме этого использовал еще for(;;) тоже непомогло.
Последний раз редактировалось DrZugrik 22 янв 2010, 18:15, всего редактировалось 2 раз(а).

Re: Немогу заставить работать бесконечный цикл

=DeaD= » 22 янв 2010, 17:52

Немедля сменить название темы, или убьём её!

Re: Немогу заставить работать бесконечный цикл

Vooon » 22 янв 2010, 17:53

Ты сначала скажи, нафига так пишешь? Место на диске экономишь?

Re: помогите разобраться с бесконечным циклом

DrZugrik » 22 янв 2010, 17:59

Ты сначала скажи, нафига так пишешь? Место на диске экономишь?

в каком смысле?

Re: Немогу заставить работать бесконечный цикл

yak-40 » 22 янв 2010, 18:00

Хорошее питание - залог здоровья! :)
Кондёры по питанию стоят? Питание нормальное?
Запитай движки от отдельного источника. Похоже МК ресетится от помех.
Вот тут аналогичный вопрос обсуждался: http://roboforum.ru/viewtopic.php?f=87&t=7369&start=45

Re: помогите разобраться с бесконечным циклом

executer » 22 янв 2010, 18:01

а для main скобку закрывать не надо?

Код: Выделить всёРазвернуть
.....
PORTB &= ~_BV(PB2);  //0
}
}
} //!!!!!!


чтоб скобки не терять какраз и делают отступы на кажый уровень вложенности.

Re: Немогу заставить работать бесконечный цикл

DrZugrik » 22 янв 2010, 18:15

yak-40 писал(а):Хорошее питание - залог здоровья! :)
Кондёры по питанию стоят? Питание нормальное?
Запитай движки от отдельного источника. Похоже МК ресетится от помех.
Вот тут аналогичный вопрос обсуждался: http://roboforum.ru/viewtopic.php?f=87&t=7369&start=45


схема в протеусе,я так понимаю проблема в прошивке и именно в цикле.. в той тебе как раз таки бесконечный цикл работал,судя по коду. Питание подключаю от разных источников,это ничего не меняет =(
компилирую в WinAVR, при компиляции ошибок не находит, я даже незнаю в какую сторону смотреть уже...код то пустяковый, а никак не работает как надо.

скобка стояла,пропустил когда копировал.
Последний раз редактировалось DrZugrik 22 янв 2010, 18:23, всего редактировалось 1 раз.

Re: помогите разобраться с бесконечным циклом

Vooon » 22 янв 2010, 18:22

А что тебе мешает воспользоваться отладчиком в протеусе?

// означает, что я не одобряю такое форматирование

Re: помогите разобраться с бесконечным циклом

executer » 22 янв 2010, 19:14

WinAVR c Proteus - это сказка вообще. попробуй с оптимизацией поигратся - включи-выключи. Мне иногда помогало.

Re: помогите разобраться с бесконечным циклом

DrZugrik » 22 янв 2010, 19:19

а где её там найти? и отладчик тоже, ничего похожего не нашел

Re: помогите разобраться с бесконечным циклом

executer » 22 янв 2010, 19:21

в make файле в папке с исходниками твоими должен быть.

Re: помогите разобраться с бесконечным циклом

yak-40 » 22 янв 2010, 19:22

Наверное подтяжку к питанию на PORTD.6 надо сделать.
Фототранзистор при освещении его светом сигнал к земле притягивает, а поднимать то его кто будет когда света нет? Или внутренний включит, или внешний надо поставить 5-10ком.

Re: помогите разобраться с бесконечным циклом

avr123.nm.ru » 22 янв 2010, 19:22

Отладчик в PROTEUS это "Пауза" и куча вываливающихся окошек .

А оптиизацию можно подкрутиь в свойствах проекта если через студию работаете в WinAVR.

Re: помогите разобраться с бесконечным циклом

executer » 22 янв 2010, 19:23


Re: помогите разобраться с бесконечным циклом

yak-40 » 22 янв 2010, 19:25

Кстати в оригинальной прошивке она есть
Код: Выделить всёРазвернуть
   PORTD = 0xff; // установить "1" на всех выводах порта D,
       // включаем подтягивающие резисторы


Добавлено спустя 1 минуту 32 секунды:
Внимательней надо чужие программы копировать :D


Rambler\'s Top100 Mail.ru counter