STM3FF407 a RTC

Roman Vostřel vostrel na lit.cz
Čtvrtek Červen 18 12:16:48 CEST 2015


Zatím si s tím jen doma hraju a učím jak na to.  Takže pro změnu 
nastavení zdroje hodin potřebuji resetovat backup domain. To znamená 
stačí nasatvit bit BDRST? Pak už můžu zapsat nové hodnoty pro bit 8 a 9.
To je informace co jsem potřeboval. Až se dostanu domů, tak vyzkouším.


Dne 17.6.2015 v 9:59 Jan Waclawek napsal(a):
> RCC_BDCR    0b 0000 0000 0000 0000 1000 0001 0000 0000
>
> To znamena, ze mate vybraty LSE ako zdroj hodin RTC, nie? Ak ten LSE nejde,
> potom RTC nema hodiny, a ten init v RTC neprebehne, na to sa upozornuje v
> datasheete.
>
> Tipujem, ze ste si niekedy predtym skusili nastavit ten bit 8, a zmenit to
> nie je trivialne, precitajte si co sa pise v RM okolo RCC_BDCR.RTCSEL
> (vyzaduje si to reset backup domain, toggle RCC_BDCR.BDRST).
>
>
> Dalsich par poznamok:
>
> Tie definicie bitfieldov mate odkial/ako? Mate ich volatile (ako celok
> alebo polozka po polozke)? Neprehadze prekladac pristup k nim? Volatile
> nema presnu definiciu, a nie kazdy prekladac je v takychto marginalnych
> zalezitostiach dostatocne konzervativny.
>
> Mimochodom, uvedomujete si, ze pristup k polozkam v bitfieldoch (ako aj
> pristup cez bit-bandovu oblast) vedie k RMW, co moze mat u niektorych
> hardwarovych registrov vedlajsie efekty (netvrdim ze je to v tomto
> pripade, len je dobre to mat na pamati). Aj ked pouzivate bitfieldy,
> niekedy (casto) je lepsie priame priradenie; v pripade bitfieldov je to
> mozne realizovat pomocou compound literals (C99 6.5.2.5, vyzera to ako
> preypovany inicializator).
>
> Skusali ste toto vsetko robit v debuggeri rucne? Nie vzdy sa tak da odhalit
> problem, ale niekedy ano, najma ak mate vizualny debugger ktory spatne
> zobrazi vycitanu hodnotu (u holeho gdb to musite robit "rucne"); to vie
> odhalit rozne chyby typu "ak zabudnem povolit toto tak sa mi nepodari
> nastavit hento". Neodhali to vsak problemy suvisiace s casovanim v SoC
> ktorym tieto armoidy su.
>
> Inak za PWR_CR.DBP = 1 doporucujem dat spatne citanie stavu PWR_CR (staci
> precitat cely register, netreba skumat jednotlive bity), pretoze PWR je na
> APB1 zbernici ktora u 'F4xx typicky bezi na AHBCLK/4 takze je za
> buffrom/synchronizatorom v AHB/APB bridge, kdezto RCC je priamo na AHB1,
> takze sa mi stavalo, ze ked kompilator dal tie dva pristupy hned za seba,
> tak sa do RCC_BDCR registra nezapisalo (*). Ale to by nemal byt Vas
> problem, lebo Vy po nastaveni PWR_CR.DBP mate zapis do RCC_CSR co nie je v
> backup domene, takze by malo byt dost casu po ten zapis do BDCR (naviac
> ten zapis podla vsetkeho aj prebehol).
>
> wek
>
>
> (*)
> https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=%2Fpublic%2FSTe2ecommunities%2Fmcu%2FLists%2Fcortex_mx_stm32%2FEnabling%20LSE&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=401
>
>
>
>
>
> ----- Original Message ---------------
>
> Subject: Re: STM3FF407 a RTC
>     From: Roman Vostřel <vostrel na lit.cz>
>     Date: Tue, 16 Jun 2015 19:24:33 +0200
>       To: HW-news <hw-list na list.hw.cz>
>
>> Nastavil jsem breakpoint  na smyčku s podmínkou INITF a v RTC_ISR je 0b
>> 0000 0000 0000 0000 0000 0000 0000 0111, RCC_BDCR    0b 0000 0000 0000
>> 0000 1000 0001 0000 0000 ,RCC_CSR    0b 0001 1110 0000 0000 0000 0000
>> 0000 0011
>>
>> Nevím proč tam není nastaven bit7 RTC_ISR.INIT na 1?.
>>
>>
>> Dne 16.6.2015 v 18:28 Jan Waclawek napsal(a):
>>> A ten LSI bezi? Nebolo by treba pockat najprv kym sa rozbehne, t.j. po
>>> nastaveni RCC_CSR.LSION pockat kym sa nastavi RCC_CSR.LSIRDY?
>>>
>>> wek
>>>
>>>
>>> ----- Original Message ---------------
>>>
>>>> Nedaří se mi zprovoznit RTC u STM32F407 z LSI hodin. Nedočkám se 1 v
>>>> RTC_ISR.INITF.  Můµete mi poradit na co jsem při inicializaci hodin
>>>> zapomněl?
>>>>
>>>>
>>>> void RTCInit(){
>>>> // Init power and clock for RTC
>>>>
>>>> RCC_APB1ENR.PWREN = 1;         // Power interface clock enable
>>>> PWR_CR.DBP = 1;
>>>>
>>>> RCC_CSR. LSION=1;                //povolit interní osclilátor
>>>>
>>>> RCC_BDCR.RTCSEL0 = 0;        //nastavit na interní oscilátor
>>>> RCC_BDCR.RTCSEL1 = 1;
>>>>
>>>> RCC_BDCR.RTCEN = 1;
>>>>
>>>>
>>>> RTC_WPR = 0xCA;   //unlock write protection
>>>> RTC_WPR = 0x53;   //unlock write protection
>>>>
>>>> RTC_ISR.INIT = 1;
>>>>
>>>> while(RTC_ISR.INITF == 0)
>>>> { }
>>>>
>>>> RTC_PRER = 0x7f00ff;  //  set   SynchPrediv to FF and AsynchPrediv to 7F
>>>> RTC_PRER = 0x7f00ff;  //  set   SynchPrediv to FF and AsynchPrediv to 7F
>>>>
>>>> RTC_TR = 0x103500; //setting time to 12.35.00
>>>> RTC_DR = 0x150718;  // set date to  2012-07-18
>>>>
>>>> RTC_ISR.INIT = 0;
>>>>
>>>> RTC_WPR = 0xFF;
>>>> }
>>> _______________________________________________
>>> HW-list mailing list  -  sponsored by www.HW.cz
>>> Hw-list na list.hw.cz
>>> http://list.hw.cz/mailman/listinfo/hw-list
>>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
> _______________________________________________
> 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