werauchimmer:
CC=cc+1
if cc>5 dann xx=1
gosub prüfe_TSOP1
gosub prüfe_TSOP2if cc=1 dann hole_die_Zeit
if cc=2 dann Messe_den_Abstand
if cc=3 dann Schreibe_das_LCD_wenn_nötig
if cc=4 dann Lese_die_Eingaenge_i2c
if cc=5 dann Lege_die_richtung_fest
Das kannst Du doch ebenso in die loop() schreiben. Denn dauert das Abarbeiten einer Unterroutine länger als 0,1ms dann hast Du eh ein Problem das sich die Aufrufe stapeln. Geht es schneller, dann ist das eher besser als schlechter. Ein timer gesteuerter Interrupt bringt hier keinen großen Vorteil. Wenn Du das Ganze relativ zeitgenau haben willst, dann schau Dir mal Blink without delay an, da ist erklärt, wie man trotz loop() eine definierte Zeit verstreichen läßt, ohne delay zu verwenden.
Ich finde 0,1 ms schon recht wenig, das sind gerade 100 Mikrosekunden.
Code sieht dann ggf. so aus:
int cc = 0
void loop() {
switch(cc++ % 5) {
case 0:
// dann hole_die_Zeit
break;
case 1:
// dann Messe_den_Abstand
break;
case 2:
// dann Schreibe_das_LCD_wenn_nötig
break;
case 3:
// dann Lese_die_Eingaenge_i2c
break;
case 4:
// Lege_die_richtung_fest
break;
}
}