Друзья, всем доброго здравия. Не сочтите за труд, подскажите...
Соединяю два ПИКа по I2C (аппаратный). Пока эмулирую в Proteus. Ведущий - PIC16f877A, ведомый PIC16F1823. При несовпадении адреса последний уходит в прерывание...
Вопрос: Должен ли ведомый генерировать аппаратное прерывание от MSSP при несовпадении адреса? Или это несовершенство Proteus?
P.S. При инициализации регистра SSPCON3 у ведомого, Proteus выдаёт предупреждение: Only bits PCIE, SCIE, SBCDE and BOEN are modelled. I2C will work in legacy mode only for remaining bits.
Вопрос по I2C
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Вопрос по I2C
И ещё, при совпадении адреса микросхемы ведомый (PIC16F1823) ведёт себя очень странно (во вложении сриншот с информацией от протеусовского I2C Debugger):
0. Мастер "Start"
1. Ведомый принял свой(!) адрес микросхемы с битом Write - выдаёт "Nack"(?)
2. Затем принимает байт с адресом ячейки и опять "Nack"(?),
3. Затем после ReStart (от мастера) принимает свой(!) адрес микросхемы с битом Read - выдаёт опять "Nack"(?)
4. Ну и после всех своих "Nack" ведомый исправно передаёт мастеру нужные 8 байт (с "Ask" от мастера) + последний 9-й байт с "Nack".
5. Мастер "Stop"
По мойму Proteus здесь точно чудит. Исправно принимая байты ведомый их не подтверждает. Люди знающие, скажите, глючит ведь ОН, а не Я???

0. Мастер "Start"
1. Ведомый принял свой(!) адрес микросхемы с битом Write - выдаёт "Nack"(?)
2. Затем принимает байт с адресом ячейки и опять "Nack"(?),
3. Затем после ReStart (от мастера) принимает свой(!) адрес микросхемы с битом Read - выдаёт опять "Nack"(?)
4. Ну и после всех своих "Nack" ведомый исправно передаёт мастеру нужные 8 байт (с "Ask" от мастера) + последний 9-й байт с "Nack".
5. Мастер "Stop"
По мойму Proteus здесь точно чудит. Исправно принимая байты ведомый их не подтверждает. Люди знающие, скажите, глючит ведь ОН, а не Я???
Re: Вопрос по I2C
Gerik_PP писал(а):Никто не знает что-ли? Невольно вспоминается старый анекдот.
Весьма странно читать ваш пост после созерцания дублей на куче форумов .
Вы коллекционируете ответы ?
Вам же сам Протеус дал ответ - смоделировано не все.
Хотите большего - на казусе есть Тень , разработчик Протеус.
Есть I2C debugger , в которых можно забить работу слэйва .
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Вопрос по I2C
dosikus писал(а):Вы коллекционируете ответы?
Вам же сам Протеус дал ответ - смоделировано не все.
В каком-то смысле да. Информации совсем не могу найти по своей проблеме. До сих пор так никто толком и не сказал - должен ли ведомый PIC уходить в прерывание при несовпадении адреса микросхемы? Подобные вопросы уже были разных форумах, но все без ответа...
- Gerik_PP
- Открыл глаза
- Сообщения: 59
- Зарегистрирован: Вт ноя 07, 2006 14:14:16
- Откуда: пос. Правдинский
- Контактная информация:
Re: Вопрос по I2C
Сегодня запустил в железе. Всё Ок! Рекомендую всем железный debugger.
-
iGraphicsS
- Нашел транзистор. Понюхал.
- Сообщения: 193
- Зарегистрирован: Ср фев 16, 2011 22:58:23
Re: Вопрос по I2C
Любой пик-микро с новой инициализацией MSSP (PIC12F1840, PIC16F1825 ИТД), у которых есть регистр SSP1CON3, Proteus-ом пока не поддерживаются. (источник http://www.labcenter.com/products/vsm/pic16.cfm).
Сам наступил на грабли, долго мозг е-л этот факт. По этому аппаратных I2C в новых PICmicro не будет моделироваться.
Сам наступил на грабли, долго мозг е-л этот факт. По этому аппаратных I2C в новых PICmicro не будет моделироваться.