STM32F0 timer3

Michal Grunt michal.grunt na vynet.cz
Úterý Říjen 16 12:06:11 CEST 2012


Dekuju moc za vycerpavajici popis! Ted jsem to jenom letmo procetl, ale k veceru si k tomu sednu, vytisknu vse potrebne (abych se nemusel hrabat v PDFku, mohl si na stul rozlozit x papiru a cmarat si v nich)  a vyzkousim to. Koukam ze to opravdu neni nic jednoducheho. Nebylo by mozne, abyste napsal takovou jednoduchou kucharku pro casovace nebo nejaky strucny popis v par bodech na co nezapomenout atd.? Protoze to co popisujete (v podstate bod po bodu) jsem opravdu nikde nenasel. Ono to asi bude v datasheetu nebo refman91, jenomze ne tak prehledne a treba pri cteni uz ten kdo to psal predpokladal znalost neceho predesleho a ten kdo to nevi (zacatecnik, ktery chce vyzkouset danou funkci, ale obvod jeste poradne nezna) to dohromady dava dost tezko. Nebo odkud jste cerpal informace?

Na priklady jsem koukal, ale je tam prave ten problem, ze tam sice je sled prikazu (pouzivaji svoji knihovnu), ale z nich neni moc patrne co to za tim dela (skoda ze tam nejsou podrobnejsi komenty, jako ze nastavni registru xy atd.). Takze pokud je pak nutna nejaka uprava, je dost slozite to upravit.

Dekuji
Michal Grunt

________________________________________
Odesílatel: hw-list-bounces na list.hw.cz [hw-list-bounces na list.hw.cz] za uživatele Jan Waclawek [konfera na efton.sk]
Odesláno: 16. října 2012 10:14
Komu: HW-news
Předmět: RE: STM32F0 timer3

Aha.

Ako vravim, ten timer v ST32 (v podstate su vsetky pouzite typy len zjednodusujuce odvodeniny z jedneho velmi zloziteho) je fakt zlozity ako orloj, a toto je naozaj pomerne tazka uloha.

Ako nulte je treba si nakonfigurovat systemove hodiny pre jadro a jednotlive zbernice, potom zapnut hodiny pre danu periferiu (bit TIM3EN v registri RCC_APB1ENR - ja tu ich akoze kniznicu nepouzivam, podla mna je to uplne zbytocny a matuci medzikus), to uz pravdepodobne viete. Mozno nie je na skodu resetnut ten timer nastavenim a vynulovani bitu TIM3RST v RCC_APB1RSTR (z takeho dovodu, ze ak pouzivate ladiace berlicky typu JTAG/SWD, tak tie nemusia vygenerovat plnohodnotny reset a tym padom nie vsetky registre su v defaultnych stavoch, z toho potom mozu vzniknut rozne "zaujimave" efekty).

Ako prve je namapovat dany pin (povedzme ze PC8) ako alternativnu funkciu (TIM3_CH3), to predpokladam ze uz viete (v registroch GPIO). Ze aj PB0 ma jednu z alternativnych funkcii TIM3_CH3, tak tym si hlavu nelamte - jednoducho PB0 na tuto funkciu nenastavite a bodka.

Dalej nastavite TIM3_CH3 ako vystup z compare jednotky (a teda nie vstup do capture jednotky; t.j. ked pozerate na blokovku timera, tak vyberiete ho ako "jeden zo 4 vystupov vpravo" naproti moznosti "jeden zo 4 vstupov vlavo". Z tej blokovky nevyplyva ze to je "bud/alebo", ale je to naozaj tak.). Nastavuje sa to bitmi OC3S v registri TIM3_CCMR2 (ale je to po resete nastavene na output, takze vlastne nic tam netreba zapisovat). Tym je mimochodom automaticky dane aj to, ze bude dany pin vystupom (to nie je z user manualu vobec jasne, vid napr. https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2fpublic%2fSTe2ecommunities%2fmcu%2fLists%2fcortex_mx_stm32%2fAlternate%20Function%20Input%20on%20STM32F4&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&TopicsView=https%3A%2F%2Fmy.st.com%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FAllItems.aspx&currentviews=150 )

Potom nastavite rezim pre vystup. Moznosti je viac, ale ked chcete len jednoduche 1:1 blikanie, tak si nastavte "Toggle". Nastavuje sa to bitmi OC3M tiez v registri TIM3_CCMR2 (pre popis si pozrite bity OC1M v registri TIM3_CCMR1, resp.text v danej kapitole, ale z toho textu sa vela nedozviete, skor Vas len zbytocne zmatie). Toggle znamena, ze vzdy ked sa aktualna hodnota citaca (TIM3_CNT) rovna hodnote v capture/compare registri (TIM3_CCR3), tak sa zmeni "hodnota" vystupu.

Teraz si nastavte samotny citac. Najprv zvolte zdroj hodin zo systemovych hodin resp. z hodin APB zbernice, na ktorom je dany timer zaveseny (APB1), bity SMS v TIM3_SMCR (ale znova to staci nechat tak, lebo to je defaultna hodnota). Potom si povedzte, ako rychlo chcete blikat, nastavenim TIM3_ARR registra (na nenulovu hodnotu). Ak by to malo takto blikat prilis rychlo (TIM3 je 16-bitovy, t.j. ak nemate systemove hodiny nejako nezvycajne nizko nastavene, tak to naozaj bude prilis rychlo), tak nastavte este aj nejaku vhodnu hodnotu prescalera do TIM3_PSC.

Napokon nastavte compare hodnotu do TIM3_CCR3 na cokolvek v rozsahu, v ktorom timer chodi, t.j. od 0 do TIM3_ARR.

To je viacmenej vsetko, ostatne registre treba nechat v defaultnych stavoch a malo by to blikat.


Tak co, bolo to tazke? :-)


wek




----- Original Message ---------------

Subject: RE: STM32F0 timer3
   From: Michal Grunt <michal.grunt na vynet.cz>
   Date: Tue, 16 Oct 2012 09:05:57 +0200
     To: HW-news <hw-list na list.hw.cz>

>Rozblikat pomoci casovace LED na STM32F0 discovery kitu, ktera je pripojena na PC8(9) - LEDky jsou dve tak jednu z nich.
>
>MG
>
>________________________________________
>Odesílatel: hw-list-bounces na list.hw.cz [hw-list-bounces na list.hw.cz] za u¾ivatele Jan Waclawek [konfera na efton.sk]
>Odesláno: 16. øíjna 2012 0:16
>Komu: HW-news
>Pøedmìt: Re: STM32F0 timer3
>
>Timery u ST32 su velmi zlozite. Nemam pred sebou manual k f0, ale s najvacsou pravdepodobnostou su vo vsetkych radoch rovnake, a tie styri vstupy a vystupy su do a z capture/compare jednotky.
>
>Co chcete dosiahnut?
>
>wek
>
>
>
>Michal Grunt <michal.grunt na vynet.cz> wrote:
>
>>Jak presne funguje timer3 u STM32F0? Koukal jsem na blokove schema a z
>>leva to ma 4 vstupy a na prave strane jsou 4 vystupy. Navic dle
>>datasheetu jsou na timer 3 namapovany portu PB0 (ch3) a PC8 (ch3). Z
>>datasheetu a z refman9 informace nejak nedokazu vytahnout.
>>
>>Dekuji, MG

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list