|
Виж темите без отговор | Виж активните теми
Дата и час: Вто Юли 28, 2026 1:44 am
|
Страница 1 от 1
|
[ 11 мнения ] |
|
RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
| Автор |
Съобщение |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
( ДОПЪЛЕНО: по-долу ми обърнаха внимание, че не съм поясникл средата: Става въпрос за AVR32, AT32UC3C2 и подобни. Тия процесори имат по няколко UART интерфейса. Въпросът ми е мога ли да присвоя един обработчик на прекъсване на всички UART интерфейси. За да мога да направя това, трябва да знам при всяко конкретното влизане в обработчика от коя от прекъсванията (или от кой конкретен интерфейс) е предизвикано. Как в обработчиците на прекъсването се определя от къде е дошло прекъсването?) ОРИГИНАЛЕН ПОСТ: ТОВА е обработчикът (простичко ехо): ТОВА е инициализацията: , където irq-то е съответно на отворения USART И СЕГА ВЪПРОСА: ИМА ЛИ МЕХАНИЗЪМ с който да знам от кой USART или поне от кое прекъсване влизам в обтаботчика? ТРЯБВА МИ, за да знам от къде да чета байта (сега го чета от DEBUG_USART, някава тъпа константа). БЛАГОДАРЯ!
Последна промяна NikB на Вто Мар 05, 2013 8:59 am, променена общо 3 пъти
|
| Пон Мар 04, 2013 9:46 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Отговора е: Да.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Мар 05, 2013 12:37 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Благодаря ти! Уверен съм, че може да поясниш с още 12-13 думи така, че да схвана. И, защото беше любезен да ми помогнеш, и защото се надявам да имаш чувство за хумор  , и аз ще се опитам да ти помогна: "ОтговорЪТ е да" - подлогът, това, което върши действието (в случея : "отговорЪТ"), се членува с пълен член, а членът в българския език е отзад. (Само някой да не вземе да брои моите пропуски  :):))
|
| Вто Мар 05, 2013 12:53 am |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Преди ти да схванеш, трябва първо аз да схвана. Пишеш на Бейсик нали?
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Мар 05, 2013 1:37 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Благодаря ти за отзивчивостта, приемем иронията и сарказма  . Ще ти обясня. Пиша на Фортран. Бейсикът е прекалено модерен. А сега сериозно: май наистина не съм пояснил обкръжението, вярвал съм, че името на атрибута е достатъчно. Става въпрос за AVR32, AT32UC3C2 и подобни. Тия процесори имат по няколко UART интерфейса. Въпросът ми е мога ли да присвоя един обработчик на прекъсване на всички UART интерфейси. За да мога да направя това, трябва да знам при всяко конкретното влизане в обработчика от коя от прекъсванията (или от кой конкретен интерфейс) е предизвикано.
|
| Вто Мар 05, 2013 8:56 am |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Има два варианта за прекъсванията - общ вектор за всички прекъсвания и отделни вектори...
Кой точно вариант е ще трябва да си провериш архитектурата на АВР32, но едни и същи периферии могат да бъдат вързани и по двата начина. Примерно SAM7 са с общ вектор щото е АРМ7, а SAM3 с отделни щото е куртекс. Но USАR-те им са едни и същи както и на AVRx...
При общ вектор, общо взето си проверяваш източника и му викаш "обработчика", естествено може да подадеш параметри за какво точно го викаш. При отделни вектори може да ползваш "wrapers" не знам как ще ще го преведеш, но имаш usart1_ISR(), usart2_ISR() и т.н. които не правят нищо друго освен да извикат usart_ISR(usart x) със съответния параметър.
|
| Вто Мар 05, 2013 10:19 am |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Благодаря ти много за отзивчивостта, за компетентния и своевременен отговор! Не всичко разбрах, но поне е ясно какво трябва да търся и да чета. И най-много ми хареса идеята да направя отделни малки обработчици, които да викат общия универсален и всеобхватен обработчик, като му предават отделни параметри. Страхотно! (Офф: Тая идея ми е много близка и изглежда толкова естествена, че ме е срам, че не ми е дошла в главата още снощи . Напоследък си мисля, че преди, когато нямаше форуми, гугъл и интернет (и въобще - документация - преди 100 години) май идеите ми бяха повече и идваха по-бързо. Вероятно е от ЕГН-то. Но се успокоявам, защото принината може да е и друга - на те времена не се налагаше да пиша едновременно на 5 езика, за няколко операционни системи и отделно - на C и асемблер за процесори от различни производители и фамилии.)
|
| Вто Мар 05, 2013 1:44 pm |
|
 |
|
Nikola Kirov
Ранг: Форумен бог
Регистриран на: Нед Окт 31, 2004 9:19 pm Мнения: 4464 Местоположение: Stara Zagora
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
В Аtmel Software Framework имаш много примери. Отделно че в Atmel Studio 6 можеш лесно да си конфигурираш проект с използването на ASF. Там ще се ориентираш как се работи най удобно с прекъсванията на AVR32
|
| Вто Мар 05, 2013 2:00 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
http://www.ultimaserial.com/avr_lwip_var.htmlДо колкото виждам с това INTC_register_interrupt( UART_int_handler, irq, int_level); казваш при прекъсване irq да се извика UART_int_handler До колкото виждам при AVR32 прекъсванията са отделни. При някои архитектури като влезнеш в прекъсване последователно проверяваш кои флагове са вдигнати последователно и ги обработваш, след което с инструкция ги сваляш. Ако не ги свалиш ръчно, веднага пак влиза в прекъсване. Тях трябва да ги обработваш по-бързо от колкото пристигат, иначе може да изтървеш някое прекъсване. Едит: И никога не забравяй да споменаваш, кой ти е конкретно контролера и кой ти е компилатора и този компилатор под каква ОС е.
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Вто Мар 05, 2013 2:10 pm |
|
 |
|
miro_atc
Ранг: Форумен бог
Регистриран на: Нед Фев 26, 2006 6:52 pm Мнения: 11266 Местоположение: Добрич
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
Трябва да се чете... аз не ползвам AVR и не ми се чете  На пръв поглед изглежда като да може да се групират различни прекъсвания в един вектор. В "обработчика" на групата явно ще трябва да се чете interrupt cause или там каквото се чете, за да се разбере точния източник... И като знаеш кой е, т.е. дали е UART и кой UART може да извикаш "обработчик" за uart и му подадеш параметър... Но пак казвам - трябва да се чете и да се види дали е така...
|
| Вто Мар 05, 2013 2:31 pm |
|
 |
|
NikB
Ранг: Почетен член
Регистриран на: Съб Сеп 25, 2004 10:32 pm Мнения: 710
|
 Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването
БЛАГОДАРЯ за всички постове! Сутринта, като прочетох първия отговор, си прочетох темата и бях силно изненадан от лошата формулировка. По принцип не съм такъв човек  и се извинявам на всички, на които съм губил времето да гадаят.
|
| Вто Мар 05, 2013 4:32 pm |
|
|
|
Страница 1 от 1
|
[ 11 мнения ] |
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 2 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|