Wahrscheinlich ist dir dein µC schlicht und einfach abgestürzt
Übrigens bringt es nichts, in einer INT0-ISR den INT0 zu deaktivieren, zu warten, und dann wieder zu aktivieren. Das zugehörige INT0-Flag wird dennoch gesetzt. Du kannst den INT0 einfach aktiv lassen, und am Ende der ISR das Flag löschen (durch Schreiben einer 1).
Übrigens wird dein Code besser lesbar, wenn du ihn einrückst...
Um den Wert aus einem Port zurücklesen (wie du es versuchst), liest man wieder PORTx und nicht PINx. PINx liest den Input, der dich aber gar nicht nicht interessiert in dem Beispiel...
Wenn du einen sin() durch varieren deiner Zeitbasis erhalten willst, dann müssen die Zeitstückchen nicht sinusförmig sein, sindern proportional zu C+1/sin'(x) sein, also i.w. cosec().
Momentan braucht man sie noch.Zitat von izaseba
In avr/interrupt.h werden zB die Makros sei() und cli() definiert.
In avr/signal.h werden zB die Makros SIGNAL und INTERRUPT definiert.
Lesezeichen