2009年12月
    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 31    

最近のトラックバック

無料ブログはココログ

役に立ったAVRマイコンの本

電子工作

2009年12月17日 (木)

前回のHSP3で作成した簡易シリアルラインモニタのメモ

width の高さscy は文字高さmyの倍数でなければならないので、定数の表現が悪いですね・・・

端数計算するか、scy=n*my で n=35 など表示行数を設定した方が良いかもです・・・

あと0x0d CR(キャリッジリターン)は画面上実際に改行されてしまうから”_”に置き換えるとしても

0x0a LF(ラインフィード)は置き換えずにそのまま表示した方が良いかもです・・・

単なるメモです(笑)

GPSViewerにUPDATE to SRAM+FLASH あるじゃん(汗)

ドロップダウンリストにありました(汗)

毎回、設定変える必要ないですね♪

設定するとGT-720Fは一旦停止し、再度電源投入で設定が変わっています。(←情報頂いた通りです♪ありがとうございます)

シリアルのクロス接続環境は外してしまったので未確認ですが、バイナリの制御コード0x09が「UPDATE to SRAM」で0x08が「UPDATE to SRAM+FLASH」なのでしょう・・・

あと、各NMEAセンテンスの数値は出力インターバルで0~255(0x00~0xFF)まで変更可能ですね!0は出力無し、例えば、2ならば2回に1回出力になるようです。

右横の0から255のバーと数値が連動してました・・・

GV_UP01.jpg

落ち着いてチェックできる時間が欲しい(笑)

2009年12月16日 (水)

HSP3で簡易シリアルラインモニタを作ってGT720Fから受信してみた♪・・・だからなんだ?(笑)

来週から内職はできません!(笑)

だからなんなんだ?って言われそーですが(笑)

テキストとバイナリ同時に表示させてみたかったので・・・これで制御コードなんかも判別できるかも・・・3行目は文字数です。

テキスト中0x0d CR キャリッジリターンと0x0a NL or LF  ニューライン(ラインフィード)は"_" に置き換えています。

スクロールバーがまだ扱えないので、バイナリを1行に表示すると横方向は画面からはみ出しています(笑)

縦方向は画面内でスクロールする様にしました。

※スクロールバースクリプトは探索済み(笑)

左画面

a16_17.jpg

右画面

a16_18.jpg

コントロールパネルです。

a16_14.jpg

おまけで、制作途中にGT720Fのテキストそのまま表示させたものです。

a16_12.jpg

 

書籍の元ネタを改良して作成したものです。以下、恥ずかしいソースです。

やくたたず(笑)

;---serial03.hsp--------09.12.16--------------------------------
;   簡易シリアルラインモニタ
;   1行目テキスト表示
;   2行目バイナリ表示
;   3行目1行の文字数
;   テキスト中0x0d CR -> "-" と0x0a NL or LF -> "_" は置き換えた
;---------------------------------------------------------------

#include "hspext.as"    ;シリアルポート使用に必要
    screen 0,400,100,,,,,
    width 400,100
    sysfont 0   ;HSP標準システムフオント
    title "RS232C 簡易シリアルラインモニタ コントロールパネル"
;   sdim buf,600    ;テキスト用バッファ
;   sdim abuf,2000  ;バイナリ用バッファ
    onexit *combye  ;×ボタンの処理

    cp = 2      ;COMポート番号
    comstr="baud=9600 parity=N data=8 stop=1"   ;通信パラメータ
    sdstr=""
    input sdstr,340
    objsize 100,20
    button "送信",*comgo
    button "終了",*combye
    button "通信一時遮断",*comcls
    button "通信再接続",*comcon
    e=ginfo (10)    ;ウインドウX横幅
    f=ginfo (11)    ;ウインドウY縦幅
    g=ginfo (22)    ;カレントポジションX
    h=ginfo (23)    ;カレントポジションY
    mes e:mes f:mes g:mes h
    ;
*comcon
    comopen cp,comstr;シリアルポートの初期化
    if stat : dialog "シリアルポートは使えません" : end

    li=0
;HSP標準フォントの場合はmx=8、my=18
    mx=8    ;半角文字横幅
    my=18   ;半角文字高さ
    scx=1816        ;screen横幅(widthに同じ)
    scy=630     ;width高さ
    screen 1,scx,scy+2*my,,,,,  ;screen高さは+myで2行プラス(改行分を追加)
    width scx,scy
    title "簡易シリアルラインモニタ"
   
    a=0
*commain0
    sdim buf,600    ;テキスト用バッファ 再定義でバッファクリア
    sdim abuf,2000  ;バイナリ用バッファ 再定義でバッファクリア
*commain1
    wait 30
    comgetc a
    if stat=0 : goto *commain1
    b=0:d=0
*chk1
    if a=10 : goto *chk2    ;0x0a NL(LF) の時*chk2へ
;   if a>=32 {
    if a=13 : poke buf,b,"_":else:poke buf,b,a  ;0x0d CR の時バッファに"_"を入れる
                                                ;それ以外はそのままaを入れる
    b+  ;bに+1
    c = strf ("%02x", a) + " "  ;16進桁数指定(2ケタ)付き+" "を
    poke abuf,d,c               ;バッファに入れる
    d = d+3     ;2ケタ+" "で3ケタなので+3する
;   }
    comgetc a
    if stat>0 : goto *chk1
*chk2
    poke buf,b,"_"  ;0x0a NL(LF) の時バッファに"_"を入れる
    b+  ;bに+1
    c = strf ("%02x", a) + " "  ;16進桁数指定(2ケタ)付き+" "を
    poke abuf,d,c               ;バッファに入れる
    d = d+3     ;2ケタ+" "で3ケタなので+3する
    gosub *scrol    ;スクロール制御ルーチンへ
    mes buf         ;テキスト用バッファを出力
    gosub *scrol    ;スクロール制御ルーチンへ
    mes abuf        ;バイナリ用バッファを出力
    gosub *scrol    ;スクロール制御ルーチンへ
    mes strlen(buf) ;バッファ文字列の長さを出力
;   poke buf,0,0
;   poke abuf,0,0
    goto *commain0

*comgo      ;送信
    comput sdstr+"\r"
    sdstr="":objprm 0,sdstr
    goto *commain0

*comcls
    comclose
    stop   

*combye
    comclose
    end

*scrol      ;画面スクロールサブルーチン
    gy= ginfo (23)  ;現在のY座標
    if gy>=scy {        ;Y座標がwidth_Yに一致したら
        if gy=scy {
        gy=scy-my       ;Y座標を1行分戻す
        pos 0,0         ;画面コピーのため一旦座標を原点にする。
        gcopy 1,0,my,scx,scy    ;2行目から最下段までを原点にコピー
        }
        gy=scy-2*my         ;Y座標を2行分戻す
        pos 0,0         ;画面コピーのため一旦座標を原点にする。
        gcopy 1,0,my,scx,scy+my ;2行目から最下段+1までを原点にコピー
    }
    pos 0,gy        ;表示位置を再設定
    return

2009年12月 6日 (日)

GPSViewer から GT-720F の設定バイナリデータを読んでみた♪

こんな事してる場合じゃないんだが、一旦、気になると眠れなくなっちゃうんで(笑)

随分前に購入したマルツパーツ館の

RS232Cレベル変換ボードMFT232BASEとUSBシリアル変換モジュールMFT232RL

rs232m14.JPG

合体すると

rs232m13.JPG

GT-720Fと接続して、ちゃんと動作するかチェック

rs232m15.JPG

USB Serial Port (COM13)

rs232m01.jpg

通信ソフトAcknowrich で確認・・・

前回、4800bps $GPVTGを出力するに変更したが、「UPDATE to SRAM」だからしばらく放置してバックアップ電池が空になると元に戻って$GPVTG出力無し、通信速度も9600bpsって事か・・・

マイコンと接続して$GPVTGを使うなら、電源投入後にマイコンから毎回GT-720Fの設定を変えてやる必要があるわけだよね・・・

rs232m02.jpg

もともと、こんな事していいのか判らなかったが・・・

RS232Cレベルでパラレルに接続してみた

※注;画像は後のクロス接続になっている

rs232m17.JPG

rs232m16.JPG

USB Serial Port (COM13)とCOM3 両方で受信できる

rs232m06.jpg

GPSViewerとAcknowrich 同時に受信

rs232m07.jpg

Acknowrich はバイナリ表示に変更できる

rs232m08.jpg

USB Serial Port (COM13)をクロス接続に変更してソフトからGT-720Fへのバイナリデータを読んでみた♪

下記は$GPVTGを出力するに変更するバイナリデータ

rs232m09.jpg

色々試すとこんな感じ、最終行の内容は自信無し(笑)

マイコンと液晶とでテキストとバイナリコードの表示切換出来る様にすれば、こんな感じで双方向のシリアルラインモニタも作れるかも♪

rs232m12.jpg

1から3行目の6から12番目の0x01と0x00はNMEA-0183のGGA,GSA,GSV,GLL,RMC,VTG,ZDAの出力有り無しに対応しているみたいですね♪

コメント頂いた情報だと赤丸のコードが0x09でなく0x08になっていますが何か違うのでしょうか?

2009年12月 5日 (土)

マイリストを整理♪・・・日々是勉強なり(笑)

12月は多忙でこっちは超スローペースです・・・

参考にしている手持ちの書籍を整理してみました。サイドバーのマイリストです。随分本買ったなぁ~中古が多いけどね♪

2009年12月 2日 (水)

GT-720F の設定を GPSViewer で変更してみた♪

12月は超多忙でサイクリングログなんか取ってる暇無いし・・・

無惨にもGT-720Fが分離された「ジムニー親爺専用GPS」(笑)

gt720f_gv_01.JPG

GT-720Fはアルミ板に固定して、ハーネスの中継と電源供給用の基板を急遽作成

gt720f_gv_02.JPG

ハーネスの中継と電源供給用の基板です。

万能基板に空中配線(笑)

gt720f_gv_03.JPG

パソコンに接続してGPSViewerで見てみた♪

COM2で9600bps

GV01.jpg

通信速度はこれで変更できる。4800bpsに・・・

GV03.jpg

NMEA-0183の出力はこれで変更できる。$GPVTGの欄を0から1に変更・・・

1以外の数字は何だ??? 横の0~255も何だ???

工場出荷状態に戻せるので色々試してみるか・・・

GV04.jpg

最初の画面と異なり、$GPVTGが出力されています♪

GV05.jpg

通信速度を4800bpsに変更したので、スーパーマップルデジタルVer6のGPSモードでもリアルタイムに表示できます。

前回の、ログデータ緯度経度のみを$GPGGA形式にして認識させた時と異なり、きちんと天空図に捕捉衛星情報が表示されています。

GV02.jpg

GPSViewer.exeってファイル名でソフト名は

SkyTraq

ですよね?

私の環境だけかもしれんが、何か動作不安定で通信に失敗するとWINDOWSが落ちて再起動するし(泣)

最初、秋月のHPからダウンロードしてきたのですが、メーカーのHPにも同梱ファイルがいくつかあって

GV07.jpg

赤丸解凍すると、Verが最新みたいで・・・こっちで試してみるか・・・

GV06.jpg

今度はソフトからGT-720Fのシリアルデータを読んでみたい・・・

※捕捉、電子工作には直接関係ないですがアルミのネジタップ立てについてメモ

アルミは柔らかいのでタップ立てて抜く前に、刃溝の切りくずを除去してやらないとネジ山が潰れてしまうので注意が必要!

gt720f_etc_01.JPG

gt720f_etc_04.JPG

しかしわし、組んだり分解したり、分解したり組んだり・・・

いつでもどこでも、何か作ってますよね♪って言われたことあるし・・・

CMのインテル坊やそのまんま(笑)

インテル入ってる?・・・入ってないって!(笑)

 

2009年11月24日 (火)

PWM出力をダイナミック点灯させたらどーなる?・・・実験4(笑)

最近、こればっかし・・・(笑)
試しにPWM6出力×3ダイナミック点灯させてみた!
ブレッドボードの連結の都合上、間が空いていますが・・・18連ナイトライダーです。
18連に対応する様に2次元配列データを書き換えるついでに、もっと尾を長く引く様にしてみました。

特にどーするでもないですが、これはこの辺で打ち止め・・・
配線がグチャグチャだから、そろそろ、ATmega328Pと644Pのテストボードを設計しよう(笑)

2009年11月21日 (土)

PWM出力をダイナミック点灯させたらどーなる?・・・実験3(笑)

ビデオだと判りにくいのですが妙な残像が出るんで、
PWM6出力×2ダイナミック点灯に変更してみたビデオ
これは、かなり尾の引き方が滑らかに見えます。
ATmega系はPWMが6出力もあるのな♪
×3ダイナミック点灯くらいならまだいけそう・・・
クロックは外部20MHzにしてプリスケーラー1、PWM周期は0.0128ms(←マジ、いいのかなぁ;)
後は、PWMが0で完全に消灯しないのが気になる・・・まだ、バグあるのかなぁ~

比較用で、PWM3出力×4ダイナミック点灯です。妙な残像が出ます。ダイナミックは一旦消灯など、きちんと切り換えているんですが・・・

2009年11月19日 (木)

PWM出力をダイナミック点灯させたらどーなる?・・・実験2(笑)

ナイトライダー・・・
「キッド!後ろの車両は?」
「マイケル、あれは じむにー親爺 です気を付けて(笑)」

PWM3出力を4ダイナミック点灯
PWM数値データは2次元配列に入れて読み出している。詳細は後日・・・

見た目ちょっと無理がある。まだ、時定数の調整が必要のようだ!

PWM出力をダイナミック点灯させたらどーなる?・・・実験1(笑)

PWM周期とダイナミック点灯時間の兼ね合いが微妙ですが、こんな感じになりまする♪(笑)

pwmflsh01.c

pwmflash01.JPG

pwmflash02.JPG

ATmega328P の 0CRnA n=0、1,2 PWM3出力を4ダイナミック点灯させてみたもの

3×4=12個のLEDが段階的に明るさが変化しています。かなり無理有りますが・・・

クロック内部8MHz、プリスケーラー1でPWM周期0.032ms(←いいのかなぁ~;)

ダイナミック点灯インターバルは5msで ×4=1周期20msです。

下記は入力したPWM数値配列です。

unsigned char flash[12]={0,0,0,2,5,10,25,50,100,150,200,255}; // pwm data

一応回路図です。

pwmflash04.jpg

これを動かしてみたい・・・アホだな~(笑)

より以前の記事一覧

フォト

役に立ったPIC書籍リスト