X



トップページ電気・電子
1002コメント332KB
AVRマイコン総合スレ Part41
■ このスレッドは過去ログ倉庫に格納されています
0001774ワット発電中さん
垢版 |
2018/09/29(土) 13:25:04.41ID:NVU21ZtG
個人でも手軽に使えるAtmelのAVRマイクロプロセッサを中心に語るスレッドです

<公式サイト>
http://www.microchip.com/design-centers/8-bit/microchip-avr-mcus
・AVR Libc Reference Manual:
https://www.microchip.com/webdoc/avrlibcreferencemanual/install_tools_1install_avr_libc.html

<参考になるページ>
・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マイコン総合スレ Part40
https://rio2016.5ch.net/test/read.cgi/denki/1517019258/
0531774ワット発電中さん
垢版 |
2019/01/17(木) 10:35:41.44ID:CWoLrWiy
H8が高性能だって?
まあ、そう「感じた」んなら仕方ないけど・・・
0532774ワット発電中さん
垢版 |
2019/01/17(木) 10:52:49.22ID:QCZ9EK+q
AVRより高性能なのは間違ってない
コード見るとAVRはコンパイラがかなり苦しんでる
0533774ワット発電中さん
垢版 |
2019/01/17(木) 11:30:54.75ID:dyZV2em2
>>530
RL78とかは、24bit ADC とか、OPAMP x4 とか、機能が満載のMPU揃ってるけど、
小口での入手性や、開発環境考えるとAVRと、外部ADC,OPAMPというのが、妥当なんだろうなと思っています
。今度、仕事で使うけどね。

PICも比較的、機能充実しているけど、それなりのノウハウが必要な感じですね。
0534774ワット発電中さん
垢版 |
2019/01/17(木) 12:32:16.02ID:jSkYbzg1
RL78のことは全く知らないけどマイコンなら電源は5Vか3.3Vでしょ?
24bitのADCとか周辺回路も含めてどうやってローノイズ化するの?
温度変化や機械衝撃だけでも下位数bitはグラグラ動きそう。。
0535774ワット発電中さん
垢版 |
2019/01/17(木) 12:38:32.13ID:YBAu5xav
>>534
0.1uVオーダーって帯域にもよるけど
熱雑音の方が大きいな
普通の実装では全く意味を持たない世界
0537774ワット発電中さん
垢版 |
2019/01/17(木) 13:12:18.43ID:JAqxnnR+
レスありがとうございました。
しかし、ど素人レベルでも読めるAVRの参考書籍がAmazonみてもほとんどありませんでした。
H8系は、これはいけそう!って本が何冊か見当たりました。
PICの本、多いけシステムにど統一性が無いですし。
とりあえず、AVRとH8系を見ていきたいと思います。
0538774ワット発電中さん
垢版 |
2019/01/17(木) 13:18:09.28ID:GjkWII95
>>526
ふむFWのUpdateにMAPLABが必要だっただけで、対応FWを持ったPICkit4は
最初からAS7で使用可能なのですね。 
0539774ワット発電中さん
垢版 |
2019/01/17(木) 14:12:22.60ID:YvVo9clC
クロックの周波数変えたいだけなのにヒューズビットの決め方がわからん。
アホなのでPICに変えます。
0542774ワット発電中さん
垢版 |
2019/01/17(木) 16:41:49.92ID:rOsqwnuw
Arduino IDEから適当な周波数を選んで「ツール」→「ブートローダを書き込む」では?
0543774ワット発電中さん
垢版 |
2019/01/17(木) 16:54:32.43ID:jge/9xRH
>>542
後半は何となくわかる。
前半の
>Arduino IDEから適当な周波数を選んで
を具体的に頼む。
現行のボードの中から選ぶってことなら選択肢ほとんど無いような。
0545774ワット発電中さん
垢版 |
2019/01/17(木) 17:18:30.65ID:rOsqwnuw
>>541
このサイトで設定してavrdudeでヒューズを書き変える
ヒューズはL・H・E(Low,High,Extended)の3種類ある

例えば、Lヒューズを「0x7a」にしたければ
avrdude -C c:\avrdude\avrdude.conf -p m328p -P COM6 -c avrisp -b 19200 -U lfuse:w:0x7a:m
とかにする。引数はだいたい分かると思う
0548774ワット発電中さん
垢版 |
2019/01/17(木) 17:20:47.99ID:rOsqwnuw
フリーでGUI版があったりするから探してみて
連投すんません
0549774ワット発電中さん
垢版 |
2019/01/17(木) 17:21:49.59ID:EkGTa1uN
>>541
ありがとう、知らなかった。
これ使ってboards.txtを編集するという方法でやってみる。
0550774ワット発電中さん
垢版 |
2019/01/17(木) 17:25:42.59ID:EkGTa1uN
>>547
うんそれそれ、ありがとう。
ID:rOsqwnuw
ありがとう。
コマンドラインはなんかとっつきにくいけど、慣れてきたらGUI版から試してみる。
0551774ワット発電中さん
垢版 |
2019/01/18(金) 07:21:42.64ID:lx1J/wOG
存在しなければ、あるいは使いにくいなら、
自分で好きなようにヒューズ読み書きプログラムを作れば済む話しなのに。
>>474
0554774ワット発電中さん
垢版 |
2019/01/18(金) 15:33:00.27ID:qcBWi2lF
前にAliでATtiny13A開発ボードとかいうよくわからん基板を買った(1枚60円くらいで5枚買った)
ISPがつなげられてLEDが2つ付いてるから13Aで遊ぶのにいいかなと思っていたけどずっと放置してた
https://i.imgur.com/EBrwfnS.jpg
なんでmicroUSBコネクタが付いてるのかどうも気になってたけどよく調べてみるとtiny85乗せてファーム書き込むとDigisparkになるらしい
https://s3.amazonaws.com/digispark/DigisparkSchematicFinal.pdf(この回路図D3の向き逆じゃね?)
0556774ワット発電中さん
垢版 |
2019/01/18(金) 16:37:15.96ID:lx1J/wOG
>>555
「殺伐と畳みかける」と受け取らせてしまったのなら申し訳無かった。
私としては雰囲気を悪くするつもりではなくて、ホントに純粋に単純に
「無いなら作ればいいのに」、「必要なら作ればいいのに」
なぜ作らないんだろ?と思ったんだよ。
作らなければ一生出来ないし、作ろうとすればいつかは出来る。
 「なさぬは人のなさぬなりけり」

今後は「殺伐と」にならないように書く時に気をつける。
どう気をつけたらいいかよく分らないけどw
0557774ワット発電中さん
垢版 |
2019/01/18(金) 16:53:59.43ID:cM9Rz04n
>>556
悪意が先に立つから
>AVRのヒューズ/ロックビット読み書きソフトを作っていて、
が目に入らないんだろ。
人としての品格の問題だから気をつけようがない、あんたの場合は。
0558774ワット発電中さん
垢版 |
2019/01/18(金) 23:31:46.07ID:egR6Lqh7
>>554
USBから電源を給電するのであれば逆だよね
JP2から給電した場合はUSBの5Vに接続する必要無さそうだし、回路図が間違っているのかもね
0559774ワット発電中さん
垢版 |
2019/01/19(土) 12:42:26.12ID:z83xjl0b
AVRドラゴンの追加部品セットがあればライターやリセッタ周りの悩みはかなり減るんだが
自由度ありすぎて困る
0560774ワット発電中さん
垢版 |
2019/01/19(土) 16:09:15.63ID:cnrSZwi7
>>557
多分、勘違いしていると思う。
 >>551 の > AVRのヒューズ/ロックビット読み書きソフトを作っていて

 >>474 の > 自分で好きなようにヒューズ読み書きプログラムを作れば済む話しなのに。
も私が書いたんだよ。
そうか、だから、
 >>552 の > いや、だから作ってたって話なんだろ?
という私にとっては意味不明のレスになったのか?
私のレス方針は「和を以て貴しとなす」と「アホの相手はしない」なのでw
怒られたのならとりあえず謝っておこう、と >>553 を書いた。
なお、私に人としての品格が無いかどうかはよく分らない。
人に言われたことはないけど、考えてみます。
(他の人には何の興味も無いでしょうから、この話題はこれで終わりにします)

私がAVRを始めた時の製作順序は、
1)秋月で購入したライタで1作目、2作目のプログラムを作る
AVRが気に入ったので使い続けることを決める
2)回路に影響されないROMエミュレータ方式のライタを作る
3)ブラックボックスがイヤなのでデバッガを作る
4)ヒューズ・ロックビットのGUIソフトを作る
5)パラレルライタを作る
0563774ワット発電中さん
垢版 |
2019/01/22(火) 18:07:22.63ID:25ahaHrv
PICの場合、PWM AUTO-SHUTDOWN MODE があって、コンパレータのイベントで、
PWMのstop/startを自動的に制御できる機能がありますけど、
avrの場合、この機能のある品種ってありますか、割込みで制御すればいいだけなんですが、便利なので。
0564774ワット発電中さん
垢版 |
2019/01/22(火) 19:28:35.39ID:YilKcmeD
イベントシステムを搭載しているチップのA型カウンタは
イベントがHiの間だけカウント動作させる機能がある。
コンパレータ出力はイベントを発生できるので目的の動作ができるでしょう。
0565774ワット発電中さん
垢版 |
2019/01/22(火) 19:49:44.39ID:25ahaHrv
>>564
ありがとうございます。

tinyだと、
attiny1607 が該当しているみたいですね。
QFPしかないのは、残念。
0567774ワット発電中さん
垢版 |
2019/01/22(火) 20:36:53.51ID:4N5QGeD9
AVRみたいなマイコンでprintfってコマンド打つとどうなるの?
PCみたいにディスプレイが標準端末ならまだしも
マイコンに標準端末って無いじゃん
0568774ワット発電中さん
垢版 |
2019/01/22(火) 20:55:04.42ID:SUk48xYi
>>567
何もおきない
標準出力をシリアル出力に設定しておくとターミナル等のアプリに文字列が出力されて便利
0569774ワット発電中さん
垢版 |
2019/01/22(火) 20:58:27.98ID:NlURk6OK
>>567
ArduinoみたいにPCとUSB接続してクロス開発するような処理系だとPC側に仮想端末を持たせて、これにprintf他の出力関数で文字列を出力(キーボード入力も)できる。
Arduino内で無くてもPCで起動されてる汎用端末のアプリとも同様に入出力できる。
0570774ワット発電中さん
垢版 |
2019/01/22(火) 20:59:27.65ID:3DIxSH8u
>>567
printfが呼び出す先、つまり putc とかを自分で作ってあげないとリンカーエラーでコンパイル
できない場合が多い。
たいていはUARTなんかを出力先にしてデバッグしたり。
もちろんディスプレイを付けてあげればパソコンのようなこともがんばればできるし、
Arduinoなんかは出来合いのもあるんではないか。
0571774ワット発電中さん
垢版 |
2019/01/22(火) 22:01:19.35ID:NlURk6OK
>>567
>>569 の他にもbluetoothユニットを介してスマホの仮想端末アプリとも同様の入出力できる。
また有線LANボードを追加するとミニサーバーを立ち上げて、HTMLを書いとけばLAN上のPCやスマホのブラウザからアクセスできる。
自分はArduinoに取り込んだセンサー情報を端末から読むときに使ってる。
0572774ワット発電中さん
垢版 |
2019/01/22(火) 22:48:56.69ID:4N5QGeD9
>>568
> 標準出力をシリアル出力に設定しておくと

そういうことか!

そういう設定ってプログラムの中でやるの?
それともヒューズビットか何かをいじるの?
0574774ワット発電中さん
垢版 |
2019/01/22(火) 23:14:01.59ID:SUk48xYi
>>572
static int stdPutc( char c, FILE *stream );
static FILE suStream = FDEV_SETUP_STREAM( stdPutc, NULL, _FDEV_SETUP_WRITE );

static int stdPutc( char c, FILE *stream )
{
while ( !( UCSRA & (1<<UDRE) ) );
UDR = c;
return 0;
}

int main( void )
{
stdout = &suStream;
printf_P( PSTR("Hello world") );
}

ヘッダファイルとUSARTの初期化は省略しているので注意。(あくまでも標準出力を設定するサンプルなので)
0575774ワット発電中さん
垢版 |
2019/01/22(火) 23:14:14.87ID:2i7aTnu5
そもそも、Cにおいてprintf()ってのは関数を呼び出す以上の
意味はないからな…
printf()が具体的に何をするかは知らんもの
0576774ワット発電中さん
垢版 |
2019/01/23(水) 05:24:20.01ID:caq2itq4
コンソールアプリでC言語勉強はじめたばかりのガキ臭がする
0577774ワット発電中さん
垢版 |
2019/01/23(水) 06:41:25.57ID:lu5gAxuI
デバッガ使うまでも無い小さなプログラムならprintf()で変数の内容表示とか割と便利(出力先をLCDにしておいても良いし)
ただ標準のprintf()はコードが無駄に大きいので似たような関数を自作した方が良いと思う
0580774ワット発電中さん
垢版 |
2019/01/23(水) 18:33:17.75ID:M/OW0BAx
>>576
平気で、printf()は「画面に」出力する「命令」です
なんて教える教師や教科書があるからなぁ…
そう言うのに当たっちゃったら、やむを得ない気がする
0581774ワット発電中さん
垢版 |
2019/01/23(水) 18:34:57.56ID:jPd+aunc
まぁパソコンのソフトウェア開発から入れば高級言語しか知らんだろうし…
0583774ワット発電中さん
垢版 |
2019/01/23(水) 18:38:28.80ID:HnGB1zOM
>>580
おまえらの世代はパンチカードだったかもしれんが、
入門者には画面と教えて問題ないだろ
0584774ワット発電中さん
垢版 |
2019/01/23(水) 20:40:03.41ID:RZdJJbBK
>>574
いまいち何やってるのかよく分からないけど
printf_UART()
なる関数を自作するよりかはスマートな方法なのね

たしかにprintf()で書いていた方が
UARTに出力するかLCDに出力するかそのときに応じて
ソースコードをほとんどいじらずに瞬時に対応できるよね
0585774ワット発電中さん
垢版 |
2019/01/23(水) 20:48:05.54ID:Oqfjg8Jf
>>584
マニュアルちゃんと読もうぜ
avr-libcのマニュアルに丁寧な解説付きで書いてあるぞ
0588774ワット発電中さん
垢版 |
2019/01/24(木) 12:14:04.34ID:qPTBNqHl
久しぶりにマイコンいじった。mega3208ってやつ
これ8bitAVRコアにUC系のペリフェラルっぽいな
0589774ワット発電中さん
垢版 |
2019/01/24(木) 13:18:09.61ID:n3Rt6rFo
xmega系列になって従来のmega/tinyとちょっと変わったんだ。
UC系の周辺と揃えようって意思はあったんだろうね。
mega3208は名前こそmegaだけどxmega系の子孫なのよ。
0590774ワット発電中さん
垢版 |
2019/01/24(木) 14:33:52.73ID:Xou573Di
同じ処理を、3種類の環境でコンパイルしてみた。

cc5xは、制限の多いコンパイラで、ページを自分で割り付けなければ
ならないのと、固有の構文を多用する。

xcは、proバージョンでどのくらいコードがスリム化するんだろう?
gccベースという使いやすさと、PIC以外でも使えるので価格が折り合えば使いたいな。

avrgccは、データメモリとレジスタの転送でコードが膨らんでいるけど、対CPUクロックで考えると速度的に問題ないはず。要求プログラムメモリは要注意。PICは、word,avrは byteで単純比較できないけどね。


PIC cc5x (PIC16F18313)
; RAM usage: 51 bytes (11 local), 205 bytes free
; Maximum call level: 4 (+3 for interrupt)
; Total of 1027 code words (50 %)

PIC xc8 free (PIC16F18313)
Memory Summary:
Program space used 5ECh ( 1516) of 800h words ( 74.0%)
Data space used 41h ( 65) of 100h bytes ( 25.4%)

avrgcc (atmega48)
  Program Memory Usage 3586 bytes 87.5 % Full
  Data Memory Usage    42 bytes 8.2 % Full
0591774ワット発電中さん
垢版 |
2019/01/28(月) 23:25:08.21ID:74Zex59L
ATmega328PのUARTポート(RX, TX)とUSBシリアル変換器
http://akizukidenshi.com/catalog/g/gK-06894/
のUARTポート(TX, RX)をつないでPC上で立ち上げたTera Termをモニタ代わりに使用してる。

これはこれで問題無くモニタ出来てるんだけど他に問題があって
AVRの電源を切ってもAVRが稼働し続けてることに気付いた。
はじめ何が起きてるのかよく分からなかったけどテスターを当てていくと
USBシリアル変換器のUARTポートからAVRのUARTポートに電気が流れて
その電流が寄生ダイオードを経由してかAVRの電源側に回り込んで結果的に
AVRが稼働し続けてるっぽいことに気付いた。
大元たどるとパソコンのUSBポートの5Vが電気の供給源ってことになるね。

この状態でAVRの書き込みも出来るから恐ろしい。
AVRのUSBポートから流れ込んできた電気でAVRが稼働するってのも
AVRにとってあまりよろしくない状況だと思うんだけど何か解決方法ってあるかな?
0592774ワット発電中さん
垢版 |
2019/01/29(火) 00:41:28.05ID:5fr/4ilZ
そもそも電源の入っていないマイコンにUSBシリアル変換を接続しっぱなしにするのが間違った使い方。根本的な解決方法はない。

ポートに抵抗入れる、AVRの電源ラインにシャント抵抗を入れて電圧を下げるなどの対症療法はある。
しかし残留電圧でヒューズがリセットされないためデバッグワイヤが解除できない等の不具合が発生するので、その辺を理解して使うこと。
0593774ワット発電中さん
垢版 |
2019/01/29(火) 01:27:08.53ID:k48zQ8Sl
>>591
AVRに限らず禁止事項だよ。うっかりするとチップ内の保護ダイオードを壊したり、
外部にレギュレータがあると、こいつを破壊する。

とりあえずの対策としてはFT232XのRESET#をLowにしておけばOK
ATmegaの余っているポートをPull Downしておいて、ここにRESET#をつないでおく。
ATmegaの電源On時に、このポートをHiにしてRESET#を解除すれば普通に使えるし、
電源を落とせばFT232XはResetステートに入る。
FT232XはReset#がLoになっている間、UARTポーtははTri-state、入力は内部200kΩで
プルアップされる(データシートVer. 1.2だったらp. 23)
これで、ほとんどの場合問題はないが、Resetステートの時にUARTピンが浮くので、
気になる場合は弱く(高抵抗で)プルダウンしておけばよい。
0595774ワット発電中さん
垢版 |
2019/01/29(火) 06:01:07.27ID:+FSj8ZJ+
>>591
根本的にはAVRの入力に74VHC04のような入力保護ダイオードが入っていない
バッファを入れる。インバータなので2段入れる。
0597774ワット発電中さん
垢版 |
2019/01/29(火) 12:02:11.55ID:GBVPzw3Y
小信号ダイオードはさんでオープンドレインもどき接続にして
USBシリアルからのHレベルを遮断すればとりあえず大丈夫なんじゃね
0598774ワット発電中さん
垢版 |
2019/01/29(火) 12:17:16.32ID:yBXyxlEE
>>592
>>593
AVR書き込むたびにUSBケーブルも抜き差しするの面倒くさくてさぼってたけど
やっぱこういう使い方禁則事項だよね^^;)

> FT232XはReset#がLoになっている間、UARTポーtははTri-state、入力は内部200kΩでプルアップされる

FT232XのRESET#ピンを制御するのはいい方法かも
ただ細かいことを言うとまっさらな状態のAVRに書き込もうとしたときは
RESET#ピンの制御は無理になるかな。
初回限定のほんとどうでもいい細かいことだけど。

>>595
> 74VHC04のような入力保護ダイオードが入っていないバッファを入れる

あ、この方法もいいね。ものぐさな自分にはぴったりの方法かもしれん。
VHCシリーズを選べば入力に保護ダイオードが入っていないことは
確約されるんだっけ?
0599774ワット発電中さん
垢版 |
2019/01/29(火) 12:19:54.72ID:b9fyunmq
>>598
VHCシリーズはVCCに関係なく入力電圧の上限が5.5Vまで印加可能だったと思う
簡易電圧変換なんかにも使われるよね
0601774ワット発電中さん
垢版 |
2019/01/31(木) 00:17:18.42ID:urqG5+GC
float型の変数を文字列に変換する際の定番の sprintf はメモリを馬鹿食いするから
次点の dtostrf を使ってみたんだけどこれも結構メモリ馬鹿食いするんだよね

もうちょい軽く済ます方法って無いかしらん
0605774ワット発電中さん
垢版 |
2019/01/31(木) 18:43:14.95ID:DV6EpONT
誰しもが通る系の道よ…

固定少数にしても表示が遅い、間に合わないってんで
LCD表示ルーチンの改良してみたり
割り込みでマルチスレッド的に出来ないか?
とか
アセンブラで書くか?
とか、やる訳よ…
0607774ワット発電中さん
垢版 |
2019/01/31(木) 20:44:52.84ID:urqG5+GC
>>602
>>604
その発想は無かったわ

たとえばfloat型数値 3.1415 を小数点第2桁まで文字列にするとしたら
まずこいつをint型にキャストして3を取り出し

(int) 3.1415 → 3

取り出した3を引いて小数点以下を抽出し、

3.1415 - 3 = 0.1415

抽出した小数点以下に100をかけて再びint型でキャストし

0.1415 x 100 = 14.15
(int) 14.15 → 14

3と14を atoi() 使って文字列に変換。ピリオドを間に挟んで結合すれば

文字列 3.14

のできあがり。こういうことか
0610774ワット発電中さん
垢版 |
2019/01/31(木) 21:12:49.71ID:a7jyaf99
30年前だがZ80でどうしてもfloatが使いたくて、MSX-C 買ったらできないでやんの。
しょうがないからアセンブラでやるfloatのライブラリが載ってる本買って、そこだけ関数呼び出し
に書き直してしのいだわ。
0611774ワット発電中さん
垢版 |
2019/01/31(木) 21:40:09.88ID:jvXK8rxN
sprintfが重いって話だろ?
floatの演算自体は仕方なかろうし、大した負荷じゃなかろう。
0612774ワット発電中さん
垢版 |
2019/02/01(金) 00:09:51.79ID:S1ArDI5h
まあでも小数2桁って決まってるんなら最初から100倍しておいて整数で演算するわな。
0613774ワット発電中さん
垢版 |
2019/02/01(金) 06:18:43.11ID:wqKgNkoQ
そう考えると、昔のBASICとか優秀だよな
あれしかメモリなかったのに
0615774ワット発電中さん
垢版 |
2019/02/02(土) 17:49:37.05ID:B6fk9Cou
昔、友人が変数名がアルファベット1文字というVTL系のコンパイラを作っって
私にくれたことがある。
プログラムサイズは512バイト程度だったと思う。
付属のサンプルプログラムが「月面着陸ゲーム」 だった。
0618774ワット発電中さん
垢版 |
2019/02/03(日) 07:07:15.57ID:RZYCs11Q
マルツってdigikey発注代行だろ?
それでこんなに取るのか
ボリ松もびっくりだな
0619774ワット発電中さん
垢版 |
2019/02/03(日) 07:42:25.48ID:4binZOhL
50円でボッタクリ。
じゃあ、Digikey で買えよ。送料払って。
0620774ワット発電中さん
垢版 |
2019/02/03(日) 12:49:52.32ID:8ZNRr/p5
すぐ欲しい数個で買って
数十百個になったら海外通販使う
新しい品種とかは前者で探すのが困難だけど
0623774ワット発電中さん
垢版 |
2019/02/04(月) 01:09:40.55ID:JmCERjpC
>>621
どうせ人件費は0円とかいう無職の発想でしょ
親が買い置きした家にある食い物はタダ、みたいな
■ このスレッドは過去ログ倉庫に格納されています

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