Суббота, 20.04.2024, 10:06
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Микроконтроллеры » Вопросы по МК » Отправка символов через USART
Отправка символов через USART
leechДата: Воскресенье, 14.03.2010, 19:20 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
При отправке вот так символов на TTY проходит все на УРА. То есть в консоли получаем "AB"
Code

void main (void)
     {

     initialization();
         while (1)
             {
             if(PINB.0==0)
                 {
                 printf("A");
                 delay_ms(100);
                 printf("B");
                 PORTA.0^=1;
                 delay_ms(100);
                 }      
             }
     }

А если вот так то получаем "Aи"

Code

void main (void)
     {

     initialization();
         while (1)
             {
             if(PINB.0==0)
                 {
                 printf("AB");
                 PORTA.0^=1;
                 delay_ms(100);
                 }      
             }
     }

Настройки USART

Code

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

Частота тактования 8мгц от внутреннего генератора.
Проверял через VMLAB

X01 TTY(9600 8 1) PD0 PD1

Что за хрень происходит ? Такое ощущение что без паузы в отправке символов гдето происходт сбой.
Подскажите это просто глюк VMLAB или я реально чтото напортачил в скоростях ???

 
HiSERДата: Вторник, 16.03.2010, 10:04 | Сообщение # 2
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
А на реальном железе как работает?
 
leechДата: Вторник, 16.03.2010, 12:22 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
А я не пробовал. Я только начал это осваивать перед уничтожение железки решил вообще попробовать такое реализовать. Вот и начал мучать эмулятор. Столкнулся с граблями, и решил спросить у Великих ГУРУ это реально может быть ошибка эмулятора или я полный 0 и моя прога глючная и я вообще не понимаю как отправить что-то по порту smile

Если реально такое может быть из за эмулятора то и фиг с ним куплю реальную железку и если там не попрет то буду Вам уже в дальнейшем буду мозг рушить.

 
HiSERДата: Вторник, 16.03.2010, 21:19 | Сообщение # 4
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
в протеусе этот код у меня нормально работает.
 
leechДата: Вторник, 16.03.2010, 22:08 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
Спасибо большое HiSER что не просто откликнулись, но и даже протестировали мой бред smile
Биг биг спс biggrin
 
UpgraderДата: Пятница, 04.06.2010, 14:27 | Сообщение # 6
Рядовой
Группа: Пользователи
Сообщений: 19
Репутация: 1
Статус: Offline
У меня на Tiny2313 в протеусе этот код какую-то фигню в терминал пишет, а не то что нужно.
При этом в протеусе вылазит предупржедение: Logic contention(s) detected on net #00011
Даже пишу printf("1234");, а на терминал выходит один символ "X", и т.п. всякая остальная ерунда... Как это понять?

Но это только на Tiny2313. А если взять мегу8 - там все нормально.

Добавлено (04.06.2010, 14:27)
---------------------------------------------
А подскажите самое главное, кварц все-же нужен для передачи по USART, или и без него будет нормально работать?

Сообщение отредактировал Upgrader - Четверг, 03.06.2010, 23:30
 
my-avrДата: Суббота, 05.06.2010, 00:03 | Сообщение # 7
Admin
Группа: Администраторы
Сообщений: 79
Репутация: 10
Статус: Offline
Upgrader, без кварца тоже будет работать нормально, тоже тестил тини2313 без кварца, то данные передаются хорошо, только важно чтобы кабель был КОРОТКИМ, а так всякие наводки могут быть
 
Форум » Микроконтроллеры » Вопросы по МК » Отправка символов через USART
  • Страница 1 из 1
  • 1
Поиск:

Хостинг от uCoz