Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
03.10.2014, 23:08
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
uart и rs232
http://www.getchip.net/posts/071-pre...pultov-v-uart/
это через max 232 прицеплю на ком порт, она в теримнал что нибудь выдаст?
просто для проверки хочу это сделать
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
03.10.2014, 23:52
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,014
Сказал спасибо: 2,557
Сказали Спасибо 11,878 раз(а) в 5,956 сообщении(ях)
|
Re: uart и rs232
Да. .
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
04.10.2014, 23:36
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: uart и rs232
всё получилось
в терминале выводятся 16-ричные коды кнопок
а как хоть примерно организовать их обработку AVR контроллером ?
хотя бы на дисплей вывести
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
05.10.2014, 00:32
|
|
Заблокирован
Регистрация: 10.09.2014
Сообщений: 156
Сказал спасибо: 17
Сказали Спасибо 30 раз(а) в 25 сообщении(ях)
|
Re: uart и rs232
А зачем Вам протез ?
тини13 обрабатывает код ик а потом второй мк уже работает исходя из этих данных ?
Не жирноватенько будет для ик ?
(впрочем никто не запрещает передавать код кнопки из UART-а первого мк в UART второго )
А вообще,прочтите протокол,вешайте TSOP на прерывание инт0 на ногу мк
в прерывании отключить прерывание,опознать преамбулу,опознать код,присвоить переменным принятый код,включить прерывание.
ps самый ходовой протокол NEC.
|
|
|
|
05.10.2014, 01:15
|
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,649
Сказал спасибо: 73
Сказали Спасибо 1,799 раз(а) в 651 сообщении(ях)
|
Re: uart и rs232
Сообщение от AVRkin
|
в терминале выводятся 16-ричные коды кнопок
а как хоть примерно организовать их обработку AVR контроллером ?
хотя бы на дисплей вывести
|
Вот здесь есть полезная программка: http://batonprog.ru/usb/usb_test_pc.rar
Выводит принятый с UART-а байт в десятичном виде.
|
|
|
|
05.10.2014, 08:05
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: uart и rs232
каин, так интереснее
да и пока что с протоколами ИК пультов заморачиваться не хочу, но за книжку спасибо, почитаю
а в описании устройства заявлено что оно почти все пульты видит
в итоге тестирования пульта двд получилась табличка
Код:
|
2A 28 D7
2A EA 15
2A 82 7D
2A 62 9D
2A 90 6F
2A B8 47
2A F8 07
2A B0 4F
2A 98 67
2A D8 27
2A 88 77
2A A8 57
2A E8 17
2A 48 B7
2A 9A 65
2A 10 EF
2A 0A F5
2A AA 55
2A 12 ED
2A 52 AD
2A 7A 85
2A 60 9F
2A A0 5F
2A C0 3F
2A E2 1D
2A E0 1F
2A 02 FD
2A 40 BF
2A 18 E7
2A 22 DD
2A F0 0F
2A 8A 75
2A 50 AF
2A 78 87
2A 70 8F
2A 58 A7
2A CA 35
2A 4A B5
2A 80 7F
2A A2 5D
2A D2 2D
2A 92 6D
2A 00 FF
2A B2 4D |
__________________
Самое главное умение - умение радоваться жизни.
Последний раз редактировалось AVRkin; 05.10.2014 в 08:13.
|
|
|
|
05.10.2014, 09:17
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: uart и rs232
ура, появились кракозябры на экранчике
Код:
|
#include ‹mega8.h›
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ‹lcd.h›
char lcd_buffer[32];
char uart_data[5];
int i=0,j=0;
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1‹‹FE)
#define PARITY_ERROR (1‹‹UPE)
#define DATA_OVERRUN (1‹‹OVR)
#define DATA_REGISTER_EMPTY (1‹‹UDRE)
#define RX_COMPLETE (1‹‹RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 32
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE‹256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// 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_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
{
rx_counter=0;
rx_buffer_overflow=1;
};
};
uart_data[i]=data;
i++;
if(i›4)
{
i=0;
}
}
#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_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#asm("cli")
--rx_counter;
#asm("sei")
return data;
}
#pragma used-
#endif
// Standard Input/Output functions
#include ‹stdio.h›
// Declare your global variables here
void main(void)
{
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: Off
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x90;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;
// LCD module initialization
lcd_init(16);
// Global enable interrupts
#asm("sei")
while (1)
{
while(j‹5)
{
lcd_gotoxy(j,0);
sprintf(lcd_buffer,"%c",uart_data[j]);
lcd_puts(lcd_buffer);
j++;
}
j=0;
};
} |
каждой кнопке соответствуют свои кракозябры
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
05.10.2014, 09:43
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: uart и rs232
И что ты с этой табличкой делать то будешь?
Сообщение от AVRkin
|
а как хоть примерно организовать их обработку AVR контроллером ?
|
Первый байт сообщения в получившейся таблице одинаковый для всех сообщений. Это будет первая проверка. Если принятый байт равен 2A, то разрешается проверка дальше. Если нет, то выход - все коды не от того пульта.
Дальше простая проверка последовательно по таблице на совпадение принятого кода и выполнение действия по таблице действий.
Если нужно вывести на символьный ЖК дисплей принимаемые коды в hex-виде, то вначале надо их преобразовать в последовательность ASCII-символов. Для этого каждый байт разделяем на полубайты, добавляем к каждому полубайту число 0х30 (если выводится цифра) или 0х40 (если выводится буква) и пересылаем в дисплей. Получается полный байт в ASCII коде.
Проверить, цифра или буква, просто - если значение полубайта меньше 0хA, то это цифра.
Последний раз редактировалось NewWriter; 05.10.2014 в 09:46.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
05.10.2014, 10:06
|
|
Прописка
Регистрация: 07.09.2014
Сообщений: 136
Сказал спасибо: 18
Сказали Спасибо 2 раз(а) в 2 сообщении(ях)
|
Re: uart и rs232
интересная особенность
код любого пульта начинается на 2A ** ** **
вероятно 2A означает начало посылки
__________________
Самое главное умение - умение радоваться жизни.
|
|
|
|
05.10.2014, 10:30
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: uart и rs232
Первый байт - константа (а должно быть два байта адреса), второй байт - команда, третий байт, та же команда, но в инверсном виде. Используется для проверки правильности приёма команды. Нужно инвертировать третий байт и сравнить его со вторым. Если равны, то ошибок приема нет.
На выходе МК - видимо упрощение протокола Samsung или Nec - выкинут повтор адреса.
А если почитать по той ссылке, которую AVRkin дал в самом начале темы, то становится ВСЁ понятно.
Первый байт со значением 2А - это ASCII-код символа *
Никакого отношения к реальным кодам с пульта это не имеет. Потому и подходит к любым пультам. Байты адресов просто отбрасываются
Правда, автор той статьи сам не понял, почему у него код нажатой кнопки в виде двух байтов.
Последний раз редактировалось NewWriter; 05.10.2014 в 11:34.
|
|
|
Сказали "Спасибо" NewWriter
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
AVR, UART и режим IDLE
|
anpaza |
Микроконтроллеры, АЦП, память и т.д |
14 |
25.07.2011 03:04 |
ATMEGA простой UART (RS232) без max232
|
EXIS |
Микроконтроллеры, АЦП, память и т.д |
39 |
09.12.2010 18:51 |
Нужно 2 UART на мк , как быть?
|
Zemlyanov |
Микроконтроллеры, АЦП, память и т.д |
77 |
04.05.2010 19:26 |
Подключение передатчика CAN и RS232 к одному UART
|
Haster |
Микроконтроллеры, АЦП, память и т.д |
9 |
16.04.2009 21:24 |
Помогите разобраться с UART
|
masterpc |
Микроконтроллеры, АЦП, память и т.д |
10 |
13.02.2007 17:49 |
Часовой пояс GMT +4, время: 14:19.
|
|