как включить внутренний кварц 32 кгц на due?
- Войдите на сайт для отправки комментариев
Втр, 28/04/2015 - 14:23
приобрел Дуньку на плате есть кварц на 32кгц
как его запустить кто нибудь знает?
приобрел Дуньку на плате есть кварц на 32кгц
как его запустить кто нибудь знает?
приобрел Дуньку на плате есть кварц на 32кгц
как его запустить кто нибудь знает?
Вы его на геостационарную орбиту хотите запустить? Или так, по балистической траектории к горизонту? Второй на 12мгц тоже будем запускать?
приобрел Дуньку на плате есть кварц на 32кгц
как его запустить кто нибудь знает?
не тупим
RTC нужно инициализировать
вот и вопрос как это сделать?
вот нашел лыбу
https://github.com/MarkusLange/Arduino-Due-RTC-Library
проверил работает
кварц запускается в консоль время пишет
единственное нужно батарейку на 3 вольта прикрутить к 52 ножке проца VDDBU (ножку лучше отпаять от платы) чтоб время не сбрасывалось
и можно не использовать DS1307
В если подробнее рассказать про бибилотеку и ваши часики ???
Я использовал ds1307 - и через месяц часы стали отствать на 2 часа. ((( Батарейка жива, т.к. при отключении питания и возврате оного - все тикает дальше.
Я использовал ds1307 - и через месяц часы стали отствать на 2 часа. ((( Батарейка жива, т.к. при отключении питания и возврате оного - все тикает дальше.
на счет точности не скажу только сегодня завел
где-то на просторах инета нашел проект часов на UTFT
но они были на 1307 и на меге
я скетч прикрутил к дуньке вроде работает
//Подключение библиотек #include <UTFT.h> #include <rtc_clock.h> RTC_clock rtc_clock(XTAL); //подключение внутренних часов от кварца 32кгц //Подключения шрифта extern uint8_t BigFont[]; //Подключение дисплея TFT UTFT myGLCD(CTE32HR,38,39,40,41); char* daynames[]={"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"}; char* monthsnames[]={"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul","Aug","Sep","Oct","Nov","Dec"}; int hh,mm,ss,dow,dd,mon,yyyy; //Центральные координаты для рисования стрелочных часов int clockCenterX=159; int clockCenterY=240; int oldsec=0; void setup(){ // myGLCD.InitLCD(0); // вертикальное отображение myGLCD.setFont(BigFont); rtc_clock.init(); rtc_clock.set_clock(__DATE__, __TIME__); } void drawDisplay() { // Очистка дисплея myGLCD.clrScr(); //Отображение текущей даты myGLCD.setColor(0, 255, 0); myGLCD.printNumI((dd), 70, 55); myGLCD.print(( monthsnames[mon-1]), 115, 55); myGLCD.printNumI((yyyy), 185, 55); //Отображение дня недели myGLCD.setColor(0, 255, 0); myGLCD.print((daynames[dow-1]), CENTER, 390); // Рисуем циферблат myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(0, 0, 0); for (int i=0; i<5; i++) { myGLCD.drawCircle(clockCenterX, clockCenterY, 119-i); } for (int i=0; i<5; i++) { myGLCD.drawCircle(clockCenterX, clockCenterY, i); } //Отображаем числа на циферблате myGLCD.setColor(192, 192, 255); myGLCD.print("3", clockCenterX+92, clockCenterY-8); myGLCD.print("6", clockCenterX-8, clockCenterY+89); myGLCD.print("9", clockCenterX-109, clockCenterY-8); myGLCD.print("12", clockCenterX-16, clockCenterY-109); //Рисуем метки часов в виде рысочек for (int i=0; i<12; i++) { if ((i % 3)!=0) drawMark(i); } rtc_clock.get_time(&hh,&mm,&ss); drawMin(mm); drawHour(hh, mm); drawSec(ss); oldsec=ss; } void drawMark(int h)//Отрисовка меток { float x1, y1, x2, y2; h=h*30; h=h+270; x1=110*cos(h*0.0175); y1=110*sin(h*0.0175); x2=100*cos(h*0.0175); y2=100*sin(h*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY); } void drawSec(int s)//отрисовка секундной стрелки { float x1, y1, x2, y2; int ps = s-1; myGLCD.setColor(0, 0, 0); if (ps==-1) ps=59; ps=ps*6; ps=ps+270; x1=95*cos(ps*0.0175); y1=95*sin(ps*0.0175); x2=5*cos(ps*0.0175); y2=5*sin(ps*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY); myGLCD.setColor(255, 0, 0); s=s*6; s=s+270; x1=95*cos(s*0.0175); y1=95*sin(s*0.0175); x2=5*cos(s*0.0175); y2=5*sin(s*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x2+clockCenterX, y2+clockCenterY); } void drawMin(int m)//отрисовка минутной стрелки { float x1, y1, x2, y2, x3, y3, x4, y4; int pm = m-1; myGLCD.setColor(0, 0, 0); if (pm==-1) pm=59; pm=pm*6; pm=pm+270; x1=80*cos(pm*0.0175); y1=80*sin(pm*0.0175); x2=5*cos(pm*0.0175); y2=5*sin(pm*0.0175); x3=30*cos((pm+4)*0.0175); y3=30*sin((pm+4)*0.0175); x4=30*cos((pm-4)*0.0175); y4=30*sin((pm-4)*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY); myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY); myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY); myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY); myGLCD.setColor(0, 255, 0); m=m*6; m=m+270; x1=80*cos(m*0.0175); y1=80*sin(m*0.0175); x2=5*cos(m*0.0175); y2=5*sin(m*0.0175); x3=30*cos((m+4)*0.0175); y3=30*sin((m+4)*0.0175); x4=30*cos((m-4)*0.0175); y4=30*sin((m-4)*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY); myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY); myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY); myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY); } void drawHour(int h, int m)//отрисовка часовой стрелки { float x1, y1, x2, y2, x3, y3, x4, y4; int ph = h; myGLCD.setColor(0, 0, 0); if (m==0) { ph=((ph-1)*30)+((m+59)/2); } else { ph=(ph*30)+((m-1)/2); } ph=ph+270; x1=60*cos(ph*0.0175); y1=60*sin(ph*0.0175); x2=5*cos(ph*0.0175); y2=5*sin(ph*0.0175); x3=20*cos((ph+5)*0.0175); y3=20*sin((ph+5)*0.0175); x4=20*cos((ph-5)*0.0175); y4=20*sin((ph-5)*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY); myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY); myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY); myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY); myGLCD.setColor(255, 255, 0); h=(h*30)+(m/2); h=h+270; x1=60*cos(h*0.0175); y1=60*sin(h*0.0175); x2=5*cos(h*0.0175); y2=5*sin(h*0.0175); x3=20*cos((h+5)*0.0175); y3=20*sin((h+5)*0.0175); x4=20*cos((h-5)*0.0175); y4=20*sin((h-5)*0.0175); myGLCD.drawLine(x1+clockCenterX, y1+clockCenterY, x3+clockCenterX, y3+clockCenterY); myGLCD.drawLine(x3+clockCenterX, y3+clockCenterY, x2+clockCenterX, y2+clockCenterY); myGLCD.drawLine(x2+clockCenterX, y2+clockCenterY, x4+clockCenterX, y4+clockCenterY); myGLCD.drawLine(x4+clockCenterX, y4+clockCenterY, x1+clockCenterX, y1+clockCenterY); } void loop()//основной цикл работы стрелочных часов { int x, y; rtc_clock.get_time(&hh,&mm,&ss); rtc_clock.get_date(&dow,&dd,&mon,&yyyy); drawDisplay(); while (true) { if (oldsec!=ss) { int t1=0; int t2=0; int t3=0; if(hh>=12){ t1=(hh-12)*5; } else { t1=hh*5; } t2=mm/12; t3=t1+t2; int a=mm+1; int b=mm+2; int c=mm+3; int d=t3+1; int e=t3+2; int f=t3+3; int g=t3+4; if ((ss==d)||(ss==e)||(ss==f)||(ss==g)) { drawHour(hh, mm); } if ((ss==a)||(ss==b)||(ss==c)) { drawMin(mm); } if (ss==0) { drawMin(mm); drawHour(hh, mm); } drawSec(ss); oldsec=ss; } delay(10); rtc_clock.get_time(&hh,&mm,&ss); rtc_clock.get_date(&dow,&dd,&mon,&yyyy); } }