Полная версия этой страницы:
AT24C32 на 100кГц не работает
AntonioB
Jan 15 2010, 17:43
Здравствуйте уважаемые форумчане!))
Такая ситуация, на шине i2c висят ds1307 и at24c32, из-за ds1307 скорость пришлось убавить до 100кГц и после этого at24c32 отказывается работать, а именно не отвечает на запросы. В описании на нее написано, что вроде как 100 - 400 кГц должна, но в реальности только на 400кГц работает.
Вопрос: это так на самом деле, либо я что-то не так делаю?))
defunct
Jan 15 2010, 22:20
Цитата(AntonioB @ Jan 15 2010, 19:43)

Вопрос: это так на самом деле, либо я что-то не так делаю?))
Видать что-то не так делаете. И на 100 и на 10 и на 5kHz она работает.
AntonioB
Jan 16 2010, 11:09
совсем тогда ничего не понимаю, i2c аппаратный (TWI atmega8) подтягивающие резисторы 4,7кОм, с ds1307 все работает четко, а при посыле at24c32 SLA+W (сетевой адрес + флаг записи) в TWSR возвращается код 0x20, т.е. не был принят ответ ACK. Адрес верный 10100000b, контакт везде нормальный, пробовал на нескольких пзу(at24c256 и at24c04) у всех нет ответа после SLA+W, в другом устройстве они все работают четко, но на 400кГц, чудеса какие-то((
aaarrr
Jan 16 2010, 12:05
Цитата(AntonioB @ Jan 16 2010, 14:09)

...в другом устройстве они все работают четко, но на 400кГц, чудеса какие-то((
А в
этом устройстве они работают на 400кГц? И осциллографом, конечно, стоит посмотреть на происходящее на линиях.
ILYAUL
Jan 16 2010, 12:07
Цитата(AntonioB @ Jan 16 2010, 14:09)

совсем тогда ничего не понимаю, i2c аппаратный (TWI atmega8) подтягивающие резисторы 4,7кОм, с ds1307 все работает четко, а при посыле at24c32 SLA+W (сетевой адрес + флаг записи) в TWSR возвращается код 0x20, т.е. не был принят ответ ACK. Адрес верный 10100000b, контакт везде нормальный, пробовал на нескольких пзу(at24c256 и at24c04) у всех нет ответа после SLA+W, в другом устройстве они все работают четко, но на 400кГц, чудеса какие-то((
Так . Вы работаете скажем первоначально с DS в конце работы с ней Вы формируете STOP и ждёте когда сброситься бит STO reg TWCR - сообщающий что шина свободна или формируете NACK если читали DS , затем формируете START , получаете правильный 08 формируете SLAddr и тут затык?
AntonioB
Jan 16 2010, 13:31
да, именно так, работаю с DS (чтение/запись) затем формирую STOP, жду пока сбросится бит TWSTO рег TWCR, затем формирую СТАРТ, получаю 0x08, отправляю SLA+W для AT24c32 и после этого получаю в TWSR код 0x20 - SLA+W передан, но ACK не принят. вот как-то так. Кроме того убирал все, что связано с DS, т.е. при запуске сразу обращался к AT24, но результат тот же. Создается впечатление, что twi не ловит ack от пзу.
ЗЫ: к сожалению осциллографом поглядеть не могу из-за отстутствия такового)
ILYAUL
Jan 16 2010, 13:57
Цитата(AntonioB @ Jan 16 2010, 16:31)

да, именно так, работаю с DS (чтение/запись) затем формирую STOP, жду пока сбросится бит TWSTO рег TWCR, затем формирую СТАРТ, получаю 0x08, отправляю SLA+W для AT24c32 и после этого получаю в TWSR код 0x20 - SLA+W передан, но ACK не принят. вот как-то так. Кроме того убирал все, что связано с DS, т.е. при запуске сразу обращался к AT24, но результат тот же. Создается впечатление, что twi не ловит ack от пзу.
ЗЫ: к сожалению осциллографом поглядеть не могу из-за отстутствия такового)
И A0,A1,A2 точно припаяны к земле и соединены с ней ? Да и откл. DS и посмотрите на START 08 от AT24 прийдёт.
AntonioB
Jan 16 2010, 13:59
да, может стоит поиграться с подтягивающими резисторами?
ILYAUL
Jan 16 2010, 14:05
Цитата(AntonioB @ Jan 16 2010, 16:59)

да, может стоит поиграться с подтягивающими резисторами?
Если на START при откл DS прийдёт 08 резисторы в норме.
AntonioB
Jan 16 2010, 15:48
все, заработало наконец-то)) причина до обидности банальна, у панельки под AT24 контакт у SDA промятый внутрь сильно был, поэтому то был сигнал, то не было, зависело от степени нажатия на микросхему. панелька б/у была, теперь всегда новые буду покупать))
спасибо всем за участие, ILYAUL в особенности!))
тему можно закрывать
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.