Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

ПРОТЕУС и I2S

Пт сен 09, 2022 21:54:19

Привет всем! С учебника Корабельникова мучаю I2S применительно к PIC16F877a. При тестировании в Протеусе складывается впечатление, что ееprom 24c64 ведет себя как то не адекватно. Я записываю пример с учебника в ееprom, все записывается, но как только я хочу повторить запись виртуальная 24с64 отказывается посылать сигнал ASC. Я добавил 2 чип 24С64 на шину I2S и попытался записать с другого адреса, все записалось. Но при попыткке опять обратиться к любой 24С64 нет сигнала АСК. Проект в архиве . Помогите разобраться... Спасибо.

Изображение Изображение
Вложения
7.rar
(513.58 KiB) Скачиваний: 52

Re: ПРОТЕУС и I2S

Сб сен 10, 2022 08:20:27

Корабельников? Ааа, старый знакомый, жуткий враль и не компетентный товарисч, давняя тема, давняя, еще в те годы этого господина освистывали с позором... Ну, это другой вопрос, сейчас не об этом.
А для автора темы надо вначале правильно прочитать и написать название интерфейса - I2C, Inter-Integrated Circuit то есть. А I2S - это Integrated Inter-chip Sound, Интерфейс передачи звука.
Во-вторых,
Сигнал ACK (acknowledge) передаётся в ответ от еепромки как подтверждение принятых данных или подтверждение присутствия и доступности этой микросхемы на линии.
Почитайте подробнее про I2C интерфейс https://ru.wikipedia.org/wiki/I%C2%B2C
Ну и даташит на еепромки прочитать обязательно нужно. https://pdf1.alldatasheetru.com/datashe ... 24C64.html
В нем ясно указана причина вашей проблемы. Когда нога WC = 0, запись физическая запись в ячейки еепромки начнется сразу же после состояния STOP на I2C. И время записи равно 10 мс, в течение этого периода еепромка будет отвечать NACK на байт адреса.
Вам же в анализаторе протокола это и показывается, то есть "занято". Data Write Time в свойствах еепромок установлено на 10 мс. Уменьшите это время до 1 мс и всё заработает. В железе, правда, не проканает и работать ниче не будет, но в симуляции - для проверки можно.
Изображение
А чтобы заработало в железе, надо менять программу.

Я конечно уже слабо помню ассемблер для PIC16, да и сам PIC16, но если прога писана по-корабельниковски, то она содержит немало ошибок, что и явилось следствием неработоспособности.
В частности, если устройство отвечает NACK (не подтверждает байт адреса или данных), то незачем повторять сразу отправку того же байта, вызывая DoS-атаку (Denial of Service) на это устройство.
Вот у вас получается типичная DoS-атака, так сказать:
Изображение
как вышло, так и пошло беспрерывно, один и тот же байт, без закрытия связи, куярит и куярит по еепромке, вся линия I2C повисла, МК завис, выхода нет.
По-хорошему, нужно разобраться, почему NACK и в каком месте оное возникает. В частности, если NACK пришел после посылки адреса еепромки, то нужно не долбить этим же байтом в еепромку беспрерыно, а ОСТАНОВИТЬ связь, отправив STOP-состояние, и только затем вновь открыть связь отправкой START-состояния, и затем еще раз отправить этот же байт адреса. Только так.
Вот видите, насколько Корабельников некомпетентен был. Эта сага еще лет 15 назад была известна, в то время многие плевались.

Re: ПРОТЕУС и I2S

Сб сен 10, 2022 14:35:30

Большое спасибо, теперь знаю где копать ...
Ответить