Code:
;*****************************INIT-Mode 1 Timer0********************************************************************
mode0_T0_init:;NORMAL_MODE TOP = $FF, UpD OCR on IMMEDIATE, FLAG MAX
;rcall A0_ch_en ;out aktivieren
;rcall A0_ch_load ;Zeitwert laden
;rcall B0_ch_en ;out aktivieren
;rcall B0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(0<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(0<<COM0A1|0<<COM0A0|0<<COM0B1|0<<COM0B0|0<<WGM01|0<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|0<<OCIE0A|0<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode1_T0_init:;PWM PHASE CORRECT MODE TOP = $FF, UpD OCR on TOP, FLAG BOTTOM
rcall A0_ch_en ;out aktivieren
rcall A0_ch_load ;Zeitwert laden
rcall B0_ch_en ;out aktivieren
rcall B0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(0<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(0<<COM0A1|1<<COM0A0|0<<COM0B1|1<<COM0B0|0<<WGM01|1<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|0<<OCIE0A|0<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode2_T0_init:;CTC MODE TOP = OCR0A, UpD OCR on immediate, FLAG MAX
; rcall A0_ch_en ;out aktivieren
rcall B0_ch_en ;out aktivieren
rcall A0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(0<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(0<<COM0A1|1<<COM0A0|0<<COM0B1|1<<COM0B0|1<<WGM01|0<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|0<<OCIE0A|1<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode3_T0_init:;FAST PWM MODE TOP = $FF, UpD OCR on TOP, FLAG MAX
rcall A0_ch_en ;out aktivieren
rcall A0_ch_load ;Zeitwert laden
rcall B0_ch_en ;out aktivieren
rcall B0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(0<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(1<<COM0A1|0<<COM0A0|1<<COM0B1|0<<COM0B0|1<<WGM01|1<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|1<<OCIE0A|1<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
;mode4_T0_init: RESERVED
mode5_T0_init:;PWM PHASE CORRECT MODE TOP=OCR0A, UpD OCR on TOP, FLAG BOTTOM
rcall A0_ch_en ;out aktivieren
;rcall B0_ch_en ;out aktivieren
rcall A0_ch_load ;Zeitwert laden
;rcall B0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(1<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(0<<COM0A1|1<<COM0A0|0<<COM0B1|0<<COM0B0|0<<WGM01|1<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|1<<OCIE0A|0<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
;mode6_T0_init: RESERVED
mode7_T0_init:;FAST CORRECT MODE TOP=OCR0A, UpD OCR on TOP, FLAG TOP
;rcall A0_ch_en ;out aktivieren
rcall B0_ch_en ;out aktivieren
rcall A0_ch_load ;Zeitwert laden
in temp0,TCCR0B
ori temp0,(1<<WGM02) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0B,temp0
in temp0,TCCR0A
ori temp0,(0<<COM0A1|0<<COM0A0|1<<COM0B1|1<<COM0B0|1<<WGM01|1<<WGM00) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR0A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE0|0<<OCIE0A|1<<OCIE0B) ;INT für OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
;**********Channel load
A0_ch_load:
ldi temp0,$9d ;Toggeln oder Clr/Set aktiv muss OCR1Al-Register beachtet werden um
sts OCRa0,temp0 ;____--- oder _------ zu erreichen
out OCR0A,temp0
ret
A0_ch_en:
sbi ddrb,2 ;output aktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
A0_ch_dis:
cbi ddrb,2 ;output deaktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
B0_ch_load:
ldi temp0,$80 ;Toggeln oder Clr/Set aktiv muss OCR1Bl-Register beachtet werden um
sts OCRb0,temp0 ;____--- oder _------ zu erreichen
out OCR0B,temp0
ret
B0_ch_en:
sbi ddrd,5 ;output aktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
B0_ch_dis:
cbi ddrd,5 ;output deaktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
prescaler_T0_on:
in temp0,TCCR0B
ori temp0,(0<<CS02|0<<CS01|1<<CS00) ;schmeißt den counter an
out TCCR0B,temp0
sei
ret
prescaler_T0_off:
in temp0,TCCR0B
andi temp0,(0<<CS02|0<<CS01|0<<CS00) ;stoppt den counter an
out TCCR0B,temp0
ret
;*******ISR
INT_OVF0:
;$0006
;Achtung T0 muss hier neu geladen werden und dann die eigene IDEE
reti
INT_OC0A: ;$000d Timer/Counter0 Compare Match A
reti
INT_OC0B: ;$000e Timer/Counter0 Compare Match B
reti
;******************************Init-Modes des Timers1***************************************************************
mode0_T1_init:;NORMAL_MODE OCR1A h:l,OCR1B h:l TOP=$FFFF, UpD OCR on IMMEDIATE, FLAG MAX
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(0<<COM1A1|0<<COM1A0|0<<COM1B1|0<<COM1B0|0<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(1<<TOIE1|0<<OCIE1A|0<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode1_T1_init:;8bit phase correct mode OCR1A h:l,OCR1B h:l TOP=$00FF, UpDOCRx on TOP, FLAG BOTTOM
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|1<<COM1A0|1<<COM1B1|1<<COM1B0|0<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode2_T1_init:;9bit phase correct mode OCR1A h:l,OCR1B h:l TOP=$01FF, UpDOCRx on TOP, FLAG BOTTOM
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|1<<COM1A0|1<<COM1B1|1<<COM1B0|1<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode3_T1_init:;10bit phase correct mode OCR1A h:l,OCR1B h:l TOP=$03FF, UpDOCRx on TOP, FLAG BOTTOM
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|1<<COM1A0|1<<COM1B1|1<<COM1B0|1<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode4_T1_init:;CTC mode OCR1A h:l,OCR1B h:l TOP=OCR1A, UpDOCRx on IMMEDIATE, FLAG MAX
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(0<<COM1A1|1<<COM1A0|0<<COM1B1|1<<COM1B0|0<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode5_T1_init:;FAST PWM 8bit OCR1A h:l,OCR1B h:l TOP=$00FF, UpDOCRx on TOP, FLAG TOP
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|0<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode6_T1_init:;FAST PWM 9bit OCR1A h:l,OCR1B h:l TOP=$01FF, UpDOCRx on TOP, FLAG TOP
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode7_T1_init:;FAST PWM 10bit OCR1A h:l,OCR1B h:l TOP=$01FF, UpDOCRx on TOP, FLAG TOP
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|0<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
;hier mit SIMULATOR 2 arbeiten
mode8_T1_init:;PWM,PhaseFrequenzyCorrect OCR1A h:l,OCR1B h:l TOP=ICR1/OCR1A, UpDOCRx on BOT, FLAG BOT
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
; rcall A_ch_load ;Zeitwert laden
; rcall B_ch_load ;Zeitwert laden
rcall ICR_load
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|1<<COM1A0|1<<COM1B1|1<<COM1B0|0<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|0<<OCIE1A|0<<OCIE1B|1<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode9_T1_init:;PWM,PhaseFrequenzyCorrect OCR1A h:l,OCR1B h:l TOP=OCR1A, UpDOCRx on BOT, FLAG BOT
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|1<<ICES1|1<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|0<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode10_T1_init:;PWM,PahseCorrect OCR1A h:l,OCR1B h:l TOP=ICR1, UpDOCRx on TOP, FLAG BOT
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
;rcall ICR_load
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode11_T1_init:;PWM,PahseCorrect OCR1A h:l,OCR1B h:l TOP=OCR1A, UpDOCRx on TOP, FLAG BOT
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|0<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|1<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
;hier mit SIMULATOR 2 arbeiten
mode12_T1_init:;CTC OCR1A h:l,OCR1B h:l TOP=ICR1, UpDOCRx on Immediate, FLAG MAX
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
;rcall A_ch_load ;Zeitwert laden
;rcall B_ch_load ;Zeitwert laden
rcall ICR_load
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(0<<COM1A1|1<<COM1A0|0<<COM1B1|1<<COM1B0|0<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|0<<OCIE1A|0<<OCIE1B|1<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode13_T1_init:;RESERVED not activated
/* ;rcall A_ch_en ;out aktivieren
;rcall B_ch_en ;out aktivieren
;rcall A_ch_load ;Zeitwert laden
;rcall B_ch_load ;Zeitwert laden
ldi temp0,(1<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|0<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|0<<OCIE1A|0<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
*/ ret
;hier mit SIMULATOR 2 arbeiten
mode14_T1_init:;FAST PWM OCR1A h:l,OCR1B h:l TOP=ICR1, UpDOCRx on TOP, FLAG TOP
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
;rcall A_ch_load ;Zeitwert laden
;rcall B_ch_load ;Zeitwert laden
rcall ICR_load
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|0<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|0<<OCIE1A|0<<OCIE1B|1<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
mode15_T1_init:;FAST PWM OCR1A h:l,OCR1B h:l TOP=OCR1A, UpDOCRx on TOP, FLAG TOP
rcall A_ch_en ;out aktivieren
rcall B_ch_en ;out aktivieren
rcall A_ch_load ;Zeitwert laden
;rcall B_ch_load ;Zeitwert laden
ldi temp0,(0<<ICNC1|0<<ICES1|1<<WGM13|1<<WGM12) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1B,temp0
in temp0,TCCR1A
ori temp0,(1<<COM1A1|0<<COM1A0|1<<COM1B1|0<<COM1B0|1<<WGM11|1<<WGM10) ;zum Toggeln COM1xA/B Einstellungen beachten!!!!!!!!!
out TCCR1A,temp0
in temp0,TIMSK
ori temp0,(0<<TOIE1|0<<OCIE1A|1<<OCIE1B|0<<ICIE1) ;INT für ICP=off, OCIE1A=off, OCIE1B=off, OVFL=1
out TIMSK,temp0
ret
prescaler_T1_on:
in temp0,TCCR1B
ori temp0,(0<<CS12|0<<CS11|1<<CS10) ;schmeißt den counter an
out TCCR1B,temp0
sei
ret
prescaler_T1_off:
in temp0,TCCR1B
andi temp0,(0<<CS12|0<<CS11|0<<CS10) ;stoppt den counter an
out TCCR1B,temp0
ret
;**********Channel load
A_ch_load:
ldi temp0,$00 ;Toggeln oder Clr/Set aktiv muss OCR1Ah-Register beachtet werden um
sts OCRa1h,temp0 ;____--- oder _------ zu erreichen
out OCR1ah,temp0
ldi temp0,$1d ;Toggeln oder Clr/Set aktiv muss OCR1Al-Register beachtet werden um
sts OCRa1l,temp0 ;____--- oder _------ zu erreichen
out OCR1al,temp0
ret
A_ch_en:sbi ddrb,3 ;output aktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
A_ch_dis:
cbi ddrb,3 ;output deaktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
B_ch_load:
ldi temp0,$00 ;Toggeln oder Clr/Set aktiv muss OCR1Bh-Register beachtet werden um
sts OCRb1h,temp0 ;____--- oder _------ zu erreichen
out OCR1bh,temp0
ldi temp0,$80 ;Toggeln oder Clr/Set aktiv muss OCR1Bl-Register beachtet werden um
sts OCRb1l,temp0 ;____--- oder _------ zu erreichen
out OCR1bl,temp0
ret
B_ch_en:sbi ddrb,4 ;output aktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
B_ch_dis:
cbi ddrb,4 ;output deaktivieren wenn Toggeln am PINB1=OCR1A erwünscht
ret
ICR_load:
ldi temp0,$00 ;Toggeln oder Clr/Set aktiv muss OCR1Bh-Register beachtet werden um
sts ICR1xh,temp0 ;____--- oder _------ zu erreichen
out ICR1h,temp0
ldi temp0,$80 ;Toggeln oder Clr/Set aktiv muss OCR1Bl-Register beachtet werden um
sts ICR1xl,temp0 ;____--- oder _------ zu erreichen
out ICR1l,temp0
ret
T1_clr:
clr temp0
out TCNT1h,temp0
out TCNT1l,temp0
ret
;**********ISR
INT_ICP1: ;$0005 Timer/Counter1 Capture Event
;ICRH:L wird vom Counter TCNT1H:L bei Steigender/Fallender Flanke beschrieben
reti
INT_OC1A: ;$0006 Timer/Counter1 Compare Match A
push temp0
lds temp0,OCRa1h ;Toggeln oder Clr/Set aktiv muss OCR1Ah-Register beachtet werden um
out OCR1Ah,temp0 ;____--- oder _------ zu erreichen
lds temp0,OCRa1l ;Toggeln oder Clr/Set aktiv muss OCR1Al-Register beachtet werden um
out OCR1Al,temp0 ;____--- oder _------ zu erreichen
sts OCRa1l,temp0
pop temp0
reti
INT_OC1B: ;$0007 Timer/Counter1 Compare Match B
push temp0
lds temp0,OCRb1h ;Toggeln oder Clr/Set aktiv muss OCR1Bh-Register beachtet werden um
out OCR1Bh,temp0 ;____--- oder _------ zu erreichen
lds temp0,OCRb1l ;Toggeln oder Clr/Set aktiv muss OCR1Bl-Register beachtet werden um
out OCR1Bl,temp0 ;____--- oder _------ zu erreichen
pop temp0
reti
INT_OVF1:
;$0008 Timer/Counter1 Overflow
reti
Lesezeichen