alle 2.17us löst der Ontimer0 aus
da ich aber nur eine genauigkeit von 100us brauche das ganze * 46
Müsste Funktionieren, ABER:

Du musst Tcounter wieder auf 0 setzen, wenn er bei 46 war!
Hast du das Signal mal gemessen, ich würde vermuten, dass es bei ca 557 uS liegt. Vielleicht ist ja die Zeit 2,71 uS an, der Rest aus zu kurz? Was willst du für einen Duty cycle. Warum nicht 50:50?

If Tcounter >= 23 then
xport = 1
else
xport = 0
end if

if Tcouner = 46 then
Tcounter = 0
end if

MFG Moritz