でかデジタル時計の製作(3)プロト完成!
今日、とりあえず、GPSモジュールから時刻を設定するプログラムも追加して、動作確認も終了。GPSモジュールの時刻は、mbed側のRTCから30秒以上ズレている条件で、時刻設定するようにしている。あと、GPSモジュールは、1m程度のリボンケーブルで接続して、電波を受け易い場所へ置けるようにした。
今回の回路図は、、、、
|
|
|
|
|
|
// Digital Clock (4 digits) driven by CMOS LOGIC 4026s
// made by Hirofumi Inomata, (C) 2011
#include "mbed.h"
#include "string.h"
#include "PowerControl/PowerControl.h"
#include "EthernetPowerControl.h"
#include "ClockControl.h"
DigitalOut myled(LED1);
DigitalOut D1_CLK_EN(p17);
DigitalOut D2_CLK_EN(p18);
DigitalOut D3_CLK_EN(p19);
DigitalOut D4_CLK_EN(p20);
DigitalOut D1_N_RST(p24);
DigitalOut D2_N_RST(p23);
DigitalOut D3_N_RST(p22);
DigitalOut D4_N_RST(p21);
DigitalOut DD_N_CLK(p25);
Serial gps( p28, p27);
// Ticker myTicker;
char buf[4096];
int cnt = 0;
#define USR_POWERDOWN (0x104)
int semihost_powerdown() {
uint32_t arg;
return __semihost(USR_POWERDOWN, &arg);
}
void handler_ticker(void);
void handler_serial(void) {
char cc;
int i;
for (;;) {
cc = gps.getc();
if (cc == '$') break;
}
for ( i=0; i %d/%d/%d %d:%d:%d ¥n¥r",
gpsTm.tm_year,
gpsTm.tm_mon,
gpsTm.tm_mday,
gpsTm.tm_hour,
gpsTm.tm_min,
gpsTm.tm_sec
);
curSeconds = time(NULL);
if ( ((gpsSeconds - curSeconds) > 30) &&
((curSeconds - gpsSeconds) > 30)
) {
printf( "set RTC %d to %d ¥n¥r", curSeconds, gpsSeconds );
set_time( gpsSeconds );
}
}
handler_ticker();
}
}
int preD1 = 0;
int preD2 = 0;
int preD3 = 0;
int preD4 = 0;
void D1(int digi ) {
int i;
if (digi == preD1 ) return;
preD1 = digi;
D1_N_RST = 0;
wait(0.01);
D1_N_RST = 1;
D1_CLK_EN = 1;
for (i=0; itm_hour, tmCur->tm_min, tmCur->tm_sec, seconds );
dispTime( tmCur->tm_hour, tmCur->tm_min );
myled = 0;
}
int main() {
struct tm initTm;
time_t initSec;
semihost_powerdown();
PHY_PowerDown();
gps.baud(9600);
D1_CLK_EN = 0;
D2_CLK_EN = 0;
D3_CLK_EN = 0;
D4_CLK_EN = 0;
D1_N_RST = 0;
D2_N_RST = 0;
D3_N_RST = 0;
D4_N_RST = 0;
wait( 0.1);
D1_N_RST = 1;
D2_N_RST = 1;
D3_N_RST = 1;
D4_N_RST = 1;
DD_N_CLK = 1;
myled = 0;
gps.attach(handler_serial);
while(1) {
Sleep();
}
} こんな感じ。7セグLEDの表示更新を、当初は、tickerでやろうとしたが、GPSとのシリアル通信の割り込みで沈む混むことが判明し、GPSの通信の割り込みハンドラ内でやることにした。
トラックバック(0)
このブログ記事を参照しているブログ一覧: でかデジタル時計の製作(3)プロト完成!
このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4700








