Отговори на тема  [ 20 мнения ]  Отиди на страница 1, 2  Следваща
CCS complier въпрос? 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение CCS complier въпрос?
След компилиране на програмата ми дава следния уорнинг : Interrupts disabled during call to prevent re-entrancy: . В някой случаи на програмата това re-entrancy е наложително. Как да го накарам да не спира интеръптите. Те са много важни за действието на цялото устройство. Пробвах в самата функция да постава enable_interrupts() ама не ще. Помогнете....


Нед Сеп 20, 2009 8:17 am
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
Това съобщение ти го дава, понеже извикваш функция(коя ще видиш) и по време на прекъсване и в основната програма. Това в много случаи нее фатално, тъй като функцията може да е рутинна и да не предизвика конфликт(повторно извикване по време на първата). За да не те дразни или евентуално не предизвика проблеми, добави същата функция с различно име и я викай в прекъсването с нея а в основната програма със старото.


Нед Сеп 20, 2009 9:52 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
10х


Нед Сеп 20, 2009 12:41 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Абе викане на функциа от прекусване лично на мен не ми допада много.


Пон Сеп 21, 2009 5:39 pm
Профил
Ранг: Почетен член
Ранг: Почетен член

Регистриран на: Съб Окт 13, 2007 12:12 pm
Мнения: 712
Мнение 
А бе на човека му харесва на вкус и мирис, така, че карай...!


Пон Сеп 21, 2009 8:39 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Чет Юни 25, 2009 1:01 pm
Мнения: 2251
Мнение 
Това не го решавам аз. Наложително е при задействане на защита, чипът да реагира веднага.


Вто Сеп 22, 2009 10:27 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
мммм то прекъсването винаги е за това, ама да вигаш процедура .... но ти си знаеш де, като рпавило в прекъсване не се стои много, а ако това кеото изпълняваш не е голямо, няма смисъл да е процедура. Ако е голямо пък няма смисъл да го викаш от прекъсване, защото времето му за изпълнение ще е доста по голямо от това ако се вика външно с подходящо написан код.


Вто Сеп 22, 2009 10:49 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
ако няма опция с която да отменяш подобно поведение на компилатора, значи е боклук. нито копипействането на функцията е решение (аз бих дърпал уши за подобно нещо), нито да се откажеш от викане на функция в прекъсване. те функциите са за това, за да не се повтарят и да се викат от където трябва. тъй че порови се в документацията на компилатора.


Сря Сеп 23, 2009 9:24 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
zaphod написа:
ако няма опция с която да отменяш подобно поведение на компилатора, значи е боклук.


Мисля че няма workaround на това. Имаше подобна тема отпреди... Но не за всяко от прекъсванията има претенции да го забранява.


Сря Сеп 23, 2009 11:00 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Нед Сеп 26, 2004 9:21 pm
Мнения: 30686
Местоположение: София
Мнение 
Абе май има, но никога не съм си играл да ги махам, то в тоя CCS няма смисъл, не мое напишеш кой знае колко голям код за пик та да те залее с безброй грешки та точно варнингите да са ти проблем.
А викането на функция от прекъсване, лично според мен не е одбра идея при микроконтролери, но това си е мое мнение, но самото викане не е проблем, стига човек да си гледа стека дане препълни.


Чет Сеп 24, 2009 9:24 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Да не е Тони глас в пустиня... Кви "функции" в прекъсване кви глупости.

Не че не може, разбира се, ама то може от прекъсването и направо в цикъл
да влезе, та да може само reset да го извади, че прекъсването вече е маскирано.

Не че е толкова немислимо да има някой jsr или нещо подобно в irq handler-а,
но е излишно, хаби стек и довкарва латентност; ако IRQ кодът е толкова голям,
че да му трябва да се разбива на подпрограми и подобни, значи просто подлежи
на преобмисляне и пренаписване.

Да се мисли в категории "функции", "процедури" и подобни HLL глупости
в контекста на прекъсване е напълно погрешно извън първоначалното учене
на това, как се програмират прекъсвания (и смисълът му там е именно да се
разбере защо е погрешно).

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Сеп 25, 2009 12:12 am
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
еее, ае ся, без функции в прекъсване? че то най-сериозните софтуери НЯМАТ код изпълняващ се извън прекъсване, кво сега да не ползват функции ли? :) и функции, и цикли и всичко може да се се ползва в прекъсване, и трябва. те затова са измислени тия неща, за да се позлват когато има нужда от тях.


Пет Сеп 25, 2009 7:47 am
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Фев 17, 2006 9:17 am
Мнения: 765
Местоположение: Стара Загора
Мнение 
ToHu написа:
Абе май има, но никога не съм си играл да ги махам, то в тоя CCS няма смисъл, не мое напишеш кой знае колко голям код за пик та да те залее с безброй грешки та точно варнингите да са ти проблем.
А викането на функция от прекъсване, лично според мен не е одбра идея при микроконтролери, но това си е мое мнение, но самото викане не е проблем, стига човек да си гледа стека дане препълни.


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


Пет Сеп 25, 2009 10:05 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юни 10, 2007 2:22 pm
Мнения: 6492
Местоположение: София
Мнение 
Стига бе, кви са тия "най-сериозни" софтуери дето се изпълняват все в прекъсване.
Освен ако нямаш предвид, че reset е прекъсване и всичко става в неговите рамки, де :) .

Кой и за какъв ще кара непрекъснато маскиран? То човек може и с чук да размаже
процесора за можене, разбира се.

_________________
-------------------
www.tgi-sci.com
-------------------
http://www.flickr.com/photos/didi_tgi/


Пет Сеп 25, 2009 12:06 pm
Профил WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Юли 24, 2005 10:28 am
Мнения: 2658
Мнение 
е, не непрекъснато маскиран, прекъсванията могат и да са реентрантни.
но и да не са, това не променя нищо - тялото на прекъсването има да върщи нещо, това ползва да речем умножение. нормално си е да ползваш функцията за умножение която ползваш и извън прекъсването, а не да дублираш код.


Пет Сеп 25, 2009 2:36 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 20 мнения ]  Отиди на страница 1, 2  Следваща

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 3 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни