Добрый день! подскажите как написать задержку перед началом програмы что бы робот не сзазу начинал движение а секунд через пять мигнув диодом?
Predator
Отправлено: 17 Августа, 2013 - 11:21:13
Супермодератор
Сообщений всего: 1307
Дата рег-ции: Июль 2012
у вас наверняка есть примерно такая конструкция:
CODE:
main()
{
io_init();
motor_init();
vsa_figna_init();
while(1)
{
смотреть куда ехать и ехать куда не надо...
};
};
так вот перед этим бесконечным циклом ( while(1) ) надо вставить задержку. Например delayms(5000);
mrbin
Отправлено: 17 Августа, 2013 - 19:11:01
Капитан
Сообщений всего: 50
Дата рег-ции: Авг. 2013
спасибо за ответ,теперь другая проблема записываю в протеусе,все работает как надо,сначало минает ждет потом едет,записываю в микроконтролер,диод замигал и мигает бесконечно ,робот стоит,микроконтролер мега8515,в чем может быть причина?задержку пишу перед while.
killgur
Отправлено: 17 Августа, 2013 - 23:38:11
Гуру
Сообщений всего: 1189
Дата рег-ции: Февр. 2010
mrbin пишет:
спасибо за ответ,теперь другая проблема записываю в протеусе,все работает как надо,сначало минает ждет потом едет,записываю в микроконтролер,диод замигал и мигает бесконечно ,робот стоит,микроконтролер мега8515,в чем может быть причина?задержку пишу перед while.
уже вроде один раз намекнули что надо код показать...
void main(void)
{
int i; // объявляем переменную i
DDRD = 0xFF; // все выводы порта D сконфигурировать как выходы
DDRC = 0x00; // все выводы порта C сконфигурировать как входы
PORTC = 0xff; // установить "1" на всех выводах порта D,
for (i = 1; i <= 10; i++) // цикл "для", повторяющийся 10 раз
{
PORTD |= 1<<5; // установить "1" (высокий уровень) на выводе PD5,
//зажечь светодиод
delay_ms(250); // ждем 0.25 сек.
PORTD &= ~ (1<<5); // установить "0" (низкий уровень) на выводе PD5,
//погасить светодиод
delay_ms(250); // ждем 0.25 сек.
}
while(1) // Бесконечный цикл.
{
//ВРАЩАЕМ МОТОРЫ ВПЕРЕД.
PORTD&=~(1<<1); //PORTD.1=0; // установить "0" на линии 2 порта D
PORTD|= 1<<2; //PORTD.2=1; // установить "1" на линии 1 порта D `
PORTD&=~(1<<3); //PORTD.3=0; // установить "0" на линии 2 порта D
PORTD|= 1<<4 ; //PORTD.4=1; // установить "1" на линии 3 порта D
// ПРОВЕРЯЕМ СИГНАЛ НИЗКОГО УРОНЯ ОТ ФОТОДАТЧИКА PORTC.1
if (!(PINC & (1<<PINC1))) // проверить "0" на линии 1;
{
// ПРИ ПОСТУПЛЕНИИ СИГНАЛА Н/У PORTC.1/ МИГНУТЬ ДИОДОМ ...
PORTD&=~ (1<<1); //PORTD.1=0; // установить "0" на линии 1 порта D ; `
PORTD&=~ (1<<2); //PORTD.2=0; // установить "0" на линии 2 порта D ;
PORTD&=~ (1<<3); //PORTD.3=0; // установить "0" на линии 3 порта D ;
PORTD&=~ (1<<4); //PORTD.4=0; // установить "0" на линии 4 порта D ;
delay_ms(500);
//ЗДАТЬ НАЗАД.
PORTD|= 1<<1; //PORTD.1=1; // установить "1" на линии 1 порта D
PORTD&=~(1<<2); //PORTD.2=0; // установить "0" на линии 4 порта C
PORTD|= 1<<3; //PORTD.3=1; // установить "1" на линии 2 порта D
PORTD&=~(1<<4); //PORTD.4=0; // установить "0" на линии 4 порта C
delay_ms(1000);
//РАЗВЕРНУТСЯ НА ПРАВО.
PORTD|= 1<<1; //PORTD.1=1; // установить "1" на линии 1 порта D
PORTD&=~(1<<2); //PORTD.2=0; // установить "0" на линии 4 порта C
PORTD&=~(1<<3); //PORTD.3=0; // установить "0" на линии 4 порта C
PORTD|= 1<<4; //PORTD.4=1; // установить "1" на линии 2 порта D
delay_ms(700);
} (Добавление)
вот код
Роботов
Отправлено: 18 Августа, 2013 - 08:44:21
Гуру
Сообщений всего: 1350
Дата рег-ции: Июнь 2011
Скорее всего, если в протеусе работает, значит происходит сбой во время включения моторов, МК сбрасывается и начинается всё сначала. Короче копайте в питании. попробуйте запитать МК от отдельного источника. Почти всегда помогает.
mrbin
Отправлено: 18 Августа, 2013 - 16:26:53
Капитан
Сообщений всего: 50
Дата рег-ции: Авг. 2013
Спасибо буду пробовать,и еще вопрос lm358,в нем же два усилителя,собираю на нем да фотодатчика,подключаю,первый раз срабатывают оба,потом один работает второй просо горит,и хоть что ты делай ни чего не помогает,один работает другой нетю
mrbin
Отправлено: 19 Августа, 2013 - 15:16:20
Капитан
Сообщений всего: 50
Дата рег-ции: Авг. 2013
НЕ ПОМОГЛО ТАКАЯ ЖЕ ЕРУНДА
Роботов
Отправлено: 20 Августа, 2013 - 13:37:44
Гуру
Сообщений всего: 1350
Дата рег-ции: Июнь 2011
mrbin пишет:
НЕ ПОМОГЛО ТАКАЯ ЖЕ ЕРУНДА
Емкости по питанию стоят? Электролит и керамика обязательно.
Reset к плюсу подтянут? Через резистор 10 кОм. желательно.
Чем питаемся-то вообще?
Петр Киселев
Отправлено: 20 Августа, 2013 - 18:37:28
Гуру
Сообщений всего: 2397
Дата рег-ции: Окт. 2012
Желательно, чтобы mrbin выложил схему питания своего устройства! (Добавление)
mrbin пишет:
PORTD|= 1<<1; //PORTD.1=1; // установить "1" на линии 1 порта D
PORTD&=~(1<<2); //PORTD.2=0; // установить "0" на линии 4 порта C
PORTD&=~(1<<3); //PORTD.3=0; // установить "0" на линии 4 порта C
PORTD|= 1<<4; //PORTD.4=1; // установить "1" на линии 2 порта D
delay_ms(700);
Роботов, все ли здесь правильно? Интуитивно мне тут кое-что не нравится!
Роботов
Отправлено: 20 Августа, 2013 - 19:35:02
Гуру
Сообщений всего: 1350
Дата рег-ции: Июнь 2011
Петр Киселев пишет:
Интуитивно мне тут кое-что не нравится!
В комментариях порт D и порт С перепутаны? Ну это на скорость не влияет)
mrbin
Отправлено: 20 Августа, 2013 - 19:58:03
Капитан
Сообщений всего: 50
Дата рег-ции: Авг. 2013
ну а правильное питание схему можно,да кондецаторы стоят перед крен и после,возле ноги нет,а схему правильного питания можно? (Добавление)
[quote=mrbin]ну а правильное питание схему можно,да кондецаторы стоят перед крен и после,возле ноги нет,резет к плюсу подтянут через 50килоом
Роботов
Отправлено: 20 Августа, 2013 - 20:07:53
Гуру
Сообщений всего: 1350
Дата рег-ции: Июнь 2011
От КРЕН-ки только МК питается? Какое напряжение подается на КРЕН? Должно быть больше 7,5 вольт
mrbin
Отправлено: 21 Августа, 2013 - 07:13:06
Капитан
Сообщений всего: 50
Дата рег-ции: Авг. 2013
больше 7.5,контролер,драйвер двигателя питается от крен
Роботов
Отправлено: 21 Августа, 2013 - 13:24:45
Гуру
Сообщений всего: 1350
Дата рег-ции: Июнь 2011
Если двигатели питаются от другого источника, то должно быть всё нормально. Разве что какая-то мощная помеха от движков всё таки пролазит. Хорошо бы осцилографом посмотреть цепи питания на предмет просадки.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.