--/--/--  --:--    スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2009/02/15  01:44    久しぶりの・・・
久しぶりのまともな回路の内容です。

テストが近づいているにも関わらずやる気が起きなかったので、
昔作りかけた液晶駆動回路をもう一度回路図から作ってみた。

ALBIS

両面基板で、線などでのジャンパは無し。
何とかこの大きさに収めました。我ながらよく収まったと思う。
配線がきたないのは仕様。まだ配線の最適化してないので。
縦の大きさは、秋月液晶の縦とまったく同じ大きさになっているので、
液晶の後ろに回路がちょうど隠れるようになったはずです。
VIAが大きいのは、うちの学校の加工機ではスルーホールが作れないのと、
うちの加工機用ドリルの最小が0.8mmしかないから。
外注でスルーホールが作れれば、どれだけ楽なことか・・・。
あと可変抵抗がでかいし、邪魔だし、一番困った所です。
ロボカップのために買ってある面実装の可変抵抗1つもらえるか交渉するかな・・・。
あとコネクタとスライドスイッチもかなり大きい。
コネクタも2.54mmピッチじゃなくて、1.27mmピッチの安いのを探すしかないかなぁと。
製作時間は午後4時からずっとやっていたので、7~8時間程度でしょうか?

簡単にボードの説明。

CPU : ATMEGA128
CLK : 16MHz
DCDC : MAX865 * 2
インターフェース : ISP

こんな感じです。
まあこれができればあとは削るだけなんですが、問題はうまく削れるかどうか・・・。
あと、ロボカップあるので液晶に時間裂くことができるかどうか。
削ってしまえば放課後ロボカップやって、自宅でこっちってのもありですが。
まぁたぶん自宅でもロボカップになる気がします。


最近の記事みて思ったのは、画像とか写真が少ないということ。
もう少し画像や写真で直感的に見れるBLOGにしないとなぁと思いました。
AVR
2009/02/03  00:20    MEGA128使用上の注意
今年のメインマイコンは去年と同じくATMEGA128を使います。
メインボードの設計は、元部長ともう一人のチームメンバーの彼がやってくれてるので、
私は、I2Cを現在試しているのですが、
元部長にさっき聞かれて、思い出したこんなことでも今日は書いておこうと思います。
過去にも書いた気がするけれど、復習?確認?の意味も込めて、書いておきます。


ATMEGA128を使うときには、注意する点が2つあります。

1つ目は、シリアルプログラミングでライタとの接続時の注意。
基本的にAVRはPDFのピン配置をみて、ライタの接続線を確認することが多いと思います。
しかし、ATMEGA128は一種の例外的存在で、
PDFのメモリプログラミングの項の直列プログラミングを参照してみると、
ピン配置で、SPI通信で使うMOSIとMISOが示されていますが、
ライタと接続するときの接続線は、SPI通信のMOSIとMISOは使用しません。
代わりに、PE0とPE1のRXD0とTXD0を使用してライティングするようになっています。
まず、ATMEGA128を使おうとして、失敗する人はこの点に注意すべきでしょう。

2つ目は、ヒューズビットに関わる話。
ATMEGA128はATMEGA103の後継機兼互換機として作られています。(PDFの概要参照)
なので、ATMEGA103の互換機能が搭載されています。
困ったことに、なぜかATMEGA128は工場出荷時にこの互換モードになっています。
これだとUSARTが一つしか使えなかったり、いつも通り使えないポートがあったり。
そんな不都合が発生してきます。
この互換モードを切るには、拡張ヒューズのビット1を0(プログラム:ON)から
1(非プログラム:OFF)に切り替える必要があります。


以上の2点をATMEGA128を使用するときには気をつけてみてください。
この2点はたぶんPDFを軽くみただけでは見落としやすく、
昔の私を含め、多くのATMEGA128初使用者をはめる落とし穴であると思います。
これから使用しようと考えている方は、ぜひ注意してみてください。
AVR
2008/12/08  13:18    AVR用OS
やっとテストが終了しました。
ひと段落ついたので、テスト前からちまちま作っていたものについて書こうかと思います。

11月の中旬からAVR用のOSを作ってみました。
OS名はCAPELです。
名前のソースは某ゲームで登場するコンピュータの名前からとっています。
一般的なuITORNのように多機能化まではしていませんが、
とりあえずマルチタスク機能を搭載しました。
状態は、RUN・READY・WAITの3つです。
まだ優先順位は搭載できていませんが、そのうち搭載しようと思います。

さて、ロボカップで毎回タイヤとして利用しているガンローラーですが、
なんか生産中止になったという噂が・・・。
どうなのかはわかりませんが、今年の1年生の分を購入しました。
まさかのガンローラー*8台です。
これだけあれば十分ですね。たぶん・・・。

これからは充実しそうです。
AVR
最近少しだけ余裕ができたので、
少々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
前に、自作したライブラリを載せようかということを書きましたが、
文化祭などで少々テストできたので公開してみます。

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。