реклама на сайте
подробности

 
 
> STM8S-Discovery не получается зайти в обработчик прерывания, STVD, Raisonance
smk
сообщение Jan 3 2012, 20:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Как ни стараюсь, а в обработчик прерывания от таймера не попадаю. Подскажите в чем может быть проблема? Спасибо.
Код
#include <stm8s105c6.h> //Бибилиотека описаний периферии
//#include <intrins.h>
#include <intrist7.h>
#define enableInterrupts()  _rim_()  /* enable interrupts */
#define disableInterrupts() _sim_()  /* disable interrupts */

unsigned char a,b,c,Timer4;

void TIM4_UPD_OVF_IRQHandler(void) interrupt 23    //обработчик прерывания по таймеру 4
    {
        TIM4_SR &= ~(1<<0);     //Сбросим признак прерывания
        if(Timer4) Timer4--;      //Программный таймер        
    }

void Timer4_1ms_set (void) //инициализация таймера
    {
        TIM4_SR &= ~(1<<0);        //Сбросим признак прерывания
        TIM4_PSCR=0x07;           //Предделитель на 2^7=128   16000000/128 = 125000 Hz
        TIM4_ARR=125;             //Регистр автозагрузки таймера при переполнении 125000 / 250 = 500 Hz
        TIM4_IER |= (1<<0);       //Разрешаем генерацию прерывания при переполнеини
        CLK_PCKENR1 |= (1<<4); //Подключаем тактовый генератор к таймеру 4
        TIM4_CR1 |= (1<<0);       //Разрешаем счет
    }

_rim_(); //разрешить глобально прерывания


В отладчике видно, что флаг прерывания устанавливается, но обработчик не выполняется. В чем может быть причина? Спасибо.


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mareng
сообщение Jan 4 2012, 06:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-02-07
Пользователь №: 25 487



У вас в компиляторе указан какой-нить аналог иаровской #pragma vector?
Вектор прерывания указывает на вашу функцию-обработчик?
Go to the top of the page
 
+Quote Post
smk
сообщение Jan 4 2012, 06:13
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата(Mareng @ Jan 4 2012, 08:09) *
У вас в компиляторе указан какой-нить аналог иаровской #pragma vector?
Вектор прерывания указывает на вашу функцию-обработчик?

Код
void TIM4_UPD_OVF_IRQHandler(void) interrupt 23

Вот та цифра 23 ,судя по документации на компилятор, и указывает на вектор. Перед ней обязательно ключевое слово interrupt. Компилируется без ошибок и предупреждений, но не работает.

Прикрепленный файл  RCSTM8.pdf ( 952.35 килобайт ) Кол-во скачиваний: 2710


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
Mareng
сообщение Jan 4 2012, 06:14
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 19-02-07
Пользователь №: 25 487



Цитата(smk @ Jan 4 2012, 13:13) *
Вот та цифра 23

просмотрел...
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 00:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016