USART+Proteus

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

USART+Proteus

Сообщение pokk »

Здравствуйте, не могли бы вы помочь. У меня такой случай пытаюсь сделать передачу по USART в протеусе. Поставил ATtiny2313 подключил его к порту (COMPIM), установил программу Free Virtual Serial Ports Emulator (которая виртуально соединяет порты и соединил 2рой и 5тый )(контроллер подключен к 2отму порту а терминал ко 5ому) а теперь пытаюсь при помощи терминала принять или отправить байт.
Так вот передача от контроллер происходит а вот принимать байт он не в какую не хочет :(

На счёт уровней протеус сам может преобразовать ? раз как-то передаёт

Код: Выделить всё

.include "tn2313def.inc"	; Присоединение файла описаний
.def	temp=r18
.def 	rab = r17		; Определение рабочего регистра

;------------------------- Начало программного кода

		.cseg 			; Выбор сегмента программного кода
		.org	0		; Установка текущего адреса на ноль

start:	rjmp	init	; Переход на начало программы
		reti			; Внешнее прерывание 0
		reti			; Внешнее прерывание 1
		reti			; Прерывание по захвату таймера T1
		reti			; Прерывание по совпадению T1
		reti			; Прерывание по переполнению T1
		reti			; Прерывание по переполнению T0
		rjmp uart_rcv	; Прерывание UART прием завершен
		reti			; Прерывание UART регистр данных пуст
		reti			; Прерывание UART передача завершена
		reti			; Прерывание по компаратору
		reti			; Прерывание по изменению на любом контакте
		reti			; Таймер/счетчик 1. Совпадение B 
		reti			; Таймер/счетчик 0. Совпадение B 
		reti			; Таймер/счетчик 0. Совпадение A 
		reti			; USI Стартовая готовность
		reti			; USI Переполнение
		reti			; EEPROM Готовность
		reti			; Переполнение охранного таймера
;-------------------------- 
init:		ldi		temp, ramend	; Выбор адреса вершины стека 
		out		SPL, temp	; Запись его в регистр стека
		



;-------------------------- Инициализация портов ВВ
		lDI		temp,0b11111111
		out		DDRB,temp	
	
		
		lDI		temp,0
		out		DDRD,temp	
		out		PORTD,temp	

		rcall uart_init		;инициализация  UART

;-------------------------- передача  символа 5
		ldi		r20,'5'
		rcall uart_snt

		sei					;разрешаем прерывание

;-------------------------- главный цикл
main: 

	
		Rjmp	main


;--------------------------
;подпрограммы
;--------------------------
uart_init:	

		LDI 	R16, $00
		OUT 	UBRRH,R16
		LDI 	R16, $33
		OUT 	UBRRL,R16
 		LDI 	R16,0x06		; скорость передачи 9600 при частоте 8Мгц
		OUT 	UCSRC, R16
		
		LDI 	R16,$00
		OUT 	UCSRA, R16
		LDI 	R16,(1<<RXEN)|(1<<TXEN)|(1<<RXCIE) ;RXCIE- разрешение прерывание по завершению приёма
		OUT 	UCSRB, R16
		
		RET


;-------------------------- приём по прерыванию
uart_rcv:
	
		IN	temp,UDR				; байт пришел - забираем.
		out	portb,temp				; выводим в порт B  
		RETI						; Выходим. Результат в rab

;-------------------------- передача		
uart_snt:
		
		SBIS 	UCSRA,UDRE		; Пропуск если нет флага готовности
		RJMP	uart_snt 		; ждем готовности - флага UDRE
		
		OUT	UDR, R20			; шлем байт
		
		RET
		
exit:		
		RJMP	exit
		

Изображение
Вложения
asm+shem.rar
(15.89 КБ) 437 скачиваний
Реклама
Аватара пользователя
s_black
Мучитель микросхем
Сообщения: 411
Зарегистрирован: Вс авг 10, 2008 19:35:49
Откуда: Евпатория
Контактная информация:

Re: USART+Proteus

Сообщение s_black »

Протеус в топку. Работайте сразу на железе, чтобы не было потом вопросов типа - а как же так, я в Протеусе всё отладил, а на контроллере не работает. В даташите есть пример программного кода и на Си и на ассемблере. В статье показано как их применить.
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: USART+Proteus

Сообщение Alkul »

pokk писал(а):Здравствуйте, не могли бы вы помочь. У меня такой случай пытаюсь сделать передачу по USART в протеусе.
Согласен с предыдущим оратором. В топку все эти симуляторы. На железе нужно отлаживать.
pokk писал(а):Поставил ATtiny2313 подключил его к порту (COMPIM)
Э-м-м... А ничего, что у интерфейса RS-232 логические уровни, мягко говоря, немного отличаются от ТТЛ-овских?
Если Вам нужно связать контроллер с компьютером по COM-порту, возьмите микросхему MAX232, подключите её согласно даташиту и покажите схему Э3. Без этого лично я даже вникать в программу не буду. Ибо бессмысленно.
pokk писал(а):На счёт уровней протеус сам может преобразовать ? раз как-то передаёт
Понятия не имею, что может протеус, но скажите, какова цель вашей работы? В симуляторе отладить? Тогда я Вам не помощник, ибо у меня нет времени на ерунду. Потому что в реальном железе никто за Вас преобразовывать уровни не будет.
Если хотите сделать реальное устройство, начинать нужно со схемы Э3. Программирование - это уже второй этап.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: USART+Proteus

Сообщение pokk »

В даташите есть пример программного кода и на Си и на ассемблере
Я от туда и взял кусок
Понятия не имею, что может протеус, но скажите, какова цель вашей работы?
Разобраться
возьмите микросхему MAX232, подключите её согласно даташиту и покажите схему Э3
ок

меня просто интересовало почему передача шла а приём не хотел
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: USART+Proteus

Сообщение ploop »

Оффтоп поудалял.
Господа, холиварить - прошу в МЯУ. Тут только по делу.
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: USART+Proteus

Сообщение pokk »

Вот сделал схему по смотрите
VCC=+5в
GND=-5в
Изображение
Вложения
схема.PDF
(129.71 КБ) 346 скачиваний
Реклама
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: USART+Proteus

Сообщение Alkul »

pokk писал(а):Вот сделал схему по смотрите
Ну, схема верна.
Имейте лишь в виду, что указанное подключение к COM-порту справедливо лишь для разъема DB9. Для разъема DB25 выводы 2 и 3 нужно поменять местами.

Ну, и что Ваш симулятор говорит?
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: USART+Proteus

Сообщение pokk »

Ну, схема верна.
Ок спасибо значит сейчас буду разводить и травить

Ну, и что Ваш симулятор говорит?
Да нечего =) я в нём не пробовал
Аватара пользователя
Dmitry Dubrovenko
Поставщик валерьянки для Кота
Сообщения: 2349
Зарегистрирован: Вс янв 09, 2011 16:51:39
Откуда: Санкт-Ленинград
Контактная информация:

Re: USART+Proteus

Сообщение Dmitry Dubrovenko »

По работе Протеуса очень много материала на Казусе.

Вот, нашёл тут у себя урок по Компиму (надо запустить хтмл-файл).
Вложения
ComPim_Lesson.zip
(399.03 КБ) 489 скачиваний
ICQ нет, и, в ближайшее время, не будет.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: USART+Proteus

Сообщение Аlex »

Так вот передача от контроллер происходит а вот принимать байт он не в какую не хочет
А ничего, что Вы повесили 3 девайса параллельно ? Вам не могло прийти в голову, что Вы одним девайсом просто-напросто засадите другой ?
Хорошо, что Вы в протеусе это собрали, иначе дыма бы не избежать :facepalm:
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: USART+Proteus

Сообщение pokk »

А ничего, что Вы повесили 3 девайса параллельно ? Вам не могло прийти в голову, что Вы одним девайсом просто-напросто засадите другой ?
Хорошо, что Вы в протеусе это собрали, иначе дыма бы не избежать :facepalm:
Оказалось всё куда проще соединил порт и контроллер я не так :facepalm:
Зато программа отлично работает :))
Вот, нашёл тут у себя урок по Компиму (надо запустить хтмл-файл).
спасибо за статью =) это я там это и увидел =))

хм странно соединял как тут крест накрест ,а оказалось надо было напрямую :dont_know:
http://easyelectronics.ru/avr-uchebnyj- ... -uart.html
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: USART+Proteus

Сообщение ploop »

Это как напрямую? TX-TX, RX-RX? :shock:
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

Re: USART+Proteus

Сообщение pokk »

Это как напрямую? TX-TX, RX-RX? :shock:
Ага именно так =)

может крестообразное соединение для контролёров идёт а так как я соединяю порт (да ещё при помощи виртуальной перемычки) там чего-нибуть переворачивается

в железе делать крест накрест ?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: USART+Proteus

Сообщение ploop »

в железе делать крест накрест ?
Разумеется, иначе попалишь выходы.
Аватара пользователя
igor-x
Мудрый кот
Сообщения: 1817
Зарегистрирован: Пн ноя 29, 2010 15:58:43

Re: USART+Proteus

Сообщение igor-x »

ploop писал(а): Разумеется, иначе попалишь выходы.
на самом деле MAX232 и аналогичные ей . очень стойкие к неправильному(выход на выход) включению. проверено неоднократно.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: USART+Proteus

Сообщение ploop »

Это хорошо, от случайностей никто не защищён, но всё равно не стоит не подумав подключать.
Alkul
Держит паяльник хвостом
Сообщения: 933
Зарегистрирован: Ср апр 13, 2011 11:09:20
Откуда: Екатеринбург

Re: USART+Proteus

Сообщение Alkul »

pokk писал(а):может крестообразное соединение для контролёров идёт а так как я соединяю порт (да ещё при помощи виртуальной перемычки) там чего-нибуть переворачивается
не контролёров, а контрОллеров (ударение на "о" и пишется с двумя "л")
Что касается соединений - это общее правило. Если Вам нужно, например, усилить сигнал с магнитофона, то Вы ведь с ВЫХОДА магнитофона подаете сигнал на ВХОД усилителя, так? Аналогично, если Вы соединяете два устройства для обмена данными между ними (а логически порт и сопрягаемый с ним контроллер являются разными устройствами), то выход (TxD_А) устройства А соединяется со входом (RxD_Б) устройства Б, а вход (RxD_A) устройства А соединяется с выходом (TxD_Б) устройства Б.
pokk писал(а):в железе делать крест накрест ?
Вы же схему Э3 нарисовали - там все верно.
У COM-порта (на разъеме DB9) конт.2 - RxD, конт.3 - TxD, конт.5 - сигнальная "земля". В Вашей схеме нарисовано именно для разъема DB9, по ней и делайте.
(на всякий случай скажу, что для COM-порта с разъемом DB25 распиновка такая: конт.2 - TxD, конт.3 - RxD, конт.7 - сигнальная "земля".
Famcom
Родился
Сообщения: 1
Зарегистрирован: Вт июн 05, 2012 12:53:41

Re: USART+Proteus

Сообщение Famcom »

Я тоже сначала мучился, но потом с помощью OSCILLOSCOPE проверил сигнал с VIRTUAL TERMINAL и микроконтроллера по отдельности. Оказывается ширина посылки сигнала отличается хотя все делал по формуле UBRR=4000000/(16*110)-1=2272
BAUD VIRTUAL TERMINAL=110. Но потом єксперементально с помощью OSCILLOSCOPE увеличил UBRR до 2335 и все заработало. Наверное єто очередной глюк Протеуса.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»