SISO製PWM分配器
SISOさんからPWMの分配器が届きました。
お願いしてあったSISOのロゴもちゃんと入っています。
コーネリアスで使用するのは3個ですが、表面実装部品等の難関(私にとって)がありますので予備も含めて4個提供してもらいました。
そして一個はすでにSISOさんのほうで、部品を実装してくれてあります。ありがたや。
この週末は、分配器を使用したタイプのプログラムの作成を行っておりました。たぶん動くでしょう。
あと、0.6mmのハンダも購入しました。
来週のお楽しみです。
気が付いたら1万ヒットを超えていました。ありがとうございます。
お願いしてあったSISOのロゴもちゃんと入っています。
コーネリアスで使用するのは3個ですが、表面実装部品等の難関(私にとって)がありますので予備も含めて4個提供してもらいました。
そして一個はすでにSISOさんのほうで、部品を実装してくれてあります。ありがたや。
この週末は、分配器を使用したタイプのプログラムの作成を行っておりました。たぶん動くでしょう。
あと、0.6mmのハンダも購入しました。
来週のお楽しみです。
気が付いたら1万ヒットを超えていました。ありがとうございます。
ROBO-ONE 映像配信
ROBO-ONEのHPで動画が配信されるようになるみたいです。
将来的には有料になるようですが、現在はJ-Classの
一回戦第一試合のみ無料配信しています。
そう、コーネリアスVSキングカイザーJrの試合です。
得したな〜。
将来的には有料になるようですが、現在はJ-Classの
一回戦第一試合のみ無料配信しています。
そう、コーネリアスVSキングカイザーJrの試合です。
得したな〜。
ATmega128 パルス幅の計測
私はジャイロセンサに近藤科学のKRG-1を使用しております。
このKRG-1は角速度をパルスの幅で表していますので、ATmega128にてパルス幅を計測する必要があります。
以前使用していたM16Cではタイマでパルス幅を計測してくれる便利な機能があるのですが、どうやらATmega128には無いみたいです。
そこで私は外部割込みを使って計測することにしました。
(一般的なやり方かどうかは良くわかりません。一度、ちゃんと書籍とか読んだほうが良い気がしてきました。)
使用したのはINT0,1,2,3です。
割り込み2ポートで一つのジャイロを取り込みます。ジャイロは2つ使用してますので全部で4ポートになります。
プログラムはこんな感じ
初期化処理
// ジャイロ取り込み
EICRA = _BV(ISC31) | _BV(ISC30) | _BV(ISC21) | _BV(ISC20) | _BV(ISC11) | _BV(ISC01 ) ;
EIMSK = _BV(INTF3) | _BV(INTF2) | _BV(INTF1) | _BV(INTF0) ;
割り込み処理
SIGNAL(SIG_INTERRUPT2)
{
// 立ち上がりエッジ
TCNT0 = 0 ;
// タイマカウンタ0標準動作スタート
TCCR0 = _BV(CS02)| _BV(CS00); // 標準動作,CLK/128
}
SIGNAL(SIG_INTERRUPT0)
{
// 立ち下がりエッジ
TCCR0 = 0; // 標準動作停止
rs0_printf ("[%d]", TCNT0);
}
INT2でジャイロ信号の立ち上がりを検知すると、SIG_INTERRUPT2の割り込みが発生し、その割り込みでタイマ0を開始します。
INT0でジャイロ信号の立ち下がりを検知すると、SIG_INTERRUPT0の割り込みが発生し、その割り込みでタイマ0を終了し、タイマカウンタ値が計測値となります。
プログラムは簡単なのですが、2つのジャイロのために、割り込みポート4つとタイマを2つ消費しています。リソースの無駄使いな気がしますが、いまのところリソースをもてあましてるのでこれで良しとします。
ATmega128もだいぶ理解できてきたみたいなので、調査を終了してそろそろプログラムの作成開始しようかな・・・。憂鬱だな〜。
このKRG-1は角速度をパルスの幅で表していますので、ATmega128にてパルス幅を計測する必要があります。
以前使用していたM16Cではタイマでパルス幅を計測してくれる便利な機能があるのですが、どうやらATmega128には無いみたいです。
そこで私は外部割込みを使って計測することにしました。
(一般的なやり方かどうかは良くわかりません。一度、ちゃんと書籍とか読んだほうが良い気がしてきました。)
使用したのはINT0,1,2,3です。
割り込み2ポートで一つのジャイロを取り込みます。ジャイロは2つ使用してますので全部で4ポートになります。
プログラムはこんな感じ
初期化処理
// ジャイロ取り込み
EICRA = _BV(ISC31) | _BV(ISC30) | _BV(ISC21) | _BV(ISC20) | _BV(ISC11) | _BV(ISC01 ) ;
EIMSK = _BV(INTF3) | _BV(INTF2) | _BV(INTF1) | _BV(INTF0) ;
割り込み処理
SIGNAL(SIG_INTERRUPT2)
{
// 立ち上がりエッジ
TCNT0 = 0 ;
// タイマカウンタ0標準動作スタート
TCCR0 = _BV(CS02)| _BV(CS00); // 標準動作,CLK/128
}
SIGNAL(SIG_INTERRUPT0)
{
// 立ち下がりエッジ
TCCR0 = 0; // 標準動作停止
rs0_printf ("[%d]", TCNT0);
}
INT2でジャイロ信号の立ち上がりを検知すると、SIG_INTERRUPT2の割り込みが発生し、その割り込みでタイマ0を開始します。
INT0でジャイロ信号の立ち下がりを検知すると、SIG_INTERRUPT0の割り込みが発生し、その割り込みでタイマ0を終了し、タイマカウンタ値が計測値となります。
プログラムは簡単なのですが、2つのジャイロのために、割り込みポート4つとタイマを2つ消費しています。リソースの無駄使いな気がしますが、いまのところリソースをもてあましてるのでこれで良しとします。
ATmega128もだいぶ理解できてきたみたいなので、調査を終了してそろそろプログラムの作成開始しようかな・・・。憂鬱だな〜。
AVR Studio4 その2
昨日、コンパイルまで出来るようになったので、今日は実際にATmega128にプログラムを書き込むことに挑戦しました。
いろいろな悪い方向の結果が頭をよぎりましたが、何も考えないフリをして書き込みをやってみました。使ったのはGCCDeveloperLiteについていたライタです。
結果は・・・
成功でした。いろいろ調べてからやらなくてよかった(笑)。
不思議なほど簡単に動きました。
おそるべしAVRStudio4
ちなみにAVRStudio4はデバッガじゃなくて、シミュレータのようです。
昨日のブログでは単語を正確に使用していませんでした。m(__)m
まあ、シミュレーションすればデバッグできるんだからあながち間違いじゃないけど。
さて、話は変わってATmega128のサンプル等で出てくる関数(やマクロ)郡ですが、どうやらAVR-LIBCというものらしいです。
日本語の説明を発見しました。やっほーーい。(^o^)v
いろいろな悪い方向の結果が頭をよぎりましたが、何も考えないフリをして書き込みをやってみました。使ったのはGCCDeveloperLiteについていたライタです。
結果は・・・
成功でした。いろいろ調べてからやらなくてよかった(笑)。
不思議なほど簡単に動きました。
おそるべしAVRStudio4
ちなみにAVRStudio4はデバッガじゃなくて、シミュレータのようです。
昨日のブログでは単語を正確に使用していませんでした。m(__)m
まあ、シミュレーションすればデバッグできるんだからあながち間違いじゃないけど。
さて、話は変わってATmega128のサンプル等で出てくる関数(やマクロ)郡ですが、どうやらAVR-LIBCというものらしいです。
日本語の説明を発見しました。やっほーーい。(^o^)v



