<紙>さんLOG

「パソコンヲタクの雑記帳」
 PC/Linux系/物理・化学で遊んでいます。
思いついたことを綴っています。

USB TMC クラス?

2010年01月14日 | PIC・マイコン
ご訪問ありがとうございます。


或る測定器のデータ取り込みに関する話しです。

現在使っているものは、RS232C インタフェースのもので、
これを、USB・シリアル変換ケーブル(一例)で、USB に変換して、
PCに繋いでいる。(RS-232C ポートが無いPCなので)

今回の測定器は、インタフェースが、
  USB TMC(USB Test & Measurement Class)クラス
とありました。

USB のクラスについては、ブログを始めた頃に、
PIC(6) USB・Gen」で、以下のように纏めていました。

なお、プログラミングするには、さらに、宣言文(「ヘッダ」?)の要否がある。


それで、今回「TMC」クラスがあることを知りました。

ところで、TMC クラスって何?

USBTMCとは何ですか・・・」に書いてありました。
  GPIBのような通信をUSBデバイスと行うために、
  USBをベースに設計されたプロトコルです。
  ユーザーからは、USBデバイスはGPIBデバイスのように動作している
  ように見え、・・・
とのことですね。

つまり、PC等からみれば、
  CDC クラスは、RS232C と見え、
  TMC クラスは、GP-IB とみえる。
と云うことですね。

では、全部で幾つのクラスがあるの???
Approved Class Specification Documents 」に載っていました!

-----

CDC クラスについては、
PIC(7) USB・HID/CDC」や「78K0化(続き:新型PC化)」の如く、
「Active BASIC」で書けています。


TMC クラスについては、「Active BASIC」で書けるのかナ?

取り敢えず、C とか VB とか、かんとか、近いものを集めてみました。

GPIB/・・・/USBサンプルプログラム集(DL/AR/WT ...」(横河電機)
GPIBデバイスドライバ テストプログラムの一例」(プロエクシィ)
GP-IBによるPCへの測定データ転送」(京都大学 情報学研究科)
MCI サンプルプログラム一覧」(エムシーアイエンジニアリング)
GPIB制御プログラミング」(りーまん@関東以北)
Cプログラミング」(福井高専 電気工学科)

これらから、いろいろ勉強すれば(?)使えるものができるかな???

と云うことで、・・・・・          



見ていただきありがとうございました。
お帰りに投票して頂けると嬉しいです。 ⇒ 日記@BlogRanking

人気BlogRanking ⇒ 

P-NETBANKING ⇒ 

『mikroBASIC』

2008年09月16日 | PIC・マイコン
昨日までの累計アクセス数=15,355。 ご訪問頂きありがとうございます。         日記@BlogRanking


「あしあと解析」を見ましたら、以前、「PIC(14)言語比較」や「PIC(18)言語仕様」で書いた、
「mikroBASIC」についての検索が目立っていました。

改めて、コメントしたいと思います。

16F877A/873A、16F88、16F84A、12F683、16F648A(<紙>所有チップ)
などの14ビット系PIC向けには、お奨めできるBASICコンパイラだと思います。
体験版の制限はオブジェクトサイズが2KBまでですが、十分ではないでしょうか。

また、TinyBootloader(PIC(3)tiny bootloader)との相性がイマイチですが、
mikroElektronika製のブートローダもあります。

一方で、18F2550、18F452(<紙>所有チップ)などの16ビット系PIC向けには、
Swordfish BASIC がお奨めです。(もちろん、mikroBASIC も使えます。)

体験版の制限は、処理部分でなく使用するデータのサイズです。実質制限無し?

千秋ゼミ(Swordfish BASIC)が大変参考になります。

<紙>さんHP」に、PS/2マウス入力のプログラムを載せています。
(汚いでしょうが見てやって下さい。)


見ていただきありがとうございました。お帰りに投票して頂けるとありがたいです。 ⇒ 日記@BlogRanking
どうぞ宜しくお願い致します。


『ColdFire』マイコン

2008年09月03日 | PIC・マイコン
昨日までの累計アクセス数=12,421。 ご訪問頂きありがとうございます。         日記@BlogRanking

ColdFire とは、Freescale Semiconductor社のマイコン MCF52233 で、
Interface誌(2008年)9月号(既にバックナンバーになってしまいましたが)
に付録としてその基盤がついている。

<紙>が PIC で遊んでいて、欲しいなと思った、PICNIC(LAN接続できるPICマイコン)
に相当するのではないかと思って、雑誌を買った。結構な値段であったが。


ColdFire は、Ethernet に接続できる。つまり、LANが利用できる。
MCF52233 には256KBのフラッシュROMが内蔵されているが、付録基盤では、
その半分の128KBに、C言語インタプリタ(SilentC)とHTTPサーバが書き込まれている。

PCとは、telnetやtftpでの接続と、webブラウザでの接続が出来る。

付録基盤では最低限、(パルストランス内蔵)RJ-45モジュラ・ジャックと
DC 3.3V 供給用のDCジャックが必要である。部品を追加で買って、ハンダ付けした。
これで、PICNIC価格の半分を超えてしまった。


PCとColdfireをHUB経由で接続した。(下図)



通常、<紙>PCはDHCPを使っているが、一旦 192.168.1.2 に固定して作業した。
Coldfireには、仮のIPアドレス 192.168.1.10 が設定されている。


先ずは、telnetで接続して(ハイパーターミナルかTeraTermを使う)、組込コマンドが使えることを確認した。
dir
type ファイル名
load [ファイル名]
save [ファイル名]
list [行番号]
・・・
が使える。

本文の記事に従って、MACアドレスを設定した。
次にwebブラウザで接続しIPアドレスを設定するのだが、そのまま(192.168.1.10)使うことにした。

記事に載っているサンプルのホームページ index.htm と、処理プログラム Main をtftpで書き込んで、
webブラウザで接続すると、「内蔵の『加速度センサ』のアナログ値をAD変換した」数値が表示された。

つまり、付録基盤には MCF52233 と加速度センサーが載っており、
また、マイコン MCF52233 はAD変換機能も内蔵しているということだ。

これに、64ピン・コネクタ等を付けると、ブレッドボードでの実験ができる。
ソフト開発には、Cコンパイラが“おまけ”で付いている。
でも、いつになったら遊べるかな?


見ていただきありがとうございました。お帰りに投票して頂けるとありがたいです。 ⇒ 日記@BlogRanking
どうぞ宜しくお願い致します。


78K0マイコン:試行

2008年09月01日 | PIC・マイコン
昨日までの累計アクセス数=12,021。 ご訪問頂きありがとうございます。         日記@BlogRanking


以前、「78K0マイコン:ブートローダ」でブートローダを作りましたが、当時のテストは、
雑誌付録のプログラムで、基盤上のLEDを点滅させるモノでした。

78K0化(続き:新型PC化)」で設計した(エッ! ハイ、実は設計段階だったんです。)
モノを作るべく、製造段階に入りました。

78K0マイコン基盤に、(必須では無いが)「USB・Bレセプタクル」と、
これは必須である「28ピンDIP連結ソケット」をハンダ付けしました。

付属の開発ツール:CC78K0コンパイラとLK78K0リンカ等を用いて、
ポートP10、P11に繋いだLEDを点滅させるソフトを開発しました。

RAM上で動かすので、「RamStart.asm」とリンカ用「RAMAPP.dr」をプロジェクトにコピーして、
ソース上では、「trgbios.h」と「types.h」をインクルードするようにしました。(ソース全体は後ほど載せます。)

回路図は下図の通りです。

抵抗が、3K3 なのは、電流値を制限したためです。(暗いけど)


78K0マイコン用プログラムの仕様:
PCからUSB経由で1文字入力し、
文字が. ならば終了する。
文字がX ならば500ms毎、5回、P10ポートのLEDを点滅させる。
文字がx ならば250ms毎、10回、P10ポートのLEDを点滅させる。
文字がY ならば500ms毎、5回、P11ポートのLEDを点滅させる。
文字がy ならば250ms毎、10回、P11ポートのLEDを点滅させる。
それ以外は、無視する。
という単純なモノです。

テスト実行はOK。メデタシメデタシ。

見ていただきありがとうございました。お帰りに投票して頂けるとありがたいです。 ⇒ 日記@BlogRanking
どうぞ宜しくお願い致します。



78K0マイコン用Cソースは以下です。(段付けの為、先頭に2B空白がある。)
----------------------- a.c ----------------------------------------------
#pragma sfr
#include "types.h"
#include "trgbios.h"
void waitus(U16 vvv){ // vvv us のWAITを行う(正確には1.4usくらい)
 while(vvv--) ;
}
void waitms(U16 ww){ // ww ms のWAITを行う
 while(ww--) waitus(740);
}
void task1(){
 U8 i;
 for ( i=0 ; i<10 ; i++ ){   P1.0 ^= 0x01; // LED のポートP10を点滅
 }
}
void task2(){
 U8 i;
 for ( i=0 ; i<20 ; i++ ){   P1.0 ^= 0x01; // LED のポートP10を点滅
 }
}
void task3(){
 U8 i;
 for ( i=0 ; i<10 ; i++ ){   P1.1 ^= 0x01; // LED のポートP11を点滅
 }
}
void task4(){
 U8 i;
 for ( i=0 ; i<20 ; i++ ){   P1.1 ^= 0x01; // LED のポートP11を点滅
 }
}
void main() {
 PM1.0 = 0; // LED のポートP10を出力用にする
 PM1.1 = 0; // LED のポートP11を出力用にする
 while(1) {
  char c = trg_getc(); // USB から1 文字取得
  if(c == '.') break; // 文字が. ならば終了
  if(c == 'X') task1(); // 文字がX ならば500ms毎 P10
  if(c == 'x') task2(); // 文字がx ならば250ms毎 P10
  if(c == 'Y') task3(); // 文字がY ならば500ms毎 P11
  if(c == 'y') task4(); // 文字がy ならば250ms毎 P11
 }
}

-------------------------------

ABV4(Active BASIC Ver.4)のアプリは、ブートローダ用のIO処理部分のみ載せる。
(段付けの為、先頭に2B空白がある。)
'
'
Dim ins$ As String, ots$ As String, j As Long, p As *Byte
'
' ======= 78K0 とのIO処理 ============
'
Do
 Input "コマンド=";ins$
 v=Len(ins$) : If v=2 Then *fin
 if v>0 Then p=StrPtr(ins$) : memcpy(buf,p,v)
 buf[v]=13 : v++ : buf[v]=0
 j=WriteFile(hComm, buf, v, VarPtr(k), ByVal 0) ' 書き出し
 Sleep(15)
 j=ReadFile(hComm, buf, 250, VarPtr(k), ByVal 0) ' 読み込み
 buf[k]=0 : ots$=MakeStr(buf)
 Print "受信文字列=";ots$
Loop
' ===================================================================


78K0化(続き:新型PC化)

2008年08月24日 | PIC・マイコン
昨日までの累計アクセス数=9,851。 ご訪問頂きありがとうございます。         日記@BlogRanking


PC1台化(続き:単純化)の結果、随分すっきりしたものになったが、ここでのPC(PCB)はパラレルポートが必須である。
だが、最近のPCにはパラレルポートが無いものが多い、特にノートPCでは。

(<紙>のメインマシンは、3年前に作ったペンティアム4HTだが、メインボードはintel社のD945Gで、)
(まだ、PS/2もシリアルポート/パラレルポートも付いている。さすがにISAバスは無いけど。)

そこで、パラレルポート無しでも使えるように、ということはUSBで動くようにアプリCを移植した。
ここで使ったのは、78K0マイコン:ブートローダで書いた、78K0マイコンである。
このためだけに、トラ技8月号を購入した。

アプリCを改造しアプリDにした。改造ポイントは、最初のアプリAと同じ serial on USB 方式でOK。
PCは新しい型のPC(PCA)でOK。
78K0マイコン用アプリは、USBからコマンドを入力しパラレルポートにパルスを出力するものを、
添付のC言語で新規に開発した。

HW構成は下図のようになる。



この78K0マイコン用ソフトでも、1マイクロ秒を作り出す方法で悩んだ。

そこで、C言語のアセンブラオブジェクトを出力するようにして、眺めていたら、
空のfor文で変数を2バイトとすると、1回当たり約1.4マイクロ秒くらいになるようだ。

なので、これで時間待ちループを作ることにした。1ミリ秒は約720回のループで作れる。
以上で、最近のPC(デスクトップでもノートPCでも)でも、USB経由で使えることになった。

見ていただきありがとうございました。お帰りに投票して頂けるとありがたいです。 ⇒ 日記@BlogRanking
どうぞ宜しくお願い致します。