Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 05.03.2009, 15:23  
Gn0me
Временная регистрация
 
Регистрация: 15.08.2006
Сообщений: 54
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Gn0me на пути к лучшему
По умолчанию обработчики прерываний микроконтроллеров AVR

Добрый день. Подскажите пожалуста, как можно реализовать разные обработчики одного и того же прерывания для раных режимов работы.
Заранее спасибо.
Реклама:
Gn0me вне форума  
Непрочитано 05.03.2009, 15:33  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Проверкой флагов условий в прерывании наверно.

Можно if или switch попробовать -
"Си для микроконтроллеров" http://avr123.nm.ru/05.htm
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 05.03.2009, 15:45  
Gn0me
Временная регистрация
 
Регистрация: 15.08.2006
Сообщений: 54
Сказал спасибо: 3
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
Gn0me на пути к лучшему
По умолчанию

Сообщение от avr123-nm-ru
Проверкой флагов условий в прерывании наверно.

Можно if или switch попробовать
Это первое что, приходит в голову. Может есть более изящное решение?
Gn0me вне форума  
Непрочитано 05.03.2009, 17:25  
delamoure
Прописка
 
Аватар для delamoure
 
Регистрация: 22.09.2006
Адрес: Днепропетровск
Сообщений: 114
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
delamoure на пути к лучшему
По умолчанию

Ну вектора прерываний переназначить нельзя.
По этим векторам расположены команды перехода к обработчикам прерываний. Вот в обработчиках свой алгоритм и стройте на здоровье.
delamoure вне форума  
Непрочитано 05.03.2009, 18:16  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от delamoure
Ну вектора прерываний переназначить нельзя
Но можно пошаманить. Например, завести переменную с адресом обработчика. В "железном" - засунуть содержимое этой переменной в стек и сделать RET, или в Z и сделать IJMP...

Для Си это, конечно, не годится, так как придется сохранять все РОН.
nml вне форума  
Непрочитано 05.03.2009, 18:45  
GLVlad
Временная регистрация
 
Регистрация: 29.09.2006
Сообщений: 64
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 1 сообщении
GLVlad на пути к лучшему
По умолчанию

В Си использовать переменную типа указатель на функцию, а в прерывании вызывать указанную функцию по указателю.
GLVlad вне форума  
Непрочитано 05.03.2009, 19:20  
nml
Супер-модератор
 
Аватар для nml
 
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
nml на пути к лучшему
По умолчанию

Сообщение от GLVlad
В Си использовать переменную типа указатель на функцию, а в прерывании вызывать указанную функцию по указателю.
Делать такое из обработчика нехорошо по той же причине - перед вызовом генерится сохранение всех используемых РОН, что нехорошо со всех точек зрения. А прерывание - как хороший тост - должно быть коротким и конкретным.
nml вне форума  
Непрочитано 05.03.2009, 22:07  
avr123-nm-ru
Почётный гражданин KAZUS.RU
 
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
avr123-nm-ru на пути к лучшему
По умолчанию

Сообщение от nml
прерывание - как хороший тост - должно быть коротким и конкретным.
В аналы !

Я внчале то не въехал - думал тост жареный хлеб думал - что значит короткий тост ??? он ведь квадратный обычно.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
avr123-nm-ru вне форума  
Непрочитано 06.03.2009, 00:40  
GLVlad
Временная регистрация
 
Регистрация: 29.09.2006
Сообщений: 64
Сказал спасибо: 0
Сказали Спасибо 23 раз(а) в 1 сообщении
GLVlad на пути к лучшему
По умолчанию

Сообщение от nml
Сообщение от GLVlad
В Си использовать переменную типа указатель на функцию, а в прерывании вызывать указанную функцию по указателю.
Делать такое из обработчика нехорошо по той же причине - перед вызовом генерится сохранение всех используемых РОН, что нехорошо со всех точек зрения. А прерывание - как хороший тост - должно быть коротким и конкретным.
Си все равно генерит пролог к обработчику прерываний, где сохраняет РОН и SREG. Ну и восстанавливает их при выходе из обработчика.
Понятно, что если написать обработчик на асме, то генерацию стандартного пролога можно отключить (если позволяет компилятор), т.к. можно написать свой, учитывающий только те регистры, что используются в обработчике, и соответственно меньшего размера. Но идея исспользовать переменную указатель на функцию в Си, или адрес в Асме по сути одна и та же.
GLVlad вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Самопрограммирование микроконтроллеров AVR Gn0me Микроконтроллеры, АЦП, память и т.д 4 02.04.2009 10:25
Обработка нескольких прерываний AVR (вопрос) festoon Микроконтроллеры, АЦП, память и т.д 27 17.11.2008 18:02
Обработка прерываний. Tibo Микроконтроллеры, АЦП, память и т.д 12 13.07.2007 17:22
Использование прерываний в ATMega8535 igor727 Микроконтроллеры, АЦП, память и т.д 2 28.04.2007 15:50


Часовой пояс GMT +4, время: 16:06.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot