реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> При запуске из отладчика программа работает, когда отключаешь и снова включаешь STM32 программа перестает работать
jcxz
сообщение Apr 7 2018, 18:33
Сообщение #31


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Arlleex @ Apr 7 2018, 17:53) *
Если в Вашем устройства (на макете) замкнуть SCL на SDA пинцетом,

А зачем их замыкать? Вы своё ПО пишете с таким расчётом, что кто-то вскроет корпус и замкнёт дорожки? biggrin.gif

Цитата(Arlleex @ Apr 7 2018, 17:53) *
ставят встречный вопрос - каким же образом можно узнать результат транзакции? Ведь после установки битов управления (тот же START-бит), нужно некоторое время, чтобы в регистре статуса этот бит был выставлен и сгенерировалось прерывание. Если, как было указано выше, бесконечно ожидать

Что значит "бесконечно"? Вы же сами пишете: "выставится в регистре бит статуса". Вот тогда ожидание и закончится.
И судя по битам статуса (насколько помню), там не может быть такой ситуации чтобы никакой бит не выставился (манипуляции с пинцетом конечно исключаем), а следовательно - бесконечного ожидания не может быть.

Цитата(Arlleex @ Apr 7 2018, 17:53) *
получится полная лажа при какой-либо помехе на I2C-шине.

"при какой-либо помехе" в регистре статуса появится "какой-либо бит" и сгенерится прерывание. laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 7 2018, 19:03
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Apr 7 2018, 21:33) *
А зачем их замыкать? Вы своё ПО пишете с таким расчётом, что кто-то вскроет корпус и замкнёт дорожки? biggrin.gif

Ага. В случае неприятности у изделия нет права продолжать работать как ни в чем не бывало - нужно нештатную ситуацию разрулить.

Не знаю как у кого, а у меня на I2C максимум дисплей висит. Поскольку скорости большие не нужны, а интерфейс синхроннее некуда -
делаешь тупой ногодрыг в районе mainloop'а и не паришься за прерывания, while(condition), таймауты и т.п.
После любых случайных пинцетов изделие рано или поздно прокашляется без лишних арбитров, журналов, алгоритмов сброса.

PS. Не пора ли часть сообщений вынести в отдельную ветку по I2C, ибо к данной теме I2C мало относится?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 7 2018, 19:23
Сообщение #33


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Apr 7 2018, 22:03) *
Ага. В случае неприятности у изделия нет права продолжать работать как ни в чем не бывало - нужно нештатную ситуацию разрулить.

Как же изделию разрулить такую ситуацию, когда некто влазит в него и начинает тыкать разными металлическими штуками куда ни попадя? biggrin.gif

Цитата(adnega @ Apr 7 2018, 22:03) *
PS. Не пора ли часть сообщений вынести в отдельную ветку по I2C, ибо к данной теме I2C мало относится?

Да ладно Вам - тут каждая первая вторая тема такая: пара постов по теме, а потом - кто в лес кто по дрова.... rolleyes.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 7 2018, 20:51
Сообщение #34


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Apr 7 2018, 22:23) *
Как же изделию разрулить такую ситуацию, когда некто влазит в него и начинает тыкать разными металлическими штуками куда ни попадя? biggrin.gif

В плане I2C я предлагаю ногодрыг - простейшее решение, которое не завесит шину в принципе.
Я бы не встревал, если бы лет 10 назад не столкнулся однократно с ситуацией ACK от слейва и START от мастера.
Долго ломал голову и убеждал себя, что это в нормальной жизни не повториться, но редчайшее событие, напрочь завешивающее обмен не давало покоя.
Кста, тогда это была микросхема памяти серии 24xx. С тех пор у меня настороженное отношение к I2C.

А обвешивать низкоскоростной обмен, полностью синхронный, дык, еще когда ты монопольный мастер всякими таймаутами по-моему много чести.
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Apr 8 2018, 07:21
Сообщение #35


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



USB cdc.
До меня не доходит из-за чего вылазит ошибка Error setting parameters from DCB при подключение к COM port tolkit ?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2018, 09:04
Сообщение #36


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Apr 7 2018, 23:51) *
Я бы не встревал, если бы лет 10 назад не столкнулся однократно с ситуацией ACK от слейва и START от мастера.
Долго ломал голову и убеждал себя, что это в нормальной жизни не повториться, но редчайшее событие, напрочь завешивающее обмен

Видимо это нанесло психологическую травму, которая не заживает уже 10 лет biggrin.gif
Шутка. sm.gif
Вас очень трудно понять, так как Вы не придерживаетесь стандартной терминологии I2C. О чём тут уже говорили.
Как именно может "завесить обмен" обычный СТАРТ или ACK - я думаю тут не только я, но никто не понял.... laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 8 2018, 10:28
Сообщение #37


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Apr 8 2018, 12:04) *
Как именно может "завесить обмен" обычный СТАРТ или ACK - я думаю тут не только я, но никто не понял.... laughing.gif

Если slave в ACK, а master хочет сгенерировать START, то как он это может сделать?
Как система оказалась в этом состоянии - совершенно другой вопрос (кто-то проворный тыкал пинцетом).
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2018, 10:51
Сообщение #38


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Apr 8 2018, 13:28) *
Если slave в ACK, а master хочет сгенерировать START, то как он это может сделать?

ACK или не-ACK - это состояние на шине i2c. Именно состояние шины, а не состояние линии SDA.
А состояния i2c определяются не только по состоянию линий SDA/SCL, а и по фазе работы мастера.
Т.е. - если мастер выдаёт СТАРТ, то на шине в принципе не может быть АСК, просто по определению.
Если при выполнении мастером СТАРТ на SDA держится "0", удерживаемый слэйвом, то это не АСК, это коллизия на шине, которая трактуется как одновременный доступ двух i2c-мастеров к шине. Для отслеживания этого есть соответствующий бит в регистре статуса i2c. И никакие ногодрыги или таймауты для обнаружения этой ситуации в F429 не нужны - всё нормально работает и обнаруживается. Надо внимательно читать доки. laughing.gif
А если уже ваше ПО трактует "0" на шине во время СТАРТ как АСК, то тут проблема только в Вашем ПО.
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 8 2018, 11:27
Сообщение #39


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Apr 8 2018, 13:51) *
Если при выполнении мастером СТАРТ на SDA держится "0", удерживаемый слэйвом, то это не АСК, это коллизия на шине, которая трактуется как одновременный доступ двух i2c-мастеров к шине. Для отслеживания этого есть соответствующий бит в регистре статуса i2c. И никакие ногодрыги или таймауты для обнаружения этой ситуации в F429 не нужны - всё нормально работает и обнаруживается. Надо внимательно читать доки. laughing.gif

И что мастер может сделать в случае такой "коллизии"?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Apr 8 2018, 12:47
Сообщение #40


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(adnega @ Apr 8 2018, 14:27) *
И что мастер может сделать в случае такой "коллизии"?

Если она вызвана помехой или внезапным перезапуском МК мастера (машина состояния I2C слэйва осталась в режиме вывода бита АСК или бита данных), то я ещё в сообщении https://electronix.ru/forum/index.php?showt...t&p=1555322 писал что я делаю. С поправкой: я выполняю 15 раз условие СТОП. СТАРТ не надо.
Такая операция на I2C при старте ПО у меня делается всегда, а не только при SDA=='0', ведь в слэйве машина состояний может из-за помехи оказаться в ошибочном состоянии вывода например очередного бита данных =='1' и вроде на SDA всё ок, но когда пойдут SCLK будет капец.
А если коллизия из-за наличия другого мастера на I2C, то тут поможет только паяльник. laughing.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 8 2018, 14:19
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(jcxz @ Apr 8 2018, 15:47) *
писал что я делаю.

Дык, вы и меня поймите: раз без ногодрыга I2C гарантированно работать не может, то в моем случае я вообще отказался от аппаратного I2C
и сделал все ногодрыгом.
Go to the top of the page
 
+Quote Post
Alex_Golubev
сообщение Apr 9 2018, 00:55
Сообщение #42


Местный
***

Группа: Участник
Сообщений: 280
Регистрация: 18-03-17
Пользователь №: 95 877



Ребята я очень рад что вы так активно обсуждаете I2C.
Но я прошу помочь с USB. У меня с ним проблема.

В кубе сделан проект USB CDC.

При запуске мк. и открытие порта программой COM port tolkit.

Вылетает ошибка Error setting parameters from DCB.
Go to the top of the page
 
+Quote Post
adnega
сообщение Apr 9 2018, 04:31
Сообщение #43


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Alex_Golubev @ Apr 9 2018, 03:55) *
Ребята я очень рад что вы так активно обсуждаете I2C.
Но я прошу помочь с USB. У меня с ним проблема.

В кубе сделан проект USB CDC.

При запуске мк. и открытие порта программой COM port tolkit.

Вылетает ошибка Error setting parameters from DCB.

В CDC передается пакет с настройками при открытии порта (bRequest == SET_LINE_CODING).
Он к вам приходит?

Или так.
Go to the top of the page
 
+Quote Post
Baser
сообщение Apr 9 2018, 09:12
Сообщение #44


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(Alex_Golubev @ Apr 9 2018, 03:55) *
При запуске мк. и открытие порта программой COM port tolkit.

Вылетает ошибка Error setting parameters from DCB.

Я такую ошибку видел только когда случайно установил скорость работы СОМ порта, которую не поддерживал сам СОМ порт. Нужно найти compt.ini в директории установки Тулкита и в ручную подправить скорость на правильную.

Цитата(jcxz @ Apr 8 2018, 12:04) *
Вас очень трудно понять, так как Вы не придерживаетесь стандартной терминологии I2C. О чём тут уже говорили.
Как именно может "завесить обмен" обычный СТАРТ или ACK - я думаю тут не только я, но никто не понял.... laughing.gif

А я прекрасно понимаю laughing.gif потому что на разных МК модули I2C настолько разные, и частенько, настолько кривые, что применять их просто не хочется. На старых ПИКах мастера I2C вообще не было, все в ручную. На АВР-ке я даже один раз сварганил мастера и слейва на прерываниях встроенного модуля, но ПО для этого выглядело настолько чудовищно нечитабельно, что никакого удовлетворения не доставило. На МСП430 были потуги применить аппаратный I2C на прерываниях, даже пару дней убил на это, пока не обнаружил, что они прое*** забыли сделать прерывание на одно состояние. Типа почти все на прерываниях, а вот тут нужно "поллингом" wacko.gif Плюнул, вернул ногодрыг, который по коду коротенький, компактный и понятный. Благо что I2C синхронная, её везде можно приостановить что на 10 мс, что на 1 сек.
На STM32 пока до I2C не добрался, но тоже предстоит...
Go to the top of the page
 
+Quote Post
rudy_b
сообщение Apr 9 2018, 10:26
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 888
Регистрация: 25-09-08
Из: Питер
Пользователь №: 40 458



Я уже писал, что на 207 автомат влипает в глючные состояния из которых без полного сброса он ни сам не выходит, ни прерываний по ошибке не выдает. Отсюда - необходимость окучивания таймаутами.

А по поводу пинцета - даже без него бывают глюки - например еще не подано питание на slave или обращение к нему произошло до того, как завершился его startup. Нормальный I2C должен дать ошибку и возможность привести автомат в нормальное состояние, а не впадать в клиническую смерть.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 05:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01499 секунд с 7
ELECTRONIX ©2004-2016