LPC - Jak detekovat povolene/zakazane preruseni?

Pavel Hudecek edizon na seznam.cz
Pátek Říjen 14 17:42:45 CEST 2016


Dobrý den všem,

mějme funkci v procesoru LPC11U68. Nějaká její část nesmí být přerušena. 
Nemůže v ní ale být natvrdo zákaz a povolení přerušení, protože funkce může 
být volána i v obsluze přerušení a kdyby ho povolila, hrozil by další 
problém.

Potřebuji tedy detekovat, zda už je přerušení zakázáno, nebo není, aby po 
provedení kritické části byl stav zákazu/povolení obnoven.

Díval jsem se, jak vypadají knihovní funkce pro zákaz a povolení a moc 
moudrý z toho nejsem:
__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
{
  __ASM volatile ("cpsid i" : : : "memory");
}
Syntaxe tohoto assembleru mi nedává smysl...

Díky,
PH 



Další informace o konferenci Hw-list