Мне нужно придумать (или использовать готовое) устройство для управления другим устройством по RS232.
Подробнее:
Есть устройство, которое управляется по RS232.
Нужно каким-то образом (без компьютера) эти команды подавать. Это должен быть отдельный модуль управления.
Команд всего 5 - 01, 02, 03, EA, EF. Соответственно, будет 5 кнопочек для управления. Каждая - на свою команду.
Основной мотив - устройство должно быть простое, дешевое, малогабаритное.
Еще, если это важно, уровни ком-порта должны быть TTL.
Подскажите, куда копать? Что искать?
Помогите с управлением по RS232, плиз!
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Помогите с управлением по RS232, плиз!
Копайте в сторону МК. Например attiny2313 - подходит с избытком. Есть UART - тот самый ком-порт с ТТЛ, куча выводов для кнопочек. Простой (вся схема - МК+кнопки), дешевый, малогабаритный (особенно если найти в соик-корпусе). Прога на ассемблере будет размером в пару окон редактора...
Re: Помогите с управлением по RS232, плиз!
а прога на C на полэкрана: 
Код: Выделить всё
#include <avr/io.h>
#include <util/delay.h>
void txbyte(uint8_t byte)
{
while((UCSRA & (1<<UDRE)) == 0);
UDR = byte;
}
void main(void)
{
PORTB = 0x1F;
UCSRB = 1 << TXEN;
UCSRC = (1<<UCSZ1) | (1<<UCSZ0);
UBRRL = 12; // 4800 at 1MHz
while(1)
{
if((PINB & 0x01) == 0) txbyte(0x01);
else if((PINB & 0x02) == 0) txbyte(0x02);
else if((PINB & 0x04) == 0) txbyte(0x03);
else if((PINB & 0x08) == 0) txbyte(0xEA);
else if((PINB & 0x10) == 0) txbyte(0xEF);
_delay_ms(400);
while((PINB & 0x1F) != 0x1F);
}
}
Последний раз редактировалось a_skr Чт окт 14, 2010 13:42:24, всего редактировалось 1 раз.
- Engineer_Keen
- Друг Кота
- Сообщения: 3868
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Помогите с управлением по RS232, плиз!
Я с размером немного погорячился
Кстати про антидребезг не стоит забывать, хотя бы софтовый (метка DELAY), иначе после нажатия на кнопку полезет целая пачка одного и того же кода.
Код: Выделить всё
.include "tn2313def.inc"
.cseg
.org 0
LDI R16,low(ramend)
OUT SPL,R16
LDI R16,0x1F
OUT PORTB,R16
LDI R16,0x00
OUT UBRRH,R16
LDI R16,0x06
OUT UBRRL,r16
LDI R16,(1<<TXEN)
OUT UCSRB,R16
LDI R16,(1<<USBS)|(3<<UCSZ0)
OUT UCSRC,R16
CLR R31
LOOP:
RCALL DELAY
IN R16,PINB
ANDI R16,0x1F
LDI R30,0x05
L0: ROR R16
BRCS L1
RCALL UART_TX
RJMP LOOP
L1: DEC R30
BRNE L0
RJMP LOOP
UART_TX:
ADIW ZH:ZL,0x30
ADIW ZH:ZL,0x30
LPM R16,Z
TX1: SBIS UCSRA,UDRE
RJMP TX1
OUT UDR,R16
RET
DELAY: LDI R17,0xC0
D0: LDI R16,0xFF
D1: DEC R16
BRNE D1
DEC R17
BRNE D0
RET
.org 0x30
.db 0x00,0xEF,0xEA,0x03,0x02,0x01
Re: Помогите с управлением по RS232, плиз!
anthony3d писал(а):Мне нужно придумать (или использовать готовое) устройство для управления другим устройством по RS232.
Во-первых, если уровни TTL, то это будет уже не RS232, а UART. Но это детали.
Почему без МК? Препод требует знания логики? Правильно требует, иначе спецы превратятся в сборщиков из конструктора Лего, к этоиу идет.
Схему рисовать мне лениво, схема будет простая : генератор с частотой, определяемой заданным baud-rate. сдвиговый регистр, шифратор и счетчик. По нажатию кнопки в сдвиговый регистр заносится параллельный код посылки, в счетчик - число бит, включая стартовый и стоповый - в зависимости от режима приемного устройства. По отпусканию кнопки генератор двигает в регистре код, декрементируя счетчик до его обнуления. И на выходе ( старший или младший разряд - зависит от выбранного направления сдвига) получаем последовательный код и ловим кайф.
Или взять готовый ВВ51. Но так на листе рисовать нечего будет
У меня студент попросил программку сделать простую, я ему сделал - уместилось на одной перфокарте ( еще были такие времена! ) - так он обреченно: "Ну и что мне преподу показывть? "
Перечитал исходное - там "без компьютера", про "без МК" ничего не сказано. Поэтому соглашусь с вышесказанными товарищами насчет tiny . Только на кнопки городить только ничего не надо, защита от дребезга легко делается программно.
Re: Помогите с управлением по RS232, плиз!
Кстати про антидребезг не стоит забывать, хотя бы софтовый (метка DELAY), иначе после нажатия на кнопку полезет целая пачка одного и того же кода.
Уговорили. Подправил.
Re: Помогите с управлением по RS232, плиз!
Супер!
Думаю, так и сделаю.
Устройство это будет называться "Аудио-экскурсовод". Будет стоять в музее в Крыму.
Я нашел в сети платочку, которая воспроизводит MP3 с флешки, и управляется по RS232 TTL.
Нужно всего 5 команд. [Старт трех вариантов озвучки], [пауза-продолжить] и [полный стоп].
Думаю, так и сделаю.
Устройство это будет называться "Аудио-экскурсовод". Будет стоять в музее в Крыму.
Я нашел в сети платочку, которая воспроизводит MP3 с флешки, и управляется по RS232 TTL.
Нужно всего 5 команд. [Старт трех вариантов озвучки], [пауза-продолжить] и [полный стоп].
Re: Помогите с управлением по RS232, плиз!
Не забудь скорость правильную выставить.