merhaba forum,
aşağıdaki resimdeki gibi usb üzerinden blue pill RTC sini ayarlıyorum
ve sorguluyorum
saati set etmede sorun yok ama tarihi set edince ediliyor fakat enerjiyi kesip tekrar verince
saati hatırlıyor takvimi sıfırlıyor - Vbat 3.3V lityum pil bağlı
:-[
init kodu şu şekilde
static void MX_RTC_Init(void)
{
/* USER CODE BEGIN RTC_Init 0 */
/* USER CODE END RTC_Init 0 */
RTC_TimeTypeDef sTime = {0};
RTC_DateTypeDef DateToUpdate = {0};
/* USER CODE BEGIN RTC_Init 1 */
/* USER CODE END RTC_Init 1 */
/** Initialize RTC Only
*/
hrtc.Instance = RTC;
hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN Check_RTC_BKUP */
/* USER CODE END Check_RTC_BKUP */
/** Initialize RTC and set the Time and Date
*/ /*
sTime.Hours = 0;
sTime.Minutes = 0;
sTime.Seconds = 0;
/* if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
{
Error_Handler();
}
DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
DateToUpdate.Month = RTC_MONTH_DECEMBER;
DateToUpdate.Date = 1;
DateToUpdate.Year = 0;
if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK)
{
Error_Handler();
}*/
/* USER CODE BEGIN RTC_Init 2 */
/* USER CODE END RTC_Init 2 */
}
ayarlama kodu şu şekilde
void transmit(uint8_t *data){
CDC_Transmit_FS(data, strlen(data));
// HAL_Delay (1000);
}
void RTC_TIME_StructUpadate(void)
{
HAL_RTC_GetTime(&hrtc,&sTime,RTC_FORMAT_BIN);
saniye= sTime.Seconds;
dakika= sTime.Minutes;
saat= sTime.Hours;
HAL_RTC_GetDate(&hrtc,&DateToUpdate,RTC_FORMAT_BIN);
gun=DateToUpdate.Date;
ay=DateToUpdate.Month;
yil=DateToUpdate.Year;
haftaningunu = DateToUpdate.WeekDay;
}
void showtime (void)
{
RTC_TIME_StructUpadate();
sprintf((char*)shtime,"%.2d:%.2d:%.2d-",saat,dakika,saniye);
transmit(shtime);HAL_Delay(100);
sprintf((char*)shtime,"%.2d:%.2d:%.2d:%.2d\n",gun,ay,yil,haftaningunu);
transmit(shtime);
}
void usbcontrol (void){
if (USB_arrive){
USB_arrive=0;
if (!strncmp("PT",buffer,2))
showtime();
if (!strncmp("ST",buffer,2)){
sTime.Hours = atoi(&buffer[3]);
sTime.Minutes = atoi(&buffer[6]);
sTime.Seconds = 0;
HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);}
if (!strncmp("SD",buffer,2)){
DateToUpdate.WeekDay = atoi(&buffer[11]);
DateToUpdate.Date = atoi(&buffer[3]);
DateToUpdate.Month = atoi(&buffer[6]);
DateToUpdate.Year = atoi(&buffer[9]);
HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN);}
}
}
bu da usb com port haberleşmesi - com port aç kapa yaparken beslemeyi de çekip takıyorum - ST saati SD tarihi ayarlıyor PT sorguluyor
(https://i.imgyukle.com/2020/12/27/a5IlvR.jpg)
https://www.picproje.org/index.php?topic=66331.0
hocam cubeide de RTC nin yanında ünlem çıkıyor herhalde bunun içindi uyarmak için
ben f103rc de saat takvim yaptım ama o SPL kütüphanesiydi
sadece 32 bitlik bir timeri control ediyordu takvim sw ile yapılıyordu
HAL de böyle bir imkan yok mudur ? SPL ile yapıcam ama spl'de de usb haberleşmesi örneği bulamadım bana da usb lazım
RTC kullansan ?