Ahoj potreboval by som poradiť s časovačom na Atmega8. Nejde mi rozbehať rýchly PWM režím na časovači 2.
.include "m16def.inc"
.def cas0=r15
.def cas1a=r14
.def cas1b=r13
.def cas2=r12
.def temp1=r16 //pomocný register
.def temp2=r29
.def temp3=r30
.def temp4=r31
.def led1=r17 //rosvecuje led
.def led2=r18
.def led3=r19
.def led4=r20
.def led5=r21
.def led6=r22
.def led7=r23
.def led8=r24
.def led9=r25
.def led10=r26
.def led11=r27
.def led12=r28
.equ casovaca=64 //šírka impulzu
.equ casovacb=191
.equ casovac2=126
//***************************************************************************************************
ldi temp1,low(ramend)
out spl,temp1
ldi temp1,high(ramend)
out sph,temp1
ldi temp1,7 // nastavý výstupy
out ddrb,temp1
/********************************************************************
nastavenie časovačov
*********************************************************************/
ldi temp1,casovaca
out ocr1bl,temp1
ldi temp1,casovacb
out ocr1al,temp1
ldi temp1,casovac2
out ocr2,temp1
// nastavy casovace, preddelicka 1
ldi temp1,(1<<com1a0)|(1<<com1a1)|(1<<wgm10)|(0<<com1b0)|(1<<com1b1)
mov cas1a,temp1
ldi temp1,(0<<cs12)|(0<<cs11)|(1<<cs10)
mov cas1b,temp1
ldi temp1,(1<<wgm20)|(1<<com20)|(0<<cs22)|(0<<cs21)|(1<<cs20)
mov cas2,temp1
ldi temp1,(1<<wgm20)|(1<<wgm21)|(1<<com21)|(0<<com20)|(0<<cs22)|(0<<cs21)|(1<<cs00)
mov cas2,temp1
out tccr1a,cas1a
out tccr1b,cas1b
// rcall cakaj1
out tccr2,cas2
slucka:
nop
rjmp slucka
cakaj1: // caka 64 period
ldi temp1,16
cakaj1_a:
ldi temp2,1
cakaj1_b:
ldi temp3,1
cakaj1_c:
dec temp3
brne cakaj1_c
dec temp2
brne cakaj1_b
dec temp1
brne cakaj1_a
nop
nop
ret
Prosím poradťe.