新しいものを表示

Arduinoの種類をとっかえひっかえ試していて、MegaとDuemilanoveが比較的マシだという結果が出た。
で、USB接続してシリアルを読むマシンをWindowsにかえたところ、データがぶっ壊れる率が激減したというか、毎秒250パケット送ってて、FreeBSDだと1分で500~1000ぐらい壊れたパケットがあるのに、Windowsでは1個しか壊れていなかった。

Arduino Megaの次に成績がいいのがArduino Duemilanoveだなあ。こっちはFTDIがATMega328にそのままつながってる。ATMega16U2が挟まってない。

sleepさせなくてもパケットが落ちる。Megaでお試ししたら一番成績がいいように見える。受信側にほかの負荷が同時にかかってたから、関係あるかもしれない。

UNO R3もいつ靴のリビジョンがあったので試したが。Genuinoもあった。

Leonard ETHには書き込めたけど、機嫌が悪い。で、最後にはUSBデバイスとして認識しなくなった。

とりあえず、すぐできるお試しとして、Arduinoのスケッチの中のloop()でsleep命令を出さずにビジーループするようにして、手持ちにあったArduino Mega 2560とLeonardo ETHを試してる。で、Megaには書き込めたがLeonardo ETHには書き込めん。

FlexiTime2をつかって250HzでanalogRead()してシリアル送信してるだけだから、Unoの能力でも足りるはず。というかATmega32u4でもいけることになってるから、クロック的には全然余裕。

sleep命令を取ってみるか、ATMega32u4なArduinoにしてみるか、いっそのことArduino M0にしてみるかかなあ。

シリアルが化けるにしても、バイトが丸ごと落ちてるのが解せぬ。普通は1ビット化けとかそんなのだし。

ロジアナでちょんちょんするとちょっとわかりそう

ボードのメーカーのドキュメントを見るとOLIMEXINO-328とOLIMEXINO-32U4とOLIMEXINO-2560とOLIMEXINO-STM32なんだな。
OLIMEXINO-280はATMega328だからFT232RLを経由してUSBにつながってるのはArduino UNOと変わらない。OLIMEXINO-32U4はATMega32U4だからUSBは内蔵、OLIMEXINO-2560はCH340H経由だなあ。

シリアル通信が化けるというより、正確にはバイトが丸ごとドロップしてるんだなあ。

Arduinoから送信するのが化けてるんだなあ。受信してるのはFreeBSDなPCで、/dev/ttyU0に見える。化けるはずがないのに化ける理由がわからん。

あと、気になるのはvoid loop()の中で__asm__ __volatile__("sleep");して寝てることだなあ。起き上がってくるときに何か起きてて化けるとかはありそうではある。

ATMega328pだと化けるけど、ATMega2560だと化けないとかあるかもしれない。

なんか、シリアル通信がやたらと化けるArduino用のECG olimex.com/Products/Duino/Shie のデモ用のプログラムなんだけど。Omilexino-2560とあるなあ。AVRマイコンがArduino Mega相当だ。

いまどきUSB 2.0のシリアルを取りこぼすのもなんか変だ。

今日は一日中、研究室でシャツをまくり上げて胸を出して心臓用の電極の接触状態を確認したり、パンツをめくって下腹部の基準電極の状態を確認していた。傍から見てやばいやつである。

NSFWの自撮り写真がありますが、仕事中に撮りました。
(Arduino用の筋電センサシールドのデータ受信用プログラムを書いてて、筋電だと何だかわからないから、正しいデータがわかってる心電で測定してて、胸にパッドを張ったりした様子をシャツをまくって自撮り)

古いものを表示
:realtek:

思考の /dev/null