Ich möchte für mein Projekt diesen Befehl für mein Projekt verwenden.

void Sound (
uint16_t freq,
uint16_t duration_msec,
uint8_t amplitude)
{
uint16_t wait_tics;
uint32_t n,k,period_usec,dauer_usec;

period_usec = 1000000L / freq;
dauer_usec = 1000 * (uint32_t) duration_msec;
k = dauer_usec / period_usec;

//IR Interuptfreq=36KHz
//Wavefreq=18KHz

wait_tics = 18000 / freq;

MotorSpeed (amplitude, amplitude);

for (n = 0; n < k; n++)
{
MotorDir (FWD, FWD);
Sleep (wait_tics);
MotorDir (RWD, RWD);
Sleep (wait_tics);
}
MotorSpeed (0, 0);
}
Vom Prinzip her versteh ich es aber den Teil kapier ich nicht ganz.

period_usec = 1000000L / freq;
dauer_usec = 1000 * (uint32_t) duration_msec;
k = dauer_usec / period_usec;

//IR Interuptfreq=36KHz
//Wavefreq=18KHz

wait_tics = 18000 / freq;
was ist z.B. 1000000L
ist dauer_usec : 1000 "mal" duration_msec, und warum (uint32_t)

woher kommen die: IR Interuptfreq=36KHz
Wavefreq=18KHz


Hoffe man kann mir helfen.