X



トップページ電気・電子
1002コメント298KB
AVRマイコン総合スレ Part37
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん 転載ダメ
垢版 |
2016/02/10(水) 01:38:42.26ID:kLm1nPXV
個人でも手軽に使えるAtmelのAVRマイクロプロセッサを中心に語るスレッドです

<公式サイト>
Atmel AVR 8-bit and 32-bit Microcontrollers
http://www.atmel.com/products/microcontrollers/avr/  英語表記
http://www.atmel.com/ja/jp/products/microcontrollers/avr/ 日本語
・AVR Libc Reference Manual: http://www.atmel.com/webdoc/AVRLibcReferenceManual/

<参考になるページ>
・AVRWiki: http://avrwiki.sourceforge.jp/cgi-bin/wiki.cgi?page=AVRWiki
・AVR情報多い-chanさんのpage: http://elm-chan.org/
・avrfreaks.net avrgccその他AVR関連の総本山(英語): http://www.avrfreaks.net/
・TAP-Config: http://ww2.tiki.ne.jp/~maro/
・AVR.jp 日本語のAVR資料他: http://www.avr.jp/
・ATMega168日本語データシート(翻訳中): http://awawa.hariko.com/chira-ura/
・AVR アセンブラのマニュアル(ユーザーズガイド): http://www.atmel.com/Images/doc1022.pdf
・インストラクション(命令セット)の解説: http://www.atmel.com/Images/doc0856.pdf
・条件付きアセンブルの解説(アセンブラ ver. 1.74対応):http://www.atmel.com/Images/doc2550.pdf
・アセンブラとCの連携方法: http://www.atmel.com/Images/doc1234.pdf

※前スレ
AVRマイコン総合スレ Part36(c)2ch.net
http://wc2014.2ch.net/test/read.cgi/denki/1445006186/

テンプレみたいなものは以上です
0662774ワット発電中さん
垢版 |
2016/05/11(水) 15:39:27.13ID:fiGx+iem
>>658
FPGAよりずっとハード屋に優しいと思うけど。
ただ、デジタル一辺倒でアナログ回路的な思考ができないと
厳しいかもしれないね。
0664774ワット発電中さん
垢版 |
2016/05/12(木) 13:53:13.20ID:jjHYDMN0
AVRのアセンブラは良いね
メモリ効率が良くて実行速度が速くてまるで中級言語(?)みたいに分かりやすい
これを命令コード16bitで実現していることに感心する
0665774ワット発電中さん
垢版 |
2016/05/12(木) 14:26:18.88ID:eW+QTKM5
レジスタ番号の若い方半分は、制約がかなり多くてあまり使い道が無い
むしろレジスタ数 半分で、その分アドレッシングの強化にまわしてもらってた方が
俺的には便利だったな

まぁ欲を言えばきりが無いからな、素直な方だと思うよ。
0666774ワット発電中さん
垢版 |
2016/05/12(木) 15:37:23.51ID:et+JTHxn
下位チップはメモリがほとんどないからメモリの代わりに使うんだよ。
0667774ワット発電中さん
垢版 |
2016/05/12(木) 18:04:23.10ID:vxmkX/BO
I/O領域の扱いが不満。$00-$3Fまでの64バイトで収まってるうちは良かったけど
拡張I/O領域(メモリマッドI/O)が追加されてIN,OUT命令が使えなくなり
LD,ST系しか使えなくなった(SBI,CBIは元々I/O領域の前半$00-$1Fだけしか
対応していないのでもちろん使えない)
LD,ST系のメモリアクセスはXMEGAで改善されてるようだけど、それ以前の
Tiny,MEGA等だと2サイクル命令で遅い。
0668774ワット発電中さん
垢版 |
2016/05/12(木) 20:00:14.48ID:vGK+cvz4
>>665
ループカウンタとか変数格納用途だね R0~7 
俺の場合だけど  

>>661
CPUのクロック周波数を幾らに設定しているの?
0669774ワット発電中さん
垢版 |
2016/05/12(木) 20:37:10.56ID:vGK+cvz4
未だにDOSで遊んでいるせいか MOV と LD の使い分けで時々混乱してアセンブラに
怒られています
0670661
垢版 |
2016/05/13(金) 10:56:49.55ID:xDkUvVAR
>>668
CPUのクロックは内蔵RC発振器の8MHzです。分周はしていません。
0671774ワット発電中さん
垢版 |
2016/05/13(金) 16:33:31.47ID:+1JsybVo
>668
>ループカウンタとか変数格納用途だね R0~7 
誰も指摘しないけど、即値系の命令が使えない等の制限があるのはR0〜R15では?
0675774ワット発電中さん
垢版 |
2016/05/13(金) 19:45:20.41ID:+2v5nt9U
概要に 16 general purpose working registers って書いてあるやつだよ。
0676774ワット発電中さん
垢版 |
2016/05/13(金) 19:46:12.90ID:+2v5nt9U
かぶっちまった。すまぬ。
0678774ワット発電中さん
垢版 |
2016/05/14(土) 06:52:25.68ID:k1HmgCBO
>>667
AVRも16bitなんてケチ臭いことにこだわってないで
AVR24上位コンパチ品とか出してくれれば
そういう使いづらいところが解消できたのにね
残念ッ!
0679774ワット発電中さん
垢版 |
2016/05/14(土) 14:52:45.22ID:rWdMMye9
>678
>AVR24上位コンパチ品とか出してくれれば
それがXMEGAシリーズなのかも・・・。
AVRは最初の90Sシリーズから素晴らしいアーキテクチャだった、その後のTiny,MEGA,XMEGAも
良い出来だとは思うけど素晴らしいアーキテクチャの上にあぐらをかいて改良を怠った感がする
0682774ワット発電中さん
垢版 |
2016/05/14(土) 23:55:32.28ID:qhJ50mHr
え〜xmega使える子だよ
0684774ワット発電中さん
垢版 |
2016/05/15(日) 00:15:40.88ID:x74NUJLh
>682
使えないと言ってるわけじゃなくてXMEGAに期待が大きかったのにあまりMEGAから改良されてないからじゃないか。
時期的にMicrochipがPIC18からPIC24,dsPICで凄い改良してきた時だし
0685774ワット発電中さん
垢版 |
2016/05/15(日) 20:30:22.29ID:7S+OI5ec
>>671,672
訂正、フォローありがと
そうでした
つい半年前にプログラム組んだのにもう忘れた

>>670
レス、ありがとう
対象物を検出したときの、スピーカーに与える信号は 
オン、オフの繰り返しになるのですか?
変調のやり方がポイントという印象ですね
0686774ワット発電中さん
垢版 |
2016/05/18(水) 22:27:30.82ID:ld4pbySq
>>680
使ってる人少ないけど良いよね
mp3デコード行けるパワー持ってるし
RX62と同等くらいか
0691774ワット発電中さん
垢版 |
2016/05/25(水) 05:59:54.61ID:N5tG+rd0
>>689
比較的最近実装された機能であるしWebに載ってる記事が新しい機能を
使いこなしてるとも限らないのでPROGMEMで書いてることも多いんじゃ
ないの。
素人に限ればAVRの最大派閥だと思うArduinoがちょい前まで古いGCC
使い続けてたのも大きいんじゃないかと思う。
0692774ワット発電中さん
垢版 |
2016/05/25(水) 06:44:54.41ID:Xa8KrV4x
>>690
CPUの命令やデータのビット数、プログラムの仕様で変わるだろうから
全く同じ条件での比較はできないと思うけど
とりあえず、仕様が書いてある >>661 のプログラムを他のCPUでも書いてみて
必要なバイト数を比べてみたらどうかな?
0694774ワット発電中さん
垢版 |
2016/05/25(水) 12:29:06.09ID:IQszzXQW
コードサイズは概ね32bit<16bit<8bit
要はレジスタ幅と本数が多い程コード効率は良くなるってだけ
例えば8bitで32bit演算なんてしたら4ワード掛かる
0696774ワット発電中さん
垢版 |
2016/05/25(水) 12:57:22.89ID:eNv7rIpW
>>689
古い開発環境だと通らないってのが大きいんじゃない
コピって来るような古いコードは古い環境で書かれてる訳だしな
ついでにputsとかで使う文字列ならPSTRの方が楽かもだし

新しいgcc入れても、新しいライブラリ向けに
リンクスクリクプトとスタートアップコードを変更すれば
古い開発環境でも使えるかもだけど、めんどいし…
0697774ワット発電中さん
垢版 |
2016/05/25(水) 13:34:21.37ID:Xa8KrV4x
>>693
AVRにはメモリデータ相手の演算命令は無いからね
(そういう設計方針のCPUだから、と言うしかない)
でも例えばSRAM上の受信リングバッファ処理などでは
アドレッシングも特に問題は無いと思う

私が思うにCPUなんて用途・状況によってどれも一長一短で
8bitが常に32bitに負けるわけでも無いし
どんなCPUでもプログラムを組んでるときに
「あぁ、XXという機能があればなぁ」と思ったりするのでは?
0698774ワット発電中さん
垢版 |
2016/05/25(水) 14:12:44.75ID:0w4CQxGw
>>696
古い環境にこだわるやつがそんなにいるかね?
紹介してるやつがいないから広まってないだけでしょ。
AVRLibcの機能だけでも使ってるの見たこと無いのいっぱいある。
0699774ワット発電中さん
垢版 |
2016/05/25(水) 15:04:06.87ID:eNv7rIpW
>>698
そこら辺は人によるんじゃね
個人的にはさすがにWin10-x64で動くライタ類は用意したけど
新しい開発環境の構築や学習、練習なんて
ちょうめんどいことは後回(ry

でも文字列定数へのPSTR挿入/削除や
const宣言に対する_flash空間等への追加書き換えとか
統合環境なんだしエディタにマクロ等用意して欲しい…とか思(ry
0701774ワット発電中さん
垢版 |
2016/05/31(火) 22:46:55.48ID:6l875ZMG
どうよ最近?やってる?
0702774ワット発電中さん
垢版 |
2016/05/31(火) 23:38:26.05ID:Qqyh09Ua
タイマをPLLで動かしたいのにPLL対応してるのがtinyばっかで苦労してるよ
0703774ワット発電中さん
垢版 |
2016/06/01(水) 01:18:06.91ID:zyBVTvSe
SDメモリからwav読み出して再生するのにDMA4チャンネル使い切ったりして遊んでるよ。
CPU使用率が限りなく0で何していいかわからん。
0705774ワット発電中さん
垢版 |
2016/06/02(木) 21:45:45.79ID:7JgyS4+/
中華サイトで1番安いavrisp stk500を買ったらusbシリアル器だった
予備用にと思ったが、高い買い物なり
0706774ワット発電中さん
垢版 |
2016/06/02(木) 23:04:55.77ID:9YgO4wR7
一方俺はISPシールドを買った
これでarduinoなattinyがお手軽に量産出来るぜ
0707774ワット発電中さん
垢版 |
2016/06/03(金) 20:33:23.70ID:gXvx8AUQ
うちは、ミナトエレクトロニクスのユニバーサルプログラマ
0713774ワット発電中さん
垢版 |
2016/06/04(土) 17:19:57.95ID:UlwzGA3m
しばらくUSBBASPを使ってたんだけど何故かマイコンが3個連続で壊れたのでAVRWRTに回帰した
書き込みはメチャメチャ安定してるし、ヒューズビットの設定がラク


しかしただでさえボッタ栗な共立価格なのに、
今のはライタ基板だけじゃなくていろんな物がごちゃごちゃ付いてくるのが難点
0714774ワット発電中さん
垢版 |
2016/06/04(土) 22:38:51.34ID:iiOD7ojL
Hidaspxばかり使っていますが、壊れたことは一度もありません
0715774ワット発電中さん
垢版 |
2016/06/08(水) 01:36:45.02ID:46YbsPOs
UNOで焼いてるが問題なし
tiny85便利やね。普通にソフトシリアル使える
0716774ワット発電中さん
垢版 |
2016/06/08(水) 12:40:44.95ID:Lx9q7aCM
ソフトシリアルなんかを使わなきゃいけない時点で全然便利ではない
0719774ワット発電中さん
垢版 |
2016/06/10(金) 16:40:50.52ID:q/kctToh
今日もAtmel-Iceに助けられた。
データブレークポイントが無けりゃ簡単には捕まえられないバグだったわ。
0720774ワット発電中さん
垢版 |
2016/06/10(金) 19:17:27.78ID:er2SPYuA
デバッグ用のライン引いてる時だけ出ないバグとかあるからなぁ…
おっかねぇよ
0723774ワット発電中さん
垢版 |
2016/06/18(土) 12:16:58.75ID:TTdLfpHD
ATMEGA168用に公開されてるHEXファイルをそのままATMEGA328に書き込んでも
問題なく動きますでしょうか?
0724774ワット発電中さん
垢版 |
2016/06/18(土) 14:22:27.31ID:gUQbdz4Q
デバイスなんて2クリックで変えられるもん何で変えないのか解せんがLチカレベルの単純なI/O程度なら動かなくはないはず
割り込みとかしてたら動かんものと見た方が良い
0725723
垢版 |
2016/06/18(土) 21:23:48.23ID:TTdLfpHD
>>724
すいません

>デバイスなんて2クリックで変えられる

これはどういうものでしょうか?ちょっと分かりませんでした
0726774ワット発電中さん
垢版 |
2016/06/18(土) 21:42:41.26ID:qaga05UG
ふつ〜にエスパーすりゃ
AVR Studioのプロジェクト辺りを前提にしていて
プロジェクトコンフィギュレーションを呼び出してDevice変えてリビルド
って事なんじゃね〜の?

ソースもプロジェクトも公開されてない、手元にあるのはHEXだけってなら
そりゃ無理な話だろうぜ
0728774ワット発電中さん
垢版 |
2016/06/27(月) 10:27:29.81ID:OEE56bWH
マイコンソフト悩み事相談室スレにTiny2313の並列処理ソフトが紹介されているけど、
誰か動かした人いる?
0729774ワット発電中さん
垢版 |
2016/06/27(月) 10:54:38.33ID:zpHYHcwM
ハード組むまでもねえ。
AtmelStudioのシミュレータで試してみりゃいいじゃない。
0730774ワット発電中さん
垢版 |
2016/06/28(火) 08:30:28.31ID:/y6L4fJQ
そのスレの799のことかな?アセンブラ前提なら何でもありな気が
0731774ワット発電中さん
垢版 |
2016/06/28(火) 11:43:44.06ID:W4lQ+lnJ
>>728
2313みたいな小規模のマイコンではマルチスレッドの恩恵は薄いと思う
2個使うとかfunc()的なプログラムでRAMの消費を抑えた方が有用な気もするが
0735774ワット発電中さん
垢版 |
2016/06/28(火) 23:14:38.32ID:yzU1GKL7
ATmega168Pを使ってMK-156という音声再生モジュールを動かしたいと思っています。
基本シリアルで命令を送るのですが、命令を送ってもスンとも動かずで・・・
マイコン側はボーレート9600のパリティなし、8bit、ストップビット1、フロー制御なしの設定にするため
ATmega168PのCLKDIVを外して8MHz駆動に変えています
レジスタの設定も下記のようにしているのですが、何が間違っているのでしょうか。

// ADCの設定
ADMUX = 0b00000000; // AREF 右詰め
ADCSRA = 0b10000111; // 62.5kHz

// シリアル通信の設定
UBRR0 = 51; // ボーレート9600
UCSR0A = 0b00000000;
UCSR0B = 0b00011000; // RX,TX使用
UCSR0C = 0b00000110; // データ8bit, ストップビット1, パリティなし, 非同期

Windows側でTeraTermで確認したところ、特になにも信号が送られてくる気配はありませんでした。
シリアルの送信プログラム部分はこんな感じにしています

#define HEAD 0x7E
#define END 0xEF

void send_byte(uint8_t arg_b)
{
  while(!(UCSR0A & 0b00100000));
  UDR0 = arg_b;
}

void play_file(uint8_t arg_folder, uint8_t arg_file){
   send_byte(HEAD);
   send_byte(0x04);
   send_byte(0x42);
   send_byte(arg_folder);
   send_byte(arg_file);
   send_byte(END);
}
0737774ワット発電中さん
垢版 |
2016/06/29(水) 00:16:03.63ID:jek5ngJe
>>736
レスありがとうございます
一応TXRXの配線ミスしてないか何度か確認したり
あえて逆に接続してみたりしましたがダメでした…
0739774ワット発電中さん
垢版 |
2016/06/29(水) 07:44:08.43ID:l2RK9+fC
>>735
>UCSR0C = 0b00000110; // データ8bit, ストップビット1, パリティなし, 非同期

bit1は倍速指定じゃないかな?
ゼロにしないと計算値通りにならないと思う。
0741774ワット発電中さん
垢版 |
2016/06/29(水) 11:24:34.75ID:jek5ngJe
>>738
すみません、p出力というものが調べても分からなかったのですが、
マイコンと出力確認用のPCは
http://akizukidenshi.com/catalog/g/gM-05841/
で繋いでいます。

また、他のATmega168pでも試してみてダメだったので
ハードというよりソフトもしくは自分の配線ミスが
怪しいと思ってますがこれ以上どうデバックしていけばいいのか分からず…
0743774ワット発電中さん
垢版 |
2016/06/29(水) 11:48:08.92ID:j1ZpV2MO
>>741
クロックが内蔵RC8MHzならばクリスタルに変えるか又は
OSCCALかUBRRを調整すればいいかも
0744774ワット発電中さん
垢版 |
2016/06/29(水) 13:12:09.82ID:/LW/IMN2
TXEN有効にしてるならば自動でポート出力になるし、
ボーレート多少狂ってたってなんらかのデータは読めるはず。
0745774ワット発電中さん
垢版 |
2016/06/29(水) 17:30:48.70ID:3m/JplAf
すみません、シリアル通信は正常に出せていたようです。
PC側のteratermでちゃんと受信できていなかった原因は
AVRISP mkII の線をブレッドボードに差したままだったのが原因だったようです。。。
失礼致しました。。。
これ差してるとちゃんと挙動しないんですね・・・知らなかったです・・・
プログラムは正常に動いていて、シリアルの信号もちゃんと出せていたことは確認できました

■プログラム
http://codepad.org/OaqyWzv5

が、、、AVRISPの配線をとっぱらってもMK156はやはり音が鳴らず・・・
配線もシンプルなので特に間違ってるということはないと思うのですが、、、

http://i.imgur.com/8bHM2XJ.jpg

一応データシートというかMK156のマニュアルは読みましたが、
動かないとなると配線間違いか、使い方が違うか、
SDカードのデータが欠損しているか・・・ですね。
いまプログラム上からはフォルダ01の001のファイルを再生するように指定していますが、
そのファイルはMK156購入時にSDカードに入っていたmp3のデータで
PC上で再生確認できているものなのでこのデータが破損していたり
データ形式が間違っていたりする線はなさそうです。。。
0746774ワット発電中さん
垢版 |
2016/06/29(水) 17:32:49.32ID:3m/JplAf
ちなみに配線はこんな感じになってます
かなりシンプルなので配線ミスもないとは思うのですが…
3.3V動作なのでマニュアルどおりMKのRXとマイコンのTXは抵抗を挟まずに
直でつなげています
http://i.imgur.com/JDi8BR2.jpg
0747774ワット発電中さん
垢版 |
2016/06/29(水) 17:44:04.45ID:3m/JplAf
あと現在進行形でデバッグ中ですが、
MK156の16番ピンのBUSYは再生中だと3Vになるようですが、
電圧を測っているところ常にLOWなので、そもそも再生されていないようです。

・・・というか原因がAVRの方にないということが分かったので
だんだんスレチになってきてますかね?
スレ変えた方がよければ言って下さい、移住します・・・
0748774ワット発電中さん
垢版 |
2016/06/29(水) 22:36:48.39ID:UsgKjtdp
>>747
SDのフォーマットはFAT32だよね。ファイル名は8.3形式になってるよね。ぐらいしか思いつかねぇ。
0750774ワット発電中さん
垢版 |
2016/06/29(水) 23:18:29.76ID:NjpL8knP
>>ID:yzU1GKL7 ID:3m/JplAf
ただの通りすがりの者です。 間違えていたらゴメンなさいねw
ブレボの配線画像では、MK156の向きが逆みたいですよ。 1番ピンの位置を再確認しましょう。

MK156 マニュアル
 http://www.mycomkits.com/reference/MK156manual.pdf

MK157 マニュアル (スイッチ10個/出力端子/電源端子付きMK-156用コントローラボードキット)
 http://www.mycomkits.com/reference/MK157manual.pdf
0751774ワット発電中さん
垢版 |
2016/06/30(木) 00:46:23.47ID:bQMjj2dC
>>750
ほんっとうにすみません…
そしてありがとうございます…
死んできます…
無事再生されました…
0752774ワット発電中さん
垢版 |
2016/06/30(木) 01:02:36.21ID:jDAx9T9T
>一応TXRXの配線ミスしてないか何度か確認したり
>あえて逆に接続してみたりしましたがダメでした…

>かなりシンプルなので配線ミスもないとは思うのですが…

一体何を確認したんだ?っていう話
0755119
垢版 |
2016/06/30(木) 10:29:30.02ID:0t1f/l5m
重いコンダラじゃないんだ
0759774ワット発電中さん
垢版 |
2016/07/03(日) 22:22:16.03ID:bMQKP7s2
ATmega168とかをユニバーサル基板に半田付けする時に
VCCとかVREFとかGNDの配線ってどうしてますか?
なるべくシンプルにしたいのですが
まず両サイドのGNDはICの下を通して最短で結んでます
VCC系も同じく裏で最短で結びたいのですが
GNDの配線があるせいでクロスしてしまいます
なので被膜つき導線で接触しないようにクロスさせてるのですが
その半田付けが難易度高くかなりストレスになります
なんかスーパーでカッコよくスマートな方法ありますかね?
0760774ワット発電中さん
垢版 |
2016/07/03(日) 22:31:07.26ID:jDfZMYHd
マイコンの腹の下でコの字に曲げたリード線でジャンプしてる。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況