( martonmiklos | 2010. 09. 17., p – 19:53 )

Ami így első blikkre: amit főprogramban és interruptban használt változókat volatilenek kell deklarálni.

AVR libcben van makró a globális megszakítások tiltására, engedélyezésére. sei() cli(), ezek az SREG I bitjét FIXME setelik, clearelik.

Édesanyám azt tanította, hogy az ISR-ek rövidek legyenek, az elején cli(), a végén pedig sei() vel. Ez sok szopástól megkímél.

Attól, hogy a globális interruptokat letiltod, a flagek beállnak, és az interrupt elhagyásával sorra hívódnak meg a közben beállt flagű ISR-ek.