kyv
|
|
1 | |
I2C начинает работать только после перепрошивки18.01.2015, 04:05. Показов 5345. Ответов 0
Метки нет (Все метки)
Имею MSP430F5529 Launchpad. Хочу считывать данные с датчиков по I2C и столкнулся с проблемой - I2C работает нормально только после перепрошивки. То есть, загружаю я прошивку с помощью программатора-отладчика Ez-FET, установленного на плате, - всё работает нормально. Можно жать кнопочку RESIT, можно запускать отладку - всё будет работать нормально. Но если ввести МК в режим BSL (зажать кнопки BSL и RESIT, затем отпустить сначала RESIT и только потом BSL), а потом перезагрузить или отключить питание платы, а потом подключить снова, то I2C не работает. И не будет работать, сколько не перезагружай плату. Но стоит залить ТУ ЖЕ САМУЮ прошивку и всё начинает работать. При этом таймеры, UART и GPIO работают как надо всегда (другие модули не использую пока что). Если не заливать заново прошивку, а подключиться для отладки это проблему не решает. Надо именно перезалить прошивку. То есть какая-то инициализация осуществляется программатором при заливке прошивки, а я в своей программе её не делаю. Для того чтобы внешние датчики всегда были в одинаковом состоянии запитал их от GPIO микроконтроллера, благо они жрут единицы миллиампер. Так что на них никак не влияет перепрошивка - они начинают работать с нуля каждый сброс МК (МК при старте сначала выдаёт 0 на питание датчиков, ждёт кучу времени, чтобы точно разрядились все конденсаторы и лишь потом запитывает датчики).
Если плату отключить от питания и быстро подключить снова, то она может и заработать. Также она работает, если отключали только питание, а внешний переходник на UART остался подключен и мог питать МК с помощью паразитного питания через подтяжки линий (но при этом МК не исполнял программу, для этого питания не хватало, но, возможно, мог сохранить состояние ОЗУ или какой-то периферии), а затем подали питание вновь. Вот код моей библиотеки для работы с I2C: http://pastebin.com/M1WtDKQb. Я не нашёл отличий в инициализации от примеров TI. «Не работает» - значит любые попытки чтения по I2C возвращают не то, что нужно. Обычно это нули. Но после режима BSL это значение 0xC7. В чём может быть дело? Какое состояние МК может инициализировать программатор при прошивки и оно сохраняется при перезагрузках, но не сохраняется при пропадании питания. Смотрел с помощью mspdebug содержимое памяти по тем адресам, где находятся регистры, которые отвечают за I2C - различия между ситуациями, когда работает и когда нет, нету, всё настроено идентично. Больше не знаю, что посмотреть. |
18.01.2015, 04:05 | |
Ответы с готовыми решениями:
0
Видеокарта начинает работать только после перезагрузки ContextMenuStrip начинает работать только после второго раза Ubuntu начинает нормально работать только после ухода в сон Wifi начинает работать только после перехода в спящий режим на ноутбуке |
18.01.2015, 04:05 | |
18.01.2015, 04:05 | |
Помогаю со студенческими работами здесь
1
Ноутбук HP Pavilion DV6, клавиатура начинает работать только после отключения тачпада Примерно через минуту, двигается только курсор. После нескольких перезагрузок начинает работать нормально После перепрошивки ipad air ios 12.5.5 перестал работать apple id Не запускаются программы после включения, после пары перезагрузок начинает нормально работать. Видеокарта начинает работать только в новом разъеме Привод windows 7 64 начинает работать только при перезагрузке с диском Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |