Делимся опытом Наступив на грабли - сообщи другим! Обмен опытом разработки и ремонта электронных устройств. |
19.03.2014, 10:33
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 876
Сказал спасибо: 236
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Как отослать информацию по uart в цикле
друзья
работаю в cvavr .C mega8 ружно отослать от1-до 9 чисел последовательно по uart .
Как это сделать в цикле for ?.
я пытался так но ничего.
for(f1=0;f1‹10;f1++)
{
delay_ms(5);
putchar(0x3f1);
putchar(0x0D);
putchar(0x0A);
заранее благодарен
|
|
|
|
19.03.2014, 10:42
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: как отослать информацию по uart в цикле
положить данные в регистр, дождаться отправки, проверяя флаг готовности
Метод называется полинг.
|
|
|
|
19.03.2014, 11:12
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,119
Сказал спасибо: 2,569
Сказали Спасибо 11,942 раз(а) в 5,989 сообщении(ях)
|
Re: как отослать информацию по uart в цикле
Сообщение от begun
|
работаю в cvavr .C mega8 ружно отослать от1-до 9 чисел последовательно по uart .
|
B Wizard-e в закладке УАРТ разрешить прерывания Rx и Тх. Спросит размеры буферов.
Сгенерирует функции чтения и отправки с соответствующими прерываниями. Все. putchar() и getchar() работают прекрасно, но нужно следить, чтобы не переполнить буфер, иначе потеря информации. В гетчаре можно повеситься, если перед вызовом не проверить наличие информации в буфере чтения.
Путчар закидывает байт в буфер. Дальше по прерываниям буфер опустошается сам.
Нужно подробней - спрашивайте.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
19.03.2014, 13:11
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Как отослать информацию по uart в цикле
Вот так попробуйте
Код:
|
for(f1=0;f1‹10;f1++)
{
delay_ms(5);
putchar(0x30+f1);
}
putchar(0x0D);
putchar(0x0A); |
Последний раз редактировалось Yurkin2014; 19.03.2014 в 13:44.
|
|
|
Сказали "Спасибо" Yurkin2014
|
|
|
19.03.2014, 16:47
|
|
Гражданин KAZUS.RU
Регистрация: 18.07.2006
Сообщений: 876
Сказал спасибо: 236
Сказали Спасибо 29 раз(а) в 27 сообщении(ях)
|
Re: Как отослать информацию по uart в цикле
Yurkin2014
спасибо ,вы точно поняли ,что нужно было и главное дали конкретный
и наглядный ответ.Честь и хвола вам.
Cпасибо всем выявляющим желание помочь.
|
|
|
|
19.03.2014, 17:12
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Как отослать информацию по uart в цикле
Главное, чтобы вы разработками автоматики контуров охлаждения атомных реакторов не занимались и все будет хорошо у нас всех.
|
|
|
|
19.03.2014, 17:40
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,119
Сказал спасибо: 2,569
Сказали Спасибо 11,942 раз(а) в 5,989 сообщении(ях)
|
Re: Как отослать информацию по uart в цикле
begun, задержку увеличьте до секунды, чтобы уж с гарантией...
Или делайте по-человечьи, не с задержками от фонаря, а как положено. А то Easyrider83 прав
Сообщение от Easyrider83
|
Главное, чтобы вы разработками автоматики контуров охлаждения атомных реакторов не занимались
|
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
19.03.2014, 19:02
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Как отослать информацию по uart в цикле
Обиделись как малые дети, что их не похвалили ... И сразу гнобить ТС за "атомные реакторы". Прям, как-то неприлично, господа ...
На самом деле тут ни задержки, ни поллинг не нужны: в данном случае прерывания не используются, и в функцию putchar() уже встроен поллинг: функция будет ждать флаг UDRE, пока не освободится регистр UDR.
Код:
|
char c;
for(c='1'; c‹='9'; c++) putchar(c);
putchar('\n'); |
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:25.
|
|