Auf welche Pegelwechsel der Interrupt reagiert, stellst du im Register MCUCR ein. Bit 0 setzen stellt int0 auf toggle, bit 2 macht das gleiche für int1(Datenblatt vom Mega16 S.66).
Dann musst du noch Interrupts im allgemeinen anmachen. Ich glaub, das heist in Bascom
"enable interrupts"
und den externen Interrupt anmachen(in GICR bit 6/7 setzen - Datenblatt S.67/6.
Wieso stellst du die Frage eigentlich im C-Forum, wenn du Basic verwendest? Es gibt hier sowohl ein allgemeines AVR-Forum als auch ein Bascom-Forum.
ISR steht für "interrupt sercice routine"(oder so ähnlich). Das ist der code, der ausgeführt wird, wenn die Interrupt-Bedingung eintritt.
Da setzt du, wenn der Pegel gerade auf high gegangen ist, den Timer auf 0(je nach gewünschter Genauigkeit suchst du dir halt einen freien 8- oder 16-bit Timer aus.). Wenn der Pegel dann wieder auf low geht, kannst du den Wert des Timers auslesen und weist also, wie lang der Puls war.
Wie die in Bascom aussehen, weis ich jetzt nicht genau(hab' ich aber schonmal gemacht, ist nicht so schwierig, guck' mal in die Hilfe.).
PS: Wenn du das Datenblatt zu deinem AVR nicht hast, lad' es dir 'runter. Viele deiner Fragen werden da ganz schnell beantwortet.
Lesezeichen