フォト
2016年11月
    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      

最近のトラックバック

ロボット部品

無料ブログはココログ

マイコン

2014年4月30日 (水)

テスト中デバイスの写真

1398814739316.jpg

1398814741162.jpg
Bluetooth モジュール『JY-MCU BT board V1.05』
Arduino 向けのもの。


1398814742637.jpg
4D Systems の『uOLED-96-G1』
写真では伝わらない有機EL ディスプレイの綺麗さがあります。


しかし、FRAM やらuOLED やら動作させるためにマイコンからのジャンパこんなに…。

1398814744387.jpg

2014年4月29日 (火)

デバイステスト

とりあえず、FRAM にデータ読み書きができるようになったので、ロボトレ設計時に搭載予定だったディスプレイのテストを始めました。

ディスプレイは4D Systemsの『uOLED-96-G1』。2年くらい前に購入して、手を付けていないものでした。
このディスプレイはシリアル通信でデータを送るので、RX210 からシリアルポートを一本引き出しておきました。

ついでなので、以前購入したBluetooth モジュールもテストしてみました。
Bluetooth モジュールは『JY-MCU BT board V1.05』というやつです。
ペアリング時のピンコード『1234』にしばらくハマりましたが、なんとか動作確認。

やはり、無線でデータ送れると便利ですね。

まだ、ボーレート設定が出来ていませんが、このシリアルポートはuOLED 専用にする予定なので、本格的に使う時にテストします。

2014年4月24日 (木)

RX210 外部メモリ使用メモ2

RSPI ペリフェラルを使用するのに随分、時間がかかってしまいました。

原因は
 1.ロボトレ基板の設計ミス
 2.送受信、アイドル割込み


○1.についてはSCI ペリフェラルの簡易SPI モードとRSPI を取り違えていました。
 なので、パターンカット+ジャンパが。 初めて使うマイコンをテストもしないで本番基板に実装したからですね。
とりあえず、ジャンパが三本増えましたが動作するようになりました。
DMA の実装はパフォーマンスが足りなくなってからにしますが、28byte バースト書き込みは出来ているようです。
 通信速度は588kByte/s くらい。転送byte 数に対してオーバーヘッドがでかいんで、こんなものだと思います。

○2.について、RX210 は送受信タイミングを割り込みフラグで管理します。
なので、
 送信時
  送信割り込み→アイドル割り込み
 受信時
  受信割り込み
となります。エミュレータが使えないので今どの割り込みに入っているかデバッグするのに少し苦労しました。

2013年9月 4日 (水)

RX210 RXコンパイラのなぞ(解決編)

前回の記事でどうもADC 変換割り込みが、動作したりしなかったりということを書きましたが、解決しました。

原因はコンパイラではなくて、割り込み優先度の設定でした。制御割り込みとADC 終了割り込みが同じ優先度になっていたため、正しく動作していなかったようです。
なぜ、Wait 関数では動いて、他の方法では動かなかったのか不明ですが、正しい割り込み優先度を設定すると、正しく動作するようになりましたcatface

とても単純なバグでございましたcoldsweats01

2013年9月 2日 (月)

RX210 RX コンパイラのなぞ

 やっと今年のロボトレのプログラムを真面目に書き始めたわけですが、ADC 終了割り込みがどうも不思議な動作をしております。
 現在の構成ですと制御割り込み内でADC 終了割り込みを呼びに行くのですが、ADC 終了割り込みが入る時と入らない時があることが分かりました。
具体的には、制御割り込み内でADC を開始して、ADC 終了までの待ち方が異なります。

・動作する待ち方
 Wait 関数を呼んで一定時間待つ
・動作しない待ち方
 制御割り込み内にADC 終了フラグ(グローバル変数)を監視をするwhile 文をベタ書きする

Wait 関数は単にwhile 文とfor 文の組み合わせなので本質的には変わらないはずです。
後者の方法は普通に待つとコンパイラに消されてしまうので、消されないようにはしてあります。もちろん、グローバル変数はvolatile 宣言してあります。
これは、コンパイラの最適化オプションを『最適化なし』にしても変わらなかったので、コンパイラオプションによるものではないようです。
逆アセンブリでコード見れば分かるかもしれませんが、まだそこには至っていませんsad

2013年8月 2日 (金)

RX210 SCI 動作確認(再び)

どうやら、以前動作していた時は潜在的なバグを抱えていたようです。
つまり、たまたま動作しているように見えただけでした。

バグの原因はフラグ操作ミスで、シリアルデータを送信中なのに常に『送信完了』フラグが立っていましたcoldsweats01
なので、送信中に次の送信データが来てしまうと上書かれてしまっていました…。

気付いてしまうと単純なバグですねbearing

2013年7月31日 (水)

RX210 SCI が動作がおかしくなりました

先週末にちょっとペリフェラル設定の関数を変更したら、動作がおかしくなりました。

現象としては、送信文字列の最初の一文字目をターミナルソフトに出力し続けます。
TX のエンプティ割り込みが発生しないと、文字を出力することはなく、割り込み内で文字目のポインタをインクリメントしているため、

※割り込みが発生している=同じ文字は出力しない

という論理が成り立つはずなんですが、そうなっていない現実があります。
エミュレータを繋げばすぐ解決しそうですが、現状だとさっぱり分からない。
おまけに最近は帰宅が日付をまたぐので、あまり考察も進んでいません。

コードのミスなら良いのですが、ペリフェラルの設定ミスによる予期せぬ動作だとやだなぁと思うある日の帰宅途中でしたpenguin

2013年7月22日 (月)

RX210 ADC, DAC, PWM 動作確認

珍しく用事のない土日だったので、結構がっつりと開発させていただきました。

おかげさまで、タイトルの通り
・ADC
・DAC
・PWM
の動作確認までこぎつけました。
あとは、出来ればSPI とI2C を動かしておきたいところですが、必須では無い要素なので、先に進むことにしますbleah

いよいよ、実装再開です!

○残りの実装物
・ジャイロ
・モータードライバ 3ch
・ブザー
・ロータリーエンコーダ
・センサ

まだまた先は長い

2013年7月16日 (火)

RX210 SCI 受信と多重割り込みも出来た

PC のターミナルソフトから文字列送って、マイコン側で受信出来ました。

あとはテスト用のコードを削除、整理して使いやすくするだけです。


あと、初めての試みだったのですが、多重割り込みもテストしてみました。
IRQ 割り込み内からシリアル割り込みが入ることを確認したので、タイマ割り込み中でもシリアル通信で文字出せます(あまりやらないと思うけど)flair


休日のうちになんとかシリアル通信の関数群を作り終わりました。
そして全ての部品が揃い、モックも完成しました!
ギヤの貼り合わせ等に若干のミスがありますが、初期動作のうちは問題なしですbleah

○これからやること
・コンペアマッチタイマの動作確認
・マルチタイマによるPWM 出力
・位相係数モードの動作確認
・12bit ADC の動作確認

まだまだ、先は長い

2013年7月11日 (木)

RX210 SCI 送信の確認が出来ました

調歩同期式やクロック同期式のシリアル通信はプロトコルが簡単で良いですね。

結局のところ、やはりプログラムが間違っていました。
ロジアナ(ロジックアナライザ)で電気信号を確認して、問題がないことが分かり、ボーレートの低いところから順に試してゆきました。
すると、ある特定のボーレート(38,400 bps)でおかしくなるので、マイコン側のボーレート設定を計算し直しました。
で、レジスタ設定値を『19』とするところを『20』にしてました。たった『1』ですが、されど『1』ですね。

ただ、クロックとボーレートの関係が悪いようで、誤差が少し大きいです。絶対値で2.5% から2.7% くらいかな。

あとは汎用関数にして、次は受信ですbleah

より以前の記事一覧