日々の活動記録や、暇つぶしなどなど
なんとなく今日はH8のプログラムしてました。理由は特に思い出せないんですが爆
なにやってたかってと、マイコンカーでよく使われてるI2CのEEPROMを使えるようにするということ。
前に基板は作ってサンプルプログラムは入れたんだけど動かないから投げていたものをきちんと検証してみました。
と言っても動かないサンプルプログラムほど理解しにくいものはない。
なんせ中で何やってるか理解してないからデバッグのしようがない。
ということで24LC256のデータシートを読む。
なんだ簡単じゃないか。これならサンプルプログラムなんて必要ないやん。
そんなかんじでさくっと自前のプログラムを書いてみた。
いろいろくだらないミスはあったものの、最終的にはきちんと動くものが出来た。
しかもサンプルプログラムよりは動作が速い。と思う。
で、このプログラムをまとめてライブラリにしようとしているのが現在のところ。
H8/3048はI2Cのハードウェアを搭載していないのでソフトウェアI2Cをやっているわけだけども、書き込みに時間を食ってしまい、本来のプログラム実行に支障をきたしてしまうので、バッファに保存データを溜め込みつつゆっくりEEPROMに書き込んでいく必要があるわけですね。
そのためにリングバッファ用意して…という状態で思案中。コードサイズはそんなに気にしないで済むはずだから、たらたら書いてしまえばいいかなぁ。
これがうまく動いたらSCIもリングバッファ化しよう。
いま使ってるprintfって送信終わるまで待ってるからマイコンカーのメインループ内にprintfを書いたとたんにちっとも動かなくなる。これを改善したいという話。
さらにさらにこれもうまくいったらキャラクタLCDの関数も整備するか。
ソフトウェアI2Cを使ってるので他のマイコンにも転用しやすいかなぁと。
できるだけハードウェア依存しないようにプログラム書いてるつもりなんで簡単にAVRに移植できるかな?
まぁ一応の目的としては相撲ロボットに乗っけようかなぁと思ってたりするんだけども。
なにやってたかってと、マイコンカーでよく使われてるI2CのEEPROMを使えるようにするということ。
前に基板は作ってサンプルプログラムは入れたんだけど動かないから投げていたものをきちんと検証してみました。
と言っても動かないサンプルプログラムほど理解しにくいものはない。
なんせ中で何やってるか理解してないからデバッグのしようがない。
ということで24LC256のデータシートを読む。
なんだ簡単じゃないか。これならサンプルプログラムなんて必要ないやん。
そんなかんじでさくっと自前のプログラムを書いてみた。
いろいろくだらないミスはあったものの、最終的にはきちんと動くものが出来た。
しかもサンプルプログラムよりは動作が速い。と思う。
で、このプログラムをまとめてライブラリにしようとしているのが現在のところ。
H8/3048はI2Cのハードウェアを搭載していないのでソフトウェアI2Cをやっているわけだけども、書き込みに時間を食ってしまい、本来のプログラム実行に支障をきたしてしまうので、バッファに保存データを溜め込みつつゆっくりEEPROMに書き込んでいく必要があるわけですね。
そのためにリングバッファ用意して…という状態で思案中。コードサイズはそんなに気にしないで済むはずだから、たらたら書いてしまえばいいかなぁ。
これがうまく動いたらSCIもリングバッファ化しよう。
いま使ってるprintfって送信終わるまで待ってるからマイコンカーのメインループ内にprintfを書いたとたんにちっとも動かなくなる。これを改善したいという話。
さらにさらにこれもうまくいったらキャラクタLCDの関数も整備するか。
ソフトウェアI2Cを使ってるので他のマイコンにも転用しやすいかなぁと。
できるだけハードウェア依存しないようにプログラム書いてるつもりなんで簡単にAVRに移植できるかな?
まぁ一応の目的としては相撲ロボットに乗っけようかなぁと思ってたりするんだけども。
PR
この記事にコメントする
RTOSのイメージ
RTOSって遅いイメージがあるんですが、実際はどうなんでしょう^^;
マイコンカーはH8/3048を24.576[MHz]で使ってるんですが、制御周期500[uSec]なので結構きつきつなんです。
と思っているんですが、この程度の制御周期なら問題ないRTOSとかってあるんですかね。調べてみますか。
使ったことないし検討したことも無いので何もわからんです^^;
マイコンカーはH8/3048を24.576[MHz]で使ってるんですが、制御周期500[uSec]なので結構きつきつなんです。
と思っているんですが、この程度の制御周期なら問題ないRTOSとかってあるんですかね。調べてみますか。
使ったことないし検討したことも無いので何もわからんです^^;
RTOS
タイムティック500μsなら、μITRON系のRTOSなら普通にいけるんじゃないかな。
あと、μITRON系だとTOPPERSとかHOSとかオープンソースのやつも多いから、いざとなったらカーネルに手を入れて最適化することもできる(大概はすでに十分にチューニングされてるけど)。
RTOSってプリエンティブマルチタスクOSと言われてるけど、一般的なRTOSはプリエンティブなのは実行タスクより上位の優先度を持つタスクが起床した時だけで、タスクスイッチングも基本的にはユーザー指示です。
タスクスイッチング許可(待ち状態遷移、あるいは明示的タスク起床)をしないと原則として勝手には実行権を持って行かれないので、クリティカルルーチンのハンドリングに関してはシングルタスクコードとほぼ同程度でいけますね。
あと、μITRON系だとTOPPERSとかHOSとかオープンソースのやつも多いから、いざとなったらカーネルに手を入れて最適化することもできる(大概はすでに十分にチューニングされてるけど)。
RTOSってプリエンティブマルチタスクOSと言われてるけど、一般的なRTOSはプリエンティブなのは実行タスクより上位の優先度を持つタスクが起床した時だけで、タスクスイッチングも基本的にはユーザー指示です。
タスクスイッチング許可(待ち状態遷移、あるいは明示的タスク起床)をしないと原則として勝手には実行権を持って行かれないので、クリティカルルーチンのハンドリングに関してはシングルタスクコードとほぼ同程度でいけますね。
カウンター
委託案内
アンプ基板や同人誌を委託販売しています.リンクからどうぞ.(外部サイト)
・HA10mini基板セット
・HA10mini終段基板
・HA10miniハイパワーキット
・HPA&Analog vol.6冊子版
・同人誌DL委託
・同人誌DL委託(旧サークル名)
・HA10mini基板セット
・HA10mini終段基板
・HA10miniハイパワーキット
・HPA&Analog vol.6冊子版
・同人誌DL委託
・同人誌DL委託(旧サークル名)
ブログ内検索
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
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 |
最新記事
最新トラックバック
カテゴリー
SilverLight
アクセス解析
広告