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