fc2ブログ
        

多機能CNC工作機械->新CPU

以前も書きましたがアシッドさんに頂いたSTBeeを世界一多機能な工作機械のメインCPUにしようと思います。

以前(一年半前でしたっけ?w)作ったブロック図を見ながらピンアサインを決めようと思います。
ピンアサインというのはSTBeeの入出力ピンに何を繋げるかという話です。

ブロック図

図のARMマイコン(赤)がSTBeeです。

STBee



実はいままで使っていたARMマイコンでは足が少なくてコントローラを繋げることができませんでしたw
STBeeはなんと100本もあります!!
余裕ですね^^x

いままでの


この移行に従い、設計して製作までした基板を作り直すことになりますね。
いますぐとはいきませんが、いずれはそういうことになります。
削り出しに協力してくれたS.N君(アンリ・マユさん)ごめんね><

基板



時代のながれというものですね。
あのころはSTBeeのような優秀で安価なマイコンはありませんでした。

私のマイコン選定ミスというのが一番大きいのですがw
でもこの基板は音声再生、加工機モータの制御の実験にはまだまだ使いますよ!!



にほんブログ村 その他趣味ブログ 趣味の工作へ にほんブログ村 その他趣味ブログ ビデオ撮影・編集へ

多機能CNC加工機、カラー動画再生

多機能CNC加工機の製作をのんびりですが再開しようと考えている今日この頃です。

とりあえずカラーで動画を再生できるようにしました。
【フレームバッファ】作ってみた



再生した動画の仕様↓↓
170*96
16fps
8bitカラー
今使っているSTM32マイコンではFatFsを併用すると一画面文のメモリ容量を確保できないのでこれが限界のようです。

動画を見ていただくとわかるようにかなり色情報が欠落しています。
元々24bitカラーのものなので、情報量が65536分の1ですw
SPI+DMAしか使えないので通信速度もこの動画では30fpsが限界でした。
SPI+DMAにしても速度が遅い気がするのですが・・・
その辺は私の力量が足りないような・・・
PICより10倍くらい難しいマイコンみたいだしな・・・

動画再生機能としては残念すぎるので何とかならないかとずっと考えていたのですが・・・

なんと、アシッドさんにSTBeeを頂くことになしました!!

STBeeも今私が使っているARMマイコンシリーズの一つで
今使っているものよりも、メモリ要領は4倍、機能も多い、値段も安いのいいことづくめです。
詳しくはここ

加工機製作当時は売っていなかったのが残念ですが、頂けるとなればもう使うしかないw
というか加工機の機能の多さを考えるとどちらにせよ今のマイコンでは限界でした。

アシッドさんありがとうございます!!

春休みの目標はTOEIC600点とホームページ作成とSTBeeの導入にしようと思います^^x
最近全く筋トレやってないな・・・




にほんブログ村 その他趣味ブログ 趣味の工作へ にほんブログ村 その他趣味ブログ ビデオ撮影・編集へ

動画再生

40fpsだと!!!・・・・
http://blogs.yahoo.co.jp/yukukawano9/113195.html

この方(アシッドさん)のブログを見るとよくわかると思いますが、よくSTM32について考察されています。
私も少しスペックが劣りますが同じCPUクロック同じアーキテクチャのマイコンを多機能加工機に使っているので、このくらいの大きさでこのくらいの速度の動画再生ができるのではないかと思います。

ただ私の場合はマイコンに一画面収めるだけのメモリの余裕がないので、SDカードをSRAM代わりにしたらどうなるかとか実験しようと目論んでいます。
バッファを使って一画面を何等分かにして転送しようと目論んでいます。

DMAも使いようでこの速度がでるんですから行ける気がしてきました。

今月はちょっと無理そうですが、来月からはこっちにも手を出したいです><

最近記事に書けないようなことで手一杯なので、なかなかブログ更新できないんですよね~




にほんブログ村 その他趣味ブログ 趣味の工作へ にほんブログ村 その他趣味ブログ ビデオ撮影・編集へ

マイコンでフォントを読み込む!!

マイコンでフォントを読み込む私的方法をご紹介致します。

こちらから16×16ドットフォントファイルを入手。

このファイルの中身を説明すると例えば”1”という文字はテキストで以下のように表記されています。

STARTCHAR 01-03-17
ENCODING 9009
SWIDTH 1024 0
DWIDTH 16 0
BBX 16 16 0 -2
BITMAP
0000
0100
0300
0500
0900
0100
0100
0100
0100
0100
0100
0100
0100
0100
07c0
0000
ENDCHAR
STARTCHAR 01-03-17というのはシフトJISの2バイトコード(全角文字)のエリアマップ
の03区の17点に”1”があるということを示しています。

BITMAPとENDCHARの間の数字群が”1”という文字自体のデータです。
例えば下から2行目の"07c0"は2進数で
"0000 0111 1100 0000"と書けます。
これを一番上の行から順番にやってみると・・・
0000000000000000
0000000100000000
0000001100000000
0000010100000000
0000100100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000000100000000
0000011111000000
0000000000000000

みての通り”1”です。
このデータのことをここではイメージデータと呼ぶことにしましょう。

このフォントファイルにはエリアマップの順番通りに文字情報が並んでいます。
そのため任意の文字が一番初めの文字から数えて何番目からあるのかがSJISコードから計算できます。

だからイメージデータ以外はいりませんね^^;

ということで、イメージデータのみを残してそれをバイナリに変換するプログラムを作りました。
それで変換したファイルがこれ(16f.hf)
2011/3/13追記:アシッドさんのご指摘点(下位7eの列が全部NULLになる)を修正いたしました。

バイナリエディタでみるとこんな感じです。




赤で囲った部分が”1”のイメージデータと同じだとわかると思います。
青で囲った部分からこのデータはファイルの先頭から1byte単位で数えて19C0(十進数で6592)番目にあることがわかります。

一文字は32byteなので206番目の文字ですね。
先ほどのシフトJISの2バイトコード(全角文字)のエリアマップを見てください。
206番目に”1”がありますね。

任意の文字が何番目にあるのかをSJISコードから計算する式は表と数分にらめっこして考えました(笑

        id=(chara[0]-0x81)*189+(chara[1]-0x40);//SIFT-JISコードから文字の位置を割り出す

chara[0]が文字コードの上位ビット
chara[1]が文字コードの下位ビット
一文字目ならばid=0、100文字目ならばid=99といった具合です。

まあ、なぜこうなるのか気になる方は表とにらめっこしてください。
ちなみに私はにらめっこしてるところを母親に後ろから見られて『意味わからない』といわれましたwww

以上のように16f.hfを入手して何番目になんの文字があるのか計算できれば任意のイメージデータを得ることができます。

余談ですが、拡張子がhfは私の名前にちなんでいます。はい、どうでもいいですね^^

今回、私はSDカードに16f.hfを保存してマイコンから読み取り液晶に表示することに挑戦しました。
プログラムはこんな感じです。(説明は面倒なので投げますwwwごめんなさいw参考までに^^)

int main(void){
      f_mount(0, &Fatfs[0]);//SDカードをマウント
      f_open(&File_f,"16f.hf",FA_READ);//フォントファイルオープン

        backcolor(0x00);//バックを黒色に
        arrow(RED,100,0,ABOVE);//上矢印
        arrow(RED,199,24,RIGHT);//右矢印
        arrow(RED,0,24,LEFT);//左矢印
        arrow(RED,100,47,UNDER);//下矢印
       printdisp(ORANGE,"上下キーで選択してね♪",7,16);//文字列読み込み

        while(1){
        repaint(1);//液晶に描画
        }//while

    f_close(&File_f);//ファイルクローズ
    f_mount(0,NULL);//ドライブをアンマウント

}//main

void printdisp(vu8 rgbs,char *st, s16 x, s16 y){
u8 i=0,num=0;
    while(st[i]){//バイト数カウント
        i++;
    }
    i>>=1;//一文字2バイトだから1/2する
    for(num=0;num<i;num++){//一文字ずつに分けて読み込む
    sd_font(rgbs,&st[num<<1],x+num*16,y);
    }
}

void sd_font(vu8 rgbs,char *chara,s16 sx,s16 sy){
UINT kz;
u16 id;
u8 x,y,i;
u8 font[16][2];

        id=(chara[0]-0x81)*189+(chara[1]-0x40);//SIFT-JISコードから文字の位置を割り出す

        f_lseek(&File_f,32*id);//文字の位置までシーク
        f_read(&File_f,font,32,&kz);//文字の読み込み

for(y=0;y<16;y++){//画面配列に書き込む
    for(x=0;x<2;x++){
        for(i=0;i<8;i++){
            if(font[y][x]&(0x80>>i)){
                input_rgb(rgbs,sx+i+8*x,sy+y);
            }
        }//for_i
    }//for_x
}//for_y
        }

実行結果(文字表示サイズ2倍)



にょろり~ん。きりがいいのでそーろそろ卒研モードに入りま~す。

といっても両方とも進めることになることになると思いますがwww
もちろん卒研に重みをおくということですよ~

質問や要望があったらお気軽にぞうぞ~
これからこんなことをしたい人がいたら力になりたいです。




にほんブログ村 その他趣味ブログ 趣味の工作へ にほんブログ村 その他趣味ブログ ビデオ撮影・編集へ

偶然

図書館で勉強していてふと後ろを振り返ったら最新のARM7マイコン活用ハンドブックがありました。
これはこれはと思って読んでみると面白い。
 
読み進めるとどこかで見かけたことがあるモバイル端末を発見。
もしやと思い筆者を調べるとあのFatFsモジュールを開発したChaN様でした。
FatFsは私がSDカードとの通信に使っているモジュールです。
 
なんという偶然。
 
書物にはFatFsについても解説されています。
先日解析したばかりのものがこんなところにあるなんて心躍りますね^^



にほんブログ村 その他趣味ブログ 趣味の工作へ にほんブログ村 その他趣味ブログ ビデオ撮影・編集へ

プロフィール

回路師

Author:回路師
趣味がロボットと動画製作です。
便利な機械やあほなマシンの動画を投稿しています.

最新記事
最新コメント
カテゴリ
電子工作キット








月別アーカイブ
書籍






Twitter
リンク
RSSリンクの表示
ソーシャル

検索フォーム