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

Nixon тоже спасибо, надо доверять спецификации на I2C, а не даташиту на железяку.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.