Davon abgesehen, dass du nicht schreibst, was denn genau nicht
funktioniert (und du damit erwartest, dass die Leser deines
Quelltextes sofort alles ,,trocken'' nachvollziehen können),
folgende
Anmerkungen:
. Don't use INTERRUPT unless you know what you're doing. Für
externe
Interrupts will man wohl nie INTERRUPT benutzen, für externe
pegelgetriggerte Interrupts ist es gar komplett tödlich -- aber
genau einen solchen brauchst du, um den ATmega16 aus dem Tiefschlaf
zu erwecken (habe jetzt nicht nachgeguckt, was du genau für einen
Interruptmodus eingeschaltet hast).
. Es ist natürlich OK, einen externen Interrupt zum Aufwecken des
Prozessors zu nutzen, aber für die Abfrage eines Tasters muss man
diesen danach entprellen. Also in der ISR schaltet man eigentlich
nur umgehend den Externinterrupt wieder aus und setzt ein Flag, dass
die Taste gedrückt worden ist, danach wird sie über einen Timer etc.
entprellt.