Witajcie,
Próbujê uruchomiæ timer1 na AT91SAM7S512. Na pocz±tek skopiowa³em z noty Atmela przyk³ad z PWM (
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³...