rtc u stm32
Miroslav Mraz
mrazik na volny.cz
Neděle Prosinec 15 19:59:32 CET 2019
Určitě tam má být
RTC_ISR &= 0x20;
a ne
RTC_ISR &= ~0x20; ?
Mrazík
Dne 15. 12. 19 v 16:54 Fanda Kopriva napsal(a):
> Dobry den
>
> mam alarm s stm32l152 ,ktery mi ma posilat hlasku v 19.00.
>
> Zda se ze vsechno funguje ,az na tuto funkci ,ktera fungovala 4 dny a
> potom prestala.
>
> v prikladech od STM jsem nasel ,ze registr maskujou asi takto cas =
> RTC_TR & 0x007f7f7f ;
>
> A v manualu ukazujou ,ze na nepouzitych pozicich by mela byt nula ,takze
> ja to nemaskuju.
>
> V sms se mi to ukazuje spravne
>
> strcpy(pomsc, "Cas-");strcat(U1bo,pomsc);
> sprinti(pomsc,"%2x",hod);strcat(U1bo,pomsc);
> sprinti(pomsc,"%3x",minut); strcat(U1bo,pomsc);
>
> ukazuje Cas- 13.00 (mam tam chybu v bcd prevodu)
>
> Od alarmu jsem docela daleko ,tak nevim jestli tam mam jet to zkoumat.
>
> Setkali jste se s tim ,ze je to maskovani nutne a ze se tam tedy muze
> vyskytnout nejaka blbost v registru RTC_TR ???
>
> To by me totiz uklidnilo a opravil bych to az tam budu.
>
> Dekuju Fanda
>
>
>
> unsigned long hodiny,cas;
>
> unsigned int hod,minut,minutm;
>
> void RTCfce (void) {
>
> RTC_ISR &= 0x20; //synchro
> while (!((RTC_ISR & 0x20) || (timout>10000))) {timout++;} //initf
> if (timout>1000) rtcerror |= 4;
> cas = RTC_TR;
> RTC_ISR &= 0x20; //synchro
> while (!((RTC_ISR & 0x20) || (timout>10000))) {timout++;} //initf
> datum = RTC_DR & ~0x2000;
> }
>
>
> RTCfce ();hodiny = cas >> 8;hod = hodiny >> 8;minut = hodiny & 0xff;
>
> if ((hod==19) && (minut==0)) {if (minutm==9
> ){smskuju=1;minutm=5;smsopt=1;}} else minutm=9;
>
Další informace o konferenci Hw-list