Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
18.12.2006, 18:28
|
|
Прохожий
Регистрация: 06.06.2005
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Помогите разобраться с приёмом символов через UART в ATmeg8
Парни, подскажите что делаю не так...
1.инициализация UART 9600/8/1:
UBRRH = 0;
UBRRL = 12;
UCSRA = (1‹‹U2X);
UCSRB = ((1 ‹‹ RXCIE) | (1 ‹‹ RXEN) | (1 ‹‹ TXEN));
2.разрешаю прервания:
sei();
3.передача символа
void USART_Transmit(char data){
while(!(UCSRA & (1‹‹UDRE)));
UDR = data;
}
4.прерывание по приёму символа и сразу же его передача:
INTERRUPT(USART_RXC_vect) {
unsigned char data;
data = UDR;
USART_Transmit(data);
}
И на этом всё,отправлять отпаляет, а вот с приёмом что то глухо. Всё это делаю и компилю в AVR Studio.
В ЧЁМ ОШИБКА!?
|
|
|
|
18.12.2006, 18:45
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Помогите разобраться с приёмом символов через UART в ATm
Сообщение от cscbyflex
|
В ЧЁМ ОШИБКА!?
|
У вас кварц 1 МГц или работаете со встроенным RC? Во втором случае надо учитывать его нестабильность!
А так вроде все правильно.
|
|
|
|
18.12.2006, 18:52
|
|
Прохожий
Регистрация: 06.06.2005
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
кварц внешний 7.370000
не работает передача с компа на мегу
|
|
|
|
18.12.2006, 19:02
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от cscbyflex
|
кварц внешний 7.370000
не работает передача с компа на мегу
|
Если кварц 7.37, то для 9600 при U2X UBRR=95.
Смотрите в даташите.
|
|
|
|
18.12.2006, 19:11
|
|
Прохожий
Регистрация: 06.06.2005
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
у меня вопрос к приёму символов в Мегу. С передачей и инициализацией всё нормально работает.
|
|
|
|
18.12.2006, 19:22
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,381
Сказал спасибо: 1,962
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Сообщение от cscbyflex
|
у меня вопрос к приёму символов в Мегу. С передачей и инициализацией всё нормально работает.
|
Я на ваш вопрос и отвечаю. Скорость приемника и передатчика одинаковы. Следовательно, вы ошибаетесь, что все нормально с приемом на комп. С вашими данными (UBRR=12, U2X=1) скорость 9600 должна получаться при тактовой = 1 МГц.
Ну загляните же в даташит на страницу 156!
Еще рискну предположить - что кварц у вас "для виду", то есть припаян, а фузы не выставлены. МК работает на 1 МГц встроенном. Комп принимает - ну, может, у компа меньшая чувствительность к ошибке скорости, а может, у вас просто в приемной части ошибка в схеме.
Для COM порта допускается погрешность тактовой в 2.5%. Возможно, что при комнатной температуре и стабильном питании вы и добъетесь работоспособности. Но будет это весьма ненадежно.
|
|
|
|
18.12.2006, 19:44
|
|
Прохожий
Регистрация: 06.06.2005
Сообщений: 8
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Да даташит почитал, такт точно стоит 1.000.000Гц, выставить фузе биты не знаю как. Но скорость менять научился, а что делать с приёмом на мегу, так и не разобрался ни в чём...
|
|
|
|
18.12.2006, 21:07
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
попробуйте это - avr123.nm.ru/z5.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
19.12.2006, 08:13
|
|
Прописка
Регистрация: 17.03.2005
Сообщений: 122
Сказал спасибо: 1
Сказали Спасибо 33 раз(а) в 7 сообщении(ях)
|
Посмотри мой драйвер USART на http://pinokio3000.narod.ru/sourches/AVR_USART.htm
там мои подробные комментарии плюс константы для UBRR высчитываются препроцессором компилятора автоматом по заданной тактовой частоте и желаемой скорости передачи. Работа по прерываниям и с кольцевыми FIFO
|
|
|
|
19.12.2006, 09:15
|
|
Прописка
Регистрация: 11.06.2005
Сообщений: 266
Сказал спасибо: 9
Сказали Спасибо 13 раз(а) в 12 сообщении(ях)
|
Сообщение от cscbyflex
|
Да даташит почитал, такт точно стоит 1.000.000Гц, выставить фузе биты не знаю как. Но скорость менять научился, а что делать с приёмом на мегу, так и не разобрался ни в чём...
|
Уважаемый, а вы чем контроллер прошиваете???
Например я прошиваю PonyProg'ом, там есть команда Security and Configuration bits...Там все фьюзы и выставляю...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
AVR и UART через прерывание - help :)
|
code-by |
Микроконтроллеры, АЦП, память и т.д |
13 |
05.12.2008 12:31 |
Как реализовать на ATmeg8 или ATtiny датчик случайных чисел
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
20 |
03.05.2008 21:06 |
Проблемы с приемом данных через UART Tiny 2313
|
SoapMaker |
Микроконтроллеры, АЦП, память и т.д |
0 |
08.04.2008 10:35 |
Помогите разобраться с UART
|
masterpc |
Микроконтроллеры, АЦП, память и т.д |
10 |
13.02.2007 17:49 |
Помогите с UART !!!
|
alll |
Микроконтроллеры, АЦП, память и т.д |
0 |
15.11.2006 22:15 |
Часовой пояс GMT +4, время: 05:19.
|
|