お気軽にお越しください。moduleにブートローダを載せる(AVR109対応)随分前に対応しようと思い立っていたAVR109にようやく対応させた。以前やった時にうまく書けなかったのはボードのクロック精度が原因。ここ数日モニタを実装していて、思った以上にRC内蔵クロックの精度が悪いことが分かった。エコーバックのテストでやたらと文字が化ける。データシートを見返してみると確かに。実験用途とは言え、オシレータは載せておきたかったところではある。デモアプリケーション起動時に100[us]で割り込みを発生させるようにしてオシロスコープで観察し、モニタコマンドでOSCCALを調整できるようにした。この状態でエコーバックテストをすると当然問題ない。ブートローダの問題もきっとこれだろうと気付き早速試す。ブートローダには2[KB]を割り当てた。ワード先頭アドレスは0x0C00でmakefileで.textのベースアドレスを指定する時には0x1800となる。mkIIでブートローダを書き込む。次にやるのはブートローダ経由で書き込むアプリケーション。現在実装しているデモアプリケーションは既にフラッシュの大部分を使い切っている。今回はブートローダの動作を確認するだけなので、機能をザクザク削って6[KB]に収めたバージョンを作った。後はavrdudeの書き込み機器指定をavr109としてポートにシリアルポートを指定するだけ。$WRITE_EEPROMこれで書き込みを実行。べリファイまでの動作を確認した。B041の場合FATの実装が入るのでブートローダの搭載はあまり現実的ではないかもしれない。書き込んだアプリケーションはFATの実装+エコーバックの実装だが、6[KB]ギリギリ。今回はOlimexに発注。同様の設計ルールでPCBCARTに頼んだ事があるが、正直8年くらい前のOlimexの品質に近かった。Olimexは以前に比べて格段に品質が向上している。製造環境や使用部材を更新しているのかもしれない。今回は少し急いで出荷はFedExを指定。MODULEの電気図面の振り返りレビューざっと引いた図面には大抵の場合「何かの穴」があります。それらを見つけて修正する機会を与えるのが振り返りレビューです。電気図面を引いた後に数日寝かせてこれを自分で行います。印刷した電気図面に思いつく突っ込みをどんどん書いていきます。通常であればこの時点でいくつもの疑問が出てきます。基板を製造した後で見つかるバグの大部分はこういった地味な取り組みで取り除くことができます。ポイントをまとめてみました。ポイントバラバラに集められたデータシートがあれば一カ所に集約しておく。振り返りは必ず日付を跨いで行う。(天気や場所などが違えばなお良い。)振り返りは複数回やると効果的。参照して良い技術文書はデータシートのみとする。他にも色々あるかもしれませんが、今朝思いついたのはこのくらい。MODULEの設計WAVファイルをチープな音で再生するためのモジュールとして設計。外出先で3時間かけて配線したのが下記ボード。家に帰って原寸大で印刷してみたらイマイチ盛り上がりに欠ける。何か中途半端さを感じてしまう。そこでやるんだったらということで液晶表示機を追加する仕様に急きょ変更。結局配線も初めからやり直しです。間に合えば新設計品も展示します。Atmega8SDカード上のWAVファイルを読み込んでPWMで音声を出力する実験。サンプリング周波数をどこまで上げられるかの事前確認を兼ね、SDカードI/Oの様子をオシロで観察。リングバッファによるFIFOを作り空きがあれば順次読み出しリクエストを発行する仕組み。悪くはないが、これを調整したところで技術的な取り組みとしての魅力をあまり感じない。考えていたらFreeRTOSで以下を試してみたくなる。FIFOからデータを読み出してPWM値を設定するタスク実現の可能性を探るために事前調査を開始。現状の基板に搭載されているAtmega8では実用性に欠けるが事前調査なので良しとしよう。FreeRTOSをポーティングして10[ms]毎にシリアル通信をするプログラムを仕立てる。シリアル送受信も割り込みベースで行われるのでタスク処理に時間的影響を与えない。次はサンプリング周波数に応じた高精度タイマー割り込みタスクでの動作を確認したいところだ。(Atom)自己紹介shinta基板が大好きな組み込み系エンジニア。電気図面を描いてPCB上に美しく配線できた時に何とも言えない快感を覚える。ソフトウェアとドライバが一式になったパッケージをダウンロードします。インストール後に本体を接続してソフトウェアを起動すると以下のような画面が表示されます。勢いよく「改良しました!」と宣言したh8writeですが、やっぱり書き込みに失敗するという事がわかりました。そもそも真の原因を掴めないまま改良したと言っても、何を改良したのか意味がわかりません。自分でもそんな突っ込みを入れたくなるのですが、その日はグ...システムにおけるレイテンシーとスループットの話題レイテンシーとは、あるシステムに何らかの入力を与え、それに対応する何らかの出力が出てくるまでの時間(遅延量)を指します。ある処理の実行を指令してから実際の結果が得られるまでに250ミリ秒かかったとすると、それは250ミリ秒のレイテンシーを持つシステムという事になります。放置を防ぐアイデアの1つとして「具体的な目標に繋げる」というものを挙げました。アップデートしました。このアップデートにより、以下の動画で示すような長い曲でも難なく再生させる事ができるようになりました。mkIIは便利なのですがオンフィールドで書き換えるには不便ですし、ユーザに書き変えを頼むわけにもいきません。Atmelが公開しているアプリケーションノートAVR109に自己プログラミングがありましたので試してみました。LPC824を使ったサウンドモジュールMicroSoundModuleを開発していました。このサウンドモジュールは、コマンドを受け取って色々な再生を行うもので、当初はこのコマンド処理部分の実装にNT-Shellを用いる計画でした。BlackTankには有機EL液晶が搭載される予定です。接続部分はFPCになっていて、例によってFPC用コネクタなのですが、最初の実装は思いっきり失敗してしまいました。猫も杓子もIoTと皆さんが仰るので、その声が大きくなればなるほど自分は遠ざかる方向で生きていたのですが、そうすると完全に煙に巻かれたお爺さんのようになりまして、今は世の中が進んでおるんじゃのぉと言うだけの人です。moduleにブートローダを載せる(AVR109対応)随分前に対応しようと思い立っていたAVR109にようやく対応させた。以前やった時にうまく書けなかったのはボードのクロック精度が原因。ここ数日モニタを実装していて、思った以上にRC内蔵クロックの精度が悪いことが分かった。エコーバックのテストでやたらと文字が化ける。