Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.07.2012, 12:42
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
UART + Atmega 8
Хочу научиться связывать МК с ПК по ком-порту. Инфа передаваемая в ПК я принимаю, а вот когда с ПК передаю в МК то невижу... Подскажите какой командой это делается. Влажу проект ниже. Погладите. Пишу в кодевижн 2.05. еще хочеться отображать на ЖК 1601 принятые данные... Пните куда надо, подскажите
|
|
|
Сказали "Спасибо" miwutka
|
|
|
06.07.2012, 17:10
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: uart + aTMEGA 8
Никакой командой не делается, сконфигурируй УАРТ и сиди жди прерывания от приемника
|
|
|
|
06.07.2012, 17:13
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: uart + aTMEGA 8
Сообщение от miwutka
|
Хочу научиться связывать МК с ПК по ком-порту. Инфа передаваемая в ПК я принимаю, а вот когда с ПК передаю в МК то невижу... Подскажите какой командой это делается. Влажу проект ниже. Погладите. Пишу в кодевижн 2.05. еще хочеться отображать на ЖК 1601 принятые данные... Пните куда надо, подскажите
|
Код:
|
while (1) {
unsigned char rx_byte;
if (UCSRA&(1‹‹RXC)) {
rx_byte=UDR;
}
} |
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
06.07.2012, 17:26
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: uart + aTMEGA 8
rx_byte - сюда будет записываться 1 символ принятый на RX??
|
|
|
Сказали "Спасибо" miwutka
|
|
|
06.07.2012, 17:44
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: uart + aTMEGA 8
Сообщение от miwutka
|
rx_byte - сюда будет записываться 1 символ принятый на RX??
|
Да, туда и запишется.
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
06.07.2012, 20:25
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: uart + aTMEGA 8
у меня такая хрень в тексте на прием. Как нею пользоаться?
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
{
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
{
rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0)
{
#else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
#endif
rx_buffer_overflow=1;
}
}
}
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
{
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
#if RX_BUFFER_SIZE != 256
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#endif
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
Подскажите как исправить этот код чтоб принимать данные? Или просто добавить те две строки в основном цикле и все??
Последний раз редактировалось miwutka; 06.07.2012 в 20:34.
|
|
|
Сказали "Спасибо" miwutka
|
|
|
07.07.2012, 00:31
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: uart + aTMEGA 8
Сообщение от miwutka
|
у меня такая хрень в тексте на прием. Как нею пользоаться?
Подскажите как исправить этот код чтоб принимать данные? Или просто добавить те две строки в основном цикле и все??
|
Не нравится - напишите свою функцию приёма - это несложно.
Сообщение от miwutka
|
Подскажите как исправить этот код чтоб принимать данные?
|
А прерывания по приёму разрешены?
Вызывать функцию get_char там где хотите читать данные.
Код:
|
if (rx_counter) {
unsigned char rx_byte=getchar();
} |
Сообщение от miwutka
|
Или просто добавить те две строки в основном цикле и все??
|
Последний раз редактировалось _Артём_; 07.07.2012 в 00:35.
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
07.07.2012, 00:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: uart + aTMEGA 8
разрешены. В архиве всё есть с исходником
|
|
|
Сказали "Спасибо" miwutka
|
|
|
07.07.2012, 14:37
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: UART + Atmega 8
не могу понять чуток код который сгенерид кодевижн. Может кто чуть подробнее объяснить мне его? ....
|
|
|
Сказали "Спасибо" miwutka
|
|
|
07.07.2012, 18:40
|
|
Гражданин KAZUS.RU
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
|
Re: UART + Atmega 8
Сообщение от miwutka
|
не могу понять чуток код который сгенерид кодевижн. Может кто чуть подробнее объяснить мне его? ....
|
А что там непонятного?
Код конечно мутный, но всё просто:
usart_rx_isr - прерывание по приёму байта
usart_tx_isr - прерывание по окончанию передачи байта (что кстати криво, но работоспособно)
putchar - посылка байта в USART
getchar - чтение байта из USART - причём программа зависнет в этой функции пока не прочитает байт, что тоже несколько примитивно
|
|
|
Сказали "Спасибо" _Артём_
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
ATMEGA простой UART (RS232) без max232
|
EXIS |
Микроконтроллеры, АЦП, память и т.д |
39 |
09.12.2010 18:51 |
Вопрос по формату кадра UART в ATmega-х
|
Don_Ambrosio |
Микроконтроллеры, АЦП, память и т.д |
6 |
19.03.2008 23:56 |
UART и WinAVR
|
SpiderHall |
Микроконтроллеры, АЦП, память и т.д |
1 |
30.10.2006 20:53 |
UART
|
slawa |
Микроконтроллеры, АЦП, память и т.д |
4 |
19.01.2006 12:44 |
UART
|
xaoc |
Микроконтроллеры, АЦП, память и т.д |
13 |
01.07.2005 09:31 |
Часовой пояс GMT +4, время: 09:51.
|
|