| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=11161 |
Страница 1 от 1 |
| Автор: | NikB [ Пон Мар 04, 2013 9:46 pm ] | ||||||||||||||||||
| Заглавие: | RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването | ||||||||||||||||||
(ДОПЪЛЕНО: по-долу ми обърнаха внимание, че не съм поясникл средата: Става въпрос за AVR32, AT32UC3C2 и подобни. Тия процесори имат по няколко UART интерфейса. Въпросът ми е мога ли да присвоя един обработчик на прекъсване на всички UART интерфейси. За да мога да направя това, трябва да знам при всяко конкретното влизане в обработчика от коя от прекъсванията (или от кой конкретен интерфейс) е предизвикано. Как в обработчиците на прекъсването се определя от къде е дошло прекъсването?) ОРИГИНАЛЕН ПОСТ: ТОВА е обработчикът (простичко ехо):
ТОВА е инициализацията:
И СЕГА ВЪПРОСА: ИМА ЛИ МЕХАНИЗЪМ с който да знам от кой USART или поне от кое прекъсване влизам в обтаботчика? ТРЯБВА МИ, за да знам от къде да чета байта (сега го чета от DEBUG_USART, някава тъпа константа). БЛАГОДАРЯ! |
|||||||||||||||||||
| Автор: | ike [ Вто Мар 05, 2013 12:37 am ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
Отговора е: Да. |
|
| Автор: | NikB [ Вто Мар 05, 2013 12:53 am ] | ||||||||||||||||||
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването | ||||||||||||||||||
Благодаря ти! Уверен съм, че може да поясниш с още 12-13 думи така, че да схвана. И, защото беше любезен да ми помогнеш, и защото се надявам да имаш чувство за хумор "ОтговорЪТ е да" - подлогът, това, което върши действието (в случея : "отговорЪТ"), се членува с пълен член, а членът в българския език е отзад. (Само някой да не вземе да брои моите пропуски |
|||||||||||||||||||
| Автор: | ike [ Вто Мар 05, 2013 1:37 am ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
Преди ти да схванеш, трябва първо аз да схвана. Пишеш на Бейсик нали? |
|
| Автор: | NikB [ Вто Мар 05, 2013 8:56 am ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
Благодаря ти за отзивчивостта, приемем иронията и сарказма Ще ти обясня. Пиша на Фортран. Бейсикът е прекалено модерен. А сега сериозно: май наистина не съм пояснил обкръжението, вярвал съм, че името на атрибута е достатъчно. Става въпрос за AVR32, AT32UC3C2 и подобни. Тия процесори имат по няколко UART интерфейса. Въпросът ми е мога ли да присвоя един обработчик на прекъсване на всички UART интерфейси. За да мога да направя това, трябва да знам при всяко конкретното влизане в обработчика от коя от прекъсванията (или от кой конкретен интерфейс) е предизвикано. |
|
| Автор: | miro_atc [ Вто Мар 05, 2013 10:19 am ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
Има два варианта за прекъсванията - общ вектор за всички прекъсвания и отделни вектори... Кой точно вариант е ще трябва да си провериш архитектурата на АВР32, но едни и същи периферии могат да бъдат вързани и по двата начина. Примерно SAM7 са с общ вектор щото е АРМ7, а SAM3 с отделни щото е куртекс. Но USАR-те им са едни и същи както и на AVRx... При общ вектор, общо взето си проверяваш източника и му викаш "обработчика", естествено може да подадеш параметри за какво точно го викаш. При отделни вектори може да ползваш "wrapers" не знам как ще ще го преведеш, но имаш usart1_ISR(), usart2_ISR() и т.н. които не правят нищо друго освен да извикат usart_ISR(usart x) със съответния параметър. |
|
| Автор: | NikB [ Вто Мар 05, 2013 1:44 pm ] | |||||||||
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването | |||||||||
Благодаря ти много за отзивчивостта, за компетентния и своевременен отговор! Не всичко разбрах, но поне е ясно какво трябва да търся и да чета. И най-много ми хареса идеята да направя отделни малки обработчици, които да викат общия универсален и всеобхватен обработчик, като му предават отделни параметри. Страхотно! (Офф: Тая идея ми е много близка и изглежда толкова естествена, че ме е срам, че не ми е дошла в главата още снощи Напоследък си мисля, че преди, когато нямаше форуми, гугъл и интернет (и въобще - документация Но се успокоявам, защото принината може да е и друга - на те времена не се налагаше да пиша едновременно на 5 езика, за няколко операционни системи и отделно - на C и асемблер за процесори от различни производители и фамилии.) |
||||||||||
| Автор: | Nikola Kirov [ Вто Мар 05, 2013 2:00 pm ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
В Аtmel Software Framework имаш много примери. Отделно че в Atmel Studio 6 можеш лесно да си конфигурираш проект с използването на ASF. Там ще се ориентираш как се работи най удобно с прекъсванията на AVR32 |
|
| Автор: | ike [ Вто Мар 05, 2013 2:10 pm ] |
| Заглавие: | 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 прекъсванията са отделни. При някои архитектури като влезнеш в прекъсване последователно проверяваш кои флагове са вдигнати последователно и ги обработваш, след което с инструкция ги сваляш. Ако не ги свалиш ръчно, веднага пак влиза в прекъсване. Тях трябва да ги обработваш по-бързо от колкото пристигат, иначе може да изтървеш някое прекъсване. Едит: И никога не забравяй да споменаваш, кой ти е конкретно контролера и кой ти е компилатора и този компилатор под каква ОС е. |
|
| Автор: | miro_atc [ Вто Мар 05, 2013 2:31 pm ] |
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването |
Трябва да се чете... аз не ползвам AVR и не ми се чете На пръв поглед изглежда като да може да се групират различни прекъсвания в един вектор. В "обработчика" на групата явно ще трябва да се чете interrupt cause или там каквото се чете, за да се разбере точния източник... И като знаеш кой е, т.е. дали е UART и кой UART може да извикаш "обработчик" за uart и му подадеш параметър... Но пак казвам - трябва да се чете и да се види дали е така... |
|
| Автор: | NikB [ Вто Мар 05, 2013 4:32 pm ] | |||||||||
| Заглавие: | Re: RQ: ATTR_INTERRUPT_HANDLER: обекта на прекъсването | |||||||||
БЛАГОДАРЯ за всички постове!
Сутринта, като прочетох първия отговор, си прочетох темата и бях силно изненадан от лошата формулировка. По принцип не съм такъв човек |
||||||||||
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|