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

[ATtiny26][Assembler]Problem z generatorem na TC1

slawekjurek 08 Mar 2009 21:32 824 2
  • #1 6255321
    slawekjurek
    Poziom 14  
    Witam, w ATtiny26 mam problem z właściwą inicjalizacją Timer/Counter1, tak aby na wyprowadzeniu PB3 (OC1B) pojawiła się fala prostokątna o zadanej programowo częstotliwości.
    Zaprogramowałem procka takim kodem:

    ...
    ldi R16,0x80
    rcall TC1Init
    ...
    ;* ;TIMER/COUNTER 1 init *
    TC1Init:
    push R16
    sbi DDRB,3
    cbi PORTB,3 ;na wszelki wypadek
    ldi R16,(1<<CS10)|(1<<CS11)|(1<<CS12)|(1<<CS13)|(1<<CTC1) ; Timer clock = system clock / 16384 & CTC mode ON
    out TCCR1B,R16

    ldi R16,1<<COM1B0 ; toggle output line OC1B
    out TCCR1A,R16

    pop R16
    out OCR1B,R16 ; value of generating freq
    ret


    Kod ten powoduje ustawienie na PB3 jedynki logicznej i na tym koniec...
    zero fali prostokątnej (oglądałem oscyloskopem), obojętnie zresztą jak jest ustawiony prescaller CS10-CS13 oraz jaką wartością ładuję OCR1B.
    Pomocy, co robię nie tak ?
  • Pomocny post
    #2 6255688
    zumek
    Poziom 39  
    Skoro ustawiłeś bit CTC1, to sprawdź w dokumentacji, do czego on konkretnie służy.
  • #3 6256540
    slawekjurek
    Poziom 14  
    Czyli wychodzi na to, że tryb CTC jest dostępny wyłącznie z rejestrem OCR1C. Dzięki wielkie! Czytałem ten fragment dokumentacji z 1000 razy i jakoś wydawało mi się naturalne, że wyjście OC1B jest przyporządkowane do OCR1B, a tu zdziwko :) Pozdrawiam i jeszcze raz dziękuję.
REKLAMA