eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikatimer w SAM7timer w SAM7
  • Data: 2009-08-25 08:36:01
    Temat: timer w SAM7
    Od: "marcin" <m...@n...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Witajcie,

    Próbuję uruchomić timer1 na AT91SAM7S512. Na początek skopiowałem z noty
    Atmela przykład z PWM (
    http://www.atmel.com/dyn/resources/prod_documents/do
    c2682.pdf ). SAM7
    pracuje pod kontrolą freeRTOS. Kod wygląda tak:

    void initTimer1()
    {
    AT91C_BASE_TC1->TC_CCR = TC_CLKDIS ; /* Disable the Clock Counter
    */
    Io_SetPeripheralB( IO_PA15 );
    Io_SetPeripheralB( IO_PA16 );
    Io_PioDisable( IO_PA15 );
    Io_PioDisable( IO_PA16 );
    // *PIO_PDR = (1<<15) ; /* Define TIOA1 and TIOB1 as peripheral */
    // * Timer/Counter 1 mode configuration
    AT91C_BASE_TC1->TC_CMR =
    TC_BSWTRG_SET_OUTPUT | /* BSWTRG :
    software trigger set TIOB */
    TC_BCPC_TOGGLE_OUTPUT | /* BCPC :
    Register C compare toggle TIOB */
    TC_BCPB_TOGGLE_OUTPUT | /* BCPB :
    Register B compare toggle TIOB */
    TC_ASWTRG_SET_OUTPUT | /* ASWTRG :
    software trigger set TIOA */
    TC_ACPC_TOGGLE_OUTPUT | /* ACPC :
    Register C compare toggle TIOA */
    TC_ACPA_TOGGLE_OUTPUT | /* ACPA :
    Register A compare toggle TIOA */
    TC_WAVE | /* WAVE :
    Waveform mode */
    TC_CPCTRG | /* CPCTRG :
    Register C compare trigger ena */
    TC_EEVT_XC0 | /* EEVT :
    XC0 as external event (TIOB=out */
    TC_CLKS_MCK2 ; /* TCCLKS : MCK
    / 2 */
    // Compare registers initialization
    AT91C_BASE_TC1->TC_RC = 0x80E8 ; /* 1kHz PWM
    generation */
    AT91C_BASE_TC1->TC_RB = 0x4074 ; /* 30% duty cycle on
    TIOB1 */
    AT91C_BASE_TC1->TC_RA = 0x26AC ; /* 50% duty cycle on
    TIOA1 */
    AT91C_BASE_TC1->TC_CCR = TC_CLKEN ; /* Enable the Clock
    counter */
    AT91C_BASE_TC1->TC_CCR = TC_SWTRG ; /* Trig the timer */
    }

    Wg. noty Atmela po wykonaniu tego kodu powinienem mieć na TIOA1 i TIOB1 dwa
    przebiegi PWM 1kHz, niestety jest głucha cisza. Pewnie popełniam jakiś
    "oczywisty błąd". Z tego co się orientuję, to freeRTOS włada jedynie timerem
    TC0, TC1 jest do pełnej dyspozycji programisty. Nie mam pomysłu, to mój
    pierwszy program na ARM i freeRTOS zarazem, i utknąłem w ciemnej d...
    Ogólnie system żyje, mogę majtać tymi liniami z poziomu PIO, timingi i
    wszelkie inne objawy życia freeRTOS są w porządku.
    Proszę o pomoc jeżeli ktoś ma jakiś pomysł...
    --
    Pozdrawiam grupę!
    Marcin


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: