X

AVRマイコン総合スレ Part42

■ このスレッドは過去ログ倉庫に格納されています
2019/06/05(水) 14:41:54.37ID:/JRZ8+/i
個人でも手軽に使える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マイコン総合スレ Part41
https://rio2016.5ch.net/test/read.cgi/denki/1538195104/
2019/07/02(火) 00:53:53.98ID:P4LgGVJH
>>58
FETではなく電圧制御スイッチでシミュレーションできないでしょうか。
https://detail-infomation.com/ltspice-voltage-controlled-switch/

これならあとからC分R分の付け加えは簡単そうですよ。
2019/07/02(火) 14:45:20.78ID:alzVCzkB
>>55
繋がってりゃいいって感じだな。
6125
垢版 |
2019/07/02(火) 22:20:30.21ID:sq2o7SI1
また長くなってしまった
>>59
おぉ、ありがとう。それっぽくなってきた

マイコンピンの静電容量をいくつか調べて見ると
LPC810 記述無し?
ATMEGA4809 3.5〜14pF(typ) / ADC キャパシタに依存?
AT32UC3B 記述無し? / ADC 7pF(max)
RX231 15〜30pF(max) / ADC 15pF(max)
STM32F405 5pF(typ) / ADC 多分9pFくらい(typ)
以外と情報が限られるようです。他社どころか同じマイコンでも繋ぐピンによって結構変わりそう

目で読むのは厳しいのでFF追加。閾値はVDD/2
3.5pF / 差 0.5pF / 充電用C 22nF
ttps://uploader.purinka.work/src/14432.png
15pF / 差 0.5pF / 充電用C 100nF
ttps://uploader.purinka.work/src/14433.png
3.5pF / 差 2pF / 充電用C 22nF
ttps://uploader.purinka.work/src/14434.png

どの程度あっているか判らないけど汎用ピンで実装するなら差にして数pFオーダーを読むのが関の山か?
この類の回路は実機を計測しながら動作を見るとかできないですからトライアンドエラーせざるを得ないですし
2019/07/04(木) 16:02:02.50ID:AbrVECLA
どうして328PBはフルスイング発振回路が没収されてるんです???
20MHz動作させるなら外部発振器必須かよ
328Pは水晶だけで20MHzで動くのによぉ!
2019/07/04(木) 18:04:21.59ID:xLpVwK8T
フルスイングが無くとも水晶は使えるのでは・・・・
2019/07/04(木) 18:17:02.41ID:xLpVwK8T
ああ、ごめんなさい。『20MHz』ね
2019/07/04(木) 20:23:45.53ID:XxKVcDRL
なんで今から328PBなんだろう。
4808で良くない?
2019/07/05(金) 05:18:03.29ID:JBJxWV8P
そのうちバカジャネーノとかいうボードのために
16MHzに上限落とした328P系列が出そう
2019/07/05(金) 07:21:39.76ID:me0X5Hd3
>>65
ホントこれ
2019/07/05(金) 08:10:48.73ID:8NXPF47E
俺もtiny3216とかも使ってみたいが部品入手を中華通販でやってると最新のが手に入らないw
まぁ秋月でも手に入らないけど…Digikeyとかで買わないと
2019/07/05(金) 08:41:29.99ID:YKudv+LR
Digikeyものはマルツで1個から買えるってそろそろ常識化してないのか
2019/07/05(金) 08:43:41.69ID:8NXPF47E
知ってるけど中華通販メインだとどうしても高く見えてな〜
2019/07/05(金) 11:04:36.92ID:B8UdG5tv
tiny1シリーズめっちゃいいよなー
SOPだからちとデカイのがアレだけど
使い勝手は素晴らしい
マルツ以外で買えるようになると嬉しい
2019/07/05(金) 12:31:49.09ID:qA6TyhHG
mega1シリーズってないのん?
2019/07/05(金) 12:50:50.86ID:YKudv+LR
mega1はまだニュースもリリースされてない。
32U4の後継とかDMA搭載されるとか、リークなんだか単なる噂なんだかわからん情報だけだね。
tiny2はもうすぐ出荷されるけどね。
2019/07/06(土) 23:58:23.68ID:cpfHoIjW
>>71
ライター何を使ってるの?
2019/07/07(日) 00:53:48.87ID:0IS0uzGc
>>74
jtag2updi
2019/07/07(日) 17:25:19.37ID:ofH76Rmw
>>70

中華で節約した分、そっちにカネ突っ込むと考えれば良いんじゃね?
2019/07/08(月) 21:56:36.29ID:R070njnJ
>>70
安く買ってるつもりで実はどうでもいいことに金をつぎ込んでドブに捨ててるという現実
2019/07/08(月) 22:16:27.43ID:05nBLs9P
安物買いのナントカかな
俺はマルツが行ける距離で良かった。
デジキー物にちょっとマージン乗っても送料無しだから。
2019/07/09(火) 02:23:56.06ID:2npgq481
>>74
俺はATtiny-Xnanoのジャンパ外して使ってる
digikeyで1000円だし、debugまで使えて便利
2019/07/09(火) 03:52:01.07ID:pc2jDVTj
パチモンが作れるようになるとか検査ハズレ品が大量に出てくるころになると中華通販に品物が並ぶと…
2019/07/09(火) 19:38:49.27ID:5BPJ4ZvP
>>72
mega168で我慢しる
2019/07/12(金) 12:54:50.48ID:+4GyjVgl
秋月にAVR-IoT WG(mega4808+WiFi)が出てる。 
UNO WiFi Rev2より安くnEDBGでよさげ、だがAVRとついているのに
なぜPICカテゴリなの?
2019/07/12(金) 16:18:43.49ID:n74edqbt
秋月やししゃーない
2019/07/23(火) 20:05:51.95ID:RlLG66tK
質問お願いします。
Arduino開発環境でATtiny85を使っているのですが、割り込み中はdelay関数を使っているのですが、
例えば、delay(1000);と書いても1秒も待たずに次の処理になってしまいます。
割り込み中は使用できないのでしょうか?
AVRマイコンは初めてで、どうしてもこの石を使用せざるを得ないので困っています。
よろしくお願い致します。
2019/07/23(火) 20:15:31.11ID:QDmYnT4O
ArduinoはtinyCoreに関わらずdelay自体が割り込みで作られてるので割り込み中は使えないのはもちろん
割り込みを色々使ってるとメインで呼び出したときの時間も狂う
あまりdelayは使わずにプログラムを組めるようになろう
2019/07/23(火) 20:19:47.30ID:rPNA1rPK
>>84
割り込み中はdelayだめだよ。
そう言う仕様だからほかの方法を考えた方がいいね。 
そもそも1000msもdelayする処理って本当に割り込みでやる必要があるのかとね。

例えば外部入力に対して割り込みをかけてるんだと思うけど、その時はフラグたてる程度にしてメイン処理に戻ったとき割り込みかフラグ立ってたら初めてdelayかかるとかね。

割り込みをサブルーチンと考えちゃうとちょっと大変かもね。
2019/07/23(火) 20:19:57.05ID:IgCtwWtv
割り込みの中でdelayなんて使うなよ・・・・
Arduino病だよなあ。
2019/07/23(火) 20:21:40.55ID:rPNA1rPK
お、なんか変な文体にたなっちゃったな。
メイン処理に戻ったときフラグが立ってたら・・・ね。
2019/07/23(火) 20:25:57.94ID:QDmYnT4O
誰もが最初から美しいプログラム書ける訳じゃないんだから悪態つく必要ないだろ民度低いなぁ
2019/07/23(火) 20:26:00.95ID:zWWKAQuH
割込の中で1sのdelayにつっこめよ
2019/07/23(火) 20:50:26.85ID:lauFIIkc
もし仮に割り込みでdelayが機能したとして、割り込みルーチンの中で1s待ったとしても
それで成り立つプログラムなら初心者ならまずそれでいいんじゃねえの?
業務でやってるわけじゃないんだし

そしてそのままじゃそのうち壁にぶつかるのは確実で、その時にまた学べるわけじゃん
最初から完璧にやっておかないと即叩き始める日本の電子工作警察の老害っぷりほんと馬鹿馬鹿しい
2019/07/23(火) 20:55:24.58ID:GPxAItac
プロの方ですね。私も同意見です。
2019/07/23(火) 20:58:08.79ID:tAbpLSkk
>>84
もう少し詳しく書いてください
もしかして、質問の内容は以下ではないでしょうか?
delay(1000)中にタイマー割込が起きる
94774ワット発電中さん
垢版 |
2019/07/23(火) 20:58:14.02ID:w2qgLaWG
>>84
割り込み発生から丁度1秒後に処理したいなら、delayじゃなくタイマーのライブラリを使ったらどうだろう。
割り込み関数からタイマーで起動される関数に処理を引き継げる処理内容だといいんだけど
2019/07/23(火) 21:05:11.71ID:ubkLFSA7
勉強して欲しいとは思うけど今の環境を考えれば>>84氏みたいな人が出るのは必然じゃね
少なくともせめるつもりにはなれない
Arduino等のお手軽フレームワークでマイコン入門した人が本来の組み込みプログラミングを
勉強しようと思ってもなかなか難しいと思うし

今のLチカって
while(true)
{
PORT0.B0 = 1;
delay(1000);
PORT0.B0 = 0;
delay(1000);
}
みたいなのが主流だぞ
これじゃ組み込みのプログラミングではほぼ必須の割り込みやタイマの勉強にすらならないし
この延長線で書いていくと>>84みたいに「根本から間違っている」みたいな事になってしまうのでは

>>91
考え方から間違っている状態で進んでしまった物を後で矯正するコストってかなり高くない?
あとググってもかすりもせずどっかに泣きつかないとヒントすらつかめないというケースも少なからずありそう
2019/07/23(火) 21:14:32.13ID:hPPVxY8h
delay()に関しては
ヘルプなり関数の説明読めば
ソフトループで適当にタイミングとってるだけで
CPUクロック定数の設定間違えてるとおかしくなるし
適当だから精度も期待すんなだし
割り込みでもダメになる
って書いてあるんだけど…

関数の説明なんて読まないよね…
2019/07/23(火) 21:35:49.00ID:IgCtwWtv
delayの説明に「極力使わないように」くらい書いとくべきだよね。
millisで取得できるチックがあるのに。
98774ワット発電中さん
垢版 |
2019/07/23(火) 21:51:59.44ID:w2qgLaWG
arduinoのdelay()はソフトループじゃないです。タイマーカウンタ使ってるから割り込み関数内では使えないの。
2019/07/23(火) 22:02:10.24ID:IgCtwWtv
チップ依存じゃないんですかい?
2019/07/23(火) 22:15:25.02ID:ubkLFSA7
Arduinoに限らずdelay()的な機能を使うコードってゴロゴロしているような
初心者が良くないと知らずにそれを真似てしまってもやむを得ないと思う
2019/07/23(火) 23:31:14.18ID:SuY6dMro
ガバガバなタイマでも目的が達成できるならそれでよいのでは
モータ制御でもない限り多少のジッタで困ることはそうそうないでしょう
2019/07/24(水) 01:29:58.30ID:dP1vy6EO
>>84 _delay_ms()でやってみたら
2019/07/24(水) 08:46:22.64ID:dxCckPPZ
delay()のソース経由でmicros()のソースを見ていたのですが、
割込みカウントの読み出しのため?に cli() で割り込みを禁止しています。
そのあと、この割込み禁止って、どこで解除されてるのでしたっけ。
2019/07/24(水) 09:13:21.18ID:dxCckPPZ
>>103です。
あああ。SREGを復帰してました。失礼…
2019/07/24(水) 09:57:29.00ID:cRBQrAEe
アトミックな処理でSERG保存、cli、SREG復帰は定番よね。
2019/07/24(水) 10:17:57.03ID:sos4YrZ9
>>100
もしかしてCPUの仕様次第で
delay使ってもその間他の処理に回ってるという、高度なdelayに成り代わってたりしてな
107774ワット発電中さん
垢版 |
2019/07/24(水) 11:12:12.33ID:FaxuyvTK
今更気づいたけど、cliはclear interruptで、seiはset interruptの略?
2019/07/24(水) 11:52:50.99ID:cRBQrAEe
AVR命令一式より抜粋
sei:Set Global Interrupt Flag
cli:Clear Global Interrupt Flag
2019/07/24(水) 12:58:06.24ID:6ZeL9+Tc
arduino は、初心者でも、誰かが作った、ライブラリを組み合わせれば高度なことができるので驚き。
esp32だと、wifi接続で、tcp/ipまで簡単にできる。
ハードの基本的な知識なくたって、作例があるものは再現性高い。

リアルタイム、並列、割込み、ポーリング等の、低レベルの技術を意識しないといけない場合には
旧来の知識、経験が必要だけど、これでいいんジャマイカと、最近思ったりする。
2019/07/24(水) 15:04:58.62ID:lgB2Npg3
>>109 旧来の知識、経験が必要だけど、これでいいんジャマイカと、最近思ったりする。
その辺は難しい問題だな。
私としてはコピペで終って欲しくない、CPUを好きになって欲しいという気持ちが強いけど、
趣味の電子工作に何を求めているかは人によって異なるだろうし。
2019/07/24(水) 15:10:04.89ID:lgB2Npg3
別の言い方をすれば、
 製作した物で楽しむか、
 製作課程(プログラミングや回路設計)を楽しむか、
の違いかな?
2019/07/24(水) 15:20:34.60ID:SW3osvKp
>>109
裏を返すとコピペ出来ないと何も出来ない
USBは使えるがモータードライバを制御できないみたいな間抜けなことになる
2019/07/24(水) 15:37:15.49ID:8kkMq63c
それが間抜けかどうかは時代が決めるからなぁ
2019/07/24(水) 16:38:17.07ID:uKcNtzhV
電子工作の裾野が広がるのはいいこと
なおWiring
2019/07/24(水) 17:25:05.09ID:6ZeL9+Tc
>>112
実際、間抜けなことになっているけど、裾野が大幅に広がったことは間違いないですね。
技術力が高い人間が、より面白いものをつくれる、というわけではないですから。
2019/07/24(水) 18:14:36.39ID:OBNu7Pmj
>>109
裏を返せば何でもコピペできるから何でも出来る
USBは使えるのにモータードライバを制御できないみたいな間抜けを除けばね
2019/07/24(水) 18:15:05.18ID:OBNu7Pmj
×>>109
>>112
2019/07/24(水) 18:29:16.44ID:6ZeL9+Tc
>>116
USBを使ってモータ制御しているのに、
メインループ内で、while(sw); のようなコード書いたりして、処理が立ち往生したりするんですよ。
マルチタスクな、処理系によっては、while(sw){sleep(10);} のような書き方をすると、
別タスクに処理がディスパッチしてくれて問題はないのですけどね。
2019/07/24(水) 18:31:35.64ID:BzdlMG7u
その昔、パソコンでまともに反応するユーザーインターフェースを備えたソフトを作ろうと
したら、割り込みを避けては通れなかったのう。
本来の割り込みではないがINT21hとかあったし。

いまやワンチップマイコンでもそんな心配をせんでもそこそこ動いてしまうとは、
いい時代になったものだ。
2019/07/24(水) 18:36:25.92ID:VV2NmHe7
>>118
何言ってんのかわからない。
コード貼ってリンク張れ。
http://codepad.org/
https://pastebin.com/
2019/07/24(水) 19:11:00.64ID:lEYOx8ZE
最近はマイコンメーカーが組み込み入門的なWebコンテンツを公開していたりするし
それを読んでいればdelay()を使うような実装は好ましくないと気づけるはず
しかしArduino上がりの人が自力でそれを探し出して読むかというと・・・
2019/07/24(水) 19:32:18.34ID:PtPXlw+j
最も無能なのは短絡的にただ「delay()を使うような実装は好ましくない」と叫ぶだけのステレオタイプ
2019/07/24(水) 19:34:44.64ID:dxCckPPZ
>>118
それは作りの問題みたいな気がする。
delay()とモーター制御のコードが、USBを使うことで問題になるケースってどんなのだろう。
2019/07/24(水) 19:36:23.19ID:+NKLj6jX
>>122
それ
とりあえずdelay()否定しとけば素人っぽく見られずに済む
っていう陳腐な動機だけで騒いで回ってるヤツがいる
2019/07/24(水) 19:39:37.69ID:dxCckPPZ
なにかにつけ、自分が信奉するルールやしきたり以外のものが駄目だと思うのは良くない。
自分と異なるアプローチをする人や、違う発想の人がいるから、世の中はうまくまわるんだし。
2019/07/24(水) 20:16:35.69ID:f02T1EZp
精度を求めないどうでもいい処理はdelayをガンガン使うよー♪
2019/07/24(水) 20:40:23.36ID:cRBQrAEe
『とりあえずLチカから始める』は初心者のステップとしてはもう半分意味がなくなってるね。
2019/07/24(水) 20:46:50.88ID:4KXUAIdO
>>127
実装次第じゃね。タイマ&割り込みを使っているなら意味はあると思うけど
delay()やfor()だとPCのプログラムと同じだしあまり意味ないような
2019/07/24(水) 21:32:15.05ID:FS5nDO9T
>>127
カッコいい言い回しですね。
では、100%の意味のある「とりあえず」は何ですか?
2019/07/24(水) 21:46:16.22ID:aGsKHK6w
その半分ななんですか?

とか聴くのかよ?
131774ワット発電中さん
垢版 |
2019/07/24(水) 21:52:27.22ID:jpJdwN0W
何を使ったって実装の仕方でどうにでもなるよ
割り込み使わないでポーリング処理だけで組んでも
実用になるプログラムは組めるよ
PCと違ってOSに邪魔されることがないから
細かくタイミング制御はできるよ
全ては作る人の能力次第、できないと思っている人には
出来ないし、できると思っている人はできる
それだけ・・・・・
2019/07/24(水) 23:16:03.15ID:4KXUAIdO
結構昔だがUSBホストとBTは動きましたがモーターを回せませんって質問を見たことあるな
http://uni.5ch.net/test/read.cgi/denki/1353608766/502-
2019/07/24(水) 23:48:02.42ID:6ZeL9+Tc
>>131
各条件pass毎に、適宜 nop を挟みながら、step単位でタイミングをきっちり合わせ込んでいく
つくりは、結構好きだけど、PCのようにイベントドリブン方式で、処理をこなすのが今風のような気がします。
2019/07/25(木) 06:53:27.05ID:WySxtbn+
判断や順序を表現する「とりあえず」を「100%の意味のある」と考えると
消えるニュアンスがたくさんありそう。
2019/07/25(木) 06:59:29.84ID:WySxtbn+
>>133
今風が何か、それ以外だとどうなのか、みたいな話は、なぜか挑発的な話になっていくんだよな。
2019/07/25(木) 07:21:43.47ID:QFYAx/Hr
アセンブラでサイクル数を数えながらプログラムを書くよりタイマや割り込みを使った方が実装・保守コストが低い
AVR8ならともかく32bitマイコンだと命令の実行サイクル数が安定しなかったりするしペリフェラルを使わないと
精度が悪くなる環境もある
2019/07/25(木) 08:40:56.68ID:8eMKLD3a
そもそも2個以上のアクチュエータを独立制御する場合に
delay使ってるとすぐ壁にぶち当たる
2019/07/25(木) 10:26:15.01ID:AQ1YL8B7
協調型マルチタスクもプログラマがヘボいとすぐ壁にぶち当たる。
2019/07/25(木) 10:37:14.68ID:gz9sroaK
>>136
たしかに、8bit mcuで単機能な実装以外では、オススメできませんが。
2019/07/25(木) 11:02:35.09ID:RmihEtqD
初心者がマルチタスキング→同期って何それおいしいの?→変数をぶっ壊す→発狂する
までテンプレ
2019/07/25(木) 11:30:29.27ID:gz9sroaK
>>140
マルチタスキングは、独学で習得するには、相当経験つまないと、あと一歩に見えるところで、完成しないという地獄がまってますね。
2019/07/25(木) 11:34:50.08ID:AQ1YL8B7
ポーリングは簡単で協調マルチは地獄なのかぁ
2019/07/25(木) 11:50:55.78ID:gz9sroaK
>>142
シングルタスクだと、シミュレータや、デバッガ使って、step by step でレジスタ、メモリ、IO、の状態をトレースすれば何とかなるけど、
マルチタスクは、各タスクが正当に動作することを、確認したうえで、共有資源の競合をチェックしたり、もろもろ出てくる。
2019/07/25(木) 12:06:59.47ID:AQ1YL8B7
うんうん
たとえシングルタスクでもシミュレータやデバッガって要りますよね。
Arduino用に何かあります?
2019/07/25(木) 12:52:30.23ID:JVvTukZV
Ardiono なら printf が使えるだろ。
2019/07/25(木) 14:04:03.12ID:6C71MzD5
Lチカは単なる個体の動作確認やで
そこで終わっとる奴が多いんが問題
2019/07/25(木) 14:13:15.36ID:RR5LPDFd
ラダー最強
148774ワット発電中さん
垢版 |
2019/07/25(木) 14:35:34.56ID:xzavDEvQ
Arduino関係のブログって、ほとんど動作確認で終わってるよなw
2019/07/25(木) 15:27:42.70ID:c2ZkI9UN
ググるとそんな中身のないサイトばかり出てきてウンザリ
2019/07/25(木) 17:12:48.86ID:YkN6Jf6z
>>131
>全ては作る人の能力次第、できないと思っている人には
>出来ないし、できると思っている人はできる
tiny2313用マルチタスクのサンプル(模型自動車のライト制御)
https://pastebin.com/hZ4EiF7m
2019/07/25(木) 17:57:02.70ID:TxD0QeQe
ブログが動作確認ばかりの人ってデータシートすら読んでなさそう(偏見)
2019/07/25(木) 18:26:28.54ID:Wt2XSUep
atmega328のデータシート見たことないわ わはは
2019/07/25(木) 19:12:15.40ID:6C71MzD5
Arduino自体中身がN(ry
2019/07/25(木) 20:20:07.33ID:bCRTGmZd
なにこの初心者や入門者を馬鹿にする流れ
2019/07/25(木) 20:47:37.13ID:xiB4QS2Z
いや、初心者や入門者に対して
delay使えと教えてる無能を馬鹿にしているのだよ
2019/07/25(木) 21:02:12.96ID:bCRTGmZd
組み込みなんだからいくらでも自由にdelay使っていいよ

m9っ`Д´) CPUリソースはすべてキミのモノだ!!! ビシッ!!
2019/07/25(木) 21:13:01.59ID:bCRTGmZd
>>151
データシート読んでたら意味不明で挫折したから動作確認以降のブログ更新がないのだ。
2019/07/25(木) 22:06:49.30ID:/lFhSgAc
Arduinoって組み込みマイコンとは異なった新しい世界を作ったと思うよ。
ただ、組み込みマイコンへのハードルを下げる役には全く立っていないとも思う。
※個人の感想です
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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