nRF51822の動作をデバッガでブレークポイント使って止めながら見ていたのだが、そろそろ限界になってきた。
SDKがassertionを起こすのだ。
src/rem.cなるファイルだと言ってくるのだが、SDKの中にはなさそうなので、よくわからん。
それに、通信系のデバッグで片方が止まってしまうと、相手側も無応答とみなしてエラー扱いにするだろうから、ログを出しながら確認するのがよいだろう。
そういうわけで、デバッグ用にUARTを組み込むことにした。
ざっとSDKを見ると、simple_uart.hというものがあり、実装例もあったので、それを使うことにした。
configのパラメータでピン設定すると、あとはput/getすれば使えるというシンプルさ。
しかし・・・なぜか通信速度の設定などがない。
ソースを見ると、38400bpsで動くように実装されていた。
いくらシンプルとはいえ・・・。
動作クロックのつごうかとも思ったが、リファレンスマニュアルを見てもあまりそんな感じがしない。
嫌だったら自分で組めばいいやん、ということにはなるけど、でもこの実装になっているのは何か意図があるのか・・・。
気になるが、寝よう。
自分もBAUDRATE変えたくて、
返信削除単純にsimple_uart_config()中で
UART_BAUDRATE_BAUDRATE_Baud38400ってとこをUART_BAUDRATE_BAUDRATE_Baud115200に変えてみたら一応普通に動いてるっぽいです。
nrf51_bitfields.hには1Mの定義までありました。
オリジナルのサービス作るのって、アプリ側も考えると面倒なので全部Nordic UARTサービスでいけないかと考えている今日この頃。
115200でも動くのですね。
削除デバッグ用途だけなので、simple_uart_config()を書き換えるか、あるいはそのAPIだけ手元に持ってきて変更するか。
Nordic UARTサービスは、存在を知りませんでした。
まだ、サービスのようなところに追っつかないです。。
アプリも苦手だから、なるべく楽をしたいので、さてどうする、というところです。
Nordic UARTサービス ですが、SDKのV5.2とV6.0の
削除\Board\pca10001\s110\experimental
ってとこにソースあったのですが、SDK V6.1にはなくなってました。
experimentalという名前の通り、実験で終わってしまったのでしょうかね。
アプリはiOS、AndroidともにNordicから出ていて、単純にUARTでスマホとの双方向通信ができます。
アプリがないと動作確認もできないのでとりあえずそれでADCとかI2C(SDKだとtwiって名前)とかの動作を試してます。
ちなみにADCですが1つしかできないみたいで、バッテリ電圧みちゃうと他で使えないっぽいです。(ちょっと触っただけなので、方法あるのかもしれませんが)
Boardの中にあったのですか。
削除あの辺はボードに依存したアプリしか入っていないんだろうと、まったく見てなかったです。
ちょっとしたデータを送ってみたいところだったので、眺めてみます。
Analog INは数ポートあるようなので、チャネルを切替ながら1つずつA/Dするんですかねぇ。
まあ、まだ私はそこまで至っていないのですが。。。