logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Analog comparator w tinny2313

astony 11 Kwi 2009 20:30 1164 4
REKLAMA
  • #1 6403129
    astony
    Poziom 14  
    Witam
    Próbuję wykorzystać układ comparatora do przełączania LED'a.
    Na wejściach jest dzielnik z ustawionym napięciem na 3,1V, na drugim fotorezystor +R (1,8V-4,4V). Niestety poniższy fragment kodu nie dziala.
    
    ldi	acc,0b11111100
    	out	portb,acc
    	andi	acc,0b11111100
    	out	ddrb,acc
    	cbi	acsr,acd	;analog comparator disable
    	cbi	acsr,acbg	;bandgap
    	cbi	acsr,acie	;interupt enable
    	sbi	acsr,acic	;input capture enable
    	sbi	acsr,acis0	;on rising
    	sbi	acsr,acis1	;on rising
    	clr	r16
    	out	didr,r16
    	sbi	acsr,acd
    ax1:	sbic	acsr,aco
    	rjmp	ax1
    	cbi	portb,7		;led on
    	ldi	r19,tck1024
    	ldi	r22,d15ms
    	rcall	delay
    ax2:	sbis	acsr,aco
    	rjmp	ax2
    	sbi	portb,7		;led off
    	rjmp	ax1
    

    Co tu jest źle?:twisted:
    Pomocy
  • REKLAMA
  • #2 6404731
    ZbeeGin
    Poziom 39  
    Najpierw odblokowywujesz (niepotrzebnie, bo domyślnie jest włączony) komparator przez:

       cbi   acsr,acd   ;analog comparator disable


    A później jak już skonfigurujesz sobie przechwytywanie licznika (po co?) i zablokujesz część cyfrową... wyłączasz komparator:

       out   didr,r16 
       sbi   acsr,acd


    I dziwisz się jeszcze, że kod nie działa! :evil:
  • REKLAMA
  • REKLAMA
  • #4 6404852
    ZbeeGin
    Poziom 39  
    Proponuję następnym razem nieco pooszczędzać w kodzie i pisać go bardziej przejrzyście:

       ldi   acc, 0b11111100 
       out   PORTB, acc 
       andi  acc, 0b11111100 
       out   DDRB, acc 
    
       ; analog enable, no bandgap, capture enable - rising edge
       ldi   acc, (1<<ACIC)|(1<<ACIS1)|(1<<ACIS0)
       out   ACSR, acc
       clr   acc 
       out   DIDR, acc 
    
    ax1:
       sbic  ACSR, ACO 
       rjmp  ax1 
       cbi   PORTB, 7      ;led on 
       ldi   r19, tck1024 
       ldi   r22, d15ms 
       rcall delay 
       
    ax2:   
       sbis  ACSR, ACO 
       rjmp  ax2 
       sbi   PORTB, 7      ;led off 
       rjmp  ax1


    Skoro temat wyczerpany to kliknij w kłódkę i zamknij.
REKLAMA