Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Куртекс - забрана/разрешаване на периферни прекъсвания.
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=11802
Страница 1 от 1

Автор:  Цецо [ Чет Окт 10, 2013 4:04 pm ]
Заглавие:  Куртекс - забрана/разрешаване на периферни прекъсвания.

При Куртекса ( а и при доста други контролери), като цяло има две нива на управление на прекъсванията. Едното е на ниво периферен контролер (например UART) другото е на ниво NVIC. Замислих се къде е по - добре, човек да пуска - спира определено прекъсване, дали от периферията или от NVIC. От една страна ако го прави в NVIC е по унифицирано и е удобно ако търсиш някаква автоматизация и ползване на общ код. От друга в NVIC някой прекъсвания са навързани накуп за няколко източника (поне на STM32 де), та блокирайки в NVIC се блокира всичко вързано на тая шина ... Някакви други съображения да имате вие?

Автор:  bateAz [ Чет Окт 10, 2013 4:23 pm ]
Заглавие:  Re: Куртекс - забрана/разрешаване на периферни прекъсвания.

Аз винаги забранявам в периферията. Събражения: При забраняване обикновено се налага да се правят и други екшени по периферията, така че там без пипане трудно ще мине. При разрешаване винаги се налага - най-малкото да се изчистят пендващите заявки.
Втори аргумент - в NVIC на една линния често са по няколко реквеста.

Автор:  miro_atc [ Чет Окт 10, 2013 5:29 pm ]
Заглавие:  Re: Куртекс - забрана/разрешаване на периферни прекъсвания.

Това с няколкото периферии на едно прекъсване е патент на ST ;-)

Не знам Цецо какво му се върти в главата, защото трудно може да се каже кое е "правилно". В общия случай ако няма да се ползва дадена периферия е редно да се спре през NVIC след това да се дръпне шалтера от системния контролер. Поне за 3-та производителя дето ползвам това си става с унифициран код.
Логиката е че при добре проектиран проц всяка периферия би следвало да е отделен клок и отделен power домейн. Някак си не върви да оставиш прекъсване от неклокната или незахранена схема. Но... при ST няма такава опасност май, мисля че нямат отделни power домейни ;-)

Автор:  Цецо [ Чет Окт 10, 2013 5:53 pm ]
Заглавие:  Re: Куртекс - забрана/разрешаване на периферни прекъсвания.

Не говорим за тотално спиране на периферията. Тогава е ясно. А за временно маскиране. Нищо не ми се върти в главата, просто събирам съображения, да не пропускам нещо.

Автор:  miro_atc [ Чет Окт 10, 2013 6:27 pm ]
Заглавие:  Re: Куртекс - забрана/разрешаване на периферни прекъсвания.

просто нямам идея що питаш и гадая....

Ако периферията не работи не виждам причина да й спираш прекъсванията освен ако не й дърпаш шалтера... Явно искаш докато работи замалко да я забравиш (не че разбирам защо ще го правиш). Не знам какви съображения търсиш, единственото дето се сещам да съобразиш дали няма да ти се получи някаква конкуренция. Т.е. някъде решаваш че ще забраняваш и тръгваш да забраняваш, но междувременно идва прекъсване и да не ти обърка логиката ;-)
Със сигурност ако кодът ти се изпълнява на по-висок приоритет и забраниш през NVIC може да си сигурен че няма да те прекъсне нито да ти се получи дъми прекъсване след това... Ако го правиш през маските и през периферията просто няма как да се генерализира, знам ли дали прекъсванията ти са ниво или фронт и дали не са забравили някъде синхронен буфер.
Аз обикновено не разчитам на перифериите защото много често съм виждал как след подобни игри си влиза в прекъсване, въпреки че няма причина щото то вече е изчистено или забранено...

Автор:  Цецо [ Пет Окт 11, 2013 9:25 am ]
Заглавие:  Re: Куртекс - забрана/разрешаване на периферни прекъсвания.

Да точно това имах предвид. В NVIC нещата са малко или много унифицирани. Докато в перифериите е бозица.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/