реклама на сайте
подробности

 
 
> странное поведение мега8 и USART
Метценгерштейн
сообщение Sep 5 2013, 12:55
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



выводит слово в терминалку не до конца, а в след. проход его дописывает. Например,
Код
        putchar ('A');
        putchar ('B');
        putchar ('C');

выведет
AB
в след. цикл допишет недостающую С и снова выведет на новой строчке AB

Код
void putchar (char sym) {       //отправка символа
  while(!(UCSRA & (1<<UDRE)));
  UDR = sym;
}


а почему?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Sep 6 2013, 07:13
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Код
void putchar (char sym) {      
  while(!(UCSRA & (1<<UDRE)));
  UDR = sym;
}

вот делаю без прерываний, проверяю UDRE.

но именно в этой ситуации и не дописывает символы. Может терраТерм подглючивает?

Было сделано на прерываниях и FIFO буферах- тот же эффект, хотя раньше такого не наблюдалось- на др. проектах. Ушел от прерываний, т.к. в проге у себя из прерывания надо отправить данные.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 04:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.03321 секунд с 7
ELECTRONIX ©2004-2016