Микроконтролери и електроника
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 ]
Заглавие: 

zaphod написа:
ако няма опция с която да отменяш подобно поведение на компилатора, значи е боклук.


Мисля че няма 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 ]
Заглавие: 

ToHu написа:
Абе май има, но никога не съм си играл да ги махам, то в тоя CCS няма смисъл, не мое напишеш кой знае колко голям код за пик та да те залее с безброй грешки та точно варнингите да са ти проблем.
А викането на функция от прекъсване, лично според мен не е одбра идея при микроконтролери, но това си е мое мнение, но самото викане не е проблем, стига човек да си гледа стека дане препълни.


Тони, той не иска да разкара самия warning, а не знае как да накара CCS да не забранява своеволно прекъсванията по свое усмотрение :) И аз не знам де, мисля че не може. Дали е редно или не викане на функция от irq или не - това да е друга тема, но не е редно компилатора да го решава това :) Ама той питащият повече не се и обади...

Автор:  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/