Jump to content

    
Sign in to follow this  
SZ0

HALT в STM8L и некорректная обработка выхода из него.

Recommended Posts

При подаче питания STM8L151K4T6 по HALT переходит в powed down. Дальше проц ожидается выхода из него по нажатию кнопки. Нажали, проц проснулся и перешёл на следующую команду после HALT. Здесь всё хорошо работает. В дальнейшем, через некоторое время, проц либо сам засыпает по таймеру, либо принудительно по кнопке переходе в powed down. Далее начинаются "глюки". Программа после обработки прерывания по нажатию клавиши переходит не на следующую команду после HALT, а несколькими командами раньше. Понятно, что это приводит к бесконечному сну программы. В отладчике, если всё делать пошагово, до HALT, просыпание будет корректным. Но, стоит точку останова поставить на HALT или при выходе из обработчика кнопки, в стеке виден неправильный адрес возврата. Полез в erratu. Оказывается, при частоте выше 8 МГц при выходе из HALT программа может некорректно читать таблице векторов прерываний. Рекомендация:

CLK_CKDIVR = 0x01;
_asm(“HALT”);
CLK_CKDIVR = 0x00;

Не помогает. Делитель также больше делал. Возникают вопросы. Почему же тогда при подаче питания первый HALT нормально обрабатывается? При медленном пошаговом выполнении также всё нормально.

Приходит простая мысль :blush:,может перед выходом из прерывания обработки кнопки в стеке адрес возврата менять на правильный принудительно? А то пока не вижу, как можно ещё устранить эту проблему.

Share this post


Link to post
Share on other sites

Сейчас повозился в отладке. Перед HALT настраиваю прерывание по кнопке, чтобы выходить из сна.

GPIOA->DDR = 0xFF & ~PIN_KEY;  // кнопка

GPIOA->CR2 = PIN_KEY;

В прерывание попадает спутся пару команд после команды GPIOA->CR2 = PIN_KEY

Почему-то возникает прерывание от кнопки, хотя она уже обработана и времени между её отпусканием и командой проходит несколько секунд. В общем, больше вопросов :dash2:

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this