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

 
 
> разделение источников в прерывании TIMERB1, какой то глюк с TBIV
-=Space=-
сообщение Oct 24 2006, 09:44
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 14-01-05
Из: Москва Зеленоград
Пользователь №: 1 962



есть 4 исмпульсных сигнала, частоту которых необходимо померить.
Для этого хочу использовать режим захвата таймера B
входы TB0-TB3
c TB0 все нормальнго , для него отдельное прервывание TIMERB0
а вот на 3 сигнала TB1-TB3 вектор один - TIMERB1
в мануале предлагается по регистру TBIV определять сточник прерывания
даже есть примерчик на асме.

Я пришу прогу на IAR C
вот код прерывания:
Код
#pragma vector=TIMERB1_VECTOR
__interrupt void Timer_B1 (void)
{
unsigned char tbiv = TBIV;        // (1)

if(tbiv == 0x02)                       // (2)
    {
    delta1 = TBCCR1 - count1;
    count1 = TBCCR1;
    }
if(tbiv == 0x04)
    {
    delta2 = TBCCR2 - count2;
    count2 = TBCCR2;
    }
if(tbiv == 0x06)
    {
    delta3 = TBCCR3 - count3;
    count3 = TBCCR3;
    }

}


однако ни одна ветка не не выполняется в режиме реального времени, хотя
в отладке по шагам все работает
если поставить точки останова в строках (1) и (2),
и после остановки в (1) выполнить переход по шагам то tbiv получает парвильное значение и все работает
если после остановки в (1) нажать F5 то программа остановится в (2) но tbiv будет =0, и ниодна ветка не сработает, хотя отлабчик упорно показывает что TBIV = 0x2.

У меня мысль что TBIV сбрасывается еще до входа в прерывание , а при отладке по шагам TBIV вновь устанавливается от нового захвата (импульсы продолжают идти)
Вообщем я уже порядочно запутался.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
-=Space=-
сообщение Oct 25 2006, 07:51
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 105
Регистрация: 14-01-05
Из: Москва Зеленоград
Пользователь №: 1 962



попробовал с функцией __even_in_range
вообщем она влияет на компиляциию и в асме видно что код становится короче
девайса пока нет, проверить в железе не могу, но в Симуляции НЕ работает!!!

прерывание вызывается, но ни в один из cаse не заходит
в симуляторе TBIV упорно хранит 0, хотя прерывания вызывал пачками

давайте выложу проект полностью
Прикрепленные файлы
Прикрепленный файл  project.zip ( 11.61 килобайт ) Кол-во скачиваний: 37
 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 28th July 2025 - 06:26
Рейтинг@Mail.ru


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