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:
Nach der Änderung noch von Bascom die Lib in die .lbx kompilieren lassen... fertig.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 ;-------------------------------------------------------------------------------
Grüße
Henrik







Zitieren

Lesezeichen