| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| IAR http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=712 |
Страница 1 от 1 |
| Автор: | Nikola Kirov [ Чет Юни 02, 2005 6:54 pm ] | |||||||||
| Заглавие: | IAR | |||||||||
Нещо не ми е ясно в асемблер листинга които ми дава за функциите от прекъсванията. това е за АТмега
Нещо не схващам какво точно прави с тези операции с регистрите в началото и края. Това са 32 цикъла на всяко прекъсване и цели 64баита в всяка функция за прекъсване |
||||||||||
| Автор: | Цецо [ Чет Юни 02, 2005 8:28 pm ] |
| Заглавие: | |
С риск да се покажа много тъп, неразбирайки Атмелите, това не е ли запис на контекста (разните му там регистри/променливи) в стека? Щото нали прекъсване, стек абе на всички контролери и на всеки компилатор тва го има. |
|
| Автор: | bateAz [ Чет Юни 02, 2005 8:34 pm ] |
| Заглавие: | |
Пак IAR и MSP430 това го няма. |
|
| Автор: | Цецо [ Чет Юни 02, 2005 8:56 pm ] |
| Заглавие: | |
Е как записва контекста. Нали тоя компилатор върти някви променливи за вътрешна употреба. Трябва да се съхранят някакси. Са ако MSP има неква хардуерна хитрана да го прави на бързо е друг въпрос, ама иначе. Друг е въпроса че на всеки компилатор по един или друг начин можеш да задаваш какво точно да се крие е стека. |
|
| Автор: | Nikola Kirov [ Чет Юни 02, 2005 9:04 pm ] |
| Заглавие: | |
Надявах се някой вече да се е сблъсквал с това. Явно е някаква особенност при работата с АТмегата. Явно съм пропуснал нещо съществено като съм чел документацията на Мегата. |
|
| Автор: | Цецо [ Пет Юни 03, 2005 9:09 am ] |
| Заглавие: | |
Е що бе човек? Без да разбирам от меги, това си е най-нормално съхраняване на работни регистри в стека. Какво те притеснява - размера или бързодействието. По принцип компилатора си има вътрешни променливи (за математика, индекс за стека, по малки параметри към функции), които трябва да се съхранят при прекъсване. Това е един от недостатъците на С. Сега дали е точно такъв случая - виж в документацията - interrupt, context saving или нещо от сорта. |
|
| Автор: | Predator_MF [ Пет Юни 03, 2005 10:34 am ] |
| Заглавие: | |
Ами точно запис на контекста е |
|
| Автор: | breeze [ Пет Юни 03, 2005 11:10 am ] |
| Заглавие: | |
Ето един от документите, в които добре е описано всичко това: http://www.atmel.com/dyn/resources/prod ... oc1234.pdf В случая се вижда, че се записват всички scratch registers, както и един local register (R24) който явно е използван за съхраняване на статуса ти SREG. Към IAR си има документация която освен този PDF включва и друг касаещ пълната "анатомия" на модела използван от самия компилатор. До най-големи тънкости. |
|
| Автор: | Nikola Kirov [ Пет Юни 03, 2005 1:20 pm ] |
| Заглавие: | |
Не е добре човек да прекалява с бачкането щото изпростява и става неефективен. Ето днес като се наспах до късен следобяд за 5 минути видях защо е IAR-a ми дава този код . Ами така става като от функцията на прекъсването извикаш друга функция и така стават доста неща за съхраняване. |
|
| Автор: | Реконструктор [ Пет Юни 03, 2005 1:23 pm ] |
| Заглавие: | |
IAR-а е тъп. |
|
| Автор: | Гост [ Пет Юни 03, 2005 1:36 pm ] |
| Заглавие: | |
Ìîãà ëè äà íå ñå ñúãëàñÿ ÷å IAR å òúï Âñè÷êè scratch ðåãèñòðè å íåîáõîäèìî äà áúäàò ñúõðàíåíè ïðè ïðåêúñâàíå ïîíåæå íå ñå çíàå â êîé ìîìåíò ùå íàñòúïè òî. Ñúùîòî âàæè è çà ñòàòóñ ðåãèñòúðà. Çà ðàçëèêà îò ïðåêúñâàíèÿòà, ïðè èçâèêâàíå íà ôóíêöèÿ âå÷å ìîæå äà áúäàò ñúõðàíåíè íàèñòèíà ñàìî èçïîëçâàíèòå ðåãèñòðè... Ñ ïî-ìàëêî ñúõðàíè ðåãèñòðè ïðîñòî íå âèæäàì êàê ìîæå äà ñå ìèíå îñâåí àêî 1) èçðè÷íî íå óêàæåòå ðåãèñòðèòå R20-R24 äà íå ñå ïîëçâàò çà scratch (òîâà ñòàâà ñ îïöèÿ â êîìïèëàòîðà) è òå íå ñå ïîëçâàò â ISR-òî; 2) àêî ñå îêàæå, ÷å àáñîëþòíî íèêúäå â ïðîãðàìàòà íå ñå èçïîëçâàò íÿêîè scratch ðåãèñòðè, òîãàâà (ïðåäïîëàãàì ïðè âêëþ÷åíè îïòèìèçàöèè) IAR ùå ãè "îòñòðàíè" îò ñïèñúêà çà ñúõðàíÿâàíè ðåãèñòðè. |
|
| Автор: | Nikola Kirov [ Пет Юни 03, 2005 1:38 pm ] |
| Заглавие: | |
Сега го тествах с няколко различни функции съхранява само това дето пипа в функцията и Статуса. Ако имаш обръшение към друга функция от функцията на пекъсването съхранява всички Scratch регистри. Явно по идея ако ти трябва бързодеиствие трябва да избягваш подобни конструкции. Може и да има и някаква оптимизация за това но поне аз не намирам как. Но това не означава че няма. |
|
| Автор: | Nikola Kirov [ Пет Юни 03, 2005 1:41 pm ] |
| Заглавие: | |
Този последния пост излязъл докато писах моя. А къде е тази опция за R20-R24,че не я виждам? |
|
| Страница 1 от 1 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|