さて。
とりあえず、片方向は出来たので。
LCD側を作りますか。
ネタとしては、MicroSDとかもやらなきゃならないんですが、後回しで。
付属していたタッチパネル用のケーブルがコネクタの根元から抜けてしまったので
仕方なく基板側のコネクタを取っ払い、半田付けになりました。
見ての通り、CPU基板にスタッキングできます。
というか、ウチの製作物で基板サイズにこだわってるのは、
この為なのよね。
秋月電子の95mm x 72mmの基板を基準として考えてる。
今までPCBで起こしたものが大概このサイズになってるのは
CPUでもI/Oでも、スタッキングして使えるから。
で。
LCDの設定としては、買ってきたままだと16bitバスモードになってるらしい。
それを変えるには、キャリーボードからパネルを剥がしてR2をR1へ付け替える。
たしかに、フレキにシルクが入ってた。
この辺は、先駆者たちの情報に感謝。
そういえば、元々XMEGA128A1で16bit接続しようと思ってたから
やってなかったんだ。
そんなこんなで、バックライトぐらいは確認できるかな。
ほいっ。
ただのI/OポートでMOSスイッチをONしてるだけ。
そのうちここもPWMにしてやらないとね。
そんな感じ。
やっと本題。
内蔵発振器32MHzで動いてる状態で
ボーレートの設定値を計算すると
10進数で51。
とりあえず、送信レジスタに値を突っ込むだけのコードで実験。
一応、書いていいときはステータスを見て確認。
[code lang=”cpp”]
while(1)
{
if( USARTE0.STATUS & 0x20 )
USARTE0.DATA = 0x41;
};
[/code]
普通、こんなもんでも動くよね。
でも、化ける(爆
どうにも化ける。
イロイロやって、USARTのサンプルプログラム(AVR1307.zip)を参考にして
クロック設定からやり直し。
サンプルどおり内蔵2MHzで9600bpsを設定すると・・・
化けない。
うーん。
32MHzに戻して、もう一度考える。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
まさかね。
[code lang=”cpp”]
while(1)
{
while( !(USARTE0.STATUS & 0x20) );
USARTE0.DATA = 0x41;
};
[/code]
まあ、確かに・・・
こっちの書き方なら、その場でフラグ待ちしてその直後で書いてるから
次にフラグ見るときは、間違いなく動いてるのかも。
フラグの立つタイミングと送信レジスタの中身がなくなるタイミングが
重なって、まだ最後の数ビット残ってるところに書き込んでた・・・・のか?
この2つのコードにそれほど違いがあるようには思えない。
もしくは、最適化で何か起きてるのかも。
まあいいや。
そんな感じで。
解決。
とりあえず、ここまで出来たらあとは
LCD側の配線をしてしまわねば。
USARTを動かすには、まずクロック周りをきちんと抑えないと
設定値の割り出しすら出来ない。
最近のCPUを使うにあたり、かならずといっていいほど躓くのが
クロック周りの設定。
各I/Oモジュールに供給できるクロック源が複数ある上に
そのモジュールと源振の間にPLLだのDLLだのプリスケーラーだのと
イロイロ通ってくるので、その辺の設定をよく読み解かないと
一体何Hzが選択されてるのかもわからない、というのが良くある。
しかも、分かりにくい。
気の利いたメーカーなら、その辺の設定値を算出するようなエクセルファイルがあったり
サンプルコードを用意してる。
XMEGAに至っては通常のI/Oポートではなく、
「どこかのビットをセットして何クロック以内に書き込め」とか
そんな制約が付いてる。
この場合、C言語で書いたんじゃ多分ダメだろう。
で、今回は。
ここまでに充分に時間があったにもかかわらず
実はドキュメントの詳細は殆ど読んでないという現実を鑑みて(爆
とりあえず、ATMELのサイトから
解説pdfとサンプルプログラム(AVR1003.zip)を取得。
コードを読む限り、問題はなさそうだったので
そのままリンクして、サンプルと同じように呼び出し。
とりあえず、クロック周りは解決。
内蔵32MHzで動いてるようだ。
でわ。
やっと本題。
・・・・つづく(ぉぃっ
ライターに認識してもらえることが分かったが
肝心の書き込むモノがない(獏
つーことで。
とりあえず、LEDの点滅点灯プログラム。
その前に、LEDを物理的に追加。
AVRStudioを立ち上げて、プロジェクトを作成。
この時点でGCCを選べるのはありがたい話。
つーか、もう7年ぐらいメジャーアップデートされてないけど
どうなってんだろうね。
昔はGCCのサポートなんて、おまけか裏技か、ってぐらいで
しまいにゃVer3.8じゃないと・・・なんて話まであったぐらい。
それがまあ、いつのまにか正式サポートのようで。
ついで、デバイスごとのヘッダファイルをインクルード・・・すると
怒られる。
io.hの中でコンパイルオプションにしたがって自動的に個別の定義を読み込むような
しかけになってる。
・・・・まあ、この辺はWinAVRの仕様か。
で、めでたく書き込み完了。
ちょっと、AVRDragonの認識とターゲットの電源投入のタイミングが問題に。
AVRDragonに接続してからターゲットの電源を入れないとダメみたい。
ポートの動作は、大丈夫そう。
じゃあ次は・・・
USARTかな。
最低限、デバイス→PC方向だけでも確認しないと。
・・・・・・・・つづく(ゐ
オシロスコープがあってよかったね。
とりあえず、波形を確認。
ちょっと、なんか波打ってるけど、電源なんてそんなもん~~
・・・・・・なんて思って、見逃してたら。
結局、その波が原因だった○| ̄|_
1msでみて、結構ノコギリ?な感じだったので
「とりあえず、これを何とかしてみよう」と、電解コンデンサをちょっと追加したら・・・
・・・・・動いてますがな○| ̄|_
そりゃ、まあ、これがCLK線とかに乗ってきたら・・・・たしかに安定しないかも。
たぶん、プログラミングのモードに入れてないんだな・・・。
波形的にも、だいぶゆるくなったみたいだし。
これで、ハード的なところは、ひとまず解決かな。
PDIなライターが手元にないことに気づいた。
・・・・・
とりあえず、どこかからかAVRISPmkIIを借りる段取りをつけたのだが。
よくよく調べると、AVRStudioの最新版にすれば、
AVRDragonがPDI対応できるようだ。
ついでだから、ヘッダーを取っ払って20ピンのBOXにしちまえ~
あーこれでPDIもISPもJTAGも、全部使えるようになるべ。
それはさておき。
一向に通信できない(縛
ファームウェアアップデートしないと、使えないのは分かりきってるのに。
USBデバイスとしては見えるのに、ツールからは接続できない。
うーんと悩んだ挙句、古いAVRStudioをアンインストールせずに最新版を入れたから?と
古いのをアンインストール、新版をインストール。
すると、USBドライバがどこからかインストールされたようす。
とりあえず、ファームをあげてみる。
・・・・・・・・・・・・・・・・・上がったがな○| ̄|_
じゃあ、基板と接続じゃ~
と、やったら。
またここで、何故かつまづく。
・・・・・・・つづく。
場外乱闘すらそっちのけ(謎
外堀が埋まりまくってしまったので
そろそろまじめに回路図引かなきゃならんかの。
とりあえず、なんだろ。
CPUとして使ってみるってところからかな。
つーわけで。
この週末で回路図引いて部品集めて、配線したのですよ。
まあ、たかだか40数本なので。
構成は
MAXIMの昇圧DC/DCなICとSPIなシリアルFlashROM、あとは
中途半端にMIO-26という・・・ウチでいうところの「旧来の規格」。
その先には・・・aitendoなタッチスクリーンが付いた液晶YHY024006A。
これに先日買ったADS7843を繋ぐ。
なぜに電源が昇圧回路かといえば、電池駆動の予定があるので
その事前確認かな。
とりあえず、テスターチェックまで終わったのですが・・・
・・・・・・・つづく(ぉぃ
MOUSERから、やっと来ました。
リードタイム20週で発注したATxmega64A4 を
一度キャンセル。
改めてATmega32A4で発注しなおし。
つーか、1ヶ月まって「納期未定」に変わったので(あほ
思い切ってキャンセル。
というか、月末に請求が来てたら無理だろうと思ってたがその様子がなかったので。
「キャンセルしろ」と送ったら「キャンセルした」と返ってきたので
再発注。
つーか、ROM容量の小さいのなら在庫あるみたいだから、そっちにした。
あとは、タッチパネル用のA/Dコンバータと
バッテリ駆動用にDC/DCのICを。
とりあえず。
外堀は埋まりまくり~だな・・・
これは現実であり、きっかけなのかもしれない。
AVRの資料で、とても有益な情報を提供してくれていた
とあるサイトが・・・
・・・・・
・・・・・なわけですよ。
あんぐり。
今現在、だれもまだネタにはしてないようだけど。
いまさら著作権利法とか万国著作権条約とか
そんなことは言いたくないんですけどね。
私は別に専門家でもないし、読んだ通りの知識しか持ってませんが
ちょっと調べてみた。
Web上で公開してる、たとえばマイコンのデータシート。
著作権者は当然、メーカーであるし、当然、著作権は保持してる。
じゃあ、その翻訳をした場合、その著作物はどう扱うのか。
法でいう、「同一性」はあるのか。
法でいう「創造性」はあるのか。
二次的著作物として認められるのか。
↓二次的著作物の定義
>十一 二次的著作物 著作物を翻訳し、編曲し、若しくは変形し、
>又は脚色し、映画化し、その他翻案することにより創作した著作物をいう。
二次的著作物なら、
原著作者はある程度の権利を有する(第二十八条)とあるが
その二次的著作物を原著作者に許可無く公開することは可能か。
著作権法第38条の条項は適用されるのか。
許可無く公開し、金銭を要求し、取得することは可能か。
その場合、原著作権者の権利として、
その金銭を二次的著作物の著作権者に要求することはできるか。
・・・・まあ、翻訳して有料で配布、までは
一般人はやらないでしょうけど。
サイトで何気なくpdfへのリンクをクリックし
pdfを開いて
それを保存してオフラインで見る
そんなこと、誰だって当たり前にやってるし
オンラインで開いたとしても、
どこにも保存せずに(=ダウンロードを伴わずに)閲覧できてるかなんて
誰にも証明できないとおもうのですがね。。。
プログラムはローカルで動いてるし、メモリはローカルしか見えないんだし。
少なくとも、自作のブラウザで全部メモリ上にしか置かないよ、としても
今の時代、OSがスワップファイルなりを作るのだから
それは保存なんじゃないの?
有志が善意で翻訳し無償公開してるのであれば
メーカーは何も言わないでしょう。
メーカーだって、その資料の公開で利益を得てるわけではないのだから。
むしろ、ローカライズのコストが浮くわけで、歓迎されるでしょう。
しかし、それを有料にして金取ります、と言った瞬間
メーカーだって黙ってないと思うけどな。
自分のホームページを勝手に書籍化されたようなもんじゃん。
検索すれば、いろんなところに、そのページへのリンクがある。
大勢の人が感謝しながら使ってたはずなのに。
私だって、その存在を知らなければ、AVRを使うことすら出来なかっただろうし。
そのページの存在と
pdfの作成者には、本当に感謝している。
どんな事情にしろ
今回の方針変更は
残念で仕方が無い。