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

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

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

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

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

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


 
Опции темы
Непрочитано 04.06.2015, 00:30  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,558
Сказал спасибо: 182
Сказали Спасибо 3,155 раз(а) в 2,041 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

в зависимости от скорости включать надо чуть раньше и выключать чуть позже
чо там внутри у пика я хз.
а от ардуины я вообще блюю
Реклама:
индюк вне форума  
Непрочитано 04.06.2015, 01:14  
fsmoke
Прописка
 
Регистрация: 06.07.2010
Сообщений: 140
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fsmoke на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

Сообщение от индюк Посмотреть сообщение
а от ардуины я вообще блюю
Имхо слишком критично, я её на самом деле даже, никогда в руках не держал , проект попсовый, но для детей в качестве обучалки самое то - вот планирую сына в радиокружок отдавать - там как раз ардуинке учат.

По теме:
Получается, что дело не в пике - пересмотрел пару библиотек от разных микров(не пики) и везде задержки. И вот в ардуино тож задержка, хотя это авр. Может дело в микросхеме все же... такое ощущение, что микрухе надо время, чтобы это отправить, хотя были смещения на осцилографе - а их нет. Получается, что пик TXIF выставляет раньше чем надо, т.е. получается, что отправка не завершена, а пик уже ждет следующего байта и видимо внутри это нормально т.к. отправляемый байт находится в TSR, поэтому на последнем это проявляется.

Добавил:
Кажется дело все же в пике
TXIF becomes valid in the second instruction cycle following
the write execution. Polling TXIF immediately following
the TXREG write will return invalid results.

но добавил nop после записи - не помогло - я хз...
fsmoke вне форума  
Непрочитано 04.06.2015, 01:48  
Yurkin2014
Заблокирован
 
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
Yurkin2014 на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

Сообщение от fsmoke Посмотреть сообщение
Кто нибудь объясните мне теоретическую суть этой задержки
Дело в том, что в PIC есть два регистра для передачи байта. В первый реигстр TXREG Вы записываете байт для передачи. Процессор тут же передвигает этот байт во второй регистр TSR, который есть сдвиговый регистр и к этому второму регистру доступа у Вас нет. И этот самый сдвиговый регистр начинает выталкивать битики наружу методом сдвига. Согласно заданной скорости Baud Rate байт из регистра TSR через некоторое время вытолкнется наружу.
Так вот пока байт выталкивается, первый регистр TXREG пустой, и в него можно записывать уже второй байт для передачи. После выталкивания первого, процессор сам передвинет второй байт в сдвиговый регистр и начнёт передачу второго. И так далее: образуется непрерывная передача массива.
Флаг прерывания TXIF выставляется тогда, когда первый регистр TXREG стал пустым, сообщая программе, что можно записывать следующий байт для передачи. Но при этом текущий байт только-только начал выталкиваться, и ещё уйму времени будет выталкиваться.
Поэтому если переключать передача/приём по прерыванию TXIF, то и будет обрубаться последний байт.
Флаг встал, TXREG - пустой, но последний байт только начал свой сдвиг в TSR и еще весь не вытолкнулся!
Для проверки завершения передачи - опустошения сдвигового регистра TSR есть спец. битик TRMT, который устанавливается в 1 при опустошении уже сдвигового TSR регистра. Этот бит никаких прерываний не делает, его можно только в цикле проверять при передаче последнего байта. Как только TRMT встал в 1, значит последний байт вытолкнут, и можно переключать передачу на приём.

Последний раз редактировалось Yurkin2014; 04.06.2015 в 01:56.
Yurkin2014 вне форума  
Непрочитано 04.06.2015, 06:23  
Albert_V
Гражданин KAZUS.RU
 
Регистрация: 13.04.2012
Адрес: Королёв МО
Сообщений: 786
Сказал спасибо: 621
Сказали Спасибо 364 раз(а) в 200 сообщении(ях)
Albert_V на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

fsmoke, Может быть, вам так будет проще понять работу USART TX (из pdf)?
Нажмите на изображение для увеличения
Название: TX.jpg
Просмотров: 76
Размер:	374.6 Кб
ID:	80004
----
P.S.
Что касается времени задержки при переходе передача‹›приём:
Это не "магическое число". Дело в том, что при переключении драйверов RS485 передача‹›приём может "проскочить" импульс, который USART RX "поймёт" как START. Поэтому делают задержку, время которой просчитывается как время передачи 10-ти бит (START, 8-мь бит, STOP [если используется бит "чётность" - добавить время передачи одного бита]) умноженное на 1.5
Если нужно работать по RS485 вообще без задержек - надо переходить на 4-ёх проводный RS485.

Последний раз редактировалось Albert_V; 04.06.2015 в 09:18.
Albert_V вне форума  
Непрочитано 04.06.2015, 08:25  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

И для нужд симуляции рисовать кварцы и конденсаторы совсем-совсем не нужно!
NewWriter вне форума  
Непрочитано 04.06.2015, 09:44  
fsmoke
Прописка
 
Регистрация: 06.07.2010
Сообщений: 140
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fsmoke на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

Сообщение от Yurkin2014 Посмотреть сообщение
первый регистр TXREG пустой, и в него можно записывать уже второй байт для передачи
Спасибо кэп - я это уже написал в 32 посте!

Сообщение от Yurkin2014 Посмотреть сообщение
Как только TRMT встал в 1, значит последний байт вытолкнут, и можно переключать передачу на приём.
TRMT - точно! про этот бит я забыл - ща попробую

Сообщение от NewWriter Посмотреть сообщение
И для нужд симуляции рисовать кварцы и конденсаторы совсем-совсем не нужно!
я в курсе как бы... но на схеме рисую всё, даже не эмулируемые куски - люблю, понимаешь, целостность
fsmoke вне форума  
Непрочитано 04.06.2015, 11:57  
fsmoke
Прописка
 
Регистрация: 06.07.2010
Сообщений: 140
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fsmoke на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

вставил while (!TRMT); - один фиг режет последние биты

Добавил:
А видимо у меня косяк был - сейчас с TRMT все заработало.

Последний раз редактировалось fsmoke; 04.06.2015 в 13:08.
fsmoke вне форума  
Непрочитано 07.06.2015, 00:13  
fsmoke
Прописка
 
Регистрация: 06.07.2010
Сообщений: 140
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
fsmoke на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

Опять проблема. переписал все на прерывания - вернее прерывания только на чтение.

Наблюдается глюк в протеусе - боролся с ним целый день - не могу побороть.

Алгоритм такой:
1)Включены GIE = 1; PEIE = 1; RCIE = 1;
2) написана ф-ция прерывания - собственно как обычно
Код:
void interrupt serial()
{
    if ((RCIF) && (RCIE))
    {
    ... код
    }
}
3) жду просто так, для отладки 3 секунды - хотя могу не ждать разницы никакой
4) включаю передачу - т.е. ногу подключенную к DE RE ставлю в 1
5) передаю 6 байт - CREN и TXEN добавил для надежности т.к. уже не знаю, что сделать

Код:
void send_array_485(uint8_t const * st, uint8_t len)
{
    CREN = 0;
    TXEN = 1;
    XCAT(R, RS485_DIR_SW) = 1;
    while (len--)
        send_byte_485_int(*st++);
    while (!TXIF);
    while (!TRMT);
    XCAT(R, RS485_DIR_SW) = 0;
    TXEN = 0;
    CREN = 1;
}
6) жду - специально жду для отладки целую секунду - до этого не ждал - но разницы никакой
7) Выключаю передатчик - DE RE ставлю в 0
И вот тут происходит херня - по RX с 487 микросхемы в протеусе проскакивает импульс - нет это не бит - это просто какой-то мгновенный импульс - естественно срабатывает прерывание приемника - и все летит к чертям

Самое странное, что больше этого не происходит - у меня это все в цикле - дальше ещё раз отправляю - никаких импульсов нет!!

Т.е. это только при первой отправке - вкратце:
-включаем передатчик
-передаем
-выключаем передатчик
-хлоп, видим импульс на приемнике - получаем сработку приемника - жопа
-включаем посылаем выключаем передатчик - больше не происходит

Что это за фигня?
fsmoke вне форума  
Непрочитано 07.06.2015, 00:29  
индюк
Гуру портала
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,558
Сказал спасибо: 182
Сказали Спасибо 3,155 раз(а) в 2,041 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

брось ты эту виртуальщину!!!!!!
чо за мода пошла блин......... одну глючную программу пишут внутри другой глючной
индюк вне форума  
Сказали "Спасибо" индюк
krug_vv (26.09.2015)
Непрочитано 07.06.2015, 00:45  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,565
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Микросхемы и инфа по 485 интерфейсу

Сообщение от fsmoke Посмотреть сообщение
проглатывается последний символ и стоповый бит
Последний символ - это что, имеется в виду последний байт? А тогда вопрос - сколько всего байт было в посылаемом пакете?
Попробуйте добавить количество байт. Чтобы отловить причину. Можно будет узнать - или проглатывается именно последний байт, независимо от количества, или проглатывается как раз тот по счету, который сейчас последний.

Результат этого эксперимента облегчит продвижение к разгадке.
Alex9797 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных по линиям питания 12 В ТалалайАВ Автоматика и аппаратура связи 40 20.05.2016 12:01
Книги dosikus Делимся опытом 11242 29.12.2015 23:45
Где можно достать (найти или купить) datasheet на микросхемы, которые не получается найти в Интернете Дмитрий743 Информация по радиокомпонентам 1 15.04.2014 10:55
Увеличение выходной мощности микросхемы ICL7660CPAZ Андрей К Источники питания и свет 20 01.03.2011 10:44


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


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