--/--/--  --:--    スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2008/11/27  23:18    またテスト
またテストシーズン到来です。
テスト終われば後は楽なんですが・・・。
まぁ来週かららしいので、とりあえずテスト勉強しつついろいろしています。

今年も年末年始のバイトがギリギリできることになりました。
去年も同じところでやっていたので、2回目ということで満員のところを入れてくれました。
友人も同じバイトしたがっていましたが、さすがにその枠はないらしく残念です・・・。

今年のバイト代の消える行方ですが、去年はCore2のデスクを組みましたが、
今回は、今話題のAtom330搭載機でサーバーでも作ろうかなと考えています。
さすがに今稼動しているサーバー機はデュアルPen3機でサーバーには悪くないのですが、
ケースが大きく邪魔であることと、
もう少し消費電力が少なく、まぁブラウジングぐらいは快適にできるデスクがほしいと思い、
購入を検討しています。
Atom搭載マザーはとても安く、CPU+マザーで約1万で買えてしまうという安さがうれしいです。
とりあえず、CPU+マザーはIntelのD945GCLF2にしようと思います。
ケースは、FASTのA-ITX-100P080を検討してます。
できるだけ小さいケースがよかったので、これに目をつけてます。
電源もACアダプターでケースに内臓していないため、その分小さくなるようです。
メモリは適当に、2GBを1枚購入予定。
本当は、Core2デスクを組んだときの1GBがあまっているのでそれでもいいのですが、
今は本当にメモリが安いので、2GBを1枚買ってみることにしました。
HDDも適当に、ファイルサーバー予定なので、一応320GBあたりを検討してます。
本当は3.5インチHDDはいいのですが、ケースが2.5インチ対応なので、
2.5インチHDD予定です。
マウスとキーボードと液晶は今のサーバーのを回せば、大体3万前後ぐらいで作れそうです。
自作が楽しみですね。

前に言っていたDigikeyは半月ぐらい前に届いたのですが、
秋月がまだ注文できていません。
部活の方で注文するようなので、そっちと一緒に注文しようとのこと。
これで液晶の方も試せるかな?
問題は時間があるかどうかと、まだ基板データが完成していないこと。
そっちもやらないとな・・・。

とりあえず、ネタがそんなにないのと、テスト前なので少々更新頻度が落ちますが、
ご愛嬌ということで。
スポンサーサイト
2008/11/23  00:54    C言語の勉強
まだ基礎しか使っていなかったC言語ですが、
今回、ちょっとあるプログラムの方で必要になったので、勉強してみました。
ここ数日で覚えたのは、
・関数ポインタ
・キャスト
・メモリ操作関数(memcopy系)
といった所です。

あと、インラインアセンブラを本格的に多様し始めました。
前回書いた通り、基本的には
asm volatile("code");で大丈夫なようです。
もしC言語上の変数を使いたい場合、
asm volatile("code":"outputオペランド"(変数名);"inputオペランド"(変数名));
といったように、コードを書いたあとで変数のオペランドを指定し、
()の中に変数名を書くと、codeの中で%0とか書いておいた場所に変数のアドレスを
勝手に置き換えて変換してくれるようです。
まぁ下手に変数を使わない限りは、コードだけ書けばいいようです。
まだ完璧ではないので、もう少し使って覚えようと思います。

前回書いた、アドレスと定数の混同の可能性ですが、
まったくないようです。
AVRの命令はoutputにinputをコピーするだけでも、
outputのオペランドとinputのオペランドの種類の違で、数種類命令があるようです。
なので混同はないと言えるでしょう。

最近アセンブラをはじめてからというもの、
AVR命令セットのPDFを読むようになりました。
C言語をやっているうちはまず見ることはなかったです。
意外に、アセンブラで書いたほうが便利なところが見えてきて、
よくインラインアセンブラを使います。
そのときに、どの命令を使えばいいか分らなくなったらすぐ見たりしています。
このような資料を読むようになってから、AVRのいろいろな発見があり、
AVRをはじめた時のような楽しさがあります。

せっかくの3連休なのでいろいろやりたいと思います。
最近少しだけ余裕ができたので、
少々AVRのプログラミング関係の勉強をしてみようと思いました。

先日はROM上定数を習得しましたので、
今度はアセンブラとインラインアセンブラについて勉強してみました。
理由は、アセンブラを使わざるを得ないプログラムをそのうち書く可能性が見えてきたので。
正直な話、まさかAVRでアセンブラをやるなんて夢にも思わなかった。

ちなみに今普通に書いているアセンブラですが、正確にいうと誤用です
正確にはアセンブリが正しいです
しかし、アセンブリのことをアセンブラと呼ぶ人が多いことと、
AVRなどの資料では、アセンブリのことをアセンブラと記述していることが多いこと。
(例:インラインアセンブラなど)
まぁ最近はアセンブリとアセンブラの混同が多く、アセンブラの方が私もしっくりくるので、
今回はアセンブリのことをアセンブラで書いています


まずはアセンブラ。
基本的なアセンブラの知識は、
学校の授業でH8のアセンブラをなんとなくやっていたので、
まあ、理解に時間はそれほどかかりませんでした。
最近はkumanさんが「アセンブリの勉強」という内容を書かれていたので、
参考にさせていただきました。

kumanさんは、DOS窓でアセンブルしていらっしゃいましたが、
せっかくAVR Studioでアセンブラが使えるので、
私はAVR Studioでプログラムを作ってアセンブルしてみました。

試しに書いたプログラムはこちら。
ほとんどkumanさんのところの「3 最初のプログラム」と一緒です。
今手持ちのテスト用ブレッドボードについているのがATtiny45でしたので、
tiny45用に書き換えてあります。

//アセンブラのテスト

.INCLUDE<tn45def.inc>

.CSEG
rjmp reset

reset:
push R18
ldi R18,0xFF
out DDRB,R18
ldi R18,0x00
out PORTB,R18
pop R18

main:
sbi PORTB,3

rjmp main

別に意味もないpushとpopは、
ただ単に私がpushとpopを試したかっただけですので、気にしない。
これでちゃんと動作してくれました。
ただデバッグ用LEDを部室に忘れたので、AVR Studio上のシュミレータでですが・・・。
一応今回やったのは基礎の基礎だけですが、
書き方さえ覚えてしまえば後は応用するだけですし、
また必要になったときに深くやってみたいと思います。


次に、インラインアセンブラについて。
AVRのインラインアセンブラについて調べてみると・・・
AVR-GCCインラインアセンブラ便利帳
を見つけました。
読んでみたけれどもさっぱりわからない・・・。orz
とりあえず、
asm volatile(code : output operand list : input operand list);

で言いそうだ。
しかしまだよく分らないので、実際にプログラミングで試してみることに。

プログラムはとてもシンプルです。(<>は大文字に変えてあります。)

//インラインアセンブラのテスト

#include<avr/io.h>

int main(void)
{
asm volatile("sei");
asm volatile("ldi r18,0x03");
asm volatile("out 0x18,r18");

return 0;
}

ただ、割り込み許可して0x18(DDRB)に0x03を書き込むプログラムです。
確かH8だと、アドレスを指定するときは@をつけた気がしますが、
AVRだとDDRB16進のアドレス値を書いただけでいれてくれる。
上で定数0x03を書いていることから、定数とアドレスの混同は発生しないのだろうか?
なんとも不思議?
いや私がたぶんちゃんと理解していなくて分っていないだけだろうと思いますが・・・。
まあシュミレータ上ではちゃんと動いているようです。
こっちはもう少し勉強の余地がありそうですね。


まだ始めたばかりなので、とりあえず自分でも忘れないようにBLOGに書いておいた感じです。
たぶん、できる人から見れば、馬鹿だなこいつと思われるかもしれませんが、
馬鹿が馬鹿なりにがんばってる・・・ように見える・・・・・気がする。
といったように暖かく見守っていただければと思います。
AVR
2008/11/12  00:27    あさっては企業見学
あさってから企業見学だとか。
県内のいろいろな企業をみて回ってきます。

まぁそんなこはさておき、注文しておいたDigi-keyが届きました。
そして恒例の如く、見事に12MHzの薄型表面実装クリスタル買い忘れました orz
せっかく更に小型のHIDaspxでも作ろうかと思っていたのですが・・・。

今手元に256MBのケースが壊れたUSBフラッシュメモリがあるので、
ちょうど12MHzの薄型クリスタルも付いているので、一つぐらい壊してもいいかなと。
さすがにクリスタルのためだけに壊すのはなんかもったいないきもしますが、
最近のUSBフラッシュメモリの価格の安さは異常なのでまぁいいかなと。

あと、せっかくのDigi-keyの注文でしたので、いつも買えないものということで、
MLFのATtiny2313買ってみました。
5mm*5mmのパッケージで足が出ておらず、本体の裏側に細いパターンがあります。
正直、買ったはいいけど半田付けできる気がしない。
といいますか、半田付けをどうやってしてあげればいいかわからないってのが正しいですが・・・。
もしかしたらMLFはお蔵入りするかもしれません。

秋月がまだ注文できていないので、液晶の方を構ってあげれていませんが、
代わりに、いろいろ忙しくてできなかったことなどをやったりしてます。


以下はネットでいろいろ見てて面白そうだと思ったページ。

デュアルコアAtomを速攻チェック! 期待のMini-ITXマザー「D945GCLF2」
ちょっと前から発売していたデュアルAtomことAtom 330です。
この省電力でありながら、Hyper-Threadingが使えて、擬似的にクアッドコアに見えます。
お金あればこんなPCも組んでみたいなぁと。
家のファイルサーバーがそろそろ買い替えたいので、
できるだけ消費電力の小さいデスクがほしいのです。
EeeBoxかこっちをとるか・・・。EeeBoxのAtom330版出れば文句ないんですけどね・・・。

千石電商オンラインショップ せんごくネット通販
気づいたら千石のWEBサイトが新しくなってますね。
今までの千石はちょっと見難いページだった印象でしたが、改装でデザインがよくなりました。
千石は送料がもう少し安くなればなぁ・・・。
2008/11/05  00:17    MAX1674を使ってみる
4月にDigikeyで購入して、ずーっと放置してたステップアップDCDCコンバータのMAX1674を
やっと基板を作る暇ができたので基板を削って回路を作ってみました。

このMAX1674は0.7~Voutの電圧を入力にかけると、
自分で指定した電圧又はプリセット電圧(3.3Vor5.0V)を出力するというものです。
今回はよく使用する5V出力の回路を作ってみました。
MAX1674_1MAX1674_2
携帯カメラの関係でとっても画像が見難くてすいません。
一円と大きさを比較してみました。
やはり30分でサクッとeagleで基板の配線しただけじゃ無駄が多いですね。
もう少し練ればもう3mmぐらいは小さくなりそう。
回路はMAX1674の仕様書の通り。
使用した部品は、
・MAX1674(Digikey)
・OSコンデンサ22uF*2(マルツ)
・表面実装インダクタ22uH(マルツ)
・ショットキーバリアダイオード(秋月)
・チップセラミックコンデンサ0.1uF*2
・コネクタ*2
というようにとてもシンプルな部品で構成されています。

出力電圧を見てみると、
入力電圧が0.7~2.0Vあたりまでが出力電圧が4.95Vあたり、
入力電圧2.1~4.0Vまで徐々に上がっていき、入力電圧4.0Vで出力電圧5.12Vになりました。
入力電圧4.0Vを過ぎるとだんだん出力は減って行き、
約入力電圧5Vで出力電圧5.02Vぐらいになりました。
なかなか優秀?です。

これを使えば、電池1本で5Vの回路駆動などができます。
まぁ強いていうなら出力最大電流が285mAなところ。
普通にマイコンと周辺回路ぐらいなら十分ですね。

まだぜんぜん回路駆動を試してないので、明日にでも試したいと思います。
2008/11/02  23:23    備忘録っぽい
特に今日は目立った内容もないけれど、ただただ書きたいことを書き連ねてみます。


時間はあるようで実はなかったりする。
せっかく予定がなくて空いた時間があったりしても、
忙しかったときに見過ごしていたWEBページを見ているだけで
いつの間にか時間はなくなってしまうものだ。


最近部室で発見したこんなもの。
ライタいろいろ
よくもまぁこんなにAVRライタを作ったものです。
簡単に説明すると、左から
COM-ISP(ELM)・USBaps・COMポートライタ?(失敗作)
COMポートライタ?(失敗作)・USB-SPI(動作不良)・HIDasp(試作機)
HIDasp(小型化)・HIDaspx(試作機)・HIDaspx(2号機)
HIDaspx(3号機)・おまけで自作Arduino(写真上方)
なんといいますか、歴史が見える気がします。
よくわかることは、試行錯誤の日々だということです。


最近やっと恥ずかしながらポインタを覚えました。
今までなぜか避けてきてしまったポインタでしたが、
さすがに使えたほうがいいと思い習得してみました。
なんとも馬鹿らしいことですね。いまさらとか・・・。
まぁポインタなくても何とかはなるってことを実証していたとだけ言い訳しておきます。


フォルダをあさっていたら、前にネタで部活のみんなで話したテキストファイルが出てきた。
名前は「う言語.txt」
以下が内容。

挿入<標準>

整数 主要(空虚)

整数 い = 0。
整数 ろ = 1。
表示(「※十 こんにちは 世界!」、い+ろ)。
戻 0。

機構班の人が「なんで日本語でプログラミングできないんだ!」って言い出したのが発端。
日本語のプログラミング言語といえば
「ひまわり」とか「なでしこ」などがあるけれど、
もしC言語を日本語で書いたら?という話に発展したのがこの内容。
ある意味、日本語が世界の共通言語じゃなくてよかった気がした一瞬。
でも英語は嫌いです。


eagle5.3がリリースされました。
部活の回路班で入れてない人は入れましょう。


ubuntu8.10がリリースされました。
早速アップデートしてみました。
なんか3G通信系のドライバなどがいろいろ追加されたらしい。
まぁ関係ないので放っておいて、
gnomeも最新版?になったらしい。
最近ubuntuもぜんぜん使ってあげてないなと思ったこのごろ。


3連休だったみたいだけどもう2日はなくなっていたりする。
1日目は学校で選択した3D CADの講習会だった。
これから毎週土曜日はこれで消えるらしい。やっぱり多忙は続きそう。
2日目(今日)は家族で外出。
紅葉とか見てきました。やっぱりドライブはいいですね。
私は運転してませんけど・・・。
そんなこんなであと休みも1日となりました。
明日は溜まったレポートのスタックをpopする作業が始まります。
先生、pushしすぎです。
よくわからない人は「アセンブラ」でググればいいと思うよ!


地味にWEBに人の顔が写った画像あげるときに便利だった、
「The Laughing Man Hacks You!」
でしたが思い出したようにサイトへ行ってみるとサイトがありませんでした。
これからは笑い男マークは自分で追加しないといけないですね・・・。


なんとも締りのなく、突っ込みどころ満載な内容でしたが、
たまにはこんな書き連ねもいいものです。
自分で見る分にはいいのですが、
他人がみたとき見にくいし、意味不明だしって感じになってしまうのが欠点ですね。

今回の記事は私の備忘録みたいなものなのでスルーして結構です。
前に、自作したライブラリを載せようかということを書きましたが、
文化祭などで少々テストできたので公開してみます。

WEBページのMAKEの中に追加しておきました。

しかし実際、テストできたデバイスが少ないということ。
また、異なる周波数でのテストを行っていないため、
周波数を変えたときにちゃんとt0_waitのライブラリがちゃんと動くか保証しきれないこと。
この二つが不安要素です。

なので、使ってみた方がいればぜひコメントをいただければと思います。
私もまだまだ未熟者ですので、ソースが汚い等あるかもしれませんが、
そちらの方は目をつぶっていただけるとうれしいです。

動作確認に協力していただける方は、
動作デバイス・動作周波数・感想等をコメントに書き込んでいただければと思います。

~追記~(08/11/01 18:25)

kugaさんのご意見を参考に、DDRでもバイト・ビット両方でのアクセスを可能にしました。
これにより、今まではPB.DDR = 0xFF;のように代入していましたが、
PB.DDR.BYTE = 0xFF;に変更になります。
詳しい使用方法は、AVR IO Libraryのページをご覧ください。

初版をDLした方は申し訳ありませんが、最新版の方をDLしてください。
AVR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。