Помогите с управлением по RS232, плиз!

Обсуждаем цифровые устройства...
Ответить
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Вт май 05, 2009 00:44:06

Сообщение anthony3d »

Мне нужно придумать (или использовать готовое) устройство для управления другим устройством по RS232.

Подробнее:
Есть устройство, которое управляется по RS232.
Нужно каким-то образом (без компьютера) эти команды подавать. Это должен быть отдельный модуль управления.
Команд всего 5 - 01, 02, 03, EA, EF. Соответственно, будет 5 кнопочек для управления. Каждая - на свою команду.

Основной мотив - устройство должно быть простое, дешевое, малогабаритное.
Еще, если это важно, уровни ком-порта должны быть TTL.

Подскажите, куда копать? Что искать?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Копайте в сторону МК. Например attiny2313 - подходит с избытком. Есть UART - тот самый ком-порт с ТТЛ, куча выводов для кнопочек. Простой (вся схема - МК+кнопки), дешевый, малогабаритный (особенно если найти в соик-корпусе). Прога на ассемблере будет размером в пару окон редактора...
Реклама
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

а прога на 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 раз.
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Я с размером немного погорячился :))) Кстати про антидребезг не стоит забывать, хотя бы софтовый (метка 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


Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 6337
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

anthony3d писал(а):Мне нужно придумать (или использовать готовое) устройство для управления другим устройством по RS232.
Во-первых, если уровни TTL, то это будет уже не RS232, а UART. Но это детали.
Почему без МК? Препод требует знания логики? Правильно требует, иначе спецы превратятся в сборщиков из конструктора Лего, к этоиу идет.
Схему рисовать мне лениво, схема будет простая : генератор с частотой, определяемой заданным baud-rate. сдвиговый регистр, шифратор и счетчик. По нажатию кнопки в сдвиговый регистр заносится параллельный код посылки, в счетчик - число бит, включая стартовый и стоповый - в зависимости от режима приемного устройства. По отпусканию кнопки генератор двигает в регистре код, декрементируя счетчик до его обнуления. И на выходе ( старший или младший разряд - зависит от выбранного направления сдвига) получаем последовательный код и ловим кайф.

Или взять готовый ВВ51. Но так на листе рисовать нечего будет :-)

У меня студент попросил программку сделать простую, я ему сделал - уместилось на одной перфокарте ( еще были такие времена! ) - так он обреченно: "Ну и что мне преподу показывть? "

Перечитал исходное - там "без компьютера", про "без МК" ничего не сказано. Поэтому соглашусь с вышесказанными товарищами насчет tiny . Только на кнопки городить только ничего не надо, защита от дребезга легко делается программно.
Реклама
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Кстати про антидребезг не стоит забывать, хотя бы софтовый (метка DELAY), иначе после нажатия на кнопку полезет целая пачка одного и того же кода.
Уговорили. Подправил.
Реклама
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Вт май 05, 2009 00:44:06

Сообщение anthony3d »

Супер!
Думаю, так и сделаю.

Устройство это будет называться "Аудио-экскурсовод". Будет стоять в музее в Крыму.
Я нашел в сети платочку, которая воспроизводит MP3 с флешки, и управляется по RS232 TTL.
Нужно всего 5 команд. [Старт трех вариантов озвучки], [пауза-продолжить] и [полный стоп].
Вымогатель припоя
Сообщения: 630
Зарегистрирован: Пн июн 14, 2010 13:07:29
Откуда: Жуковский

Сообщение a_skr »

Не забудь скорость правильную выставить.
Ответить

Вернуться в «Цифровая техника»