Hallo,
@genus(n) wird bereits von Bascom nach $crystal berechnet und sorgt in diesem Fall für 9 µS Wartezeit, wir können das also unverändert übernehmen. Die restliche µS muss noch beackert werden. Bei den für 8 Mhz benötigten zusätzlichen 70 Takten kannst Du natürlich 70 NOPs einfügen, wäre aber nicht sonderlich elegant
. Also nehmen wir eine Schleife.
Der entsprechende Teil der MCS.LIB sieht dann so aus:
Code:
; MCS.LIB ANPASSUNG ------------------------------------------------------------
; FÜR 8 MHZ
_pulse_in5:
@genus(9) ; Sorgt für 9 µS Wartezeit und wird
; von Bascom nach $Crystal berechnet
; Warteschleife für die restliche µS (insgesamt 80 Takte)
push r17 ; 2 Zyklen
ldi R17, $16 ; warte 66 Zyklen
warte0:
dec R17
brne warte0
pop r17 ; 2 Zyklen
Ld r0,z ; 2 cycl. get pin state
And r0, r24 ; 1 cycl. get only the input pin state
Eor r0,r16 ; 1 cycl. xor with begin state
Brne _pulse_in_exit ; 2 cycl. ready ,state changed
Adiw xl,1 ; 2 cycl. counter
brne _pulse_in5 ; 2 cycl. again
;-------------------------------------------------------------------------------
Nach der Änderung noch von Bascom die Lib in die .lbx kompilieren lassen... fertig.
Grüße
Henrik
Lesezeichen