Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Category:

Смешного вот напишу

На прошлой неделе три дня промучился с отладкой вроде бы простейшей прошивки для очередного девайса. Если просто – приборчик должен был делать что-то несложное по прерыванию на одном из входов CC2541 и одновременно работать Bluetooth-beacon’ом – казалось бы, что может быть проще? Но я допустил совершенно идиотскую ошибку – перепутал номер порта в обработчике прерывания, написав вместо

HAL_ISR_FUNCTION( drdyHandler, P0INT_VECTOR )

вот такую штуку:

HAL_ISR_FUNCTION( drdyHandler, P1INT_VECTOR )

Что забавно – обработчик прерывания работал (и поэтому был вне подозрений), а вот Bluetooth порой валился с совершенно невнятными ошибками. Все дело в том, что векторы прерываний портов идут подряд, просто “по умолчанию” на месте вектора прерывания оказывается вполне себе допустимая инструкция

MOV R7,A

Она выполняется, выбирается следующая за ней – это инструкция перехода к обработчику другого прерывания, и все почти хорошо – если бы при этом не портился регистр R7. Именно это и приводило к непредсказуемым глюкам.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Subscribe

  • О фактчекинге

    Наткнулся на американскую, разумеется, статью “Фактчекинг речи Владимира Путина в ООН”:…

  • Неоламаркизма псто

    Из школьной биологии мы твердо знаем, что приобретенные признаки не наследуются. Кто-то вспомнит про опыт Вейсмана, кто-то задаст простой вопрос…

  • Про псевдонауку

    Пишу сейчас довольно большой и спорный пост, пока не буду раскрывать, о чем – скажу лишь, что залез в википедию (фу, бля – скажете вы и…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments