was ist z.B. 1000000L
1 Periode = 1 Sekunde = 1.000.000 µSekunden

ist dauer_usec : 1000 "mal" duration_msec, und warum (uint32_t)
"duration_msec" ist vom Typ "uint16_t" und muss auf "uint32_t" gecastet werden um es zusammen addieren zu können. Sonst würde es ne Warnung vom Compiler (oder schlimmeres) geben.

//IR Interuptfreq=36KHz
//Wavefreq=18KHz
Sind weiter nicht von Interesse, da auskommentiert.