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