Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прерывания В ATtiny13, работает не совсем корректно 
:(
    Опции темы
interesuuwiysia
Дата 25.10.2007, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



Доброго времени суток!
Работаю с Тини13. Выставляю прерывания Pin Change Interrupt на 3й пин. Установку делаю на срабатывание по фронту прямоугольного импульса. На пин завожу прямоугольные импульсы с частотой 50гц, которые получились путем обработки сигнала от сети в 220В. Контроллер прерывания обрабатывает, время срабатывания не плавает, тк решается задача синхронизации. Вот только есть одна проблема: контроллер срабатывает как на фронт, так и на спад импульса... Когда настраиваю контроллер только на спад, он все-равно обрабатывает два события: по фронту и спаду... 

Привожу код настройки:

.Macro Set_PCINT3
    ; disable all interrupts to avoid MC corruption
    cli
                
                ;enables Pin Change interrupt and disables INT0 interrupt
    ldi r18, GIMSK
    ori r18, (1<<PCIE)                  ;;;;| (1<<INT0);    
    andi r18, ~(1<<INT0);
    out GIMSK, r18

    ;selects PB3 as Pin Change interrupt source and disables others
    ldi r19, PCMSK
    ori r19, (1<<PCINT3)
    andi r19, ~((1<<PCINT5) | (1<<PCINT4) | (1<<PCINT2) | (1<<PCINT1) | (1<<PCINT0))
    out PCMSK, r19

    ;sets the event affecting an interrupt
    ldi r20, MCUCR
    ;andi r20, ~((1<<ISC01) | (1<<ISC00))
    ori r20, (1<<ISC01) | (1<<ISC00)
    out MCUCR, r20
.EndMacro

Никак не могу разобраться в чем же дело... Пробовал на двух контроллерах - оба работают одинаково. Значит ошибаюсь где-то у меня... Поделитесь пожалуйста опытом!!!

Заранее благодарен! 
PM MAIL   Вверх
AVR32
Дата 25.10.2007, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.4.2007
Где: СПб

Репутация: 1
Всего: 1



И неудивительно, что получаете такой результат! ‘Pin Change Interrupt’ - прерывание по изменению состояния пина. Вот и получается, что прерывание будет и по положительному фронту, и по отрицательному.
PM MAIL WWW   Вверх
interesuuwiysia
Дата 25.10.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



Да, но в мануале в разделе прерываний вперемешку описаны прерывания Pin Change и INT0. И не совсем понятно, для кого из них можно устанавливать различные варианты срабатывания. Таблица с устновкой в регистре MCUCR битов ISC01 и ISC00 (которые и определяют событие для возникновения прерывания) дана без каких-либо дополнительных разъяснений. Таким образом получается, что только INT0 может работать с каждым фронтом поотдельности?
    
PM MAIL   Вверх
Коляй
Дата 25.10.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



В этих Тинях с прерываниями вобще непонятки полные. У меня как только флаг поднимется, так постоянно и висит. Программа прыгает в прерывание TIMER1_COMP как только вернётся из него. Уже и АVR-студию поменял с 4 на 3,21 и всё равно. И порт делал на вход и на выход, и nop -ы лишние вставлял. Проц Тини-15L. А ещё в студии работало всё четко, а в протеусах (6 и 7) ни в какую. Уже думаю на ПИК перейти, там надеюсь нет таких глюков!
PM   Вверх
interesuuwiysia
Дата 25.10.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



Ну я понимаю когда один контроллер некорректно работает... но когда уже второй кряду.... Атмел - серьезный вроде продукт.
PM MAIL   Вверх
Willy
Дата 26.10.2007, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.1.2007

Репутация: нет
Всего: нет



Заведи входной сигнал на ногу РВ0, 
включи прерывание INT0, а по изменению запрети(GIMSK = 0x40) 
по фронту на INT0 (MCUCR |= 0x03) и будет тебе счастье  smile 


PM MAIL   Вверх
interesuuwiysia
Дата 26.10.2007, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 18.2.2006

Репутация: нет
Всего: нет



Я уже так и сделал! Спасибо smile
PM MAIL   Вверх
AVR32
Дата 27.10.2007, 02:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 28.4.2007
Где: СПб

Репутация: 1
Всего: 1



Добавлю, что в 'Pin Change Interrupt' разрулить ситуацию с фронтами можно анализируя текущее состояние портов. А вообще, да, как уже было замечено, выбор фронта только по int0.
В корне несогласен с этим утверждением:
Ну я понимаю когда один контроллер некорректно работает... но когда уже второй кряду.... Атмел - серьезный вроде продукт.
В этом случае, без обид, 'ручёнки кривые'.
PM MAIL WWW   Вверх
Коляй
Дата 27.10.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 14.6.2006

Репутация: нет
Всего: нет



Цитата(AVR32 @ 27.10.2007,  02:21)
Добавлю, что в 'Pin Change Interrupt' разрулить ситуацию с фронтами можно анализируя текущее состояние портов. А вообще, да, как уже было замечено, выбор фронта только по int0.
В корне несогласен с этим утверждением:
Ну я понимаю когда один контроллер некорректно работает... но когда уже второй кряду.... Атмел - серьезный вроде продукт.
В этом случае, без обид, 'ручёнки кривые'.

Ручонки то мож и кривые, не спорю. Но софт ещё кривее. Непонятно почему глюки качуют из версии в версию той же авр-студии. Ну а про систему команд вобще молчу! Не, ну на СИ то конечно нет разницы, что там и как присходит, а вот в Тини-15 нет ОЗУ и ИАР с ним просто не работает. И вот на асме уже вторую неделю мучаюсь! То регистр не тот (не старший), то команда не такая, то ещё чего не так! Сил нет уже никаких.
 А кстати когда с Мегой8535 работал на СИ, всё четко было и в авр-студии и в Протеусе и LCD всё отображал корректно (кроме русского шрифта конечно) и меню работало. Видимо писаки софта не заинтересованы в корректной поддержке старых моделей. А зачем? Надо же вперёд! К светлому будущему на АРМ-ах! 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.