でかデジタル時計の製作(3)プロト完成!

| | トラックバック(0)
今日、とりあえず、GPSモジュールから時刻を設定するプログラムも追加して、動作確認も終了。GPSモジュールの時刻は、mbed側のRTCから30秒以上ズレている条件で、時刻設定するようにしている。あと、GPSモジュールは、1m程度のリボンケーブルで接続して、電波を受け易い場所へ置けるようにした。

11101601.jpg 11101602.jpg
今回の回路図は、、、、
11101604.jpg 11101603.jpg
こんな感じ。採用したGPSモジュールは、CANMORE ELECTRONICS社製のGT-723F(秋月電子通商で購入)。mbedのコードは、、、、
// 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

リンク用バナ画像

Thank you for visitors:

from 7th, May. 2005

2013年11月

          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

MY TWITTER

今月のイラスト/ムービー

応援サイト、その他




Visit RenderSan
<-- script type="text/javascript" src="http://swf.mikunavi.net/miku" width=150 height=44 --><-- /script --><-- br / -->
 

このブログ記事について

このページは、Digi Pontaが2011年10月16日 17:40に書いたブログ記事です。

ひとつ前のブログ記事は「でかデジタル時計の製作(2)」です。

次のブログ記事は「シーグラフ東京 第62回セミナー開催のおしらせ(転載)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.01

マイサイト





Trackback People






注)「Calture」の正しい綴りは、「Culture」です。お間違いないように。