Abrvalg
Jun 30 2009, 13:06
Здравствуйте, помогите разобраться, даташит на мегу уже до дыр прокурил.
Есть девайс в котором PIC - master, ATmega8 - slave, помимо этого на шине висит DS1307 и EEPROM, проблема только с мегой.
При включении TWI в меге, она ловит TWI_BUS_ERROR, ну и после обработки отключает TWI.
На осцилле видно, что Мега не выдает АСК. Адрес правильный, бит TWEA в меге установлен.
Мега работает от внутреннего генератора 8Мгц. Частота SCL - 200 кГц.
Над кодом поэксперементировал, попробовал просто примеры из библиотек, та же картина.
Аппаратно - стандартная схема, подтяжки по 5.1 кОм, сигнал чистый, 3 день не могу въехать где проблема.
Еррату почитайте
Это документированный глюк 8 и вроде 88 мег
Ещё у них сторожевой таймер иногда глючит
Рекомендую связать ПИК и МЕГУ по SPI
algidim
Jul 1 2009, 14:04
Цитата(niXto @ Jul 1 2009, 17:34)

Еррату почитайте
Это документированный глюк 8 и вроде 88 мег
Ещё у них сторожевой таймер иногда глючит
Рекомендую связать ПИК и МЕГУ по SPI
Чуш не советуйте человеку, всё там прекрасно работает. У меня была похожая задача правда вместо PICa at89c5131. На atmega 88/48 часы и ещё несколько задач. Связь с 51 по TWI – всё прекрасно работает. Даже и не знаю чем помочь, так как 1 раз на макетке сделал так оно сразу заработало. Уже не 1 сотня штук – полёт нормальный. Нет там ни каких проблем. Разбирайтесь…
Попробуйте в Mege писать код стауса в массив, а по окончанию операции выбрасывайте его через
UART. Мне неоднократно это помогало выгрести баги из собственной программы.
Удачи.
Abrvalg
Jul 3 2009, 06:59
Спасибо за ответы, вроде дело сдвинулось, видимо нужно вводить задержки у PIC между старт и стоп посылками, так как если начать опрос с Меги, то она корректно отрабатывает старт условие. Разберусь до конца, тогда напишу в чем трабл был.
esaulenka
Jul 3 2009, 15:05
Цитата(niXto @ Jul 1 2009, 17:34)

Еррату почитайте
Это документированный глюк 8 и вроде 88 мег
Испугался и скачал свежий даташит.
В разделе "эррата" про I2C (пардон, TWI!) ни слова.
Уточните, пожалуйста!
singlskv
Jul 3 2009, 21:25
Цитата(Abrvalg @ Jul 3 2009, 10:59)

Спасибо за ответы, вроде дело сдвинулось, видимо нужно вводить задержки у PIC между старт и стоп посылками, так как если начать опрос с Меги, то она корректно отрабатывает старт условие. Разберусь до конца, тогда напишу в чем трабл был.

скорее всего Вы не корректно обрабатываете все состояния шины i2c,
или просто не "успеваете" за Вашим мастером который не поддерживает корректно "удержание шины"...