Mal rein rechnerisch...
Bastelmaus schrieb:
> Der Quarz hat 4MHz.
entspricht 0,25µs Periode.
> ...
> mit Optimierung (-O0) habe ich an der Portleitung 166kHz.
entspricht 6µs Periode = 24 Prozessortakte. Da für eine Periode
Ausgangstakt der Pin zweimal getoggelt werden muss, wird Deine Schleife
in 12 Takten abgearbeitet.
> mit Optimierung (-Os) habe ich an der Portleitung 285kHz.
entspricht 3,5µs Periode = 14 Prozessortakte. Da für eine Periode
Ausgangstakt der Pin zweimal getoggelt werden muss, wird Deine Schleife
in 7 Takten abgearbeitet.
Versuch in Assembler:
ldi r16,0x0F ;Vorbereitung Hilfsregister zum toggeln
loop: out PORTG,r16 ; 1 Takt
swap r16 ; 1 Takt, Bit toggeln
rjmp loop ; 2 Takte
Toggelt allerdings den gesamten Port G, also nicht perfekt, nicht
getestet, braucht 4 Takte für einen Durchlauf und Du bekommst 500kHz an
Deinem Pin raus. Schneller fällt mir nichts ein.
Reinhard