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

CCS priority бъпрос4е
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=3339
Страница 1 от 1

Автор:  setoy [ Вто Ное 28, 2006 5:22 pm ]
Заглавие:  CCS priority бъпрос4е

Цитат:
>>> Warning 224 "C:\PROGRA~1\PICC\drivers\pic18_usb.h" Line 928(1,1): Interrupt level changed USB: NORMAL=>HIGH
>>> Warning 224 "D:\Projects\mplab_prj\usb\ex_usb_serial.c" Line 144(1,1): Interrupt level changed EXT: NORMAL=>HIGH


Има ли начин да го накарам да не ги прави тези простотии CCS-а ? Версията е 4.013. Благодаря!

Автор:  setoy [ Чет Ное 30, 2006 2:45 pm ]
Заглавие: 

E, нито един от ексертите по CCS ли няма да се обади? :cry: Не искам компилатора сам да ми определя кое прекъсване на какъв приоритет ще работи, а не мога да го откажа автоматично да вдига приоритетите. Дори в пдф-а му нищо не пише за този warning :evil:

Автор:  Predator_MF [ Чет Ное 30, 2006 4:31 pm ]
Заглавие: 

Е кажи какво пише на този ред:
Код:
ex_usb_serial.c" Line 144(1,1):
в тоя файл, че да не ровим из сорсовете

И още нещо, погледни в хелпа на CCS какво пише за приоритетите:
Цитат:
A summary of the different kinds of PIC18 interrupts:

#INT_xxxx

Normal (low priority) interrupt. Compiler saves/restores key registers.

This interrupt will not interrupt any interrupt in progress.

#INT_xxxx FAST

High priority interrupt. Compiler DOES NOT save/restore key registers.

This interrupt will interrupt any normal interrupt in progress.

Only one is allowed in a program.

#INT_xxxx HIGH

High priority interrupt. Compiler saves/restores key registers.

This interrupt will interrupt any normal interrupt in progress.

#INT_GLOBAL

Compiler generates no interrupt code. User function is located

at address 8 for user interrupt handling.


Цитат:
Syntax:
#priority ints



Elements:
ints is a list of one or more interrupts separated by commas.



export makes the functions generated from this directive available to other compilation units within the link.



Purpose:
The priority directive may be used to set the interrupt priority. The highest priority items are first in the list. If an interrupt is active it is never interrupted. If two interrupts occur at around the same time then the higher one in this list will be serviced first. When linking multiple compilation units be aware only the one in the last compilation unit is used.



Examples:
#priority rtcc,rb


Автор:  setoy [ Чет Ное 30, 2006 5:20 pm ]
Заглавие: 

Това ясно, Predator :)

#int_ext

Ето това пише там. Когато в сорса добавиш #device HIGH_INTS=1 (разрешаваме приоритетите на прекъсванията ) компилатора автоматически решава че определени прекъсвания - сред които int_ext и int_usb, може да има и други, не знам, ТРЯБВА да са високопроритетни. Без да си написал #int_edi_kwo_si high . Кой знае защо. А точно това на мен ми пречи в случая. A #global не ми се ще да го ползвам.

А#priority нищо не прави. Само определя кое от две равноприоритетни прекъсвания ще се изпълни първо. Но не и едното да прекъсва другото.

Автор:  Predator_MF [ Чет Ное 30, 2006 5:58 pm ]
Заглавие: 

Значи прекъсвания, които си дефинирал с High се поставят 0x000008 , прекъсвания, на които не дефинираш приоритет би трябвало да стоят в 0x00018, ако компилатора ти сам поставя прекъсвания в High Priority секцията, сигурно го прави защото нямаш други прекъсвания, но си дефинирал #device HIGH_INTS=1. Имаш ли все пак други прекъсвания или само тези двете, за които ти вади "Warning" ?

Автор:  setoy [ Чет Ное 30, 2006 6:56 pm ]
Заглавие: 

Имам и от UART-a. За него обаче няма никакви претенции. За ext1, ext2 също няма претенции.

Автор:  [ Чет Ное 30, 2006 8:47 pm ]
Заглавие: 

Обърни се към www.ccsinfo.com/forum . Опита ли с по-стара версия на компилатора ?

Автор:  setoy [ Пет Дек 01, 2006 3:01 pm ]
Заглавие: 

Гледах вече на техния форум. Нищо. ОК, явно никой не се е блъскал върху това. Ще се оправя някак си... :cry:

Автор:  [ Пет Дек 01, 2006 4:05 pm ]
Заглавие: 

Да, явно никой не се е сблъсквал с такъв дерт. Ако имаш възможност, постни проекта, можеш да затриш код, който ти е важен и не е за показване, или пък остави празни функциите, да пробваме и ние, имам различни версии на компилатора, все ще излезне нещичко.

Не съм имал такъв проблем, тъй като използвам варианта с #INT_GLOBAL , първо прекъсването се изпълнява по-бързо, второ заема по-малко памет. Но това е при 16-ките, при 18-ките оставям компилатора да се грижи за тия неща.

Автор:  setoy [ Сря Дек 06, 2006 10:35 am ]
Заглавие: 

Ами аз тоя код с приоритетните прекъсвания не го запазих... след като видях че не става. За проба е достатъчно да разрешат #device HIGH_INTS=1 в някой от семплите за usb да речем и да го видим какво ще направи..

Автор:  setoy [ Сря Дек 06, 2006 4:17 pm ]
Заглавие: 

Верно, CCS v.3.249 не се наглася сам приоритетите... за сметка на това обаче #org се бъгне при него :evil: Аман!

Автор:  valioman [ Сря Дек 06, 2006 6:23 pm ]
Заглавие: 

setoy написа:
Верно, CCS v.3.249 не се наглася сам приоритетите... за сметка на това обаче #org се бъгне при него :evil: Аман!


ЕЕЕЕ нямаш ли още ВЕЛИКАТА 4 -та версия . Ако си със слабо сърце не ти препоръчвам да я слагаш ..........

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