わがロボットの譜

千葉工業大学、総合工学研究会所属の者です。とりあえず、二足歩行ロボット作成日誌です。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

mega168でPS2コントローラと通信

とりあえず、PS2コントローラとの通信の進展版を。。
以前は、デバッグの便宜上SHでしたが、今回は回路の設計では本来はmega168の役割だったので
AVR Wiki様を大いに参考にしながら、AVRStudioで書きました。
使っている機能がいくつかのCファイルにわかれているので見づらいですが、とりあえずソースを。
USART.txt
ps2_pad_avr.txt
main.txt

write_macroではこんな定義してます。。
writemacro


動作としては、まず常にアナログモードに固定されます。
そして○ボタンで振動ON、×ボタンで振動OFFになります。
動作はVstoneの出しているコントローラでしか確認していません。
他のコントローラで動かない場合はUSART_Initのset(UCSR0C, UCPOL0);を
clear(UCSR0C, UCPOL0);にすると対処できる場合もあるようです。

main文内のwait_ms(1);は1ms待機です。
1msもなくても大丈夫ですが、短いと通信が不安定になります。
特にマイコン起動状態で、コントローラの電源をONにするとほぼ対処できません。
必須です。


AVRはクロック主同期モードとかいうのに設定しないと上手く動きません。
普通にUSARTの同期モードでOKかと思っていましたが、違いました。。

やっぱりどこまで書けばいいのかよくわからないので、質問、突っ込みあればどうぞということで。。

これでとりあえず出来たのですが、
16bitのボタンON/OFF情報をPWMでSHに送ろうと思っていたのに、
今日読んでいた高速PWMモードでは値が10bitまでとのこと。
16bitカウンタなのに…

他のモードがうまく使えればいいなとか、二本あるから8bitずつ送ろうとか、いろいろ考えてます。


スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。