من rtc راه اندازی کردم خیلی خوب کار میکنه ولی وقتی تغذیه اصلی برد قطع میکنم دوباره وصل میکنم اون مقادیری که تو تنظیمات اولیه rtc وارد کردم نمایش میده . من یه باطری 3ولت کم مستقیم به پایه vbat میکرو وصل کردم تا روی پایه میکرو هم ولتاژ گرفتم 3 ولت داره . ایا رجیستری چیزی هست که باید فعال بشه برا این قسمت؟
اطلاعیه
Collapse
No announcement yet.
RTC در میکرو LPC1768
Collapse
X
-
پاسخ : RTC در میکرو LPC1768
نوشته اصلی توسط kevinetmمن rtc راه اندازی کردم خیلی خوب کار میکنه ولی وقتی تغذیه اصلی برد قطع میکنم دوباره وصل میکنم اون مقادیری که تو تنظیمات اولیه rtc وارد کردم نمایش میده . من یه باطری 3ولت کم مستقیم به پایه vbat میکرو وصل کردم تا روی پایه میکرو هم ولتاژ گرفتم 3 ولت داره . ایا رجیستری چیزی هست که باید فعال بشه برا این قسمت؟There is nothing so practical as a good theory. — Kurt Lewin, 1951
دیدگاه
-
پاسخ : RTC در میکرو LPC1768
#include "LPC17xx.h" // Device header
#include "PIN_LPC17xx.h" // Keil:evice:PIN
#include "GPIO_LPC17xx.h" // Keil:evice:GPIO
#include <stdio.h>
#include "lpc17xx_adc.h"
#include "lpc17xx_pwm.h"
#include "lpc17xx_rtc.h"
#include "lpc17xx_systick.h"
#define GLCD_LPC17xx /* GLCD definition */
#define GLCD_DATAPORT_2
#define GLCD_CONTROLPORT_0
#define GLCD_RS 4
#define GLCD_RW 5
#define GLCD_EN 6
#define GLCD_CS1 7
#define GLCD_CS2 8
#define GLCD_CS3 9
#define GLCD_D0 0
#include "ks0108.h"
uint32_t w,r;
int a,t,h,m,s;
float c,b;
char str[30];
char str1[30];
char str2[30];
uint32_t Dh=12,Dm=1,Ds=1;
PWM_TIMERCFG_Type PWMCfgDat;
PWM_MATCHCFG_Type PWMMatchCfgDat;
void Delay (uint32_t Time)
{
uint32_t i;
i = 0;
while (Time--) {
for (i = 0; i < 5000; i++);
}
}
int main()
{
//--------------------------------------
RTC_Init(LPC_RTC);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_SECOND, 1);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_MINUTE, 1);
RTC_SetTime (LPC_RTC, RTC_TIMETYPE_HOUR, 13);
RTC_Cmd(LPC_RTC, ENABLE);
RTC_CalibCounterCmd(LPC_RTC, DISABLE);
//--------------------------------------------------
GLCD_Initialize();
PIN_Configure(3,26,3,0,0);//PWM
//--------------------------------------------------------
PWMCfgDat.PrescaleOption = PWM_TIMER_PRESCALE_TICKVAL;
PWMCfgDat.PrescaleValue = 1;
PWM_Init(LPC_PWM1, PWM_MODE_TIMER, &PWMCfgDat);
//--------------------------------------
PWMMatchCfgDat.IntOnMatch = DISABLE;
PWMMatchCfgDat.MatchChannel = 0;
PWMMatchCfgDat.ResetOnMatch = ENABLE;
PWMMatchCfgDat.StopOnMatch = DISABLE;
PWM_ConfigMatch(LPC_PWM1, &PWMMatchCfgDat);
PWM_MatchUpdate(LPC_PWM1, 0, 256, PWM_MATCH_UPDATE_NOW);
//--------------------------------------------------
PWMMatchCfgDat.IntOnMatch = DISABLE;
PWMMatchCfgDat.MatchChannel = 3;
PWMMatchCfgDat.ResetOnMatch = DISABLE;
PWMMatchCfgDat.StopOnMatch = DISABLE;
PWM_ConfigMatch(LPC_PWM1, &PWMMatchCfgDat);
PWM_MatchUpdate(LPC_PWM1, 3,150, PWM_MATCH_UPDATE_NOW);
//-----------------------------------------
PWM_ChannelCmd(LPC_PWM1,3,ENABLE);
PWM_ResetCounter(LPC_PWM1);
PWM_CounterCmd(LPC_PWM1, ENABLE);
PWM_Cmd(LPC_PWM1, ENABLE);
//--------------------------------------------------------------
while(1)
{
sprintf(str,"Time = %d:%d:%d",h, m,s);
GLCD_ClearScreen();
GLCD_GoTo(0,0);
GLCD_WriteString(str);
Delay(3800);
}
}
دیدگاه
دیدگاه