前回のHSP3で作成した簡易シリアルラインモニタのメモ
width の高さscy は文字高さmyの倍数でなければならないので、定数の表現が悪いですね・・・
端数計算するか、scy=n*my で n=35 など表示行数を設定した方が良いかもです・・・
あと0x0d CR(キャリッジリターン)は画面上実際に改行されてしまうから”_”に置き換えるとしても
0x0a LF(ラインフィード)は置き換えずにそのまま表示した方が良いかもです・・・
単なるメモです(笑)
PCカード/メモリカードの徹底研究―規格の概要からカード/ホストコントローラ/ドライバの設計/製作 (TECH I)
SDカードについて勉強しようと思い、改訂前のこの本を中古で探して購入。ただいま勉強中だが難しくてついていけない、挫折するかも(笑)
トランジスタ技術 (Transistor Gijutsu) 2007年 12月号 [雑誌]
「SDカード使用の携帯加速度ロガー」の記事が読みたくて・・・中古で探して購入♪
山根 彰: AVRマイコン・リファレンス・ブック―AVRのCPUアーキテクチャ、豊富な内蔵周辺機能を詳細解説 (マイコン活用シリーズ)
AVRをもっと勉強したくて神田の三省堂で衝動買いその2。その1と比べて読むとわかりやすいかも(笑)
土井 滋貴: 試しながら学ぶAVR入門―マイコンの基礎と電子工作とWindowsアプリケーションの作り方 (SkiLL up mycomputerシリーズ)
AVRをもっと勉強したくて神田の三省堂で衝動買いその1。
松原 拓也: AVRマイコン活用ブック―オリジナル電子ゲーム&ロボット製作 (わかるマイコン電子工作)
PICマイコンは今までアセンブラ言語でプログラムしてきました。
次にC言語でプログラミングしたかったのですが、PICマイコンのCコンパイラは高価なので、無償のCコンパイラ(WinAVR)が手に入るAVRマイコンを使ってみたくて買った本。現在勉強中・・・
width の高さscy は文字高さmyの倍数でなければならないので、定数の表現が悪いですね・・・
端数計算するか、scy=n*my で n=35 など表示行数を設定した方が良いかもです・・・
あと0x0d CR(キャリッジリターン)は画面上実際に改行されてしまうから”_”に置き換えるとしても
0x0a LF(ラインフィード)は置き換えずにそのまま表示した方が良いかもです・・・
単なるメモです(笑)
ドロップダウンリストにありました(汗)
毎回、設定変える必要ないですね♪
設定するとGT-720Fは一旦停止し、再度電源投入で設定が変わっています。(←情報頂いた通りです♪ありがとうございます)
シリアルのクロス接続環境は外してしまったので未確認ですが、バイナリの制御コード0x09が「UPDATE to SRAM」で0x08が「UPDATE to SRAM+FLASH」なのでしょう・・・
あと、各NMEAセンテンスの数値は出力インターバルで0~255(0x00~0xFF)まで変更可能ですね!0は出力無し、例えば、2ならば2回に1回出力になるようです。
右横の0から255のバーと数値が連動してました・・・
落ち着いてチェックできる時間が欲しい(笑)
来週から内職はできません!(笑)
だからなんなんだ?って言われそーですが(笑)
テキストとバイナリ同時に表示させてみたかったので・・・これで制御コードなんかも判別できるかも・・・3行目は文字数です。
テキスト中0x0d CR キャリッジリターンと0x0a NL or LF ニューライン(ラインフィード)は"_" に置き換えています。
スクロールバーがまだ扱えないので、バイナリを1行に表示すると横方向は画面からはみ出しています(笑)
縦方向は画面内でスクロールする様にしました。
※スクロールバースクリプトは探索済み(笑)
左画面
右画面
コントロールパネルです。
おまけで、制作途中にGT720Fのテキストそのまま表示させたものです。
書籍の元ネタを改良して作成したものです。以下、恥ずかしいソースです。
やくたたず(笑)
;---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
こんな事してる場合じゃないんだが、一旦、気になると眠れなくなっちゃうんで(笑)
随分前に購入したマルツパーツ館の
RS232Cレベル変換ボードMFT232BASEとUSBシリアル変換モジュールMFT232RL
合体すると
GT-720Fと接続して、ちゃんと動作するかチェック
USB Serial Port (COM13)
通信ソフトAcknowrich で確認・・・
前回、4800bps $GPVTGを出力するに変更したが、「UPDATE to SRAM」だからしばらく放置してバックアップ電池が空になると元に戻って$GPVTG出力無し、通信速度も9600bpsって事か・・・
マイコンと接続して$GPVTGを使うなら、電源投入後にマイコンから毎回GT-720Fの設定を変えてやる必要があるわけだよね・・・
もともと、こんな事していいのか判らなかったが・・・
RS232Cレベルでパラレルに接続してみた
※注;画像は後のクロス接続になっている
USB Serial Port (COM13)とCOM3 両方で受信できる
GPSViewerとAcknowrich 同時に受信
Acknowrich はバイナリ表示に変更できる
USB Serial Port (COM13)をクロス接続に変更してソフトからGT-720Fへのバイナリデータを読んでみた♪
下記は$GPVTGを出力するに変更するバイナリデータ
色々試すとこんな感じ、最終行の内容は自信無し(笑)
マイコンと液晶とでテキストとバイナリコードの表示切換出来る様にすれば、こんな感じで双方向のシリアルラインモニタも作れるかも♪
1から3行目の6から12番目の0x01と0x00はNMEA-0183のGGA,GSA,GSV,GLL,RMC,VTG,ZDAの出力有り無しに対応しているみたいですね♪
コメント頂いた情報だと赤丸のコードが0x09でなく0x08になっていますが何か違うのでしょうか?
12月は超多忙でサイクリングログなんか取ってる暇無いし・・・
無惨にもGT-720Fが分離された「ジムニー親爺専用GPS」(笑)
GT-720Fはアルミ板に固定して、ハーネスの中継と電源供給用の基板を急遽作成
ハーネスの中継と電源供給用の基板です。
万能基板に空中配線(笑)
パソコンに接続してGPSViewerで見てみた♪
COM2で9600bps
通信速度はこれで変更できる。4800bpsに・・・
NMEA-0183の出力はこれで変更できる。$GPVTGの欄を0から1に変更・・・
1以外の数字は何だ??? 横の0~255も何だ???
工場出荷状態に戻せるので色々試してみるか・・・
最初の画面と異なり、$GPVTGが出力されています♪
通信速度を4800bpsに変更したので、スーパーマップルデジタルVer6のGPSモードでもリアルタイムに表示できます。
前回の、ログデータ緯度経度のみを$GPGGA形式にして認識させた時と異なり、きちんと天空図に捕捉衛星情報が表示されています。
GPSViewer.exeってファイル名でソフト名は
SkyTraq
ですよね?
私の環境だけかもしれんが、何か動作不安定で通信に失敗するとWINDOWSが落ちて再起動するし(泣)
最初、秋月のHPからダウンロードしてきたのですが、メーカーのHPにも同梱ファイルがいくつかあって
赤丸解凍すると、Verが最新みたいで・・・こっちで試してみるか・・・
今度はソフトからGT-720Fのシリアルデータを読んでみたい・・・
※捕捉、電子工作には直接関係ないですがアルミのネジタップ立てについてメモ
アルミは柔らかいのでタップ立てて抜く前に、刃溝の切りくずを除去してやらないとネジ山が潰れてしまうので注意が必要!
しかしわし、組んだり分解したり、分解したり組んだり・・・
いつでもどこでも、何か作ってますよね♪って言われたことあるし・・・
CMのインテル坊やそのまんま(笑)
インテル入ってる?・・・入ってないって!(笑)
最近、こればっかし・・・(笑)
試しにPWM6出力×3ダイナミック点灯させてみた!
ブレッドボードの連結の都合上、間が空いていますが・・・18連ナイトライダーです。
18連に対応する様に2次元配列データを書き換えるついでに、もっと尾を長く引く様にしてみました。
特にどーするでもないですが、これはこの辺で打ち止め・・・
配線がグチャグチャだから、そろそろ、ATmega328Pと644Pのテストボードを設計しよう(笑)
ビデオだと判りにくいのですが妙な残像が出るんで、
PWM6出力×2ダイナミック点灯に変更してみたビデオ
これは、かなり尾の引き方が滑らかに見えます。
ATmega系はPWMが6出力もあるのな♪
×3ダイナミック点灯くらいならまだいけそう・・・
クロックは外部20MHzにしてプリスケーラー1、PWM周期は0.0128ms(←マジ、いいのかなぁ;)
後は、PWMが0で完全に消灯しないのが気になる・・・まだ、バグあるのかなぁ~
比較用で、PWM3出力×4ダイナミック点灯です。妙な残像が出ます。ダイナミックは一旦消灯など、きちんと切り換えているんですが・・・
ナイトライダー・・・
「キッド!後ろの車両は?」
「マイケル、あれは じむにー親爺 です気を付けて(笑)」
PWM3出力を4ダイナミック点灯
PWM数値データは2次元配列に入れて読み出している。詳細は後日・・・
見た目ちょっと無理がある。まだ、時定数の調整が必要のようだ!
PWM周期とダイナミック点灯時間の兼ね合いが微妙ですが、こんな感じになりまする♪(笑)
pwmflsh01.c
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
一応回路図です。
これを動かしてみたい・・・アホだな~(笑)
ジムニーJA12WのDIY | ノアAZR65GのDIY | パソコン・インターネット | 天体観測 | 日記・コラム・つぶやき | 書籍・雑誌 | 登山・林道ツーリング | 自転車・サイクリング | 野菜を作ろう | 電子工作 | 音楽 | 高校数学
福多 利夫: 電子工作ハンドブック3 ハンダの達人
番外編ですが、神田の三省堂で衝動買いした。もっとハンダ付けが上手くなりたくて(笑)・・・あらためて勉強になります。
小川 晃: PICマイコンのインターフェース101 (マイコン活用シリーズ)
読んでるだけでも面白い♪今まで機械式リレーくらいしか使ったことなかったが、色んな部品があるんだと感心する。マイコン使うなら読んでおきたい本、中古で購入。PIC18F向け
トランジスタ技術 (Transistor Gijutsu) 2008年 02月号 [雑誌]
特集に「GPSのしくみと応用制作」が載っていて、バックナンバーですが神田の三省堂で衝動買い。NMEA-0183についてわかりやすく説明してあります。
桑野 雅彦: メモリICの実践活用法―UV‐EPROM/EEPROM/SRAM/DRAMの構造と使い方
I2C EEPROM についても詳しく書いてあります。
富田 豊: すぐに使える!オペアンプ回路図100
中古で購入。レベルメーターの絶対値回路や正負両電源の参考にしました。CRZ0512WCはこの本で知った。
後閑 哲也: 改訂版 電子工作のための PIC18F本格活用ガイド
PIC18F で無料のMPLAB C18を使う為の参考書。C18の参考書は他にはあまり無いと思う。C18は60日期限であったが期限後も継続使用出来ている・・・最適化がされないらしいが・・・
秋葉原に行ったついでに神田の三省堂で衝動買い(笑)
柳川誠介 CQ出版社: トランジスタ技術SPECIAL forフレッシャーズ No.―徹底図解 (106)
「マイコンの機能を100%引き出すプログラム作成のための Cプログラミング はじめの一歩」といううたい文句の雑誌です。わかりやすい内容だったので、神田の三省堂で購入。いまだにしっくりこないがポインタがなんとなくわかった(笑)
後閑 哲也: 電子工作のためのPIC16F活用ガイドブック
PIC16Fシリーズを使うなら持っていないとといことで・・・
中尾 司: マイコンの1線2線3線インターフェース活用入門―PICとH8で具体的な1-Wire、SPI、I2Cプログラミングを行う (マイコン活用シリーズ)
I2C通信を勉強する為に中古で購入。
高田 直人: CによるPIC活用ブック
部品や回路の参考書として中古で購入。レベルメーター用の絶対値回路はこの本を参考にしました。プログラムは当時まだアセンブラを使用していたので参考にしていません。
中尾 真治: C言語ではじめるPICマイコン―フリーのCコンパイラではじめよう
Cコンパイラに無料の HI-TECH社の PICC Liteを使っている。C言語の文法の勉強のため中古で購入。すぐに、有料のCCS-Cに移行したので、あまりプログラムは組まなかった。
遠藤 敏夫: わかるPICマイコン製作集―16F84プログラミングの世界へ
わかるPICマイコン制御の続編、MPLABに乗り換えたのであまり使わなかったが、回路や部品は参考になる。
後閑 哲也: C言語によるPICプログラミング入門
CCS社のCコンパイラPCMの解説書。PIC16F84Aや873を取り扱っているが877Aにも応用可能。中古本で購入した。改訂版が出ているのでそちらを買った方が良いかも・・・
※どの書籍でもそうだが必ず誤記があるので出版社のホームページで正誤表を確認した方が良い。プログラムソースも同様である♪
光永 法明: はじめてのPICアセンブラ入門 (マイコン活用シリーズ)
16F877Aが主体です。
入門書である程度MPLABが理解出来たあとにこの本を読むともっとよくわかるようになります。液晶表示もビジーチェックを行っていてプログラムに組み込んでもきちんと動作します。詳しく書いてあると思いますが1からプログラムを組むのには不向きかも・・・
私の場合、入門書がこの本だけだったら挫折してたかも・・・
遠藤 敏夫: PICマイコン完全マスター―わかるマイコン電子工作 “6足走行”電脳ロボット製作から学ぶプログラムの基本
アセンブラをPA.EXEからMPLABに乗り換えるのに最初に役に立った本。液晶に10進表示させる数字のテクニックなど参考になりました。ただ私の環境の問題か、液晶表示はこのプログラムでは正常に表示できませんでした。たぶんビジーチェックを行っていないためだと思います。MPLABの入門書としてはいいですが、これだけでは足りません。
遠藤 敏夫: わかるPICマイコン制御―16F84プログラミングの世界へ
・PA.EXEという一般的でないアセンブラ言語を使用している。
・16F84Aに限定される。
などの制約がありますが、バンク切換を意識しないでプログラムできるので、入門書としては最適だと思います。
最近のコメント