--_-_----__-__--_-_-__---_--__--___-_-_--_-_-___---_-____-_-___----__---____
--_----__-_--_-_----___-___-___-_--__--_--__-__---_---_-___--___---___-_-___
--_-_-___-__-__-_-__--__-__--_---_--_-----_____-_-_--_-_-__--__-_-_-_-__-_--
----_-_-____-_-_-_-----____-_-_--_--_--____--_____-__--__-_---____--_-__----
----__----_--------___-____-__--__--__--_-_-___-----_-__-___-____--__-__-___
_--_____-__---_____----_-_-_-----___-__-__-_-_--_---_-_-_--__-___-__---_-_--
___-_-__--_-_----_--__--_---_-___---_----__-__-__-__--__-___-__-_-_-_-__--_-
-_-_--_--__--__-__--___-_-____-_------__--_-_--_--__--_-_--___----___-_-____
-__-__---_____-_-__----___--_-_----___-_----________---_-_---__----___---__-
___-----__--_--_-_-__---_--____-_-__---__---_-_-__-__--_--_-__-_--_-___-_-__
--__-____-__--_------__-___-___-___--__--__--___-__--__-_-_---_--_--__-_----
_-_-__---__-_-_-_-__------_____-_-____-___-_-----__--___--_-__---_-_--___---
_--_-________-____--_-----_--_-_-_--___-__-_--____--_-_-__---_--_-_-_---_---
-____-________---__-_--_--_-_--_---__-__---_-_--_-__-_-_-----______--_--_---
-__-_--__-_-__--___--_-__--_-__--__________-_---_--------_--___---__---__--_
___-_--______-_--_--_--_-__--__--_-_-----__--_-_-__-_---_-__----_-_-__-___-_
_-_-_------__--_-_______--_---__--_-___-_-_-_______--__--__-----___---__----
------__-_-_--____--_---_--_-_---___-__-_-__--____---_--__-__---______-_-_-_
___--__--_--__-_----_-___-_-__-_-__---______--__------__-___-__-_--_--_----_
__--___-_--_--__---_-_-___---_-__-_--_------____--_-_--_-_---__--___--______
-__-__-_-_-__-__---_-_----_-____-_-_--___---_-_-_-_-_-_----__-__-__-_--_--__
____-_-__-_---___-_----_-____-___-___-__-_----__--_-_--__---___---_-__------
_--_---_--__-___---_-__---____---_-_--_-_-_--_-___--__----__-___-_---___-___
-__----_-_--__-____-__-___---___-_------_-_-__---_-__--__-_---___----____-__
___--_--__-__-_-_---_-_-_--__-_--___---_---__-_-__-_-___-_-_-__----_-_-_--__
--__----_-_-_---_---__--__-_--_--___-____---___-__---_-_--__-_--_-_--_______
-_-__-___------______--__---___--__--_----_---__--__-__-______-__--__---_---
_-______---_---_--_--_--__--_----___-_-_---_-___--_--____-_--__--__---___-__
-__-_--__---____--_-__--_--_-__--__------__--_---___-_-___--_---_-____-___-_
_-_--_-_-_-______-_-_--_-_-_----________-_-_--_---_------__--___--_-_----___
----____--___--____--____-_------__--_-_-__--_-_-_---__--_--___-_-__-_-__--_
_--_-----____--_-___--__-_-__--__--_--_---_--__---____--_-_-___--__--___-__-
______-_-__-___--_-_---__---__-_-_-__-_-___--__-------_-_---__--_--__-___---
_-_---_------__----____---_____-_-------_-_-____-__-_-___--___-____-_-_--_-_
_-_-_-_-_--____--_---___-_-_-_-_--__--_-------_-_---_-_--______-___-___--_-_
-_---__---_-_--_-__-___-_------___-____--_-__---__--_____--__-__-_----__-__-
_--__--__----__-__----__--_--__--___-____-___-_-_---_-______----_-_-__----_-
__-_--_----_--_-_____---_-__-----_--_--_-___-__-__---_____-__-_-_--____-_---
---___---_____--_-------_----__--_-_-_-___---_-___-_-_-_____-__-_-_--____-_-
-___-___-----____-------___-_-_--_----__-_--_--___-_-__-______--_--__--__-_-
____-___-_----___-_-_--_-_------_-_-___-_-__-__-___--_-_-_--___-_--__-_-----
---___--___-__-___---____-----_-_-___-___----__-____-----____--__-_----__---
_--_____----_---_-__-__--__-____-_-_-__--_--__-___-__-_--_-_--_----___----_-
__-___-_-__--_-_-_____-_--__--_----__-__--_-__-_---_--_---_---_-_-----______
--___-_-_--_-__-__-_-__-_-_-------_-__-___-___--_--_-_-___-_------___---____
_--__-____--___---____--__--_--___-__-___-__--__--_---_----_-__-__----__----
_-_-_---_------_______--_-__--__-_--_______-_-__--_----__---_---____---_-__-
-_____-__----_----_-____-_--___-___--__----_--__-__-_--_-_-__-_---_--_--_-__
__----____-__--__-_----_---___----_-_-__-_---_--________-__-_--_-__--___----
---_--__-_---____----___-_--_------__-_-__-___----____--_-___-_-_-_--___-___
>>1 乙
前スレ >>ID:2dyTn6YM
次スレ立てずに埋めるなバカ ATmega4809使ったArduino Uno WiFi Rev 2はいい加減どこかが技適とらないのかな
秋月のリクエストコーナーに書いてみれば?
ちょっと昔ならこういうのスイッチサイエンスとかが首突っ込んで技適撮ってくれそうなんだがな
WiFi chipは技適取得済なのにArduino.ccが未対応だとか。
スイッチサイエンスも伝えてはいるが理解してもらえないとつぶやいている。
発注量も少なく相手にされてないのか? まあ値段から売れそうでもないな。
wroomって何て発音する?
うるーむ?
だぶるーむ?
>>12
お前はwriteをうらいととかだぶらいとって読んでるの?変わってるね writeをライトと読むように
wroomはルームや
お前ら外国人が発音してるの聞いたことないの?
まあ英語聞き取れる英語力のやつなんて5chにはほぼいないから、文字で読むだけで外国人と話すこともなかろうし音声は聞いたことないかw
writeはライトと読まねーよw おまえにはラ行とlとrが同じ音に聞こえるのかよw 中一で習っただろw
PTC付きのマイコンが欲しいんだがどうやって調べれば良いんだ
ATtiny817/ATtiny816/ATtiny814に付いているのはニュースリリースになっているから判るんだがこれらしかないんだろうか
単にタッチセンサーコントローラーが欲しいだけなんだが下手に専用のIC買うよりマイコンの方が安いという・・・
どうせQTouchライブラリ使うんだから、ADC持ってるAVRなら全部できるような。
と思って確認したら、こっそり旧来のチップのサポート無かったことにしてやがるな。
>>26-27
もし良かったらもう少し詳しい情報をもらえるとありがたいです
相互容量方式でタッチセンサーを実装したいのですが技術資料がそこそこそろっているのがAtmelとRenesasくらいしかなくて検討中です
RenesasはRXしかなくてAVR比だとかなり高価ですし これからマイコン決めるってところならtiny817系かmega4809系選んどけばいいと思う。
チップ単価も安いしPTCのドキュメントもあるし。
AtmelSTARTでは旧AVR8でQtouchが組み込めるのはmega324とmega328PBのみ。
AVR.jpの応用記述にQtouchをtiny40やtiny88に適用したドキュメントの和訳があるけど古い。
もしかするとライブラリのバージョンアップで切り捨てられてるのかな。
原理はChaN氏のサイトで解説されているから無理矢理任意のチップに適用することもできるんだろうけど。
このくらいの情報で手掛かりになるでしょうか?
>>29
ありがとう。少し見えてきました。ADCで読み出す方法があるのですね
ググりまくっていたらこんなのが見つかりました
http://github.com/tmk/capsense_qmatrix (QMatrixの実装例っぽい)
読み出し方について説明しているアプリケーションノートがあれば良かったのですが見つけられていません
自己容量方式なら紹介してもらったtiny40の例とかChaNさんのとかいくつも出てくるんですけどね
QTouch Libraryを読み解くしかないのだろうか >>30
AVRのPTCはADCの応用ですよ。
mega4809とかでも変わりません。 長くなってしまった。自分がこれまでに調べた情報と新たな情報を合わせてみると
主要なタッチセンサーの実装方式
自己容量方式 英:Self capacitance method (1線式、ホビーでタッチセンサーを作ってみたは十中八九これ)
相互容量方式 英:Mutual capacitance method (2線式、マトリックスを組める、耐液性に優れる、ノイズ耐性を高めやすい等のメリットがある一方で設計が複雑)
PTCが出てこない資料を見るとAtmelは前者をQTouch、後者をQMatrixと呼んでいるっぽい
Renesasの資料を見ると相互容量方式の読み出しは送信線にパルスを入れながら受信線の静電容量を計測するらしい
Atmelが主に使用している静電容量の検出方式
QTouch (ADCを使用してCharge Transferする方式。ChaNさんのページにあるのはGPIOのみを使用する仕様)
QTouchADC (ADC内部のサンプルホールドコンデンサを使用する方式。Atmel AVR3001で説明されている)
前者はChaNさんは電極の接続はソース、シンクのどちらでも良いって書いてあるけど、Atmel AT02259はシンクに接続しろって
書いてあるので細かいところで諸説ある模様。AtmelのはADCを使っているせい?
後者は野良記事だとhttp://www.kumikomi.net/archives/2011/04/ep02touc.php?page=2がわかりやすそう
現状思いつく不明点
Charge-Transferでの読み出し時にADCをどのように使っているのか←回数計る代わりに電圧を測っているだけ?
相互容量方式で読み出す時にパルスを入れるタイミング
タイミングチャートやフローチャートがあれば判りそうですが見つけられていません
一応Renesasのマイコンのユーザーズマニュアルにタイミングチャートがあるんですがよく判らない
>>33
ということは静電容量計測専用のペリフェラルを搭載しているわけではなくて既存のペリフェラルで実現しているという理解で良いのかな Qtouchに特化するなら専用ICの方が
圧倒的に楽だけどな
11keyでも100円ぐらいだし…
>>37
microchipのページでPin count=48になってたから騙されてると思ってたわ
ゴメンナサイしとくよ avrは外部クロックつけてないとプログラムの書き込みできないんですか?
外部クロック設定されたデバイスから水晶等を外すとダメ。
もうちょっと詳しい状況書きなよ。
>>22
では、roomとwroomの発音の違いはなんなの?
もちろん正しい発音はカタカナで表記することは不可能であることは理解されているという前提で >>41
>外部クロック設定されたデバイスから水晶等を外すとダメ。
やっぱりそうですか。
工場出荷状態だと全てのavrは外部クロック設定になってるんでしょうか? そうですよ。内部クロック設定になってます。
ヒューズ書き換えといて「うごかねー!」とかよくある話です。
あ、読み間違えた。
「違いますよ。内部クロック設定になってます。」ですな。
モニタをフリーで公開してる人達はいる
RAM上のマシン語動かすアーキテクチャじゃないので
実機デバッグがどうこう的には使いにくい気はするww
実機ハードウェアのテストとかにはアリ?
>>45
昔聞いた落語の枕を思い出した
え〜、世の中には人の話を聞いてないというか、聞かないというか、
そんな人間がいるもんでして、二人揃うとこんな具合ですな。
「おい、留、向こうから来るのは八公の野郎じゃねぇか?」
「何言ってんですか、熊さん、あれはどうみても八公ですよ」
「そうか、しかし世の中には似た奴が居るもんだな、
俺は、てっきり八公かと思っちまったぜ」
・・・
「熊さん、留さん、イヤだな、無視して通り過ぎるのは止めて下さいよ」
どう? 日曜日のまったりした午後のひと時、笑ってもらえた? >>45
USB内蔵のものは一部を除き外部クリスタル設定になっています。
*mega32U4RCは内部クロック設定 >>42
今クロック君を弄ぶのに忙しいからあとにして 手始めにChaNさんのCharge Transfer方式をシミュレーションしようと思ったらいきなりつまずいた
1サイクルで転送される電荷が多すぎるように見える・・・シミュレータや素子のパラメータの問題?
それとも回路や制御がおかしい? >>51
5pFと10pFで差が出ていないのは、FETの端子間容量の方が相対的にずっと大きいからだろうか。 >>53
なんかそういう単純な話ではなさそう。念のためEquiv. Series Resistanceを0にしてみたけど変わったように見えない
容量の比で計る方式だから容量の比が同じならカーブが大きく変わることはないはずなんだが
なぜかこうなる
拡大して見る限りFETの駆動能力不足って感じではなさそう
ちなみにCの容量を両方1,000倍すれば10nFと10.5nFでも見て判るくらいの差を得られます めちゃデカイじゃないか
---
AON6408
Ciss Input Capacitance 1810 pF
Coss Output Capacitance 232 pF
Crss Reverse Transfer Capacitance 200 pF
AON6407
Ciss Input Capacitance 3505 pF
Coss Output Capacitance 900 pF
Crss Reverse Transfer Capacitance 650 pF
---
>念のためEquiv. Series Resistanceを0にしてみたけど変わったように見えない
いやだからレジスタンスではなくてキャパシタンス。
と思ったけど、端子間容量を電流容量だと思ってたのかな。
>>56
ありがとう。FETとか詳しい訳じゃないので助かった
マイコンの入力容量ってそんなにあるわけ・・・と思って確認したら数pF〜数十pFあたりっぽいですね
ひょっとしてFETのパラメータを全部手打ちしないといけない感じなのかな。うへぇ
>>57
紛らわしくてすみません。続けて書いちゃっているだけでその部分は静電容量と関係ありません また長くなってしまった
>>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
15pF / 差 0.5pF / 充電用C 100nF
3.5pF / 差 2pF / 充電用C 22nF
どの程度あっているか判らないけど汎用ピンで実装するなら差にして数pFオーダーを読むのが関の山か?
この類の回路は実機を計測しながら動作を見るとかできないですからトライアンドエラーせざるを得ないですし どうして328PBはフルスイング発振回路が没収されてるんです???
20MHz動作させるなら外部発振器必須かよ
328Pは水晶だけで20MHzで動くのによぉ!
なんで今から328PBなんだろう。
4808で良くない?
そのうちバカジャネーノとかいうボードのために
16MHzに上限落とした328P系列が出そう
俺もtiny3216とかも使ってみたいが部品入手を中華通販でやってると最新のが手に入らないw
まぁ秋月でも手に入らないけど…Digikeyとかで買わないと
Digikeyものはマルツで1個から買えるってそろそろ常識化してないのか
知ってるけど中華通販メインだとどうしても高く見えてな〜
tiny1シリーズめっちゃいいよなー
SOPだからちとデカイのがアレだけど
使い勝手は素晴らしい
マルツ以外で買えるようになると嬉しい
mega1はまだニュースもリリースされてない。
32U4の後継とかDMA搭載されるとか、リークなんだか単なる噂なんだかわからん情報だけだね。
tiny2はもうすぐ出荷されるけどね。
>>70
中華で節約した分、そっちにカネ突っ込むと考えれば良いんじゃね? >>70
安く買ってるつもりで実はどうでもいいことに金をつぎ込んでドブに捨ててるという現実 安物買いのナントカかな
俺はマルツが行ける距離で良かった。
デジキー物にちょっとマージン乗っても送料無しだから。
>>74
俺はATtiny-Xnanoのジャンパ外して使ってる
digikeyで1000円だし、debugまで使えて便利 パチモンが作れるようになるとか検査ハズレ品が大量に出てくるころになると中華通販に品物が並ぶと…
秋月にAVR-IoT WG(mega4808+WiFi)が出てる。
UNO WiFi Rev2より安くnEDBGでよさげ、だがAVRとついているのに
なぜPICカテゴリなの?
質問お願いします。
Arduino開発環境でATtiny85を使っているのですが、割り込み中はdelay関数を使っているのですが、
例えば、delay(1000);と書いても1秒も待たずに次の処理になってしまいます。
割り込み中は使用できないのでしょうか?
AVRマイコンは初めてで、どうしてもこの石を使用せざるを得ないので困っています。
よろしくお願い致します。
ArduinoはtinyCoreに関わらずdelay自体が割り込みで作られてるので割り込み中は使えないのはもちろん
割り込みを色々使ってるとメインで呼び出したときの時間も狂う
あまりdelayは使わずにプログラムを組めるようになろう
>>84
割り込み中はdelayだめだよ。
そう言う仕様だからほかの方法を考えた方がいいね。
そもそも1000msもdelayする処理って本当に割り込みでやる必要があるのかとね。
例えば外部入力に対して割り込みをかけてるんだと思うけど、その時はフラグたてる程度にしてメイン処理に戻ったとき割り込みかフラグ立ってたら初めてdelayかかるとかね。
割り込みをサブルーチンと考えちゃうとちょっと大変かもね。 割り込みの中でdelayなんて使うなよ・・・・
Arduino病だよなあ。
お、なんか変な文体にたなっちゃったな。
メイン処理に戻ったときフラグが立ってたら・・・ね。
誰もが最初から美しいプログラム書ける訳じゃないんだから悪態つく必要ないだろ民度低いなぁ
もし仮に割り込みでdelayが機能したとして、割り込みルーチンの中で1s待ったとしても
それで成り立つプログラムなら初心者ならまずそれでいいんじゃねえの?
業務でやってるわけじゃないんだし
そしてそのままじゃそのうち壁にぶつかるのは確実で、その時にまた学べるわけじゃん
最初から完璧にやっておかないと即叩き始める日本の電子工作警察の老害っぷりほんと馬鹿馬鹿しい
>>84
もう少し詳しく書いてください
もしかして、質問の内容は以下ではないでしょうか?
delay(1000)中にタイマー割込が起きる >>84
割り込み発生から丁度1秒後に処理したいなら、delayじゃなくタイマーのライブラリを使ったらどうだろう。
割り込み関数からタイマーで起動される関数に処理を引き継げる処理内容だといいんだけど 勉強して欲しいとは思うけど今の環境を考えれば>>84氏みたいな人が出るのは必然じゃね
少なくともせめるつもりにはなれない
Arduino等のお手軽フレームワークでマイコン入門した人が本来の組み込みプログラミングを
勉強しようと思ってもなかなか難しいと思うし
今のLチカって
while(true)
{
PORT0.B0 = 1;
delay(1000);
PORT0.B0 = 0;
delay(1000);
}
みたいなのが主流だぞ
これじゃ組み込みのプログラミングではほぼ必須の割り込みやタイマの勉強にすらならないし
この延長線で書いていくと>>84みたいに「根本から間違っている」みたいな事になってしまうのでは
>>91
考え方から間違っている状態で進んでしまった物を後で矯正するコストってかなり高くない?
あとググってもかすりもせずどっかに泣きつかないとヒントすらつかめないというケースも少なからずありそう delay()に関しては
ヘルプなり関数の説明読めば
ソフトループで適当にタイミングとってるだけで
CPUクロック定数の設定間違えてるとおかしくなるし
適当だから精度も期待すんなだし
割り込みでもダメになる
って書いてあるんだけど…
関数の説明なんて読まないよね…
delayの説明に「極力使わないように」くらい書いとくべきだよね。
millisで取得できるチックがあるのに。
arduinoのdelay()はソフトループじゃないです。タイマーカウンタ使ってるから割り込み関数内では使えないの。
Arduinoに限らずdelay()的な機能を使うコードってゴロゴロしているような
初心者が良くないと知らずにそれを真似てしまってもやむを得ないと思う
ガバガバなタイマでも目的が達成できるならそれでよいのでは
モータ制御でもない限り多少のジッタで困ることはそうそうないでしょう
delay()のソース経由でmicros()のソースを見ていたのですが、
割込みカウントの読み出しのため?に cli() で割り込みを禁止しています。
そのあと、この割込み禁止って、どこで解除されてるのでしたっけ。
>>103です。
あああ。SREGを復帰してました。失礼… アトミックな処理でSERG保存、cli、SREG復帰は定番よね。
>>100
もしかしてCPUの仕様次第で
delay使ってもその間他の処理に回ってるという、高度なdelayに成り代わってたりしてな 今更気づいたけど、cliはclear interruptで、seiはset interruptの略?
AVR命令一式より抜粋
sei:Set Global Interrupt Flag
cli:Clear Global Interrupt Flag
arduino は、初心者でも、誰かが作った、ライブラリを組み合わせれば高度なことができるので驚き。
esp32だと、wifi接続で、tcp/ipまで簡単にできる。
ハードの基本的な知識なくたって、作例があるものは再現性高い。
リアルタイム、並列、割込み、ポーリング等の、低レベルの技術を意識しないといけない場合には
旧来の知識、経験が必要だけど、これでいいんジャマイカと、最近思ったりする。
>>109 旧来の知識、経験が必要だけど、これでいいんジャマイカと、最近思ったりする。
その辺は難しい問題だな。
私としてはコピペで終って欲しくない、CPUを好きになって欲しいという気持ちが強いけど、
趣味の電子工作に何を求めているかは人によって異なるだろうし。 別の言い方をすれば、
製作した物で楽しむか、
製作課程(プログラミングや回路設計)を楽しむか、
の違いかな?
>>109
裏を返すとコピペ出来ないと何も出来ない
USBは使えるがモータードライバを制御できないみたいな間抜けなことになる 電子工作の裾野が広がるのはいいこと
なおWiring
>>112
実際、間抜けなことになっているけど、裾野が大幅に広がったことは間違いないですね。
技術力が高い人間が、より面白いものをつくれる、というわけではないですから。 >>109
裏を返せば何でもコピペできるから何でも出来る
USBは使えるのにモータードライバを制御できないみたいな間抜けを除けばね >>116
USBを使ってモータ制御しているのに、
メインループ内で、while(sw); のようなコード書いたりして、処理が立ち往生したりするんですよ。
マルチタスクな、処理系によっては、while(sw){sleep(10);} のような書き方をすると、
別タスクに処理がディスパッチしてくれて問題はないのですけどね。 その昔、パソコンでまともに反応するユーザーインターフェースを備えたソフトを作ろうと
したら、割り込みを避けては通れなかったのう。
本来の割り込みではないがINT21hとかあったし。
いまやワンチップマイコンでもそんな心配をせんでもそこそこ動いてしまうとは、
いい時代になったものだ。
最近はマイコンメーカーが組み込み入門的なWebコンテンツを公開していたりするし
それを読んでいればdelay()を使うような実装は好ましくないと気づけるはず
しかしArduino上がりの人が自力でそれを探し出して読むかというと・・・
最も無能なのは短絡的にただ「delay()を使うような実装は好ましくない」と叫ぶだけのステレオタイプ
>>118
それは作りの問題みたいな気がする。
delay()とモーター制御のコードが、USBを使うことで問題になるケースってどんなのだろう。 >>122
それ
とりあえずdelay()否定しとけば素人っぽく見られずに済む
っていう陳腐な動機だけで騒いで回ってるヤツがいる なにかにつけ、自分が信奉するルールやしきたり以外のものが駄目だと思うのは良くない。
自分と異なるアプローチをする人や、違う発想の人がいるから、世の中はうまくまわるんだし。
精度を求めないどうでもいい処理はdelayをガンガン使うよー♪
『とりあえずLチカから始める』は初心者のステップとしてはもう半分意味がなくなってるね。
>>127
実装次第じゃね。タイマ&割り込みを使っているなら意味はあると思うけど
delay()やfor()だとPCのプログラムと同じだしあまり意味ないような >>127
カッコいい言い回しですね。
では、100%の意味のある「とりあえず」は何ですか? 何を使ったって実装の仕方でどうにでもなるよ
割り込み使わないでポーリング処理だけで組んでも
実用になるプログラムは組めるよ
PCと違ってOSに邪魔されることがないから
細かくタイミング制御はできるよ
全ては作る人の能力次第、できないと思っている人には
出来ないし、できると思っている人はできる
それだけ・・・・・
>>131
各条件pass毎に、適宜 nop を挟みながら、step単位でタイミングをきっちり合わせ込んでいく
つくりは、結構好きだけど、PCのようにイベントドリブン方式で、処理をこなすのが今風のような気がします。 判断や順序を表現する「とりあえず」を「100%の意味のある」と考えると
消えるニュアンスがたくさんありそう。
>>133
今風が何か、それ以外だとどうなのか、みたいな話は、なぜか挑発的な話になっていくんだよな。 アセンブラでサイクル数を数えながらプログラムを書くよりタイマや割り込みを使った方が実装・保守コストが低い
AVR8ならともかく32bitマイコンだと命令の実行サイクル数が安定しなかったりするしペリフェラルを使わないと
精度が悪くなる環境もある
そもそも2個以上のアクチュエータを独立制御する場合に
delay使ってるとすぐ壁にぶち当たる
協調型マルチタスクもプログラマがヘボいとすぐ壁にぶち当たる。
>>136
たしかに、8bit mcuで単機能な実装以外では、オススメできませんが。 初心者がマルチタスキング→同期って何それおいしいの?→変数をぶっ壊す→発狂する
までテンプレ
>>140
マルチタスキングは、独学で習得するには、相当経験つまないと、あと一歩に見えるところで、完成しないという地獄がまってますね。 >>142
シングルタスクだと、シミュレータや、デバッガ使って、step by step でレジスタ、メモリ、IO、の状態をトレースすれば何とかなるけど、
マルチタスクは、各タスクが正当に動作することを、確認したうえで、共有資源の競合をチェックしたり、もろもろ出てくる。 うんうん
たとえシングルタスクでもシミュレータやデバッガって要りますよね。
Arduino用に何かあります?
Ardiono なら printf が使えるだろ。
Lチカは単なる個体の動作確認やで
そこで終わっとる奴が多いんが問題
Arduino関係のブログって、ほとんど動作確認で終わってるよなw
ググるとそんな中身のないサイトばかり出てきてウンザリ
ブログが動作確認ばかりの人ってデータシートすら読んでなさそう(偏見)
atmega328のデータシート見たことないわ わはは
いや、初心者や入門者に対して
delay使えと教えてる無能を馬鹿にしているのだよ
組み込みなんだからいくらでも自由にdelay使っていいよ
m9っ`Д´) CPUリソースはすべてキミのモノだ!!! ビシッ!!
>>151
データシート読んでたら意味不明で挫折したから動作確認以降のブログ更新がないのだ。 Arduinoって組み込みマイコンとは異なった新しい世界を作ったと思うよ。
ただ、組み込みマイコンへのハードルを下げる役には全く立っていないとも思う。
※個人の感想です
超えるかどうかは個人の自由
下げる義務はArduinoにゃ無い
Arduinoがなければ電子工作を始めてへんかったわ
だからArduinoには感謝しかないじゃないですか!
delay関数使用の有無よりもそれが標準的で適切な実装であるかのように取れる記事が氾濫しているのが問題じゃね
注釈も無しにdelay(1000)とかいて1秒待ちます。とか書いてあったら初心者が「待ちたい場合はdelayと書けば良いんだな」と
解釈してしまうのは当然
動作を理解した上で適材適所で使うなら別にかまわないと思うんだ
待機=delay呼び出し的な思考になってしまうと作っている物が高機能化していった場合に填って苦労することになる
>>159
ArduinoもRaspberry Piも教育目的を含んでいるし誤解を招くような情報の拡散は良くないのでは ハードルなんか下げなくてもいいんだよ
すそ野が広がってモジュールの価格破壊が起きたのが最大の功績
>>161
>誤解を招くような情報の拡散
何の話ししてんの? >>162
仕事では、思いっきりやりづらくなったよ。
素人が、プロトタイプまでやって、未完成のままで、XXが足りないけど、それを解決すればいいから、
簡単でしょ。。。みたいな。
えーと、それを解決するには、根本的やり直すということで、見積もりを出すと、びっくりされる。
モジュール自体安いし、テストコードはすぐ動くから、簡単にできると思ってる。 >>141
今時はOSが善きに計らってくれるし若者にはOSの無い環境そのものがイメージし辛いやろ >>165
WindowsのGUIアプリでもね、ボタンイベントに、通信を実装しちゃって、画面固まるとかあるんですよ。
簡単なテストなら、問題なくても、完了までに長時間かかったり、タイムアウトしたり。
それを解消するには、ワーカスレッド実装して、そちらで、通信完了させてから、
画面にメッセージで完了通知するとか、大変です。 >>163
Arduinoでマイコン入門!的な記事が世の中にあふれているじゃん
>>164
組み込みのくの字も知らないところがポイントだな びっくりした
>>164読んで「俺いつのまに書き込んだのかな?」って思ってしまった。 >>166
そういうイベント駆動型のアプリケーションを作ったことがある人なら、プログラムはArduinoのスケッチしか知りませんな人より
かなり早く組み込み向けのプログラミングを習得できるのでは。IOやメモリ管理、リアルタイム処理は勉強してもらうしかないけど
ブロックしてはいけないタスクをブロックして詰んだり、同期をミスって発狂してお手上げとかにはなりにくいだろうし >>166
IE自体が動画の準備ができるまでスクロールもできないとかそういう作りなんじゃないかな 昔、PCの事務処理ソフトを書いていた人と、PLC(シーケンサー)やっていた人に
機械制御のプログラムを書いて貰ったことがある。
PC上がりの人は末端の小さなループで条件成立を待つというミスをしていたが、
PLC上がりの人はちゃんとリアルタイム処理に書いていた。
「いいですね、リアルタイム処理になっていますね」と言ったら
「え、これが普通だと思っていました、他にどうやるんですか?」だって。
育ちは大事だw 今週の標語:「氏より育ち」
UNIXやってる時代に、ビジーウェイトのようなことをしてでも注視したい処理があるときに
forkでプロセスを分けることと排他制御を覚えた。
おかげでマイコンに移行してもマルチタスクで悩んだ事は無いな。
>>172
音楽の才能は遺伝が82%らしいが
ソフトの才能も遺伝かもよ。 僕は、オンラインのDB更新する、アプリで習ったな。。COBOLで、笑
リソースのデットロックとか、そういうのを経験すると、無限ループで条件待ちとか
生理的に違和感を感じますね。
習慣で簡単な、マイコンの処理でも、条件フラグを定期的にポーリングかけて
タスクを適切なタイミングで分岐かけていくようなつくりは、
割り込みイベントで簡潔に記述されたコードに比べて、いかにもレガシーで見劣りしますね。
本を何冊読んでもさっぱりマイコンの仕組みが分からんかったが
スイッチパチパチ動かしてRAMにデータ入れたり読み出している様子見てやっと分かった
紙テープだったのかって
>>176
チューリングマシンだねw
そういえば、英国を破滅から救った、悲劇の天才アラン・チューリングが
英国の紙幣に採用されるらしい。 >>175
よく読むと内容には同意できるが
読点の打ち方が特異で難読なため説得力も半減 >>179
どっちがシンプルかは個人差
俺はポーリングはクソ、割込み多用派 >>177
ああいう比較的平易に物事の本質を解説している技術資料って分野を問わずなかなかないよね 日本の技術者や大学教授に解り易い説明力を求めるのが間違いやで(笑)
彼らはそのような訓練を受けとらんし解り易い説明を受ける機会もあらへん
ストップ機能付きのカウンタから
シーケンサ、それから簡単なCPUに発展する
ロジック回路の解説本ならいくつかある
でも、CPUなら今はHDLベースで覚えた方が、その後の発展が楽だし
解説本の主流だ
評判はいいらしいがああいう表紙に手を伸ばすほどおれは変態ではない。
俺は割り込み大嫌い。 タイマーでもなんでも石によって挙動がてんでんばらばらで、
まともに動かすのが大変だわさ。
だからとりあえずポーリングで作って、どうしてもダメな時だけ割り込みを使う。
リサイクルショップのジャンク箱に珍しく電子部品がぶち込まれていたので買ってみた
Arduino Mega 2560 R3互換ぽいマイコンボード(未開封、詳細不明) 100円
ミネベア 17PM-F4 500円
ミネベア 17PM-K0 300円
パナ BS1111 300円
なにげにArduino的なボードは初めて。あと本家Arduino Mega 2560 R3の値段にビビる
ATMEGA2560って並の32bitマイコンより高価だけどどういう用途を想定しているのだろうか
>>187
何か、3Dプリンターのパーツみたいな感じな。
うちの3DプリンターにもArduino Mega 2560の亜種が載ってる。 avrは割り込みのオーバーヘッドがでかいので多用すると
結構な負担になる(16MHzで退避と復元にそれぞれ4μsかかる)
割り込みの使用は最低限にしないと結構無駄な時間消費されてる
ので、ポーリングでタイミング調整した方がずーとスマートな
プログラムになるよ。
(PICなら割り込み多用しても問題はない)
なんでわざわざレジスタ全退避なんてするんだ。
コンパイラが吐き出したの逆アセして見てみろよ。
>>194
コンパイラが吐き出したアセンブリソース というのは無いのかな?
.binを逆汗するのけ? Arduino言語は単なる逐次処理の学習環境
micro:bit+Scratchがよりコンピューターっぽくなっただけで大して変わらん
ATTiny13Aを使ってLEDをPWM調光しています。
寝室のサイドライトにしようと思っています。
消し忘れがないように、1時間後に自動消灯させたいのですが、
PWMを使うとすべてのタイマーが使えない?ので、どのように時間を測ればいいかわかりません。
だいたい1時間ぐらいでOFFになればいいので、精度はアバウトでも構いません。
>>200-201
マイコンのデータシートを斜め読み
クロックソース
Calibrated Internal 4.8 MHz Oscillator
Calibrated Internal 9.6 MHz Oscillator
Internal 128k Hz Oscillator
External
→Calibrated Internal 4.8 MHz Oscillator
システムクロックのプリスケーラ
Clock Sources/1〜Clock Sources/256
→Clock Sources/8=600kHz
タイマのカウンタのプリスケーラ
fCLK_I/O/8, fCLK_I/O/64,fCLK_I/O/256, or fCLK_I/O/1024.
→fCLK_I/O/8=75kHz
3600sec×600kHz=2160000clk
これをCPUで数えれば大体1時間になるはず
1ループで16クロック消費すればカウンタは2バイトで足りそう >>199
Arduino入門的な書籍等にそういう事って判りやすく書いていないよね >>204
>書いていないよね
そりゃ>>199の感想だもの。
>>199がArduino入門的な書籍を書けばそこには、そういうことも書かれるだろうね。 Arduinoでゲーム作ろうとかテーマがあればいいんかな
グラフィックとかショボいしメモリが少なすぎるけど
>>205
書籍でもWebでも多くのArduinoスケッチはシングルタスク(+α)じゃね?
同期機構を実装してマルチタスクやっている例なんてほとんどなくね Arduinoはすそ野を広げるだけの存在。
高度なことを期待するのは間違い。
ArduinoでOS使おうなんて苦行している奴もいるが意味が分からん。
コピペだけだと裾野は広がっても高くはならないな。
>>200 の仕様も、たとえば1mSのインターバルタイマを起動して、
LEDの明るさの変更もオン時間の制限も簡単に実現できるのだが。 >>207
それは >>199 が書いている、
>Arduino言語は単なる逐次処理の学習環境
とは別の議論。 >>209
PWMを使用していても、ISR(TIM0_OVF_vect)とか使えるんですね。 >>212
使えますよ。
メインループのカウントダウンをオーバフロー割り込みでやるのが良いと思います。 >>197
どのサイト見ればそういうの書いてあるのか教えてくれよ >>214
avr-gcc produce assembler でググルよろし
英語サイト探した方が早いよ。 >>207
マルチタスクは、CPUに拠らない、共通の常識があって、用語からして難易度高い。
>>208
単体の機能確認にはいいかも?arduinoで高度なことを無理やり詰め込む苦行はごめんですね。
そんなフリーのスケッチを、コピペして改変しようにも大変そうだ。
というわけで、単機能の基板を、連結するという力技もあるわけですけど。 Arduinoは基本アセンブラを書かせない、見せないという糞仕様。
高性能な32bitマイコンでもArduinoスケッチによる開発環境が用意されていたりするし
Arduinoしか判らない人も少なくないしいくら教育用途で制限あっても無視できない感じ
"教育用途で制限ある"と知らしめることをしない。
多くの人を勘違いさせている。
>>219
Arduino IDE で何でも出来るようになってるのかも知れないけど
かえって使いにくいよね。 >>220
Arduino側にそんな義務ない。
勘違いしてるマヌケはこっち来なくていい。
つまり、何かに向かって吠えてるあんたそのものが意味不明。 >>222
Arduinoにそんな義務はないが情報を拡散するメディアには責任がある。例えそれが個人だったとしてもだ >>223
えーっと、何の話?
もっと具体的に、誰に何をどうしろと言いたいの? Arduinoだけで何でもできそうな幻想をばらまくのはよしてと
言いたいのではないか
>>225
これができますという実例なら見かけるけど、「何でもできますよ。」という記事は見たこと無いなあ。
勝手に幻想抱くのは抱く方の勝手では? Arduinoでいろいろ簡単に出来るようになっちゃって悔しいのは理解するけど、
それを提供する側にはなれない自分のスキルを見つめ直す方が先では?
それか黙って指くわえたまま立ち尽くすかw
Arudinoで出来る=出来ること
Arudinoで出来ない=出来ないこと
みたいな印象をばらまくのは良くない
Raspberry PiもそんなところがあるしUnityもだ。いずれも便利だけどそれが全てじゃない
正しくない上限を初心者にすり込んでしまうのは技術の発展という面でも好ましくない
>>228
タダの屁理屈。
そんなんで刷り込まれる程度の人間はどうせ技術の発展になんか貢献せんよ。
斜に構えて難しぶって初心者煙に巻こうとしてるあんたの方がよほど発展の妨げ。 Arduinoのオシロにも感心したし、VGA出力も感心した。
そう、それが大事なのさ
電々のデの字も知らず、寄り付きもしなかった層が寄ってきたのはArduinoやラズパイのおかげ
小難しい屁理屈垂れるしか能のない電々親父が悔しそうに文句垂れてるけど
スキルがあるならライブラリでも提供する側になって注目集めてから文句垂れなよって話
けん引する側にすらまわれずに後ろから遠吠えてる連中はみじめすぎ
>>229
そのような選民思想の方がよほど発展の妨げ。みんなタダの人だし最初から出来たわけではない スマホによるPC離れ>>>>>>>Ardunino、RaspberyPiの集客力
>>232
そう言うなら、簡単に刷り込まれてしまうだろう、という仮定の方が選民思想じゃん。
刷り込まれない人だっているし、そもそも全員がこの分野の技術発展に貢献しろって思想が勝手すぎ。 >>234
オウム返しする前に
>そんなんで刷り込まれる程度の人間はどうせ技術の発展になんか貢献せんよ。
の正当性を説明してくれ。そうでないと話が繋がらない >>235
え〜と、困った人の相手しちゃったな。
刷り込まれると言い出したのはあなただから、順番でいうとそちらが正当性を出すのが先ね。
落ち着いて、がんばって。 マイコン自体を制御するって話に注目すると
意識したい部分を意識して触れないから使い勝手が悪いって部分が目立つだろうし
ソフト的に機能やアルゴリズムに注目すると
機能やアルゴリズムを考える際に下層まで意識しなくても実現が可能だから良い部分が目立つ
ラップする事に関してはメリットデメリットあるわけで、
結局どの立場の人として考えるかなんじゃないか?
>>236
初心者がメディアの情報をほぼそのまま吸収することは一般的な現象だと思いますが
少なくとも珍しくなく多数派でしょう。電子工作に限らず多くの分野で該当するはずです
それすらも理解できないのであればあなたの価値観が日本の社会と違うのではないですかね
あと言動からID:KtwuXFA3、ID:pc15vz/R、ID:A8mBQgiVは同一人物と推測しますが
IDをコロコロ変えているのはなぜなんですかね >一般的な現象だ
>多くの分野で該当するはず
>価値観が日本の社会と違う
それの根拠は?
あと、ついででいいけど、文脈で追えてるのにあえてIDにこだわって
わざわざ論点そらしてまで追記する意味も説明して。
>>239
蓮舫議員の「2位じゃだめなんでしょうか。 」失言の爆釣具合を見ればメディアリテラシーの低さは明らかですね
初心者どころか各界の有識者や著名人まで釣られてる始末でしたし
あくまでシラを切るつもりですか。言動、主張、文体が酷似していますからバレバレですよ 初心者の質と社会の価値観は>>238が決めているらしいw この板で自民のスパコン政策を支持してる馬鹿がいるなんてw
>>240
シラを切るって、文脈で追えてるでしょってちゃんと書いてるじゃん、ちょっと笑うわw
逆にそこまでIDにこだわる理由が知りたいですわ、何の意味、何の価値がある?
あと、蓮舫発言は失言だと思ってないんで、価値観が全く違いますね。
つまり何の根拠にもなってません。
まあ、あなたが1方向しか見られない人なのはわかりました。
さて、横道にそれましたが、
刷り込まれるとした根拠、>>238でいろいろ断言した根拠がまだ1つも示されてませんよ。
まさか、横道にそれたがってるわけじゃないでしょう、よろしくどうぞ。 >>242
ねえ、私もちょっと驚きましたよ。
どんな人か理解できた気はするけど。 ちなみにあのころ日本のスパコンの順位は31位だった。
つまり「2位なら御の字だわ。」であり「1位を目指すとか、よせやい恥ずかしい。」というのが正解。
Arduino言語、Arduino IDEが使いづらい(教育用途として抽象化と隠蔽が為されている)のであって、AVRやArduino IDEを利用する他の石(ESP8266,ESP32とか)が使いづらいという訳ではない
micro:bitをScratchで使うのが隠蔽だとは言わない
生でmicro:bitを操作するなら、スペックの高いマイコンである事が理解出来る
只、AVR=Arduino, micro:bit=Scratch, ラズパイ=Linuxみたいな捉え方しかされない雑誌や書籍が多いのも事実
嘗てマイコン=micro computerだったのがmy computerの略になりpersonal computer=パソコンになり、パソコン=(メーカーが用意した)BASICマシンになって裾野が広がった歴史を、形を変えて繰り返しているだけ
>>246
「パソコン=BASICマシン」ではなかったろ。
むしろそれがマイコンだったのでは? 考えるのが苦手な人ほど、世相を切り取って「だけ」って言う傾向がある。
わかったことにして納得したいのかもな。
>>246
抽象化とか隠蔽とかぬかしてないで生のAVR使えばいいだけ。
そこに文句言ってたら初等教育なんか何もできない。
雑誌や書籍を情報源にしてる時点でお話にならない、論外。
ついでに言うと、最後の2行で全てが台無しw アルゴリズムの設計と、ペリフェラルのインターフェース設計だけで、環境依存度下げていくのが世の中の趨勢なので、
ardiunoは、方向性としては悪くないけど、趣味、学習用途、プロトタイプ以外では、なかなか、現実の要求仕様には合致しないのではないでしょうかね。
でも、小ロットの世界では、本番への適用例多いかもしれないですね。
>>247
メーカーや雑誌がパソコン、パソコン言ってるのに、ずっとこれはマイコンだと言ってたおじさんいたよね >>250
それが何か?
紙媒体を参考にしたこと一度もないわ。 論争は終りましたか?
AVRを好きな所は、命令16bit、データ8bitという制限が多いCPUなのに
レジスタがいっぱい有るところ、命令の種類がいっぱいあるところ。
AVRをフルアセンブラで動かすのは、
少排気量マニュアル車のヒール&トウで峠道を攻めるような
面白さ、楽しさがあります。
(いずれも個人の感想です)w
命令の種類がいっぱいあるのになんでRISCなん?w
>>254
紙に印刷された論文ですか、いまどきPDF化されてない?
読まないですねえ、ほぼ全員が先にメールで送ってくれるんで。 >>258
紙に印刷して封筒に入れて切って貼って送ってくるんでしょ、わかります。 >>ID:RVuIJ0rp
ジャーナルの次は論文、さて次の屁理屈には何を持ち出すのかな?
あれ、黙っちゃった?
ていうか、「紙媒体」と言ってるのに「論文」とか言い出す馬鹿w
>>261
え?ジャーナルって論文だよ。
レターやレビューもあるけど。 >>265
もう見てる方が恥ずかしいからお前黙れ。 >>267
よくわからんが、論文のこと言ってんの?
学部でも院でも教官は研究職を兼ねてるから論文は出す。
そんなことも知らんって高卒か? そういえば最近 C vs ASM や AVR vs PIC の罵倒合戦見ないね。
どうでもいいんだけど。
AVRで温度調節器作ろうと思ったけど
表示器や押し釦で温度設定の汎用性高めると部品代だけで高くつく
普通にオペアンプと可変抵抗でやった方が安上がり
作るのを否定しているわけじゃないし、特別な機能を盛り込むなら作るしかないんだけど
よくある機能だけでいい場合にAliとかで出来合いのモジュール見つけちゃって値段を見た瞬間に作る気がなくなっちゃう
・温度設定:0.1℃単位、-30〜110℃
・a接点しかないのでHeat/Coolの切り替え機能
・ヒステリシス:0.1〜15℃
・リミッター上限/加減温度設定
・測定誤差補正-7.0〜+7.0℃
・動作ディレータイム:0〜10分
これだけ付いてお値段なんと… 俺は作らないことも否定しないよ。
作る理由も買い物で済ます理由も人それぞれ。
>>275
AVRでQtouchはめげた
専用のチップで処理させた方が遥かに楽 高機能だから理解するには苦労があるかもね。
安い専用チップは接触子の構造設計に制限があるから一長一短。
>>278
やはりaliexpressか
自作するより安上がりな時代 >>278
それ400Wの電気ストーブで使ってたけど
2年で100Vの出力端子の部分が熱で溶けて火事になりかけたよ 端子との接続部が緩んだのに放置したからだろ?
自分の責任じゃん。
中華のパーツは機械精度が悪いのがよくあるからワイヤが十分に接続されずに接触抵抗が大きくなって発熱して溶けたんだろうね
端子が十分に基板に半田付けされていなかったとかワイヤの太さが足りなくて締め付けが足りなくなったとか…
この手の端子はいろいろあるからな…
>>283
あ?なに勝手に決めつけんだ?
人に言う前に自分の発言に責任持てよ まあ、よほどの馬鹿でなきゃ、端子台は外して直にハンダ付けだよな。
それを端子融かす間抜けがいるとは、笑う。
3Dプリンターがらみじゃあるある案件だからな。
直にハンダ付け、最低でもカシメてから端子に挿す。
400Wの電気ストーブとか、無知は怖いよねえ。
あの端子台はマジ糞 すぐ緩むから締めなおすと壊れるし、短期テスト以外は使用不可
自分の施工不良を棚に上げて事故をパーツのせいにしていくスタイルw
>>276
それ2個買ったけど2個とも通電直後に亡くなったよ まぁ温度センサーとリレーを2個ずつ買ったと思えば安上がり
>>290
文句言われたくなければ先に現物の写真や運用方法を細かく書けよ
それらがわからないから予想される原因を指摘するしかねーじゃん
2年も持ったんだから立派だよな >>287
たしかに、電灯線400Wとか、素人は手を出してはいけない領域ですね。
直半田だから安心というわけでもないし。
圧着が基本ですね。 まだベータ版で全種類に対応しているわけじゃない。
今しばらくはStudioが無難
アセンブラでマイコン始めたいけど、PICかAVRか迷う。
>>290
>100Vの出力端子の部分が熱で溶けて
7時間後
>裏のハンダからスパークしてランドが溶けてんだよ
支離滅裂、状況の説明すらロクにできない。
この5mm程のピッチのランドでどこがどうスパークしたのか興味津々だわ。
俺らが書いてんのは、決めつけでなく経験に基づいた予測な。
跳ね返したきゃ写真貼れ。 >>297
散々既出だけど、アセンブラなら古いPIC16Fシリーズはやめておけ。気が狂うぞ その程度の判断もできないやつがいまさらアセンブラで始めてモノになるとは思えない
あるいは、釣りにしちゃエサにカビが生えてる
最初からやり直せ
>>297
アセンブラでやるなら、直感的に命令を理解でき、
マルチタスクでも動かせるAVRの方が良いと思う。
私は両CPUともアセンブラで動かしたことがあるけど、
PICはアルゴリズムからニーモニックへの変換が面倒だった。
アセンブラは良いよな、自分とCPUとの間に薄い膜も何も無い一体感を味わえるw >>297
古いPICなんてどう?
命令数35しかないよ 残念だったな。このスレで聞いてるんだから本人の答えは決まってるのだ。
PICを始めようとしてニモニックにGOTOを見たとたん
投げ出してAT90S1200に走ったあの頃…
あえてAVRとRL78で悩んでみてはどうかと言ってみる
自分のアセンブラ経験は78K0S、8051、AVR8
PICはニーモニック一覧見ただけで触りたくなくなる
何を重視するかによるな
安さ?小ささ?覚えやすさ?処理速度?メモリ容量?入手しやすさ?作例の多さ?…
俺もZ80超推し
秋月電子でAKI-80を買ってEPROMを外付けするんだ(そんな奴は居ねぇ
まぁ冗談抜きで小さい仕組みなら80系はいいよ
>>303
数が多けりゃいいというわけではないよ
それだけあれば十分じゃないかな〜〜〜
どうせ全て使う機会なんてないんだから 命令数がやたら少ないCPUってアセンブラプログラミングの難易度が高くない?
多いほど良いとは思わないけど大抵のISAにあるような命令は一通り欲しい
命令が多いほど書くのも読むのも簡単だし楽に決まってるじゃないか。
ダイ面積が許すなら8bitCPUだって乗算命令はあったほうがいいに決まっている。
add、adcだって分かれてるほうが書くのも読むのも楽だ。トリッキーコードを減らせる。
いくら命令が多くてもIA32やAMD64が簡単で楽だとは思えない・・・
命令数が多いのは、Cコンパイラに任せて、部分的にasmで書くのがいいと思ってます?
picのいいところは、i/o に直にアクセスできるところで、Cで書くにしても、asmに近い記法にすると具合がいいです。
PICからAVRへの移行を考えています。
Reset直後にReset前の状態を判断するようなフラグはありますか?
PICの場合PDフラグを見るとSleepからResetされたのか通常運転からResetされたのかわかります。
Cでリセットで初期化されない変数の確保方法があればそれも知りたいです。
>>317
簡単で楽だよ。便利な命令ばかりじゃないか。picやMIPSだと膨大なコードが必要なものが数命令で実行できるとかザラ。
MIPSに関しては糞複雑なコードにになるから最初からコンパイラに丸投げしてるけど、
そんな無責任なことされてもコンパイラ開発者もアホらしくてやってられないから碌に最適化されてないコンパイラばかり。 AVRのアーキテクチャを見ていると、コアを設計した学生二人の才能に感心する。
16ビットコードという制限の中で何を捨てて何を残したか。
32個の汎用レジスタ方式を採用したのも素晴らしい。
もちろん、そのCPUを見つけ出し、自社の製品に採用したたアトメル社も偉い。
>>321
一つ文句があるのは、上位16個と下位16個のレジスタ
の扱いに差があることぐらいかな… AVRコアのトランジスタ数はいくつぐらい?
PIC、6502やZ80とは桁が二つ三つ違ってそうだが。むしろ設計に制約がない。
>>323
乗算回路無しの奴で、レジスタファイル分除くと
むしろZ80より少ないかも知れないぞw シングルユーザー、シングルタスク、対話環境もAPIも無い中でプログラム組むのもめっちゃ古臭い(褒
産業用の1軸スライドロボのコントローラは
未だにザイログニーモニックだろうな
>>320
具体例示してみてよ
できないだろうけどなwww x86やAMD64だってコンパイラが使う命令は単純な命令ばかりじゃん
CISCが複雑な命令セットでRISCが単純な命令セットというのは80年代終り頃の話だろ
今のRISCはx86と比べても十分複雑な命令セットだし
x86がRISCと比べて複雑なのはアドレッシングモードだけ
RISCといってもARMなんかはアドレッシングモードも複雑だけど
>>327
多バイト整数演算、浮動小数点演算、積和演算、CRC演算とか・・まだいる?
Lチカとかでしかアセンブラでプログラムしたことないんじゃないのか。
なぜそんなレベルがおれにマウンティングしようとしたのか。 あっMIPS君か。おれのレスはなかったことで。すべて撤回します。
>>330
R3000で時代が止まってるんじゃないの?
今のMIPSは積和演算とかあるぞ
MIPSは2進バイナリの多倍長演算は不得意だが多倍長演算ライブラリなんかは
int型に4桁の数字を割り当ててるものなんかも多い
浮動小数点演算ってなんでFPUのないMIPSと比べるの?
MIPSだってFPUある実装が多いのに
マイコン用コアとパソコンやサーバ向けコアを比べるほうがおかしい 積和演算持ち出したことでPIC32に採用されてるコアすら知識が無いのが露呈したな
ちなみにPIC32のM4KコアもmicroAptivコアも積和演算あるよ
CRC命令に関しては最新のMIPSR6の最新のやつで追加されてるね
>>322
仕方がないな、たとえば 「LDI R16,$FF」 みたいな即値命令で、
32個のレジスタを指定できるようにすると、
レジスタ選択で5ビット、即値で8ビット、残り3ビットなので
8種類の命令しか実装できなくなる。
で、設計者は対象レジスタを制限して命令の種類を増やした、と私は想像する。
そのトレードオフの結果が今のAVRだが、
私は昔、簡単なFORTHを製作したことがあり、初めてAVRを知った時に、
この小さなCPUにスタック操作用の命令があることに感心した記憶がある。
まぁ、でも仰せの通り、このレジスタ制限が無くなれば、
大幅に使いやすくなることは間違い無いので、
PIC24のようにコードを24ビットに拡張したAVRを開発して、
全レジスタを対象にして欲しい。 ARMのThumb-2のようにもともとあった16bit長の命令に32bit長の命令を追加する方法もあるね
で、拡張した結果、armのM系と競合する奴になって
あまり売れなくて直ぐにデイスコンして買収されるんでつね
わかりまつ…
AVRのAtmelは既にMicrochipに買収されてるわけだがw
>>319
MCUCSRが使えると思います
変数の初期化は、コンパイラのオプションで初期化をするしないを
選択できるはずです
(ただし、パワーオン時にはすべての変数は最低限ゼロクリアか初期値を入れること)
ATMEGA8でSLEEPからの復帰にWDTを使用するとリセットしか選択ができない
ので同様の処理をした記憶があります >>342
SEビットですね、今ちょっと実験してみたんですが'1'にしてResetすると'0'に戻ってしまうんです。
とりあえずフラグが使えるかどうかだけなのでスリープしないでフラグのセットとReset後のフラグ検査だけしてみました。
データシート上はいけそうなんですがなぜでしょうね?ちょっとアセンブルリストでも見てみますか、誰かがフラグクリアしてるのかな… MCUCRでなくてMCUSRのほうですか
ちょっとこっちで試してみます
具体的なチップの型番出さないからMCUCSRとMCUSRでおもいっきり話がすれ違ってるなw
Alibaba Groupの半導体メーカー:
中国Pingtougeが16コアの「RISC-Vプロセッサ」を開発
https://eetimes.jp/ee/articles/1908/01/news046.html
> 同社によれば、この演算性能は2つの要素によって実現されたという。
> まずは、12段のアウトオブオーダー実行パイプラインのコアの採用だ。
> これにより、1サイクル当たり、
> ロード/ストア命令を含めて最大8個の命令をロードできるようになった。
> 2つ目は、さまざまな演算やメモリアクセス、マルチコア機能を強化するため、
> 50の拡張命令を追加したことだ。
> Xuantie 910では、1チップ当たり最大16コアで構成できるという。
>
> Pingtougeは、
> チップのプラットフォームをSoC(System on Chip)開発メーカーに提供するだけでなく、
> 2019年9月に、コードをGitHub上にオープンソースとして公開する予定だ。 >>342
>>345
ATtiny13Aです いろいろ試してみました 目的はPB0〜PB4まで出力ポートとして使っていた時残りのPB5(Reset)を使ってちょっとした制御(ON/OFF(RUN/Sleep)/モード切替)ができないかということです
・MCUCRのSEビット(Sleep Enable)はSleepの前にセットしますがResetで復帰後はクリアされているようです(Reset前にセットされていたのかクリアされていたのか判断できない)
・MCUSRのPORFやEXTRFはパワーオンリセットや外部リセットは判定できますがSleepからリセットしたのか通常動作からリセットしたのかは判断できないようです
またこのフラグはハードウエアでセットされソフトウエアではクリアのみ可能のようです
・コンパイルオプションはなかなか見つかりませんでしたが未初期化変数をCOMMON以外にする[-fno-common]を試してみましたがCOMMONに割り付けられていました
結局Resetで変更されないレジスタや変数を使うことで実現できました。
一つは1バイトの配列を宣言して2バイト目をアクセスするようにします(2バイト目がコンパイラで使用されていないか確認が必要です)
二つ目はEEARLのような初期値不定のレジスタを拝借することです。(当然競合しないように注意が必要です)
うまくいったときのソース例ですhttp://codepad.org/LiHl0AML SFRのビットについては実験しなくともデータシートに明記されている。
初期化されない変数宣言はavrlibcに説明があるよ。
今ならインサーキットデバッガSNAPが1000円以下で買えるクーポンが出てる。
MPLAB専用だけど買うべきか・・・
パソコンじゃなくてラズパイ+液晶で開発環境構築できる?
↑ 違和感ありまくり
それ "Arduinoに限定"での環境だろ
PCしか無い状況で、これから抵抗値入力1点、出力1点で
マイコン扱うとして一番低コストな手段はAVRのUSB付マイコンボードを買えばいいの?
>>354
なんでそう思うんだろ、これが出来ると言うことはgcc+avrdudeで開発環境が出来るわけで、
あとはIDEを何にするかの話でしか無い、arduinoでも良いしeclipseでも好きにすれば良いでしょ。
arduino限定と思った理由を聞きたい。 >なんでそう思うんだろ、
>arduino限定と思った理由を聞きたい。
何で余計な2行だと気づけないんだろう。
理由を聞きたい。
>>357
相手の誤解を解くとか事実を伝えるとかが目的ではなくて最近よくあるマウント取りそのものが目的であり
目に入る狭い範囲にいる他人との相対的な比較による知識の量でしか自分の存在価値を確認できないから >>359
違和感ありまくりと言われてちょっとムッとしてしまったんだよ。そしてこの人は一体何を見ているんだろうかと
諭すように書かないといけなかったね。ごめんね。 >>358
あり
こういうのってUSBついてりゃ全部
あとはArduinoIDEで書き込めると思っていいの? >>350
snapの安売りは不具合(ETN#36)品の処分ではないかなw
snapはStudioでサポートされるかMPLAB X が正式版になるまではゴミw
MPLAB X V5.25が出たようだが相変わらずBETAで当分無理そう
studioのV-upも止まっている。 チップ抵抗1つ外すだけで50%OFFならいいじゃん。
どうせもうレガシーAVR使わないしSNAPポチったった
送料\1039でした。
tiny1を何種類か補充したかったので、送料変わらないからついでにポチったわけです。
SNAP単体\833
Atmel ICE持ってるから要らないっちゃ要らないんですが・・・・
>>368
本体は半額でもやはり送料はそれくらいはかかっちゃいますね。
ありがとうございました。 開発ツールの対応デバイスの中に未知のAVRDxシリーズなるものがあるそうな。
AVR8xコアとなっているから8bit系ではあるらしい。楽しみだね。
4種類のピン数バリエーション
ヘッダーから読み取れる情報
CLOCK 32MHz
ROM 128KB
RAM 16KB
ADC 12bit
DAC 10bit
ゼロクロス検出あり
TCDあり
BOD設定が最大2.85VなのでVCC3.3Vか?
3.3v 8MHz駆動の32u4のデジタルピンが5vトレラントか分かる方いますか?
>>372
無理っす(VIH max = Vcc+0.5V) 32U4にトレラントなIOは無いですよ。
データシートを見れば明らかです。
AVRてそういう機能は基本的に無い
以下datasheet
>>375
リセットピンなら使えそうだよね。
+13V >>372
入力ピンにクランプダイオードあるなら適当な保護抵抗1つで5vの信号受け付けると思うが 最新のAtmelStudioでATmega16U2をC言語で書こうとすると
自動でインクルードされるレジスタ名の定義ファイルからACMUXだけ抜けてるのを発見した
アドレス0x007Dのやーつ
>>381
データシートにACMUXは存在していないし0x007DはDIDR2になっています
まずはデータシートを見るのが基本です ほんとうだ
俺のにも無いね
なんでコレだけ無いんだw
忘れたのか?ww AvrFreaksの過去ログにも当たらん。
誰もU2でACなんか使ったことないってかw
自分のPCに情報みっけた!w
今は使ってないが、昔のAVR Studio 4もまだ入れっぱなしでそこに古いtoolchainがあったから覗いてみたんよ
そしたら、同じくACMUXは定義されていなくて、DIDR1の定義に違いが…AIN0とAIN1しかビットが定義されてない!
つまり…昔はマルチプレクサが無かった(か、ついてたけどデータシートに漏れがあって無い事になってた)んじゃない?
そんでACMUXが出来て、DIDR1もAIN2〜AIN7が増えた…が、DIDR1のとこにビット増やしただけで終わったのでは
今の奴には>>385の通りDIDR1に0〜7までちゃんとあるわけで昔の奴とはちゃんと違ってる
しかしよく気が付いたなこんなのwww 16U2なんて何とも言えん絶妙なマイコンで何作ってんだ… デバイスパックの更新もAS7の方はすでに止まってたから、順当なアナウンスやね。
まだMPLABにからだが馴染んでないんだが・・・
DIPのAVR売ってるとこが少なくなってきたなあ…
秋月、送料が高いから欲しいものがまとまってから買おうと思ってたら
欲しかったチップがいろいろ消えてるし
dipとかデカくて邪魔なだけで必要性を感じない
プロトタイプなら変換基板で良いし完成品ならSMDでいいし
そろそろ未知の力でフラット部品が固定できる
ブレッドボードが出てこないかなw
抵抗、コンデンサのリード品の選択肢が相対的に狭くなってる
>>394
導通接着剤的な何かで出来そうな出来なさそうな・・・ アイロンビーズ×電子ブロック
高さが揃わないと無理か…
>>392 >プロトタイプなら変換基板で良いし完成品ならSMDでいいし
趣味だと試作品と完成品の二つを作るのは面倒だし、
使っているうち改良点のアイデアが次々に湧いてきて、なかなか完成状態にならないんだよね。
と言うことで私はDIP+ユニバーサル基板派(QFPは変換基板を使う)
CPUの交換が簡単だし、回路の追加・変更もできる。 DIPとブレッドボードで試作して回路図書いて面実装用の基板作成して面実装して完成
>>401
そうやってイキる人がブレッドボードでなんとかならない作品を披露してくれたためしがないw >>402
それな。
マイコン使うような回路でブレッドボードじゃダメなのって
設計ミスかパーツ選びがダメダメなだけでしょ >>403
>マイコン使うような回路でブレッドボードじゃダメなのって
>設計ミスかパーツ選びがダメダメなだけでしょ
本当にそう思ってるんですか? その程度で済む人には、その程度では済まない状況を想像できない
>>405
だからお尋ねしてるんですよ、そんな回路ですかってね。
でも出て来ないのねえw >>406
提示してもらわないとどんな回路なのか、本当にわからないのですか?
仮にあなたが分からないとして、
提示を要求した相手の人が実は本当は何も作れない人だとして、
あなたが言うように「でも出て来ない」のだとしても、
それは単にあなたがその相手をやり込めただけのことで、
あなたの想像力のなさは何も解決していないのですよね? ブレッドボードではどうにもならないマイコン回路まだあ?
毎度思うんだけど、ブレッドボードの登場で仕事を失くした業種とかあるのかえ?
ブレッドボードと見ると必ず駆けつけてくる>>401の意図がよくわからん。 >>401に対して、イキがっているとか、まるでブレッドボードを目の敵にしているかのような
言い方をしている人がいるけど、過剰反応に見える。
>>400の手法が使えるのはいいね… (多ピンデバイスを使うことが多いから俺にはちょっとできないな)
ぐらいの意味じゃないの? >>411
いままで何でもちまちまハンダ付けしてたのが馬鹿らしくなって
その反動でつい駆けつけてくるんだろ
適材適所を知ってれば走り出さずにとどまれるのにかわいそうなヤツ そいやブレボって秋月とかで売ってる中国メーカー?な奴しか使ったこと無いけど国産のしっかりした物ってあるのかな?
厳選材料で導電性たかいとかそんな感じの。
DIPが使いまわしが利いていいんだよ
そりゃAVR使い捨てするような金持ちはどうか知らないけど
まだ回路設計もほとんどしたことない初心者です
akaiのs6000のような高機能サンプラ+DAWのといった感じのものを作ろうと思ってるんですがブレッドボードでできるんですか?いきなり基板を発注するのは怖いのでできれば試したいのですが、ブレッドボードじゃきつそうだしと困っていました…
ソフトウェアは少しだけ書いたことがあるので問題ないと思っていますが、回路がとにかく心配なので、基本的にはFPGAでどうにかしようと思っています
>>418
スレチなので初心者質問スレにでも移動してください。 >>420
むしろブレッドボードで作るべきじゃないの?
何が難しいのかな? >>420
みんなが言ってるブレッドボードでは難しいの意味があなたのとはたぶん違う。
わたしならそれこそブレッドボードで試作する。 >>420
ブレッドボードで作るのは難しくないが
この程度ならブレッドボードで試作する必要すら無いと思います 8bitのAVRだとSPIもせいぜい8MHzとかまでだしブレッドボードでもいけるいける
AVRではないけどesp32で40MHzのSPIで液晶つけたらブレッドボードとジャンパーワイヤーではあかんかった
>>425
ADCは全然ダメだった。あとPWMも
アクティブLPFの特性がシミュレータ
とかけ離れて無理。あげく発振まで
するし…
どちらも結局はPCB起こして試作したら
まともに動いたけど、アナログ回りが
入るとブレッドボードではきつい 初めての、MPUや、ペリフェラルの確認程度には、ブレッドボード使うけど、
規模が大きくなったり、アナログ処理が入ったり、MOSFETでモータ回すとか
するときは、ユニバーサル使うことが多い、不用意に、ピン刺し間違えて焼いちゃうこともあるので。
>>427
ブレッドボードは接触抵抗でかいから
POWER MOSとか使うと溶けることが
あるよな >>421
>この試作品がすなわち完成品です。
を実現するのがブレッドボードでは難しいってことじゃないかな。
両面配置でコンパクトに実装する時点で門前払いなんでしょうね。
たいていのことは適材適所、ケースバイケース。
ブレッドボードでなんでもできる、なんてことはないわけだし。
>>426
GNDが弱いから、アナログまわりは弱いね。
スイッチングレギュレータは動作確認でさえしんどい。
ユニバーサル基板のメッシュ基板(シールドタイプ)みたいに、
ブレッドボードにもべたグランドがあればそれだけで結構違うかも。 ブレッドボードに沢山のパーツを付けて何十本もワイアーを挿すのはイヤだな。
信頼性が下がるし、同じ時間を掛けるなら、さっさとハンダ付け配線してしまう。
ただし私も部分的なアナログ回路のテスト、セラロックの発振周波数の調査、抵抗とLEDの明るさの確認などで
ブレッドボードを使用している。
時にはユニバーサルボードとブレッドボードをワイアでつないでテストする時もある。
私はこれをハイブリッド方式と呼んでいるw
>>423
じゃあ、どうすればいいの?
試作なしに製品基板作るってのはアリかもしれないけど。 発振回路とか高速シリアルとかはブレッドボードじゃまともに動かなくね?
具体的にはMCUのクロック発振回路とかUSB(LSなら何とかなる?)とか
AVRを使い始めた頃の話しだけど、
A)初めてプログラムを組み始めて、
多くの命令で対象レジスタに制限があることを知った時には、
ガッカリして「何だよ、サギみたいだなCPUだな」と思った。
B)「スイッチが押されたらLEDを点灯し、もう一度押されたら消灯する」という動作が
LoopSW:
SBIC PINB,SW ; スイッチは押されたか?
RJMP Loop1 ; いいえ
RCALL DelayLoop ; はい、チャタリング除去のディレイ
SBI PINB,LED ; LEDの点灯・消灯を反転
RJMP LoopSW ; スイッチ入力待ちへ
の5命令、高速クロックで実行出来る事を知って「このCPUはすごいな」と思った。
>>437
こんなのLED点灯専用マイコンとして使う場合にしか使えないじゃん C)「10進演算補正命令が無いじゃないか、8ビットPICにだって有るのに」と思った。
存在しない命令の多くは2、3個の命令で実現出来る。
たとえば、<EORI R16,$FF>は<LDI R17,$FF>と<EOR R16,R17>で。
だけど2桁の10進演算はめんどい。
(メーカーのサンプルAVR204では加算19命令、減算13命令)
対象レジスタがR0固定でもいいから<ADC R0,R16>、<DAA R0>なんてのが欲しかった。
(DAA:Decimal Add Adjust)
D)全レジスタ32個、あるいは半分の16個でいいから、
まとめて退避・復帰できる命令が欲しかった。
ま、どんなCPUでも100%満足できるなんてのは有り得ないわけで、
気に入ってるかどうかで言えばYesです。
>>438
AVRのDI/Oは使いやすい、という一つの簡単な例ですよ。 >>438
Lチカの為だけにAVRを極めたって良いじゃない。 5命令じゃないけどな。
ところで、押しっぱなしでバコパコしない?
>>441
delayによるだろうけど
duty50% で高速点滅→ナチュラルPWM
だったりして…
(点灯するか消灯するかは確率50%)
もちろん、チャタリングキャンセラがリリースを見てれば
そんな事にはならないと思うけど >>442
なるほど、そうなるね。
リリースのチェックまでやると、今度は押した時に点灯じゃなくて、
離した時に点灯になるのが気持ち悪いんだよね。 そうすると結局パルス作って
そのパルスでビット反転させた方がシンプルに使える
>>439
>たとえば、<EORI R16,$FF>は<LDI R17,$FF>と<EOR R16,R17>で。
COM R16ではダメですか。そうですか。 初心者スレにモーメンタリ→オルタネート変換*7ってネタがあるけど、どう組む?
俺流のいつものやり方でマジレス。
tick基準で10ms毎にポート読み取り、過去4回分評価でデチャタリング。
メモリ上にデチャタリング結果とオルタネート結果を仮想入力値として用意。
アプリケーションはその仮想入力だけを見る。
定番かどうかは知らん。
>>441
AVRによるI/O操作の一つのシンプルな例として書いたのですが、
「スイッチが押されたらLEDを点灯し、もう一度押されたら消灯する」
をより正確に動作させたいなら、 >>442 の方法になるのかな?
LoopSW_ON:
SBIC PINB,SW ; スイッチは押されたか?
RJMP LoopSW_ON ; いいえ
SBI PINB,LED ; はい、LEDの点灯・消灯を反転
LoopSW_OFF:
RCALL DelayLoop ; SWオン時のチャタリング除去
SBIS PINB,SW ; スイッチは離されたか?
RJMP LoopSW_OFF ; いいえ
RCALL DelayLoop ; SWオフ時のチャタリング除去
RJMP LoopSW_ON ; スイッチ入力待ちへ 横で電子ライターカチカチやればすぐ誤動作する奴だね。
>>445
申し訳無い、深く考えずに書いた$FFという数値が悪かったね。 WinAVR環境でビルドしていたAVRのCプログラムをAtmel Studio 7環境へ移行させてるのだが
ATtiny85は新環境でビルドしたコードが問題なく動作
ところがATmega168Pは新環境でビルドしたコードがまともに動作しない
旧環境で改めてビルドすると動作
#define F_CPU 周波数
はソースに移行済み
一般的にありがちトラブル原因とかありますか?
>>452
・最適化の違い
・(上記に関連して)グローバル変数の扱い
(割込で使う変数などはvolatile修飾が必要)
・適切なライブラリがリンクされていない
(特にprintf周り)
あたりは?
まぁ、WinAVRがAtmelStudioになったせいってより
gccのバージョンが変わった事が大きい どうもです、とりあえずwarningまじめに確認してみる
warningしっかり確認したところ割り込み名称が違うんでねえのと指摘あり
修正したところ、しっかり動きました
どうもでした