Полная версия этой страницы:
Аппаратный I2C в LPC2148
При работе программы не работает аппаратный I2C. Насколько понял косяк в обработчике прерывания, в симуляторе Keil в I2STAT постоянно перескакивает из 0х8 в 0х20. Т.е. в железе должен быть виден по осциллографу хотя бы START I2C, а его нет. И можно ли в обработчике использовать внешние функции типа printf?
В архиве моя программа.
yashok
May 25 2011, 05:58
попробуйте для начала сделать переменную не просто lock, а volatile unsigned char lock и увеличить стек для прерываний.
Рекомендация yashok не помогла, то же самое. Как вообще отлаживать аппаратный I2C в Keil?
yashok
May 26 2011, 09:42
В железе в прерывания попадаете?? Линии к плюсу подтянуты??
В симуляторе да попадает, а реально в железе не могу посмотреть - сгорел программатор-отладчик. Линия SDA подтянута к 3.3В, а линия SCL нет, т.к. по спецификации на HP03S она не должна быть подтянута, хотя это не долго проверить.
Цитата(LEXIS @ May 26 2011, 17:52)

Линия SDA подтянута к 3.3В, а линия SCL нет, т.к. по спецификации на HP03S она не должна быть подтянута, хотя это не долго проверить.
Притягивайте тоже. HP03S тут не причем.
Подтянул, все заработало. НО, при первом чтении одни 0, при последующих данные появляются, но последний байт может изменяться при чтении. Попробую сделать синхронизацию обработчика I2C с читаемыми данными, скорее всего косяк здесь зарылся.
yashok СПАСИБО за помощь.
Nixon тоже спасибо, надо доверять спецификации на I2C, а не даташиту на железяку.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.