Ó, hát ennek nagyon egyszerű az oka!
A fő végrehajtó ciklusban lévő
PORTA = PINA ^ 0x01;
sor nem atomikus művelet. Bátorkodom megjegyezni, ez assembly-ben azonnal látszott volna.
Az történik, hogy van egy port olvasásod, az alsó bitet negálod, de csak regiszterben. Becsap az IT, az is olvassa a portot, megforgatod az 1-es bitet ténylegesen. Eddig jó. Visszatérsz IT-ből, befejeződik az alap szinten az értékadás, azaz a regiszterből kiíródik a portra az érték. De melyik is? A 0-ás bitre a megforgatott, de figyelem(!), az 1-es bitre az IT becsapása előtti értéket írod vissza. Ezért van az igen keskeny tüske. Az alap szintről visszaírod az IT előtti állapotot az 1-es bitre.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE