| Микроконтролери и електроника http://mcu-bg.com/mcu_site/ |
|
| CCS complier въпрос? http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=7154 |
Страница 1 от 2 |
| Автор: | stoyanoff [ Нед Сеп 20, 2009 8:17 am ] |
| Заглавие: | CCS complier въпрос? |
След компилиране на програмата ми дава следния уорнинг : Interrupts disabled during call to prevent re-entrancy: . В някой случаи на програмата това re-entrancy е наложително. Как да го накарам да не спира интеръптите. Те са много важни за действието на цялото устройство. Пробвах в самата функция да постава enable_interrupts() ама не ще. Помогнете.... |
|
| Автор: | fan [ Нед Сеп 20, 2009 9:52 am ] |
| Заглавие: | |
Това съобщение ти го дава, понеже извикваш функция(коя ще видиш) и по време на прекъсване и в основната програма. Това в много случаи нее фатално, тъй като функцията може да е рутинна и да не предизвика конфликт(повторно извикване по време на първата). За да не те дразни или евентуално не предизвика проблеми, добави същата функция с различно име и я викай в прекъсването с нея а в основната програма със старото. |
|
| Автор: | stoyanoff [ Нед Сеп 20, 2009 12:41 pm ] |
| Заглавие: | |
10х |
|
| Автор: | ToHu [ Пон Сеп 21, 2009 5:39 pm ] |
| Заглавие: | |
Абе викане на функциа от прекусване лично на мен не ми допада много. |
|
| Автор: | fan [ Пон Сеп 21, 2009 8:39 pm ] |
| Заглавие: | |
А бе на човека му харесва на вкус и мирис, така, че карай...! |
|
| Автор: | stoyanoff [ Вто Сеп 22, 2009 10:27 am ] |
| Заглавие: | |
Това не го решавам аз. Наложително е при задействане на защита, чипът да реагира веднага. |
|
| Автор: | ToHu [ Вто Сеп 22, 2009 10:49 pm ] |
| Заглавие: | |
мммм то прекъсването винаги е за това, ама да вигаш процедура .... но ти си знаеш де, като рпавило в прекъсване не се стои много, а ако това кеото изпълняваш не е голямо, няма смисъл да е процедура. Ако е голямо пък няма смисъл да го викаш от прекъсване, защото времето му за изпълнение ще е доста по голямо от това ако се вика външно с подходящо написан код. |
|
| Автор: | zaphod [ Сря Сеп 23, 2009 9:24 am ] |
| Заглавие: | |
ако няма опция с която да отменяш подобно поведение на компилатора, значи е боклук. нито копипействането на функцията е решение (аз бих дърпал уши за подобно нещо), нито да се откажеш от викане на функция в прекъсване. те функциите са за това, за да не се повтарят и да се викат от където трябва. тъй че порови се в документацията на компилатора. |
|
| Автор: | setoy [ Сря Сеп 23, 2009 11:00 am ] | |||||||||
| Заглавие: | ||||||||||
Мисля че няма workaround на това. Имаше подобна тема отпреди... Но не за всяко от прекъсванията има претенции да го забранява. |
||||||||||
| Автор: | ToHu [ Чет Сеп 24, 2009 9:24 pm ] |
| Заглавие: | |
Абе май има, но никога не съм си играл да ги махам, то в тоя CCS няма смисъл, не мое напишеш кой знае колко голям код за пик та да те залее с безброй грешки та точно варнингите да са ти проблем. А викането на функция от прекъсване, лично според мен не е одбра идея при микроконтролери, но това си е мое мнение, но самото викане не е проблем, стига човек да си гледа стека дане препълни. |
|
| Автор: | tgi [ Пет Сеп 25, 2009 12:12 am ] |
| Заглавие: | |
Да не е Тони глас в пустиня... Кви "функции" в прекъсване кви глупости. Не че не може, разбира се, ама то може от прекъсването и направо в цикъл да влезе, та да може само reset да го извади, че прекъсването вече е маскирано. Не че е толкова немислимо да има някой jsr или нещо подобно в irq handler-а, но е излишно, хаби стек и довкарва латентност; ако IRQ кодът е толкова голям, че да му трябва да се разбива на подпрограми и подобни, значи просто подлежи на преобмисляне и пренаписване. Да се мисли в категории "функции", "процедури" и подобни HLL глупости в контекста на прекъсване е напълно погрешно извън първоначалното учене на това, как се програмират прекъсвания (и смисълът му там е именно да се разбере защо е погрешно). |
|
| Автор: | zaphod [ Пет Сеп 25, 2009 7:47 am ] |
| Заглавие: | |
еее, ае ся, без функции в прекъсване? че то най-сериозните софтуери НЯМАТ код изпълняващ се извън прекъсване, кво сега да не ползват функции ли? |
|
| Автор: | setoy [ Пет Сеп 25, 2009 10:05 am ] | |||||||||
| Заглавие: | ||||||||||
Тони, той не иска да разкара самия warning, а не знае как да накара CCS да не забранява своеволно прекъсванията по свое усмотрение |
||||||||||
| Автор: | tgi [ Пет Сеп 25, 2009 12:06 pm ] |
| Заглавие: | |
Стига бе, кви са тия "най-сериозни" софтуери дето се изпълняват все в прекъсване. Освен ако нямаш предвид, че reset е прекъсване и всичко става в неговите рамки, де Кой и за какъв ще кара непрекъснато маскиран? То човек може и с чук да размаже процесора за можене, разбира се. |
|
| Автор: | zaphod [ Пет Сеп 25, 2009 2:36 pm ] |
| Заглавие: | |
е, не непрекъснато маскиран, прекъсванията могат и да са реентрантни. но и да не са, това не променя нищо - тялото на прекъсването има да върщи нещо, това ползва да речем умножение. нормално си е да ползваш функцията за умножение която ползваш и извън прекъсването, а не да дублираш код. |
|
| Страница 1 от 2 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|