Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 25.02.2014, 23:53  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Сообщение от индюк Посмотреть сообщение
вот этот ваил где сидит? в основном теле?
Сидит в прерывании ДМА по окончании передачи блока данных.
Другими словами, когда ДМА задвинул последний байт в передатчик - происходит прерывание ДМА. В этом прерывании этот самый "ваил" ждёт, пока задвинутый байт не вытолкнется из регистра передатчика наружу. После этого RS485 переключается из режима передачи на приём.
Таким образом время ожидания флага равно времени передачи 1 байта, при скорости 115200 это время составляет примерно 100 мкс.
Реклама:
Yurkin2014 вне форума  
Непрочитано 26.02.2014, 09:26  
индюк
Заблокирован
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Сообщение от Yurkin2014 Посмотреть сообщение
Сидит в прерывании ДМА по окончании передачи блока данных.
Другими словами, когда ДМА задвинул последний байт в передатчик - происходит прерывание ДМА. В этом прерывании этот самый "ваил" ждёт, пока задвинутый байт не вытолкнется из регистра передатчика наружу. После этого RS485 переключается из режима передачи на приём.
Таким образом время ожидания флага равно времени передачи 1 байта, при скорости 115200 это время составляет примерно 100 мкс.
не мой случай
у меня передается 4-6 байт на скорости 9600, дма не используется.
ком порт всего лишь управляет включением кучи релюшек на ведомой стороне.
оно конечно и тут можно тупо проц подвесить на несколько микросекунд но это не кузяво. малоли я потом еще чонить туда захочу приделать
индюк вне форума  
Непрочитано 26.02.2014, 10:49  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

А что не дает исаользовать прерывание UARTa по ТС ?
TC - и сделан для того, что б знать когда ТХ освободил линию.
Миниатюры:
Нажмите на изображение для увеличения
Название: RS485.JPG
Просмотров: 51
Размер:	74.5 Кб
ID:	59720  
Boba_spb вне форума  
Непрочитано 26.02.2014, 13:41  
ATMExpert
Частый гость
 
Регистрация: 13.10.2008
Сообщений: 23
Сказал спасибо: 0
Сказали Спасибо 2 раз(а) в 1 сообщении
ATMExpert на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

У меня камень в проекте stm32f103RB, реализован протокол Pelco-D, но сути не меняет. В настройках УАРТа разрешаем прерывание по TC и далее в прерывании: остановка ДМА, перезагрузка регистра кол-ва передаваемых байт, перевод трансивера на прием и сброс флага TC. Очень коротко и просто.
Код:
void USART2_IRQHandler(void){	
	u32 Data, State;
	State=USART2-›SR; Data=USART2-›DR; // Чтение SR и DR сбрасывает флаги.
if (State & USART_SR_TC)	//Если прерывание по завершению передачи.
	{
		RECEIVE; // переход на прием
		DATA_OFF; //выключить светодиод-индикатор обмена
		DMA_Cmd(DMA1_Channel7, DISABLE);
		DMA1_Channel7-›CNDTR = 7; // число байт для передачи
		USART2-›SR&=~USART_SR_TC; // Очистить флаг "Передача завершена".
	}
}
ATMExpert вне форума  
Непрочитано 26.02.2014, 13:50  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Сообщение от Boba_spb Посмотреть сообщение
А что не дает исаользовать прерывание UARTa по ТС ?
Можно и так, конечно.
Но, как я понимаю, тут наблюдается некий перфекционизм. Вдруг ДМА замешкается и не успеет задвинуть в передатчик очередной байт. Тогда возникнет преждевременное прерывание UART TC, и флаг DE сбросится раньше времени.
Нет уж. Сделаем всё совершенно идеально. Сначала запретим UART TC прерывание. Когда ДМА отрапортует об окончании передачи, вот тогда разрешим UART TC и в этом прерывании уже будем сбрасывать флаг DE.
Yurkin2014 вне форума  
Непрочитано 26.02.2014, 15:47  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

DMA - засылает байт в регистр. Из этого регистра данные пересылаются внутри UARTа в регистр сдвига и выставляется флаг готовности TXE, по которому DMA, засылает в оркестр следующий байт.

А теперь вопрос !!! На сколько надо тормознуть DMA что б появился ложный ТС? Правильно на передачу в линию двух байт !!!

И что это будет так тормозить DMA ? А главное каким образом?
Boba_spb вне форума  
Непрочитано 26.02.2014, 18:43  
индюк
Заблокирован
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Сообщение от Boba_spb Посмотреть сообщение
А что не дает исаользовать прерывание UARTa по ТС ?
TC - и сделан для того, что б знать когда ТХ освободил линию.
да. можно
просто в лпц13 было ваще без доп софта все реализовано - удобно
индюк вне форума  
Непрочитано 26.02.2014, 22:55  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Ну дык у STM32F0 то ж пин есть, да еще и можно аппартный сдвиг устроить для DE по переднему фронту и заднему
Boba_spb вне форума  
Непрочитано 26.02.2014, 23:03  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Вопрос по 485 и стм32ф100

Ради прикола можно ТХ посадить на DE, а вход передатчика посадить на землю. И будет работать )))
Boba_spb вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересный вопрос - два усилителя к одной нагрузке eCAH Аудиотехника 45 14.10.2010 01:23
Вопрос по блоку питания... El-Shang Источники питания и свет 13 19.11.2009 17:35
вопрос из детства spilberg Отвлекитесь, эмбеддеры! 9 03.07.2009 14:01
Вопрос по инвертору для LСD voha2006 Ремонт оргтехники 15 25.04.2009 09:57


Часовой пояс GMT +4, время: 23:00.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot