Написал программу заново. Стабильной работы удалось добиться только проверяя наличие лог. 1 на входе GP5 в течении некоторого промежутка времени (проверяю в цикле 255 раз подряд).
Т.е. на входе проскакивают короткие импульсы(то ли статика, то ли наводки от компа), по которым твоя прошивка постоянно запускала ошибочные переключения.
Может стоит поставить конденсатор на входе?