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

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


Местный
***

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



Цитата(sensor_ua @ Dec 4 2007, 07:23) *
Непонятно это филипс недорасписал (или я криво читал) или у ребят из Rohm фантазия развитая или чего не договаривают. Откуда по 14 проклокиваний перед стартами?

Как-то смутно i2c у Филипса описано.

forever failure В некоторых мануалах на микросхемы 24c01 пишут, что микросхема начинает гарантированно работать через 0.15 (!!!) секунды.
Пороверка наличия/работоспособности устройства, должна иметь выход по таймауту. Иначе как индицировать поломку?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Dec 4 2007, 23:04
Сообщение #32


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Т.Достоевский @ Dec 4 2007, 22:13) *
Как-то смутно i2c у Филипса описано.

smile.gif У Филипс - отцов основателей I2C расписано все очень четко и ясно. Просьба с реализацией и описаеием I2C ака TWI от Atmel в одну кучу не кидать.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
fmdost
сообщение Dec 4 2007, 23:31
Сообщение #33


Местный
***

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



Цитата(zltigo @ Dec 5 2007, 02:04) *
smile.gif У Филипс - отцов основателей I2C расписано все очень четко и ясно. Просьба с реализацией и описаеием I2C ака TWI от Atmel в одну кучу не кидать.

Ясно дело разные вещи. Дело было давно, интернет был медленный, потом стало как-то неинтересно. В пдф ИМХО лучшее что нашёл laughing.gif .
Go to the top of the page
 
+Quote Post
forever failure
сообщение Dec 5 2007, 07:01
Сообщение #34


Местный
***

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



Тов. Достоевский, у меня там FM3130 прицеплено, а не 24c01.

Пока что опыты и надругательства над шиной TWI положительного результата не дали. При возникновения какой-либо проблемы, вызывающей зависание, после первого рестарта работоспособность восстанавливается полностью.
Go to the top of the page
 
+Quote Post
forever failure
сообщение Mar 2 2009, 06:05
Сообщение #35


Местный
***

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



Чисто случайно нашёл сейчас свою тему, на какую следовало бы,в общем-то, отрапортовать : "Хэппи энд".
Косяк нашёлся, дело было не в шине I2C, не в питании, и не в разводке платы.
Проблема крылась в небольшом куске ассемблерного программного кода :
CODE
SIG_UART0_RECV:
push r16 ; 2
in r16, IO_PORT(SREG) ; 1
push r17 ; 2

lds r17, LED_PORT ; 2 /* atmega128 */
ori r17, RECV_LED ; 1
sts LED_PORT, r17 ; 2 /* atmega128 */

push r30 ; 2
push r31 ; 2

in r31, IO_PORT(UDR0) ; 1 /* atmega128 */

in r17, IO_PORT(UCSR0A) ; 1 /* atmega128 */
andi r17, parity_error ; 1
lds r30, modbus_line_state ; 2
or r30, r17 ; 1
sts modbus_line_state, r30 ; 2

lds r16, modbus_line_timeout; 2
out IO_PORT(TCNT0), r16 ; 1 /* atmega128 */

in r17, IO_PORT(TIMSK) ; 1 /* atmega128 */
ori r17, BIT(TOIE0) ; 1
out IO_PORT(TIMSK), r17 ; 1 /* atmega128 */

in r17, IO_PORT(TIFR) ; 1
ori r17, BIT(TOV0) ; 1
out IO_PORT(TIFR), r17 ; 1

mov r17, r31 ; 1

lds r30, rxtx_buffer_ptr ; 2
lds r31, rxtx_buffer_ptr + 1; 2

st Z+, r17 ; 2
cpi r30, lo8(rxtx_buffer + RECV_MODBUS_BUFFER_SIZE) /* buffer size <= 256 bytes */
breq HERE + 8 ; 1 / 2

sts rxtx_buffer_ptr, r30 ; 2
sts rxtx_buffer_ptr + 1, r31; 2

pop r31 ; 2
pop r30 ; 2
pop r17 ; 2
out IO_PORT(SREG), r16 ; 1
pop r16 ; 2
reti

Даже не очень опытный глаз тут сможет найти ошибку, которая в сочетании с другими дефектами программного кода (в частности сбросом собаки более, чем в одном месте приложения) с единичной вероятностью приводит к отказу устройства.
Отсюда вывод (особенно всем тем, кто иногда заявляет "ИАР/ГЦЦ - глючит, атмел гонит брак"): мойте руки перед едой и не экономьте заварку. То есть, просто надо соблюдать простые элементарные правила - в частности чаще тестировать код, проверять в коде возвращаемые функциями значения.
Но, хотя ни один из ответов по теме не мог бы решить проблему непосредственно, некоторые неспецифические рекомендации данные здесь, помогли в конечном итоге отловить этого жука. В частности, полезной оказалась рекомендация оставить сброс WDT только в одной точке приложения (и то, только после проверки некоторых условий),
и помогла запись в EEPROM запись состояний регистра SREG при возникновении ошибки шины I2C и при возникновении других критических ошибок.
Спасибо всем, кто ответил по этой теме.
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 Текстовая версия Сейчас: 17th June 2025 - 20:41
Рейтинг@Mail.ru


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