2008/12/21 (Sun) 23:37:43
|
[名前] : ノンノ
|
[URL] :
|
[コメント] : tn2313のPWMを見せていただきました。 まねをしてステッパーのPWMに応用しました。
そこで質問ですが、 マニュアルによりますと「OCR0B,OCR0A,OCR1A,OCR1B」を使うには 「DDD5,DDB2,DDB3,DDB4」をセットしなければならないとなっています。 しかし、「OCR1A,OCR1B」はセットしなくても「OCR0B,OCR0A」はセットしないとデバッガーでは動作しません。(セットしても動作の確認が出来ません) DDRB=0x1C; DDRD=0x20; 他には初期値を与えてタイマープリスケーラもリセットしました。 PORTB=0x10; PORTD=0x20; TCNT1 = 0x00; i = TCNT1; TCNT0 = 0x00; i = TCNT0; GTCCR = 0x01; でもやはりデバッガーでは動作が確認できませんでした。 kumanさんはデバッガーで確認できましたでしょうか?
|
|
2008/12/22 (Mon) 00:35:52
|
[名前] : kuman
|
[URL] :
|
[コメント] : デバッガ
デバッガの使い方が理解できないのです。 それで、デバッガは使ったことがありません。 シミュレータも同じですね。使い方がわかりません。
わかるところから少しずつ書いてみて、その都度実機で確認して進めています。
ですから極めて能率の悪い方法でしょうが、仕事でもないのでこの方法でぼつぼつやるしかありません。
PWMは正直なところ理解度は極めて低いのです。自分にわかるところだけ取り出して使っているところです。 ですから、PWMについて聞かれても質問さえ理解できない状態です。すみません。
|
|
2008/12/22 (Mon) 11:26:27
|
[名前] : ノンノ
|
[URL] :
|
[コメント] : 先人の軌跡として非常に有り難く拝見していますので、 決して苦情を申し上げているのではありませんから、 もしお解りに成られていることが有れば、少しでも吸収したいと思っております。 英文があり、その訳文マニュアルがあって読んでもなかなか 判らないので弱っています。
|
|
2008/12/22 (Mon) 12:35:48
|
[名前] : ノンノ
|
[URL] :
|
[コメント] : AVRstudio4でAVR Simulator attiny2313を選んで 時間待ちの後にインラインnopを追加してコンパイルしてからDebug StartDebuggingでデバッガーに入ります。 nopの手前にカーソルを持っていって、トッグルブレークポイントをしてf5でRUNさせると毎回ブレークポイントで止まりました。 判りやすくするため同じスキューにしてみますと a1=1; a2=1; a3=1; a4=1; OCR0A、OCR0B、OCR1A、OCR1Bが同じデータになるので 確認し易いでした。 上手く行かなかったのは待ち時間を短縮して160以下なんかにしていますとうまく動作しないようでした。 それ以上にして見ますとOCRのデータは正しくなり PINn(反映されやすい) PORTn(反映されにくい) の表示が上手く反映されないだけのような気もします。 avrstudioのバグ?でしょうか
|
|
2008/12/19 (Fri) 21:43:28
|
[名前] : kuman
|
[URL] :
|
[コメント] : 超簡易周波数カウンタのDelphiプログラムを作りました。
http://www.geocities.jp/kuman2600/o11_uart.html の下の方です。
|
|
2008/12/21 (Sun) 16:30:27
|
[名前] : kuman
|
[URL] :
|
[コメント] : Excel-VBAのプログラムも作ってみました。 VBAは難解です(私に取って)。
|
|
2008/12/17 (Wed) 01:44:04
|
[名前] : kuman
|
[URL] :
|
[コメント] : 超簡易周波数カウンタ
HIDaspxのusbRS232利用のものをtiny2313で作りました。 紆余曲折(勘違いともいう)があって、少々時間がかかりましたが、Teraterm で受信と表示をするものとなりました。
PCが目の前にあるから・・・という場合には便利かと。 近々、まとめます。
|
|
2008/12/17 (Wed) 13:27:48
|
[名前] : kuman
|
[URL] :
|
[コメント] : 5 超簡易周波数カウンタ
http://www.geocities.jp/kuman2600/o11_uart.html の下の方に書きました。
|
|
2008/12/18 (Thu) 19:28:35
|
[名前] : senshu
|
[URL] :
|
[コメント] : 周波数カウンタの記事を拝見しました。
これは便利そうですね。テスタなどに付属するカウンタは 1MHz以下であり、簡易なものは自動計測ができません。
これは、パソコンでデータを取り込めるという大きな 特徴があります。
P.S.
HIDaspx用の専用基板が到着しました。kumanさんほどの 腕前が無くとも、誰でもHIDaspxを小型に製作できるのは もうすぐです。ご期待ください。
紹介ページを書きましたので、コメントをいただければと 思います。(この基板は、世界に3枚しかありませんが、、)
|
|
2008/12/15 (Mon) 17:22:23
|
[名前] :
|
[URL] : kawana
|
[コメント] : itoas.SをTESTしていますが、上手くいきません。makefileによる方法の理解が出来ていません。 (昔、makefile使用していたのですが、忘れてしまいました) コンパイル環境も教えて頂けると幸いです。
|
|
2008/12/15 (Mon) 21:01:04
|
[名前] : kawana
|
[URL] :
|
[コメント] : fcを参考にさせて頂き出来ました。
|
|
2008/12/15 (Mon) 21:03:12
|
[名前] : kuman
|
[URL] :
|
[コメント] : makefileの。
;コンパイル時にmakefileの ASRC =に delay_ms1.S と書く。 と記事に書きましたが、ここがアセンブラのファイル名にかわるだけです。
|
|
2008/12/14 (Sun) 20:29:14
|
[名前] : kawana
|
[URL] :
|
[コメント] : Cから呼び出すdelay関数拝読しました。 解り易い記述に感謝しています。 私は、Studio4で、FileNameをdelay_ms1.Sとして、 ソ−スファイルに追加(Add)し、コンパイルして hexファイル作成しました。 //拡張子を.SにすればCプロセッサにも掛けられるので、 の意味が良くわかりませんでした。
|
|
2008/12/14 (Sun) 20:38:52
|
[名前] : kuman
|
[URL] :
|
[コメント] : うまくいきましたか。
studioは儀式が多くて覚えられません。 wikiとChaNさんのページに丁寧に解説されていましたので思ったより簡単にできました。
また、必要なルーチンができれば挑戦してみます。
|
|
2008/12/11 (Thu) 23:43:54
|
[名前] : kuman
|
[URL] :
|
[コメント] : UART(RS232C)とのたわむれ
HIDaspxハードのusbRS232が実用になりそうなので(多量のデータを高速に通信することは考えていない)、少し遊んでみようかと。
PC側の通信ソフトがTeratermでは表示の自由がないし、EXCELのVBAではEXCELから抜け出せない。 それで、久しぶりにDelphiを立ち上げてみた。SDカードの読み出しで使ってはいるのだけれどすべて忘却の彼方へ消えている。
1を送るとone、2を送るとtwo、3でthreeを返す90s2313のハードがあるので、それを読むことにした。 悪戦苦闘の末、画面表示ができる窓がとにかくできた。 (あー しんどかった)
AVRハードとPC画面融合の作品を作ってみたい。 −−−と考えているところです。
|
|
2008/12/11 (Thu) 18:46:22
|
[名前] : senshu
|
[URL] :
|
[コメント] : Portable WinAVR Distribution.
すんさんが類似のことを書かれていますが、以下のサイトには USBメモリにインストールして利用できるWinAVRを公開しています。
http://www.chip45.com/index.pl?page=PortableWinAVR&lang=en
Arduinoにも、類似の仕組みがあります。WinAVRは上手く インストールすれば、もっと手軽に利用できるのだと 思いますが、今ひとつ、洗練されていない部分があるようです。
|
|
2008/12/11 (Thu) 18:47:52
|
[名前] : senshu
|
[URL] :
|
[コメント] : URLが上手く書き込めませんでした。
これではどうでしょうか。
http://www.chip45.com/index.pl?page=PortableWinAVR
|
|
2008/12/11 (Thu) 20:01:31
|
[名前] : すん
|
[URL] :
|
[コメント] : USBメモリはよさそうですね。
WinAVRを11個入れていると1.2Gバイトもハードディスク使ってました。これはもったいないと思いました。
CD-RにWinAVRを入れるとアクセスが遅くてコンパイルに時間かかるでしょうね。コンパクトフラッシュならいいかも。後日、IDE変換器でやってみたいと思います。
それにはWinAVRインポートレジストリ作成ソフトへ、ドライブ名とフォルダ名を渡さないと・・・まだできてません。
|
|
2008/12/11 (Thu) 23:21:35
|
[名前] : kuman
|
[URL] :
|
[コメント] : 1台のコンピュータ
しか持たない現状ではピンと来ない状態ではありますが、場所を変えて使うときには便利でしょうね。
ところで、WinAVRの研究は別にしてせめて3種類くらいでカバーできると嬉しいのですが。 今は、20060421が安心です。
|
|
2008/12/12 (Fri) 01:26:44
|
[名前] : senshu
|
[URL] :
|
[コメント] : 1台だけのPCでも利点は多いと思います。
CD-ROMやDVD−ROMで実用的に動作するなら、 HDDにインストールする必要がなくなります。
WinAVRは読み出しだけでも開発に使えると思っています。
Arduino には、WinAVRが丸ごと入っていますが、これで 既に実現されているような気がしますので、後日、 確認してみます。
|
|
2008/12/11 (Thu) 18:11:10
|
[名前] : senshu
|
[URL] :
|
[コメント] : ATtiny2313用のLED点滅プログラム
本来は、ビジーループによる時間待ちは効率の面から 避けるべきですが、実行に時間が必要なことを理解する 為には、入門時には必要な場合もあります。
ということで、WinAVRの版とコンパイルオプションに 影響されない(と思われる)コードを書いてみました ので、お試しください。
http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?cmd=search&word=AVR%2Fnews35
F_CPUは 8MHz, 1MHzの2つに対応しています。
hidspxを使っている場合には、make programで書き込めます。
|
|
2008/12/11 (Thu) 23:14:24
|
[名前] : kuman
|
[URL] :
|
[コメント] : delayルーチン
20080610版でも問題なく動きました(当然ですが)。 長い時間はCPUを止めてしまう(実質的に)のは問題になる場合もありますが、数十msのdelayが欲しいときに便利ですね。 サイズが大きくなりますが nop を4個入れると8MHzではきりの良いルーチンになりそうです。
|
|
2008/12/12 (Fri) 01:32:09
|
[名前] : senshu
|
[URL] :
|
[コメント] : kumanさんの疑問を解決したことにはなりませんが コンパイラの最適化に影響されない簡潔な記述例には なっていると思います。
こうしたコードは短いほど理解が容易です。 短時間に書いたものなので、これを「たたき台」にして kumanさんの解説ページにも利用してもらえると幸いです。
forループによるウエイトは、コンパイラの版による 誤差が生じやすく、お勧めできないと感じていました。 avr/utils のdelayも便利ですが、ブラックボックスなので、 中が見えるほうが好ましいと考え、作成してみました。
|
|
2008/12/11 (Thu) 08:23:03
|
[名前] : kuman
|
[URL] :
|
[コメント] : すんさんへ
>Cドライブがどんどん減って… 気がつくとほとんどなくなっていました。 多くのファイルは切りましたが、WinAVRは3種ありましたのでインストールしなおすことにして、 E:\0 に入れ直しました。\0は最も簡単なディレクトリ名でリストのトップに来るのでそうしています。
現在は4種ですが、junctionコマンドで切り換えています。 不自由はないのですが、レジストリをさわらなければ不都合があるのでしょうか。 理解できていませんので教えていただければありがたいと思います。よろしく。
|
|
2008/12/11 (Thu) 11:13:33
|
[名前] : すん
|
[URL] :
|
[コメント] : kumanさん、こんにちは
WinAVRが使用しているレジストリはWinAVRの場所を示しています。インストール時にレジストリへ書き込まれます。ここではコマンドプロンプトでの話をします。AVRStudio4はちょっと話が別です。
私の実験では2006年のWinAVRは確実にレジストリを見ています。しかも同じレジストリです。 2007年1月版も同じレジストリです。
つまり上記のものは一旦C:\WinAVRのような 同じフォルダにインストールしておいて、後で別名に変更しjunction等で切り替える必要がありました。
実はこれより後のバージョンは、バージョン別にレジストリがあって、pathさえインストール時のフォルダに合わせればjunctionは必要ないのです。
|
|
2008/12/11 (Thu) 11:14:04
|
[名前] : すん
|
[URL] :
|
[コメント] : 続きです
2006年以降WinAVRはレジストリを参照する設定になっています。だから基本的に最初にインストールしたフォルダを変えることはできないです。
---
junctionを使う場合、インストールは同一フォルダ名だと思います。レジストリも同フォルダ名を示しているので、レジストリの書き換えは必要ないと思います。
---
私の方法はjunctionを使用しません。 pathとレジストリを書き換えればいつでもWinAVRのフォルダを自由に変更できるからです。これがいいところです
|
|
2008/12/11 (Thu) 11:33:25
|
[名前] : すん
|
[URL] :
|
[コメント] : 追伸 junctionを使う場合、pathもインストール時に一度設定すれば変更しなくていいと思います。
|
|
2008/12/11 (Thu) 13:05:08
|
[名前] : kuman
|
[URL] :
|
[コメント] : よくわかりました。
ありがとうございました。 最近のものだったらpathの切替で違ったバージョンが使えるわけですね。最新版がベストだったた問題はないのですが、今の私には2006年版が使いやすいのでやっかいです。
インラインアセンブラの件でもどうも納得できません。 2008年版の インラインアセンブラ クック ブックの例文が最適化 sオプションでは正常ではありません。 2006年版は問題がないのですが。
|
|
2008/12/4 (Thu) 22:20:45
|
[名前] : kuman
|
[URL] :
|
[コメント] : WinAVR20080610???
日頃20071221を使っていますが、新しい記事のために 20080610版を使いました。
添付のmakefileがエラーになります。旧版のものを使うと正常です。
今まで使ってきたインラインアセンブラのディレイルーチンが、コンパイルは通のですが、何とも怪しげな誤動作をします。2007版では問題ありません。
おわかりの方、教えてください。
|
|
2008/12/5 (Fri) 06:33:38
|
[名前] : kawana
|
[URL] :
|
[コメント] : 題意とそれますが、_delay_msの使用は、どうでしょうか? よく分かりませんが、ル−プによるwaitなので、 コンパイラの挙動? http://www11.ocn.ne.jp/~akibow/avr-libc-user-manual-1.4.3/group__util__delay.html
|
|
2008/12/5 (Fri) 12:43:33
|
[名前] : senshu
|
[URL] :
|
[コメント] : make.exe はどのバージョンを使っていますか?
私の環境では、0604も0806もどちらも動作します。 make.exeは、以下のものを使っています。これよりも前の ものは、Makefileによっては動作が不完全でした。 (make --version GNU Make 3.81)
MinGW用に配布されているものです。 参考(千秋ゼミ AVR/news24 [MinGW] makeの不具合解消法)
|
|
2008/12/5 (Fri) 20:44:11
|
[名前] : すん
|
[URL] :
|
[コメント] : いちどアセンブラで書き直して、Cからアセンブラを呼び出す部分を作るといいかもしれないですね。インラインアセンブラは1,2行ならいいですが、数行あるなら断然アセンブラがいです。
|
|
2008/12/5 (Fri) 23:17:29
|
[名前] : kawana
|
[URL] :
|
[コメント] : ASMサブルーチンをCからCallすると言う事ですか? 例えば void wait_10us(void) { asm(nop) asm(nop) asm(nop) asm(nop) asm(nop) } こんな書き方でなくて、ASM命令語そのもので書くのですね nop dec jnz loop jmp end
|
|
2008/12/6 (Sat) 11:32:31
|
[名前] : kuman
|
[URL] :
|
[コメント] : WinAVR20080610
makefileは何かの手違いのようでした。 (make --version GNU Make 3.81)でもダメだったのですが、あらためて0806のmekefileを使ったところ正常になりました。 原因不明ですが間違ったmakefileを使っていたようです。すみません。
インラインアセンブラはどこか変わっているようです。 最適化レベル 0、1 では正常に動作しますが、 2、sにすると誤動作します。どこか書き方が厳密になったのかもしれません。
|
|
2008/12/6 (Sat) 13:53:30
|
[名前] : kawana
|
[URL] :
|
[コメント] : 最適化レベルS? 私も、最適化レベルSでは、正しいhexが出来ない事を 経験しました。 最適化が行われ、サイズが非常に小さい事がわかりました。 −O0では、非常に大きくなるが、実行は、可でした。サイズを比べて見ると、何か掴めるかも知れません。外しているかも知れません。
|
|
2008/12/6 (Sat) 14:56:21
|
[名前] : kuman
|
[URL] :
|
[コメント] : kawanaさんへ
20060421版ではどうでしょうか。 私の場合は、これなら 最適化s で正常です。
|
|
2008/12/11 (Thu) 02:00:00
|
[名前] : すん
|
[URL] :
|
[コメント] : WinAVRも複数インストールしているとCドライブがどんどん減っていきます。まだできませんが、自由なドライブやどんな階層でもいつどこでも置けるようにする予定です。コマンドプロンプトやAVRStudio4関係無しにです。WinAVRはレジストリをがっちり参照するバージョン(例WinAVR-20060421等)も存在するのでレジストリ操作は必須ですが、自由な位置に置ければCD-Rにだって置けます。ほんとか?
|
|
2008/12/1 (Mon) 22:01:15
|
[名前] : kawana
|
[URL] :
|
[コメント] : KOUさんへ 下記のコメントを使用すると、配線やコ−デイングに少し 役立ちます。
// ATtiny2313 // GND 10 11 PD6 // PD5 9 12 PB0 +LED-R soft Timer // PD4 8 13 PB1 +LED-G // PD3 7 14 PB2 // PD2 6 15 PB3 // XTAL1/PA0 5 16 PB4K // XTAL2/PA1 4 17 PB5 // PD1 3 18 PB6 // PD0 2 19 PB7 // *RESET/PA2 1 20 VCC
|
|
2008/12/4 (Thu) 16:58:43
|
[名前] : senshu
|
[URL] :
|
[コメント] : HIDaspxでの工夫
ソースコード中に、コメントで以下のように記述しています。 (読んでくれる方は少数ですが)
ATtiny2313 ___ ___ RESET [1 |__| 20] Vcc PD0(NC) [2 19] PB7(SCK) PD1(NC) [3 18] PB6(MISO) XTAL2 [4 17] PB5(MOSI) XTAL1 [5 16] PB4(RST) PD2(12M) [6 15] PB3(BUSY LED) PD3 [7 14] PB2(READY LED) PD4 [8 13] PB1(NC) PD5(PUP) [9 12] PB0(NC) GND [10 11] PD6(NC) ~~~~~~~~~~~
--------------------------------------- SPI: PB7-4 === [Target AVR Device](MISOとMOSIは交差) USB: PD4 === USB D- PD3 === USB D+ PD5 === USB D- PULL UP XTAL: XTAL1,2 = Crystal 12MHz PD2: Clock Output(12MHz) ---------------------------------------
|
|
2008/12/4 (Thu) 17:00:05
|
[名前] : senshu
|
[URL] :
|
[コメント] : 全角文字で書き直しました
ATtiny2313 ___ ___ RESET [1 |__| 20] Vcc PD0(NC) [2 19] PB7(SCK) PD1(NC) [3 18] PB6(MISO) XTAL2 [4 17] PB5(MOSI) XTAL1 [5 16] PB4(RST) PD2(12M) [6 15] PB3(BUSY LED) PD3 [7 14] PB2(READY LED) PD4 [8 13] PB1(NC) PD5(PUP) [9 12] PB0(NC) GND [10 11] PD6(NC)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|
|
2008/12/4 (Thu) 21:39:35
|
[名前] : kuman
|
[URL] :
|
[コメント] : 難しいですね。
ここは図が置けないし....
|
|
2008/11/30 (Sun) 21:59:17
|
[名前] : kuman
|
[URL] :
|
[コメント] : >こんなクソ簡単なプログラムを解説してる本も無ければHPもないので
http://www.geocities.jp/kuman2600/begintiny26.html#jk1 ↑に書いておきました。デバイスは違うけど、同じ考えでできます。
|
|
2008/12/3 (Wed) 23:50:58
|
[名前] : kuman
|
[URL] :
|
[コメント] : しかし、
書いた時期が古いのと、秋月にtiny26がなくなりましたので、近日中にこのページを終了します。
|
|
2008/12/4 (Thu) 00:14:14
|
[名前] : senshu
|
[URL] :
|
[コメント] : ATtiny26⇒ATtiny261で代替可能
kumanさん、こんばんは。 tiny26Lが入手できなくなっても、後継のマイコンは 入手可能ですから、そのまま公開してください。
「後継のマイコンが入手可能です」というコメントを 追加してはいかがでしょうか(修正の可能性の追記が 必要と思われますが)。
|
|
2008/12/4 (Thu) 01:05:26
|
[名前] : kuman
|
[URL] :
|
[コメント] : senshuさん
ご連絡ありがとうございます。もう少し考えてみましょうか。
|
|
2008/11/30 (Sun) 21:21:19
|
[名前] : kawana
|
[URL] :
|
[コメント] : KOUさん、こんばんは 私は、動くと思いますが、動作しましたか? 動作しなかった時、とことん自分で解決策を見つけて 行くのが、楽しみでも有り、頭のリフレシュに成ると 思います。ダイナミクRAMは、リフレシュしなければ 記憶内容が消えてしまうでしょう? 後、Kumanさんの掲示板記述の注意事項が有ります。 < > ’ ” $、これは半角OR全角?
|
|
2008/11/30 (Sun) 21:32:00
|
[名前] : kou
|
[URL] :
|
[コメント] : どうもです^^ >私は、動くと思いますが、動作しましたか?
いえそれが、エラーが出てコンパイルすら出来ない状況です。
#include #include int main(void) { /*以下pin設定*/ DDRB = 0x1; /*以下点滅部*/ protb = 0x1; wait(1000); portb = 0x0; wait(1000);
return;
} 以上がソースコードの全文なのですが、どこが悪いのやらさっぱり^^;
|
|
2008/11/30 (Sun) 21:34:12
|
[名前] : kou
|
[URL] :
|
[コメント] : >後、Kumanさんの掲示板記述の注意事項が有ります。 < > ’ ” $、これは半角OR全角?
あ、もうしわけないっす。
#include <avr\io.h> #include <stdio.h> int main(void) { /*以下pin設定*/ DDRB = 0x1; /*以下点滅部*/ protb = 0x1; wait(1000); portb = 0x0; wait(1000);
return;
}
これで大丈夫かな^^
|
|
2008/11/30 (Sun) 21:48:36
|
[名前] : kawana
|
[URL] :
|
[コメント] : どこが悪いのやらさっぱり^^; 考えるヒントは、コンパイラーが教えてくれています。Error Messageを良く読んでみましょう。 これからも、英語は十分に理解しなければ生きて行けない社会になるかも知れません。 私は、電子辞書を持っています。 コンパイラは、Errorの発生行、Errorの原因を示して くれています。 頑張って下さい。
|
|
2008/11/30 (Sun) 20:19:58
|
[名前] : KOU
|
[URL] :
|
[コメント] : tiny2313でLED点滅のプログラムを勢いで作ってみました。 赤色LED一つと適度な抵抗を使って、1秒毎にLEDが点いたり消えたり するプログラムです^^;めちゃくちゃですけど
条件:PB0→抵抗(470Ωくらい?)→赤色LED→電池マイナス配線 電池プラス配線→Vcc GND→電池マイナス配線 プログラム要件:1000ms毎にLEDを点滅
#include
int main(void) { /*以下pinの初期設定*/ DDRB = 0x1;
/*以下点滅に関わる部分*/ portB = 0x1; wait(1000); portB = 0x0; wait(1000);
return 0; }
今の自分の知識では、こうすれば動くのかなー なんて思ってますが、分かる方、色々ご指摘お願いしますM−−M
|
|
2008/11/30 (Sun) 21:27:25
|
[名前] : kuman
|
[URL] :
|
[コメント] : KOUさんへ
>#include は後に <avr/io.h> が続きますが半角<で消えたと思います。
1回だけ点滅して終わります。 点滅部分を for(;;){ ... } でくくって無限に繰り返しをさせます。
wait()の関数本体がありません。 時間は合わないけれど http://www.geocities.jp/kuman2600/begintiny26.html の、実験1 LED1個の点滅 のプログラムを参考にしてみてください。
または、実験2 LED8個の順次点滅 のwait関数を参考にしてください。
(どこかで同じ質問を見たような...)
|
|
2008/11/30 (Sun) 21:36:09
|
[名前] : kawana
|
[URL] :
|
[コメント] : 動かないかも? Q1.このプログラム言語は Cですか? おせっかいorアドバイス O1. 最初は、プログラム全部に注釈(コメント)を入れると、気が付くでしょう? O2. プログラムのTOPにコメントで プログラム名: CPU: 開発言語: FileName & Ver.: Programmer:Your name Date: その他:必要な事または、条件等 を記述すると、プログラマーとしてのスタンスが生まれてくる?
|
|
2008/11/30 (Sun) 22:05:54
|
[名前] :
|
[URL] :
|
[コメント] : kumanさん、ありがとうございます。
for文ですね。勉強になりますm−−m
>関数本体がありません うーむ、やっぱりまだまだ勉強不足なんですね^^;
C言語の文法をしっかり学んで、関数はその都度調べてプログラムしていくという方法で勉強しようと思ったのですが、やっぱり最初からC全部を覚えたほうがいいですかね?^^;
>kuwanさん 基本的な事を忘れてたみたいですね^^; しっかり注を付けてプログラムするようにしていきます^^
|
|
2008/12/1 (Mon) 08:06:40
|
[名前] : kawana
|
[URL] :
|
[コメント] : やっぱり最初からC全部を覚えたほうが良いか-->NO? Step by Stepです。 簡単なプログラム(LED ON/OFF)の必要な命令語から 勉強して行くことです。 考え方が合っているか? 命令語の選択、使い方は、合っているか? 命令語の定数は、有効範囲内か? For文の回数と時間の関係を理解する(XTAL、動作周波数の関係は、と言うように、関連する事柄を、理解して行き、理解の幅を広げる。 LEDのON/OFFの様子を良く観察する事です。 (10msのON/OFFと100msのON/OFFでは、見え方が違います。)
|
|
2008/12/2 (Tue) 16:33:05
|
[名前] : kawana
|
[URL] :
|
[コメント] : for文によるwait時間の作成が出来たら、次を試してください。(delayル−チンのコ−ル)
http://www11.ocn.ne.jp/~akibow/avr-libc-user-manual-1.4.3/group__util__delay.html
|
|
2008/11/29 (Sat) 20:39:44
|
[名前] : kawana
|
[URL] :
|
[コメント] : BASCOM-AVRのWait命令 Waitms(100) Waitus(100) どちらも、有効でした。 BASCOMは、いいなと思いました。
|
|
2008/11/30 (Sun) 01:49:03
|
[名前] : すん
|
[URL] :
|
[コメント] : BASICはやはり関数形式でライブラリが使えるので便利です。AVR-GCCだと_delay_us、_delay_ms関数はOsでコンパイルしないと誤差が大きくなったりするのと、大きな引数を渡すことができない等の制限があるから面倒です。
|
|
2008/11/29 (Sat) 15:54:46
|
[名前] : kawana
|
[URL] :
|
[コメント] : ATtiny45_26ms.hexの検討 $regfile = ”ATtiny45.dat” $crystal = 8000000 ’8MHz
Config Portb = Output Ocr1a = 128 ’100(26us)-->128(32us) Ocr1c = 255 ’256はno osc NG Tccr1 = &b01110001 Loop: Portb = Portb And &b11111110 ’b0-->0 Waitms 100 Portb = Portb Or &b00000001 ’b0-->1 Waitms 100 Goto Loop End ------------------------------------- Prescale 1/2*COUNTER ?
|
|
2008/11/29 (Sat) 10:35:23
|
[名前] : kawana
|
[URL] :
|
[コメント] : ATtiny45_26ms test BASCOM-AVR Ver 1.11.9.3で動作を確認してみました。 = ATtiny45.dat = 8000000 ’8MHz(’は表示都合、半角に) Config Portb = Output Ocr1a = 100 Ocr1c = 200 Tccr1 = &B01111011 ’13ms on,13ms off End -------------------------------------- 勉強した事 1.$B01111011-->&B01111011 2.コメントは、’で 3.b3-B0指定と時間 0 0000 no OSC 8 1000 3.2ms 1 0001 25.6us 9 1001 6.48ms 2 0010 50.4us A 1010 13.2ms 3 0011 100.8us B 1011 26ms(13ms on,13ms off)
|
|
2008/11/28 (Fri) 12:03:51
|
[名前] : kawana
|
[URL] :
|
[コメント] : Kentsさんへ お奨めの参考サイトの紹介です。素晴らしいです。 http://www.ne.jp/asahi/shared/o-family/index.htm
|
|
2008/11/27 (Thu) 19:49:49
|
[名前] : kawana
|
[URL] :
|
[コメント] : 周波数カウンタチェック用 1MHz OSC 1MHzOSC + 74HC74で1MHz,500KHz,250KHzを 製作してみた。後で、周波数カウンタでチェック してみよう。
|
|
2008/11/27 (Thu) 17:08:03
|
[名前] : kawana
|
[URL] :
|
[コメント] : 8bitTimer0,8bitTimer2の連結? ATmega168で周波数カウンタを作ろうとしています。 Timer0,Timer2を連結して16bitのTimerとして動作させたいと思います。可能なのでしょうか? ハ−ド的にはX、ソフト的には○と思うのですが?
|
|
2008/11/27 (Thu) 15:20:22
|
[名前] : kawana
|
[URL] :
|
[コメント] : TCCR1(PB1)とPB0の独立性のTest 下記プログラムでcheckしてみました。?? unsigned int n; DDRB = 0x1F; PORTB = 0x1F; OCR1A = 100; OCR1C = 200; TCCR1 = 0x7F;// TCCR1 Prescal Set 1/1024 // PB1 output t=102+102ms
while(1){ PORTB &= ~0x01; //& 1111 1110 off for(n=0; n
|
|
2008/11/27 (Thu) 15:26:34
|
[名前] : kawana
|
[URL] :
|
[コメント] : 修正 unsigned int n; DDRB = 0x1F; PORTB = 0x1F; OCR1A = 100; OCR1C = 200; TCCR1 = 0x7F;// TCCR1 Prescal Set 1/1024 // PB1 output t=102+102ms
while(1){ PORTB &= ~0x01; //& 1111 1110 off for(n=0; n<1000; n++){ _delay_ms(10); }
PORTB |= 0x01; // + 0000 0001 on t=610+610ms for(n=0; n<1000; n++){ _delay_ms(10); } } }
|
|
2008/11/27 (Thu) 13:00:03
|
[名前] : kawana
|
[URL] :
|
[コメント] : .test .test .test
|
|
2008/11/27 (Thu) 09:02:01
|
[名前] : kawana
|
[URL] :
|
[コメント] : Compileの失敗? ATmega168でLCDtestプログラムを作成しました。 正常に表示されました。そこで ATmega88に移植を考え、ATmega168のFileの名前を変更し <LCDm88> LCDm88CLx20.C LCDC.C LCDC.Hを作成しCompileしましたが、File Sizeが小さく動作しませんでした。 CompileOptionが -Osに成っていました。(-O0ならOK) Q1. Compile時、初期設定は、-OsがSetされるのですか? Q2. ATmega88は、Familyなので、ATmega168のhexでも 動作するように思います。この様な、考えは、ダメ でしょうか?
|
|
2008/11/27 (Thu) 09:31:09
|
[名前] :
|
[URL] :
|
[コメント] : Re:コンパイル
>Q1. Compile時、初期設定は、-OsがSetされるのですか? 私のmakefileは次のようになっています。デフォルトはsですね。
# Optimization level, can be [0, 1, 2, 3, s]. # 0 = turn off optimization. s = optimize for size. # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) OPT = s
>Q2. ATmega88は、Familyなので、ATmega168のhexでも… よく知りませんが、メモリーの範囲が広いのでアドレスの指定方法が違うと聞いたことがあります。
|
|
2008/11/26 (Wed) 22:49:02
|
[名前] : kuman
|
[URL] :
|
[コメント] : kouさんへ
長くなりましたから、あらためて書きますね。
>入門向けとして、なにかお勧めの機種はありますか? いま流行?の Tiny2313 が一番のお薦めです。 繰り返しになりますが秋月で\100とお手頃です。 2313 と 2313V がありますがとりあえず2313(Vのないほう)としておきましょう。できれば4〜5個。
もし、財力に余裕があれば、mega88 も2個ほど。 一つ250円です。
さらに、ブレッドボード EIC−801 があると実験が楽しくなります。
あと、抵抗も買うなら 470Ω、1k、4.7k、10k くらいあれば便利かな。
身近に買うところがなかったら、LEDと01μFのセラミックコンデンサは欲しいところ。
電源は5VのACアダプタ(スイッチング電源)があればいいかな、 ってところです。
|
|
2008/11/26 (Wed) 23:17:55
|
[名前] : kou
|
[URL] :
|
[コメント] : おお、詳しくありがとうございます^^
早速、おっしゃったとおり(笑)に部品を注文しているところなんですが、ACスイッチングアダプタに関して、ワット数とかアンペアなど、考慮したほうがいいものはありますか?
|
|
2008/11/26 (Wed) 23:57:13
|
[名前] : kuman
|
[URL] :
|
[コメント] : ACアダプタ
1Aか2Aで十分。600円くらいのもの。 携帯電話のお古があればそれでも。ダイオード一つ付けておけばOkでしょう。
|
|
2008/11/25 (Tue) 18:43:08
|
[名前] : kou
|
[URL] :
|
[コメント] : 管理人様、始めまして^^kouと申します。
AVRのCについての大変丁寧で分かりやすい解説ありがとうございます。参考になります^^
私も以前から興味を持っていたマイコンにチャレンジしようと思い、早速デジット製USBライタとISPケーブル、90S1200数個を購入してしまいました^^
ですが、マイコンどころかCについても少し勉強してみただけの知識で、本当に大丈夫か心配になってしまいます^^;
もし、こんなド素人な私にも理解できそうな参考書やHPなどありましたら教えて頂けませんか?
|
|
2008/11/25 (Tue) 18:54:28
|
[名前] : kuman
|
[URL] :
|
[コメント] : kouさん。こんばんは。
お越しいただきありがとうございます。 参考書は3種類ほどでているようですが、 私は1冊も持っていないので、他の人の返事を待ちたいと思います。
90S1200は残念ですがC言語では使えなかったと思います。これだけは特別なAVRで、SRAMを持っていません。
送料はかかりますが秋月のTiny2313(1個100円)を是非買ってください。もちろん秋月でなくて結構ですが。
この掲示板で何でも聞いてください。できるかぎりの応援はいたします。
HPはここが一番と、自画自賛しておきましょう。
|
|
2008/11/25 (Tue) 19:12:38
|
[名前] : kawana
|
[URL] :
|
[コメント] : kouさん、よろしく kumanさんのペ−ジを見て、何とかプログラムが出来るように成った1人です。綺麗に、解り易く纏められているので、疑問が湧いてきた時、ここを訪れれば問題解決するでしょう。技術レベルの高い方も見てくれています。 他の参考のサイトには http://ekousaku.web.fc2.com/ すんさんのサイト http://www.wsnak.com/index2.html 便利な基板を販売 (ユニバ−サル基板で配線するのも楽しいのですが、基板 販売を利用すれば、ハ−ドミス無く、プログラム作成に直ぐ行けます) 私のAVR参考書は AVRマイコン・リファレンス・ブック 山根彰著 CQ出版 を持っていますが、少し読んだだけです。 参考プログラム、資料は、インタ−ネットで探せると思います。
|
|
2008/11/25 (Tue) 19:25:19
|
[名前] : kou
|
[URL] :
|
[コメント] : お返事ありがとうございます^^
>90S1200は残念ですがC言語では使えなかったと思います。これだけは特別なAVRで、SRAMを持っていません。
なんですと^^;さっそくやらかしましたね^^;
>送料はかかりますが秋月のTiny2313(1個100円)を是非買ってください。もちろん秋月でなくて結構ですが。
このTiny2313ってのは入門向け?なんですかね?^^ http://www.technobase.jp/eclib/DIGIT/AVR/avrwrtmanual.pdf このライタを購入したのですが、これで書き込めてなおかつ入門向け、と思われるマイコンがありましたら教えていただけませんか?
>この掲示板で何でも聞いてください。できるかぎりの応援はいたします。 HPはここが一番と、自画自賛しておきましょう。
はい、ありがとうございます^^ いやいや、貴HPは紛れも無く一番だと思いますよ^^b
|
|
2008/11/25 (Tue) 19:25:49
|
[名前] : kou
|
[URL] :
|
[コメント] : kawanaさん、はじめまして^^よろしくお願いしますm−−m AVRのHPも意外にあるんですねー。
確かに、自作でハードミスすると、どこがまずいのか分からなくなりますよね^^;当分は教えて頂いたところで仕入れてみようと思います^^
>私のAVR参考書は AVRマイコン・リファレンス・ブック 山根彰著 CQ出版 を持っていますが、少し読んだだけです。 参考プログラム、資料は、インタ−ネットで探せると思います。
なるほど。 しばらくはネットで資料を漁って見ます^^
そういえば、ISP書き込みっていうのがありますよね? あれって言うのは、ライタのどの線をどの端子に繋げばいいんですかね? PDFの説明書を見ても、ネットで調べても なかなかこれといった記述が見つからないもので^^; ご存知の方いらしたらご教授願いますm−−m
|
|
2008/11/25 (Tue) 21:43:00
|
[名前] : kuman
|
[URL] :
|
[コメント] : 接続です。
http://www.geocities.jp/kuman2600/begintiny26.html#prog を見てください。ChaNさんのライタです。番号があります。
左がライタ、右がターゲットmcuです。 1 MISO(マスターイン、スレーブアウト)← MISO端子 2 Vcc←→Vcc ライタによって向きが違います 3 SCK←SCK端子 4 MOSI(マスターアウト、スレーブイン)→MOSI端子 5 RESET→RESET端子 6 GND−GND このような番号になっているはずです。 MCUのそれぞれの端子をデータから調べてください。
ではまた。
|
|
2008/11/25 (Tue) 22:32:30
|
[名前] : kawana
|
[URL] :
|
[コメント] : PinNo.は PinNo.はPinHeader(とんがたほう)を上からみて 1 2 3 4 5 6 はんだ面から見て 2 1 4 3 6 5(*RESET) 自分でメモ作成すると、間違い無いと思います。 電源供給の前に、ソケットから、AVRを外し、電源Pin に、電圧出ている事確認してから動作チエック
|
|
2008/11/25 (Tue) 23:50:01
|
[名前] : kuman
|
[URL] :
|
[コメント] : kawanaさん
ありがとう
|
|
2008/11/26 (Wed) 18:49:10
|
[名前] : kou
|
[URL] :
|
[コメント] : kuwanさん、kawanaさん、詳しい解説ありがとうございますm−ーm理解できました。
AVRのPIN数が増えても、教えてくださった用にデータシートを見て接続すればいいんですね^^b
今日、ライターと90S1200、そしてなんとなく買った8pinのATTiny12が届きました^^ 90s1200はとりあえず置いといて、EEPROM搭載のATtiny12のほうでC言語を用いて簡単なLED点滅回路とプログラムを作ってみようと思っています。
よく、コンフェグレーションビット?(AVRの動作を決定する奴です)で内部発振使用から外部に切り替えると動作しなくなるなどと言いますが、これからプログラムに手を出すに当たり、取り扱い上なにか注意することはありますか?
よろしかったらアドバイスください^^;
おねがいしますm−−m
|
|
2008/11/26 (Wed) 19:34:50
|
[名前] : kuga
|
[URL] :
|
[コメント] : ああ残念,Tiny12にもSRAMがありません。
|
|
2008/11/26 (Wed) 19:44:21
|
[名前] : kou
|
[URL] :
|
[コメント] : >SRAMはありません
ありゃ^^;そんな気がしました^^;
やっぱり、買ってくるしかなさそうですね。 入門向けとして、なにかお勧めの機種はありますか?
|
|
2008/11/25 (Tue) 14:48:40
|
[名前] : kawana
|
[URL] :
|
[コメント] : ATtiny45_19Hz(51ms) 下記プログラム(studio4 AVR-GCC)で PB1から19Hzのパルスが出ていました。LEDは、ON/OFFでなく、ゆらぎとして確認できました。
//************************ // ATtiny45_26ms // XTAL: 16MHz //************************ #include #include
void main(void) { DDRB = 0x1F; PORTB = 0x1F; OCR1A = 100; OCR1C = 200; TCCR1 = 0x7D; } BASCOMのVERが1.11.9.1では、と思います。 くどいですね、私の暇つぶしでしています。
|
|
2008/11/24 (Mon) 07:45:52
|
[名前] : kawana
|
[URL] :
|
[コメント] : $test $regfile = ”ATtiny45.dat” = ATtiny45.dat
|
|
2008/11/24 (Mon) 07:41:22
|
[名前] : kawana
|
[URL] :
|
[コメント] : kumanさんへ $の半角も使用出来ないようなので、追記お願いします。
|
|
2008/11/24 (Mon) 09:02:06
|
[名前] : kuman
|
[URL] :
|
[コメント] : 了解しました。
|
|
2008/11/24 (Mon) 07:36:25
|
[名前] : kawana
|
[URL] :
|
[コメント] : 題意が違いますが、下記プログラムで 75Hzの矩形波がPB0に出力されていました。LEDは、薄く点灯状態でした。
= ATtiny45.dat
Config Portb = Output Config Timer0 = Timer , Prescale = 1024 , Clear Timer = 1 , Compare A = Toggle Ocr0a = 99 End ------------------------------------------------- Fuse設定( RC 8M?) Low: 1110 0001 High: 1101 1101
|
|
2008/11/23 (Sun) 19:03:36
|
[名前] : kawana
|
[URL] :
|
[コメント] : Kentsさんへ Simさんのサイトでデジタルオシロスコープが値下の 記事みました。価格桁ミスか? 秋月のデジタルオシロスコープが値下げしています(39800円→35000円)。 「ポータブル・カラーオシロスコープ PDS5022S(25M 2ch 100Msps STN)」
|
|
2008/11/23 (Sun) 19:08:54
|
[名前] : kawana
|
[URL] :
|
[コメント] : 電子かわら版に載っています。 ポータブル・カラーオシロスコープ PDS5022S (25M 2ch 100Msps STN) [M-01873] PDS-5022S 1台 35,000円
|
|
2008/11/23 (Sun) 14:31:03
|
[名前] : kawana
|
[URL] :
|
[コメント] : Kentsさんへ BASCOMプログラムは、いかがですか? BASCOMの例題、akioさんが追試してくれました。それによると、Kentsさんが書いたプログラム26ms周期で ON/OFFしているとの事でした。 私の勉強も込めて、周波数と周期を計測する冶具を製作してみました。大変調子良く測定出来ました。 製作記事は、すんさんサイトを利用しました。 http://ekousaku.web.fc2.com/ InputCaptureを使用するもので、PIC24Fを使用していますが、AVR ATmega168等で代替可能と思います。 次のAVR製作課題とするのは、いかがでしょうか? 押し付けに、なるかな?
|
|
2008/11/20 (Thu) 17:14:49
|
[名前] : 宮前
|
[URL] :
|
[コメント] : ICの使用可能な最低電圧 LTC4054は、4.25Vでした。データシートには、抵抗で電圧を下げる場合の回路図と、抵抗値の決め方、その時のバイパスコンデンサの事などが書いてありました。 MCP73861は、4.5Vのようです。データシートには、(抵抗で落す)説明が無いので、推奨していないかもしれません。
|
|
2008/11/20 (Thu) 17:15:46
|
[名前] : 宮前
|
[URL] :
|
[コメント] : すみません。スレッドを間違えました。
|
|
2008/11/21 (Fri) 18:33:08
|
[名前] : kuman
|
[URL] :
|
[コメント] : 電圧降下用の抵抗を
次の機会には少し入れてみよう。 ただ、私の実験は8月だったので、今はわかりにくいかもしれません。
|
|
2008/11/20 (Thu) 11:18:35
|
[名前] : 宮前
|
[URL] :
|
[コメント] : kumanさんの「リチウムイオン電池と充電器」 結構発熱があるとありました。 私のはLTC4054(リニアテクノロジー)ですが、やはり結構熱くなった(0,5A充電)ので、セメント抵抗で電圧を落として、ICに供給しました。マニュアルに書いてあったような気がします。抵抗値は、最大充電電流で、ICの最低電圧より低くならぬように決めました。結果は、発熱は殆どなくなり、安心感が増しました。その後3年間安定運用です。
|
|
2008/11/20 (Thu) 13:09:33
|
[名前] : kuman
|
[URL] :
|
[コメント] : 宮前さん、こんにちは。
ここしばらくは電池を使っていないのですが、 最低電源電圧が5Vと聞いていまして、その5Vにしています。 抵抗を入れると電圧不足になると思うのですが、 いかがでしょうか。
|
|
2008/11/20 (Thu) 14:11:52
|
[名前] : kawana
|
[URL] :
|
[コメント] : 私も、5Vで使用しています。 3.6V+0.6〜1.2=4.8Vと考えていましたが、ICの動作電圧 なのですね。
|
|
2008/11/17 (Mon) 08:53:46
|
[名前] : kawana
|
[URL] :
|
[コメント] : 2つのLS123で区間ABの時間をCに溜めて、時間を 計測したいのですが、可能でしょうか。 ChanさんのCメ−タ−など利用して。
|
|
2008/11/17 (Mon) 18:36:53
|
[名前] : kawana
|
[URL] :
|
[コメント] : Cに溜めておく必要なく、Timerで直接時間計測 すれば良いこと解りました。
|
|
2008/11/16 (Sun) 20:42:25
|
[名前] : kuman
|
[URL] :
|
[コメント] : ご利用いただいている皆様方へ
長いURLを書くと画面の体裁が崩れて、スレッドの区別がわかりにくくなります。
長い場合は2行以上に分割して書いてください。
編集ができませんので今後は削除で対応したいと思います。 よろしくお願いします。
|
|
2008/11/16 (Sun) 18:03:37
|
[名前] :
|
[URL] :
|
[コメント] : 初めて書き込みします。 よろしくお願いします。 コメントの仕方がよく分からないので、申し訳ありません。 Kentsさん 最初に書かれたプログラムで間違いありません。
Config Portb = Output Ocr1a = 100 Ocr1c = 200 Tccr1 = &B01111000
ATtiny45のTIMER1はPWM動作をしました。 ATtiny45は買ってきた物そのままでヒューズビットは何もいじっていません。 PB1にLEDを繋ぎ、オシロで波形を確認しました。 周期は約26ms、デューティは50%、つまり0NOFFそれぞれ13msです。 LEDの点滅は目視できません。 つまりただ点灯しているだけです。 1/512に分周比を下げるとはっきりと目視で点滅を確認出来ました。 BASCOM-AVRのバージョンは1.11.9.2です。 BASCOM-AVRの設定とバージョンを再度確認してみてください。
|
|
2008/11/16 (Sun) 20:50:15
|
[名前] : akio
|
[URL] :
|
[コメント] : 上の書き込み 名前が抜けていました。
|
|
|