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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Причины зависания и их поиск
fmdost
сообщение Dec 3 2007, 17:22
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(sensor_ua @ Dec 3 2007, 19:38) *
Попробуй перед
reset_tm (); /* r/w twi */
выдать
twi_stop();


В код не вникал.

Подавать команду стоп нельзя!!! Сбрасывают микросхемы висящие на i2c только многократной подачей команды старт.

ЗЫ. Очень хорошее описание работы с шиной i2c, в пдф.

Сообщение отредактировал Т.Достоевский - Dec 3 2007, 17:34
Прикрепленные файлы
Прикрепленный файл  br24l16.pdf ( 390.92 килобайт ) Кол-во скачиваний: 106
 
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Dec 3 2007, 20:56
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(forever failure @ Dec 3 2007, 17:32) *
Вообще хотелось бы увидеть здесь советы по воспроизведению проблемы, потому что причины могут быть разными, и вовсе не такими как предполагаются.


Простите, но Вы не совсем правы. Именно питание вызывает сложные, трудновоспроизводимые и уникальные глюки. И к советам bodja74 надо отнестись со всей ответственностью. Я бы это сделал немедленно, правда предлагаю вам другой подход.

1. Поставить (на время проверки) отличный и мощный блок питания. Это необходимо сделать чтобы однозначно определится в чём проблема. В программной части или аппаратной.

2. По результатам испытаний проводить дальнейшее исследование.


И ещё один момент из моей практики. WDT необходимо использовать тогда, когда к программной части нет претензий. Никаких сбоев и висов. Так как WDT предназначена для выхода из виса по аппаратным проблемам, но не по программным хомутам. По этому, в случае программного виса, вам сначало надо
1. Отключить WDT.
2. Локализовать место или выявить причину виса.
3. Продумать организацию WDT (а не бездумно воткнуть сброс в каждый цикл)
4. Включить WDT.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Dec 3 2007, 20:58
Сообщение #18


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Подавать команду стоп нельзя!!!

Нельзя сразу после START (в приведенной Вами доке почему-то STOP непосредственно после START позволителен - Fig. 16). Но соглашусь, что в данном случае нельзя, потому как неизвестно что же было перед этим. Сброс логики шины согласно спецификации действительно делается подачей S и/или Sr. Но в спецификации шины примеров как на Fig. 14(a) и Fig. 14(cool.gif что-то не находится. Просветите, плз, а то чего-то не попадалось таких наворотов. Максимум чего приходилось испорльзовать - в описании сброса AT24.
1. Clock up to 9 cycles.
2. Look for SDA high in each cycle while SCL is high.
3. Create a start condition.


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 3 2007, 22:48
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 479
Регистрация: 8-05-07
Из: г. Ставрополь. Северный Кавказ. Россия
Пользователь №: 27 606



Цитата(sensor_ua @ Dec 3 2007, 23:58) *
...Просветите, плз, а то чего-то не попадалось таких наворотов. Максимум чего приходилось испорльзовать - в описании сброса AT24...

Не совсем понял вопроса, проясните.
ИМХО. Рис 14а наверное что-бы слейв гарантированно отпустил таки этот SDA, и что-бы не проверять линию SDA в мастере.
Некорректное начало/завершение обмена i2c системах ограничения доступа бывает очень часто. Сделал контроллер ключей с проверкой напряжения питания, оказалось что ВСЕ! кто ставил его на замки защёлки вернули с жалобами на сигнал просадки питания. (Просадка ниже 7 вольт дольше 250 милисекунд!!!!)

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

Включить светодиод
ини модуля 1
ВЫлючить светодиод
....
протестил, переставить на модуль 2 итд.


А ещё красивее WDT переставить на генерацию прерывания, и выводить к какой-нибудь порт, адрес возврата.
Наверняка есть цельный порт только на выход, и с него тестером можно считать.

Сообщение отредактировал Т.Достоевский - Dec 3 2007, 22:56
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Dec 4 2007, 04:23
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Цитата
Не совсем понял вопроса, проясните.

В спецификации на шину (смотрю v2.1) не нашёл способов сброса шины соответствующих указанным на рис 14a и 14b (br24l16.pdf). Кроме того там указано, что нельзя давать "пустое" сообщение - оно illegal format, но не нашёл чего случится страшного при этом. Зато в доке от Rohm есть на рис 16 разрисовка такого случая и описано, мол чего-то таки будет работать. Непонятно это филипс недорасписал (или я криво читал) или у ребят из Rohm фантазия развитая или чего не договаривают. Откуда по 14 проклокиваний перед стартами?


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 4 2007, 06:43
Сообщение #21


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Ещё такая деталь: стартап тайм, определённое фьюзами равно 65 мсек. Если WDT включен и работает при каком-то вечном зависоне это можно видеть как периодическое притухание индикаторных светодиодов с периодом таймаута вочдога (65 мс каждые 2 сек). Совершенно точно помню, что в эксплуатации при зависании этого не было, т. е. выглядело так, как будто WDT не срабатывал.
Go to the top of the page
 
+Quote Post
vesago
сообщение Dec 4 2007, 07:25
Сообщение #22


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



А индуктивной нагрузочкой случаем не управляет ваш аппарат?
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 4 2007, 07:31
Сообщение #23


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



нет, ничем он не управляет, но электромагнитная обстановка вокруг него может быть тяжёлой (всякие пускатели, выключатели ампер так на 200, силовае кабели и т. д.)
Go to the top of the page
 
+Quote Post
vesago
сообщение Dec 4 2007, 07:40
Сообщение #24


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Ну тогда, когда отделите мух от котлет - убедитесь в безгрешности софта, внешний вачдог. Зря не поставили вроде fm3104. Еще - понизить подтяжку по и2ц и частоту.
Go to the top of the page
 
+Quote Post
D H
сообщение Dec 4 2007, 07:42
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



IMHO зависон в twi. Отключите twi устройство и получите бесконечный цикл и, следовательно, зависон. Проверяйте подключение, подтягивающие резисторы и т.д. Короче, подтяжка SCL SDA и проводники идущие к ним.

Сообщение отредактировал D H - Dec 4 2007, 07:42
Go to the top of the page
 
+Quote Post
oran-be
сообщение Dec 4 2007, 11:32
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 234
Регистрация: 30-03-07
Из: Одесса
Пользователь №: 26 621



Цитата(forever failure @ Dec 4 2007, 10:43) *
Ещё такая деталь: стартап тайм, определённое фьюзами равно 65 мсек. Если WDT включен и работает при каком-то вечном зависоне это можно видеть как периодическое притухание индикаторных светодиодов с периодом таймаута вочдога (65 мс каждые 2 сек). Совершенно точно помню, что в эксплуатации при зависании этого не было, т. е. выглядело так, как будто WDT не срабатывал.

Все вроде честно. Прога на цикле ожидания флага от ТВАЯ, как и положено виснет, собака сбрасывает проц, после чего прога опять, как и положено виснет. Отлаживать софт с собакой - плохая практика. Отключите собаку и вычисляйте места зависонов конкретно. Хотя они ясны и так.
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 4 2007, 12:25
Сообщение #27


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



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

Это на текущий момент проблема более основная, чем исправление причины зависания.

К тем устройствам, которые сейчас остались на месте эксплуатаци тоже сейчас нет возможности как-то добраться, в общем они где-то там, до куда сейчас не дойти не доехать, не вызвонить через проводки.

Поэтому заменив что-то в коде или исправив в источнике питания или ещё что-то сделав, я сейчас так и не узнаю - устранена причина или нет - на рабочем столе оно и так работает во всех позах без каких либо исправлений.
Go to the top of the page
 
+Quote Post
sensor_ua
сообщение Dec 4 2007, 12:42
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 266
Регистрация: 22-04-05
Из: Киев
Пользователь №: 4 387



Нужно аж симитировать сброс проца во время работы по TWI


--------------------
aka Vit
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 4 2007, 13:09
Сообщение #29


Местный
***

Группа: Участник
Сообщений: 256
Регистрация: 6-03-05
Из: Екатеринбург
Пользователь №: 3 112



Цитата(sensor_ua @ Dec 4 2007, 17:42) *
Нужно аж симитировать сброс проца во время работы по TWI

Было и такое. зависает до первого срабатывания WDT, то есть на две сек, а дальше норамльно работает.
Go to the top of the page
 
+Quote Post
D H
сообщение Dec 4 2007, 15:26
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 62
Регистрация: 1-11-06
Пользователь №: 21 847



Не подсоединияй устройство по TWI, вот и получишь свой искомый зависон.
После этого сиди, правь исходники.

Сообщение отредактировал D H - Dec 4 2007, 15:27
Go to the top of the page
 
+Quote Post

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

 


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


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