codevison avr и uart

Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Ответить
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пт май 15, 2009 00:29:25

Сообщение sawaer »

здравствуйте, помогите пожалуйста, второй день мучаюсь.....

Код: Выделить всё

while (1){  
        putsf("start") ; 
    if (getchar()=='1'){
   
putsf("a") ; 
}

                    }; 
  putsf("start") ;
     }
в общем с контроллера приходит один раз код "start" и все.... зависает контроллер, ждет пока не придет "1" на него... в общем а мне нужно чтоб он выполнял дальше команды, а не останавливался и ждал "1"
Реклама
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

а чего же вы хотели? вы обращаетесь к функции "ждать символ и вернуть его" - вот МК и ждет прихода символа. не ждите символа - вот и будет вам счастье. не ждать можно двумя способами: используя прерывания, проверяя флаг...
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Реклама
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пт май 15, 2009 00:29:25

Сообщение sawaer »

а как сделать проверяя флаг?
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

Код: Выделить всё

while(!(UCSRA & (1<<RXC))){
   // тут делаете свои черные дела, пока НЕ ПРИШЕЛ символ
   // разумеется, делаете недолго, маленькими порциями
}
// а вот здесь уже можно считывать символ - он уже пришел и getchar() выполнится мгновенно
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Пт май 15, 2009 00:29:25

Сообщение sawaer »

while(!(UCSRA & (1<<RXC))){
putsf("start") ;
delay_ms(10);
}
if (getchar()=='1'){
putsf("aaaaa") ;
delay_ms(100);}

так ????
Реклама
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город

Сообщение Мастер Ломастер »

я не знаю, так или не так - вы сами-то представляете, что будет делать ваш код? каждые 10 мс посылать "start", а когда придет в ответ 1 - пошлет "aaaa". если это как раз то, что вам надо - так и есть. причем обратите внимание, что 10 мс - это очень долго по меркам МК, а я говорил, что в цикле ожидания надо все делать быстро.
битва с дураками проиграна, победители торжествуют. слава победителям!
Контактная информация:
Реклама
Ответить

Вернуться в «Интеграция с ПК»