meni se sad malo mesa implementacija izmedju 16bit pic i msp430, mips i
cortex jezgra no ako se dobro secam nvic na cortex-u radi tako sto dok
traje higher prio interrupt ovi nizeg prioriteta se stekuju i onda se
izvrse kada se zavrsi ovaj high prio interrapt + za razliku od klasicnog
vic-a cortex ima tu neku trailing foru da kada zavrsi high prio
interrupt ako postoji na cekanju lower prio interrapt on umesto da vrati
sve sa steka, pa turi opet sve sto treba na stek on samo prodje u drugi
interrapt i tu cuva nekih 12tak taktova u odnosu na "normalan" vic ..
takodje ima foru da kada pocne manje bitan interapt ako se desi high
prio interapt tokom pripreme za ulazak (setap steka, dizanje na stek
cega treba etc) cortex ce odma da uleti u high prio umesto da zavrsi sta
je poceo i udje u low prio pa njega prekine (kao sto rade normalni
vicevi) ... e sad detalja se bas ne secam a i moguce da je ovo cela
prica vezana za npr mips a da sam je ja dodelio cortex-u :D mada mislim
da je to cortex prica ...
inace sa samom implementacijom i koristenjem toga nemam veliko iskustvo
posto ja za ove moje potrebe imam onaj glavi core clock koji uzima svega
nekoliko taktova i jedan timer i to je to ... ostalo su externi hw
interapti koji su sami po sebi spori
Posle male pauze vratio sam se na STM32F3 …
Elem, ovo sa prioritetima interapta me je zekilo jer nisam konfigurisao kako treba.
Ja sam se bezuspesno vrteo oko ovoga:
...
NVIC_InitTypeDef NVIC_InitStructure;
/* Enable the TIM3 gloabal Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //nije imalo efekta sta god stavio
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //nije imalo efekta sta god stavio
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
NVIC_SetPriority(TIM3_IRQn,0); //OVO JE BILO NEOPHODNO!
...
Dakle trebalo je da se doda NVIC_SetPriority() nakon cega je ta interapt rutina tj IRQ linija kojoj sam dodelio 0 postala "glavna". Ostalim linijama je naravno postavljen nizi prioritet (1,2,3 …).
U toj rutini sam za debugiranje imao toggle jednog izlaznog pina i sad je to vremenski "zakucano u mestu", nema jitter i ostalih problema koje sam imao pre nego sto sam to dodao!
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator