avr lebegopontos muveletek -frekimero-
Nagy Endre
gumo at lucifer.kgt.bme.hu
Mon Sep 18 13:26:02 CEST 2006
> SIGNAL (SIG_OVERFLOW1)
> {
> cli (); //int ki
...
> sei (); //globalis megszakitas engedelyezes
> }
Nem neztem at a programot, csak ez megragadta a figyelmem. Ilyesmit nem
csinalunk, mert egy SIGNAL()-ban elhelyezett sei() a megszakitas vege
_elott_ engedelyezi azt, es akkor beuthet egy ujabb ugyanolyan megszakitas
(nehany ilyen utan meg elfogy a stack).
Hardver szinten egy megszakitasban automatikusan le van tiltva a
megszakitas, visszatereskor ujraengedelyezodik, tehat nem kell ezzel
foglalkozni.
A GCC ketfele modon kezeli:
SIGNAL(): Mint a hardver, tehat le van tiltva.
INTERRUPT(): A megszakitasba lepes utan azonnal engedelyezi
(megszakithato megszakitas).
Gumo
More information about the Elektro
mailing list