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 раз(а).
Аватара пользователя
DrZugrik
 
Сообщения: 206
Зарегистрирован: 22 июл 2006, 18:57
Откуда: Москва
прог. языки: Delphi, С/С++, Python
ФИО: Илья Андреевич

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

Сообщение =DeaD= » 22 янв 2010, 17:52

Немедля сменить название темы, или убьём её!
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

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

Сообщение Vooon » 22 янв 2010, 17:53

Ты сначала скажи, нафига так пишешь? Место на диске экономишь?
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение DrZugrik » 22 янв 2010, 17:59

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

в каком смысле?
Аватара пользователя
DrZugrik
 
Сообщения: 206
Зарегистрирован: 22 июл 2006, 18:57
Откуда: Москва
прог. языки: Delphi, С/С++, Python
ФИО: Илья Андреевич

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

Сообщение yak-40 » 22 янв 2010, 18:00

Хорошее питание - залог здоровья! :)
Кондёры по питанию стоят? Питание нормальное?
Запитай движки от отдельного источника. Похоже МК ресетится от помех.
Вот тут аналогичный вопрос обсуждался: http://roboforum.ru/viewtopic.php?f=87&t=7369&start=45
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

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

Сообщение executer » 22 янв 2010, 18:01

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

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


чтоб скобки не терять какраз и делают отступы на кажый уровень вложенности.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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 раз.
Аватара пользователя
DrZugrik
 
Сообщения: 206
Зарегистрирован: 22 июл 2006, 18:57
Откуда: Москва
прог. языки: Delphi, С/С++, Python
ФИО: Илья Андреевич

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

Сообщение Vooon » 22 янв 2010, 18:22

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

// означает, что я не одобряю такое форматирование
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3339
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

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

Сообщение executer » 22 янв 2010, 19:14

WinAVR c Proteus - это сказка вообще. попробуй с оптимизацией поигратся - включи-выключи. Мне иногда помогало.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение DrZugrik » 22 янв 2010, 19:19

а где её там найти? и отладчик тоже, ничего похожего не нашел
Аватара пользователя
DrZugrik
 
Сообщения: 206
Зарегистрирован: 22 июл 2006, 18:57
Откуда: Москва
прог. языки: Delphi, С/С++, Python
ФИО: Илья Андреевич

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

Сообщение executer » 22 янв 2010, 19:21

в make файле в папке с исходниками твоими должен быть.
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение yak-40 » 22 янв 2010, 19:22

Наверное подтяжку к питанию на PORTD.6 надо сделать.
Фототранзистор при освещении его светом сигнал к земле притягивает, а поднимать то его кто будет когда света нет? Или внутренний включит, или внешний надо поставить 5-10ком.
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

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

Сообщение avr123.nm.ru » 22 янв 2010, 19:22

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

А оптиизацию можно подкрутиь в свойствах проекта если через студию работаете в WinAVR.
Читайте !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

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

Сообщение executer » 22 янв 2010, 19:23

Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

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

Сообщение yak-40 » 22 янв 2010, 19:25

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


Добавлено спустя 1 минуту 32 секунды:
Внимательней надо чужие программы копировать :D
- Этот человек - не человек! это робот!
- Как? уже делают?!
- Делают!!!
Аватара пользователя
yak-40
 
Сообщения: 3037
Зарегистрирован: 23 окт 2007, 22:03
Откуда: Москва
прог. языки: С
ФИО: Евгений Яковец

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 37