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

 
 
> Обработка двух прерываний ?, ATMEGA162
zombi
сообщение Jan 27 2009, 12:09
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Столкнулся с проблемой.
Долго мучался и ветаки поборол, но как-то странно!

Опишу кратко.
Используется два прерывания:

1:0x01A Timer/Counter1 Compare Match A - режим CLC (частота 44100 Hz)
2:0x020 Timer/Counter0 Compare Match - режим CLC ( частота 500 Hz)

У второго прерывания приоритет ниже и первая команда его обработчика SEI.
Все регистры и флаги сохраняются в каждом обработчике.
Проблема в том что во втором прерывании необходимо читать состояние PIND.4
Состояние пина иногда считывается 0-м в то время как он в 1-це.

В таком виде глючило:

CBI PORTB,7
SBI PORTB,7
ROL RTMP
SBIC PIND.4
ANDI RTMP,$01

добавил запрет и разрешение прерываний и глюк ПОЛНОСТЬЮ пропал:

CLI
CBI PORTB,7
SBI PORTB,7
ROL RTMP
SBIC PIND.4
ANDI RTMP,$01
SEI

Что это, глюк меги или я чегото не понимаю?
Ктонибудь сталкивался с подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zombi
сообщение Jan 27 2009, 15:16
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Спасибо всем ответившим.
Цитата
пожертвуйте регистром но это было давно

Через рег тоже пробывал, не помогло.
Цитата
Опускаю Ваши небрежности (код выхода из TIM0, код инициализации TIM0) - я так понял, что в реале там все нормально ?

А что с выходом из TIM0? Если вы имеете ввиду RET а не RETI то я же прерывания разрешаю в теле обратотчика.

Ув. _Pasha подскажите что не правильно в инициализации TIM0?
Просто я всегда так инициализирую, подскажите где ошибка.

Цитата
Может происходит повторный вызов TIM0? Вы же не запрещаете "ЭТО" прерывание

Незнаю. Надо попробывать . Спасибо defunct.
Но думаю что прерывание должно срабатывать по фронту?
Но даже еслиб вход выполнялся несколько раз то в мл.бите регистра RTMPA всеравно должна быть единица ведь состояние PIND.4 стабильно.

Цитата(defunct @ Jan 27 2009, 18:20) *
Может происходит повторный вызов TIM0? Вы же не запрещаете "ЭТО" прерывание.

Пропробуйте так:
Код
TIM0:
    cbi     TIMSK, OCIE0
    sei
....
    sbi   TIMSK, OCIE0
    reti

Попробывал. Результат отрицательный. Глюки продолжаются.


Цитата(_Pasha)
Код
TIM0:

;*************
    CBI    PORTB,7
    SBI    PORTB,7
    LSL    RTMPA
    CLI      <----------------------
   SBIC    PIND,4
    ORI    RTMPA,$01
    SEI     <----------------------
;*****

И так пробывал но тоже глючит.
Глюки исчезают только если CLI находится перед LSL или еще раньше, но никак не перед SBIC:
Код
;*************
    CBI    PORTB,7
    SBI    PORTB,7
    CLI      <----------------------
    LSL    RTMPA
   SBIC    PIND,4
    ORI    RTMPA,$01
    SEI     <----------------------
;*****


Сообщение отредактировал zombi - Jan 27 2009, 14:49
Go to the top of the page
 
+Quote Post
uau
сообщение Jan 28 2009, 10:46
Сообщение #3





Группа: Участник
Сообщений: 6
Регистрация: 8-02-05
Пользователь №: 2 511



Цитата(zombi @ Jan 27 2009, 18:16) *
А что с выходом из TIM0? Если вы имеете ввиду RET а не RETI то я же прерывания разрешаю в теле обратотчика.


А из стека, кто байт флагов будет вычищать?

Сообщение отредактировал uau - Jan 28 2009, 10:50
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   Обработка двух прерываний ?   Jan 27 2009, 12:09
- - _Pasha   Цитата(zombi @ Jan 27 2009, 16:09) CLI CB...   Jan 27 2009, 12:30
- - zombi   Я ж написал что "Все регистры и флаги сохраня...   Jan 27 2009, 12:39
- - _Pasha   Цитата(zombi @ Jan 27 2009, 16:09) У втор...   Jan 27 2009, 12:50
- - zombi   ЦитатаВ стеке? Код полностью огласите плз. Полност...   Jan 27 2009, 13:23
|- - _Pasha   Опускаю Ваши небрежности (код выхода из TIM0, код ...   Jan 27 2009, 13:39
|- - defunct   Цитата(zombi @ Jan 27 2009, 15:23) Попроб...   Jan 27 2009, 14:20
|- - _Pasha   Цитата(zombi @ Jan 27 2009, 18:16) А что ...   Jan 27 2009, 16:06
- - zombi   Цитатато проверьте таблицу векторов прерываний - в...   Jan 27 2009, 16:18
- - _Pasha   Значит где-то чистят Ваш RTMPA без сохранения/восс...   Jan 27 2009, 16:30
|- - zombi   Цитата(_Pasha @ Jan 27 2009, 19:30) Значи...   Jan 27 2009, 16:42
- - SasaVitebsk   Интересно. Я не сталкивался, но в первых моделях у...   Jan 27 2009, 18:12
- - zombi   Прошу прощения за поднятую бучу! Все оказалось...   Jan 28 2009, 14:48


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

 


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


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