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

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

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

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

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

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

AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR...

 
Опции темы
Непрочитано 11.09.2019, 10:39  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 7,077
Сказал спасибо: 95
Сказали Спасибо 2,061 раз(а) в 1,268 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от akegor Посмотреть сообщение
Переписывание байта из регистра данных в регистр передачи не говорит о завершении передачи
угу. в этом и есть ошибка начинающих
Реклама:
__________________
ОГМ/ПОГМ
индюк вне форума  
Непрочитано 11.09.2019, 12:03  
jump
Почётный гражданин KAZUS.RU
 
Регистрация: 20.06.2006
Адрес: Украина, Запорожье
Сообщений: 7,285
Сказал спасибо: 0
Сказали Спасибо 3,948 раз(а) в 2,049 сообщении(ях)
jump на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от индюк Посмотреть сообщение
я тогда перешел на lpc17xx lpc13xx
ну, наверно, несколько позжее
In October 2008, NXP announced the LPC1700 series In May 2009, NXP announced the LPC1300 seriesда до нас дошли через год, примерно + освоение
Сообщение от индюк Посмотреть сообщение
да хоть все дам
так шо - челюсти на стол! живо! живо, я сказал!
jump вне форума  
Сказали "Спасибо" jump
ForcePoint (11.09.2019)
Непрочитано 11.09.2019, 14:05  
bdn62
Частый гость
 
Регистрация: 19.05.2010
Сообщений: 18
Сказал спасибо: 63
Сказали Спасибо 8 раз(а) в 2 сообщении(ях)
bdn62 на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Спасибо всем откликнувшимся!
Но контроль последнего отправленного бита выполняется в строке
while(!( UCSR0A & (1 << TXC0)));//
а переключение в режим приема выполняется после этой строки.
Что и обеспечивает штатную работу (осциллограмма 2).
Но именно иногда происходит зависание, иллюстрируемое осциллограммой 1, которая и вызывает у меня оторопь. Причем в этом зависании устройство сидит "вечно", до аппаратной инициализации МК.
А функция ModBus1k_init не может прервать выполнение функции RS485_U0_send, ибо обе не в прерывании, а в основном цикле.
Так что глюк пока не ясен.
Я надеялся, что кто-то сталкивался с чем то похожим, ибо хочется придумать "таблетку".
Перевод передачи ответа на прерывания я уже пробовал, но с ходу не получилось, мешал второй канал ModBus2k и собственная рукожопость…
Да и глюк в этом случае тоже может проявиться...
bdn62 вне форума  
Непрочитано 11.09.2019, 14:12  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 16,770
Сказал спасибо: 2,491
Сказали Спасибо 10,024 раз(а) в 5,107 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от bdn62 Посмотреть сообщение
Но контроль последнего отправленного бита выполняется в строке
while(!( UCSR0A & (1 << TXC0)));//
Попробуйте тут же проверять наличие/отсутствие байта в регистре данных.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
akegor вне форума  
Сказали "Спасибо" akegor
bdn62 (11.09.2019)
Непрочитано 11.09.2019, 15:05  
vit66work
Временная регистрация
 
Регистрация: 27.05.2009
Сообщений: 97
Сказал спасибо: 88
Сказали Спасибо 64 раз(а) в 26 сообщении(ях)
vit66work на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Не пробовали поставить небольшую задержку перед переключением на приём?
vit66work вне форума  
Непрочитано 11.09.2019, 15:36  
индюк
Почётный гражданин KAZUS.RU
 
Аватар для индюк
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 7,077
Сказал спасибо: 95
Сказали Спасибо 2,061 раз(а) в 1,268 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от jump Посмотреть сообщение
так шо - челюсти на стол! живо! живо, я сказал!
да на на....
я еще потом куплю

все равно последнее что я использовал из авр были 8535
Нажмите, чтобы открыть спойлер
__________________
ОГМ/ПОГМ
индюк вне форума  
Непрочитано 11.09.2019, 18:46  
bdn62
Частый гость
 
Регистрация: 19.05.2010
Сообщений: 18
Сказал спасибо: 63
Сказали Спасибо 8 раз(а) в 2 сообщении(ях)
bdn62 на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от akegor Посмотреть сообщение
Попробуйте тут же проверять наличие/отсутствие байта в регистре данных.
Вот такая проверка не работает:
while(!( UCSR0A & (1 << UDRE0)));
UCSR0A |= (1 << UDRE0);
while(!( UCSR0A & (1 << TXC0)));//
UCSR0A |= (1 << TXC0);//cleared
bdn62 вне форума  
Непрочитано 11.09.2019, 19:56  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,914
Сказал спасибо: 488
Сказали Спасибо 2,986 раз(а) в 1,405 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Господа программисты жгутъ.

PB4 падает, когда не передано еще 2 (прописью: два) байта. Фифо в атмеге вроде как не присуцтвует. Вывод - проблема точно не в том месте, которое определяет конец передачи последнего байта. Ибо проблема возникает еще до передачи предпоследнего. Когда до проверки, определяющей, не пора ли ронять ли PB4, еще целый байт слать.
AR_Favorit вне форума  
Сказали "Спасибо" AR_Favorit
bdn62 (11.09.2019)
Непрочитано 11.09.2019, 20:18  
akegor
Гуру портала
 
Аватар для akegor
 
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 16,770
Сказал спасибо: 2,491
Сказали Спасибо 10,024 раз(а) в 5,107 сообщении(ях)
akegor на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от bdn62 Посмотреть сообщение
UCSR0A |= (1 << UDRE0);
Это зачем? Бит сбрасывается аппаратно при записи байта в регистр данных.
Сообщение от bdn62 Посмотреть сообщение
Вот такая проверка не работает:
Что значит "не работает"? Что делает и что не делает?
Условием переключения с передачи на прием должно быть "последний бит ушел И передавать больше нечего".

Сообщение от AR_Favorit Посмотреть сообщение
проблема точно не в том месте
Насчет "точно" Вы погорячились. Лучше заменить на "может быть". Почему? Да просто потому, что при нечетком критерии определения конца посылки и переключении на прием может быть то же самое. Сначала четко отработать "хвост", а потом уже (по нужде) чесать репу дальше.

Конечно, наводит на размышления зависание. Обычно это происходит, если стек залазит в область переменных. Но тут уж надо разбираться посерьезней, чем "бегло глянуть"...
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.

Последний раз редактировалось akegor; 11.09.2019 в 20:30.
akegor вне форума  
Непрочитано 11.09.2019, 22:03  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,914
Сказал спасибо: 488
Сказали Спасибо 2,986 раз(а) в 1,405 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Странный баг управления драйвером RS-485

Сообщение от akegor Посмотреть сообщение
Насчет "точно" Вы погорячились. Лучше заменить на "может быть". Почему? Да просто потому, что при нечетком критерии определения конца посылки и переключении на прием может быть то же самое. Сначала четко отработать "хвост", а потом уже (по нужде) чесать репу дальше.
Я человек простой, вижу обрисованную проблему - про неё и говорю. Опускание PB4 за два байта до окончания посылки происходит не в приведенной процедуре отправки пакета, даже если бы определение окончания передачи было неправильным... Это же мега. Нет фифо, нет перестановки команд в конвейере. Из while не выйдет, пока не запихает в буфер последний байт - а PB4 падает раньше, перед предпоследним. Что там где-то ещё наворочено - надо смотреть, конечно...
AR_Favorit вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги (не радиотехнической тематики) Mike79 Делимся опытом 4243 08.07.2019 23:21
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27


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


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