eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikatimer w SAM7timer w SAM7
  • Path: news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.neostrada.pl!atlantis.news.
    neostrada.pl!news.neostrada.pl!not-for-mail
    From: "marcin" <m...@n...pl>
    Newsgroups: pl.misc.elektronika
    Subject: timer w SAM7
    Date: Tue, 25 Aug 2009 10:36:01 +0200
    Organization: TP - http://www.tp.pl/
    Lines: 63
    Message-ID: <h708cm$h85$1@nemesis.news.neostrada.pl>
    NNTP-Posting-Host: igu50.internetdsl.tpnet.pl
    X-Trace: nemesis.news.neostrada.pl 1251189974 17669 79.189.176.50 (25 Aug 2009
    08:46:14 GMT)
    X-Complaints-To: u...@n...neostrada.pl
    NNTP-Posting-Date: Tue, 25 Aug 2009 08:46:14 +0000 (UTC)
    X-Priority: 3
    X-MSMail-Priority: Normal
    X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
    X-RFC2646: Format=Flowed; Original
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:569720
    [ ukryj 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: