AVRマイコン総合スレ Part46
レス数が1000を超えています。これ以上書き込みはできません。
AVR ISP mkIIってXMega書き込めないのか。 , -‐−-、 ヽ∧∧∧ // |
. /////_ハ ヽ< 釣れた!> ハ
レ//j け ,fjlリ / ∨∨V ヽ h. ゚l; ← >>6
ハイイト、"ヮノハ // |::: j 。
/⌒ヽヾ'リ、 // ヾ、≦ '
. { j`ー' ハ // ヽ∧∧∧∧∧∧∨/
k〜'l レヘ. ,r'ス < 初めてなのに >
| ヽ \ ト、 ヽ-kヾソ < 釣れちゃった!>
. l \ `ー‐ゝ-〈/´ / ∨∨∨∨∨∨ヽ
l `ー-、___ノ
ハ ´ ̄` 〈/‐-、
↑
>>5 スレと関係ないんだけどさ、俺「釣り」とか「釣り師」っていうのは、
釣り師 ↓
. /| ←竿
○ / |
. (Vヽ/ |
<> |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
|
餌(疑似餌)→.§ >゚++< 〜
の組み合わせだと思ってたんだけど、
最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
これは、どっちかというと、
,〜〜〜〜〜〜 、
|\ ( 釣れたよ〜・・・)
| \ `〜〜〜v〜〜〜´
し \
゙'゙":"''"''':'';;':,':;.:.,., ヽ○ノ
~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ト>゚++<
ノ)
かと思うんだけど、どうよ? >>6
書けるけどAtmel Studioでは書き込めないってことね >>10
はて?
何年間もAtmel Studioでxmega128A1Uやxmega32E5に数えきれないほど書いてる俺ガイル。 ISP mkIIはUPDIに対応してくれないからクビにしたけど、
xmegaのPDIで書き込むのは何も問題なかった。よく働いてくれた。 SNAP+AVRDUDEだとインストールすら要らないし全てのAVRに書き込める >>14
しかしsnapのファーム更新とAVRモードへの切り替えにMPLAB X IDEが必要という罠が。
UPDIで使うなら小改造も必要。 割り算やら掛け算やらさせてUSBで取りたいんですが乗算命令のないAT90USB162じゃ無理ですか?
おうちにいっぱい余ってるのでできれば使いたいのですがATmega32U4買わないと厳しいですかね AT90USB162で乗除算が無理かって?
そんなわけあるか!
乗算器があれば高速ってだけだ 私は昔、「アセンブラによる高速演算技法」(Don Morgan著、アスキー出版局)という本で
数演算を勉強して、例題として使用しているCPUの演算パッケージを作ったことがある。
この本の各章の内容は
数字、整数、実数、浮動小数点計算、入出力と変換、
初等関数、疑似乱数テーブル、数値データテーブル
古本屋にいけば見つかるかもしれない。もちろん別の本でも構わない。 整数ならなんとかなる。
掛け算は結構簡単。
仮に R16 x R17 を R18 に求めるなら、
LDI R18, 0 ; 答えを初期化
LP1:
SBRC R17, 0 ; 掛ける数の 1bit目 が 0 なら次をスキップ
ADD R18, R16 ; 答えに掛けられる数を加算
LSL R16 ; 掛けられる数を 2倍に
LSR R17 ; 掛ける数を半分に(2進数で桁をずらして 1bit目に次の桁を持ってくる)
BRNE LP1 ; R17 が 0 じゃなったら繰り返し
みたいな感じ。
2進数で筆算をしてる感じ。
R16 と R17 は壊れる。
↑はロジックを示すため答えが 8bit に収まる場合のみのコードだけど、多バイトになっても考え方は一緒。
割り算も筆算式でやることになると思うけど、もうちょっと面倒。 Cで書けばいいだけだろ。
XXX * YYYとか
XXX / YYYとか
だれでもやってるわ。 必用な桁数(ビット数)の演算をアセンブラで作れば、小さくて早い演算ルーチンが出来る。
場合によってはBCDで演算するのも、メモリが少ないCPU、制御用のCPUには有効。 思い出したけど、残念ながらAVRにはBCD演算(補助)命令が無いんだよね。
たとえばADD(バイナリ加算)とDADJ(10進補正)の2命令で済む2桁の10進加算が、
なんとAVRでは19命令(AVR204:BCD Arithmetics)も必用になる。
ツライ・・・w ど〜でもいい。
AVRでキツイならARMでも何でも行け。
そんなスペックの要らない用途もいっぱいある。
フルアセンブラじゃないと処理速度やメモリが足りないんなら選定時点ですでに間違ってる。 なんかあっちこっちのスレでルネサスマニアが荒らしてる気がしてならない だいたい、今時10進演算なんてするのか?
表示装置なんて遅いんだから
2進で計算して、表示するときに10で割って各桁計算すればいいだけだろ 10なんて定数で割るのも乗算器があれば高速だしな
最近のtinyは乗算器積んでるし いろいろ間違ってる点
・そもそも乗除算器の無いコアでの話をしている
・計算アルゴリズムの話に C だのアセンブラだのの話は本質ではない
・ポテンシャルを引き出せずにスペックを上げるのは勝手だがポテンシャルを活かす話を否定することはナンセンス
・小さなアプリケーションだからこそフルアセンブラでも手に負える
・そしてフルアセンブラで書けという話でもない
んまあ一番目の出発点から間違ってるんだからなんともってところだな。 間違ってない点
・Cで書けば必要なコードが組み込まれ結果的に乗除算できるんだからそれでやれや >>36
そういうときに ARM に行けというやつと、計算方法を工夫して対応しようというやつがいるだけのことだよ へ〜floatが計算できないコンパイラがあるんだ。
世界は広いなあ FPUあるからと安易に浮動小数点を使うと遅くなるまである
加減算や乗算でも2〜3サイクルを消費するからな >>37
> 計算方法を工夫して対応しようというやつがいるだけ
そうだね、BCD計算なんか専用命令なくたってちょっとした工夫でどうとでもなるよね。
>>38
AVRにFPUなんか無いよ? >>41
お前って何と闘ってるの?
ぼくちんの使えないあせんぶら使うとかなまいきなんだよー
みたいな? 10進演算は遅い、特に乗除算は時間かかりそう
計算は2進演算で行い表示するときだけ10進に直した方が速いのでは?
小数点を使うなら100倍、1000倍、10000倍して計算すればいいだけ >>37
まあ、Cortex-Mくらいだと安いのもあるしな。
ARMな環境を作っておけば将来共々御役立ちではあるだろう。 Cotex-MつってもM0+/M23とM3とM4F/M33とM7じゃ全然違う M4Fは身近になったよな
STM32Nucleoでもラインナップ多いし
Arduino公式でもArduino Nano33BLEがM4F >>43
金計算とかするじゃなければ固定小数のバイナリ演算で十分だしね >>43
入力時の10進→2進、出力時の2進→10進変換作業が不要になるけど、
AVRには10進演算命令が無いから、最終的には遅くなると思う。
ま、演算内容によるか。10倍するのに×10の数値計算をする人は居ないだろうし。
疑問に思ったのだが、10進の4則演算命令を持つCPUなんて存在するのかな?
速度はともかく、データメモリ効率は確実に悪くなる。
ところでAVR使うならフルアセンブラをマスターしておいたほうがいいだろうな。
フルアセンブラなら書けるけどCでは書けないような仕様もある事だし。
色々と意見の食い違いはあるだろうけど、
「AVRは楽しい、面白い」では一致しているよね?w
仲良くやっていきましょう。 >>49
IBMのpowerとか10進計算できるよ! BCD演算のサポートなんて無かろうとファミコンはちゃんと10進数で数字を表示してたんだから 10進演算機能って2進や16進が理解できない低能向けゴマスリ機能じゃないの?
高級言語でサポートされる? >>53
16進は十進の0.1すら表現出来ないから計算を繰り返すと誤差が蓄積する
一般的な使用なら16進でも大抵は問題ないけど一切の誤差を許さない金融計算とかは10進を使う ごめん、金融系の話は知ってる。
最近の8ビットワンチップマイコンでってこと。
まあ昔は8ビットマシンで運用してたからそのころのにはあるんだろうけど、
組み込み制御向けマイコンで必要なん? うん、その具体的な用途を一つでも知りたいなあと思ったの。
BCD演算機能が無くてツライとか言ってる人がいるからさ、
なんでツライのか理解できる人がいるかと思ってね。 それも期待していないが期待している(どゆこと?)
だれかツライ実例教えてよ >>61 クロック数もバイト数も余計にかかるんだから、ある場合に比べれば無いのはつらいんじゃないの?できるかできないかの話ではないんだし。
BCDサポートがあれば簡単にできることでも、無いなら代わりのロジックでBCD計算するかバイナリで計算して割り算するわけでしょ。
単純に面倒じゃない?
何故BCDを使わなければならないかというか、それは手段であって目的ではないでしね。 x86 での話だけど、BCD補正命令を本来の用途で使ったことは無いけど、特定の値を得るために単に短い命令として使ったことはあるな。
ちょっと特殊なことしてて、プリンタブルなマシンコードだけを使ってできるだけ短いコードを作る必要があった。
このケースでは無いとつらかったかもw ・同じチップ
・既製のライブラリ等を使わずフルスクラッチ
・フルアセンブラ
みたいな条件限定じゃね?
面倒なだけでCortex-M7やRXv3みたいな多段パイプライン&スーパースカラで
武装し高クロックで回る最新のコア相手に性能面の優位性を示せるとは思えないわ >>67
んなことは百も承知だけど、そういう使い方を念頭に置いたものであっても中身は特定の条件で値を加工してるだけだから、たまたまその加工で欲しい値が得られるなら全然関係無いことに使うことだってできるって話ね。
>>65 のケースでは、x86 プロセッサで例えば AX レジスタの値が 0xEBAA だったのを 0xEC00 にするために AAA を使った。
見ての通り BCD と関係無い処理だけど、目標の値の 0xEC も 0x00 もそのまま即値代入するとマシンコードがプリンタブルにならないから何らかの演算によって目的の値を得る必要があった。
そんな時 x86 の AAA はマシンコード 0x37 で "7" だから選択肢として都合が良かった。
ということを、BCD補正命令が無いとつらかったこととして挙げてたのね。 そんな事言い出したら掛け算も割り算もいらない
足し算あれば引き算もいらないなってなるだろう >>68
4bitの16進を
daa
sub al,10h
cmc
adc al.40h
ってやるとASCIIになる >>69
あるものなら何でも使えばいいし、無ければ他の方法でやればいいんじゃね?
命令セットだけじゃなく内蔵ハードウェアについてもそうだよね。
ADC が無い製品でも条件によっては少しの外付け部品とソフトウェアで二重積分型ADCを構成できるかもしれないし、USART無くてもソフトウェアで書いたりするしね。
それを、そこまでして使うかと思うのも間違ってないし、それでやれてるなら充分と思うのも間違ってない。 さて、そろそろ「BCD演算機能なんて無くても特にツラくない」ってことでよろしいか?
おかしいなあ・・・ツライって言ってた人がいたのに・・・・ >>72
おれは USART 無くてつらいって思ったこと無いけど、辛いと言うやつがいても何とも思わんよ。
お前は BCDサポート無くても辛くないなら、それで良くね? >>73
>>57の意図と違うな。
スレが伸びると本題忘れるものだね。 >>74
意図は単なる難癖だろ?
何のコンプレックスに触れたのか知らんが、くだらん コンプレックスか・・・
Bかっぷ
Cかっぷ
Dかっぷと、成長に伴いみなさまサポートが必要になるなか、
A「サポートなんて必要ない!(;∀;)」という悲痛な叫びだったのかもしれませんな(違 私は数値データをバイナリにするかBCDにするかパックするかしないか等は
プログラム設計時にデータ構造をどうするか検討して決めている。
この前、過去のAVRのプログラムを調べたら、BCD採用は10本に1本程度で少なかった。
理由として、多分、AVRには10進演算命令が無いせいもあると思う。
10進演算命令はキャリー/ボロー・フラグを3個も追加しなきゃいけないし、
コアを設計したニーチャン達に切り捨てられても仕方がないw 自分の無知ゆえに有効な使い方を知らないだけかもと思ったのに冷たいなあ。
テクニック教えてくださいってのがくだらんか。
やっぱここには有能な人はいないんだね。
盛り上がらなくて申し訳ない。おしまい 常にバイナリ演算のほうがサイズが小さくて処理速度が早いなら、
BCD演算命令なんか残っていない。
BCD演算の方が早い場合もあるからこそ、
主に制御用に使われることが多い、BCD演算命令が無かった8ビットPICにも
上位CPUで追加されたのだろう。
バイナリ/BCD演算の比較の実例になるかどうか分らないけど、
まだAVRを始める前の大昔、
PCからRS232Cで4桁の数値を受信したら、
操作パネルの4桁のサミールスイッチの数値を加算して送信する、
というプログラムでBCD演算を採用したことがある。
(ASCIIコードのままで1バイト1桁づつ加算したので、 正確に言えばASCII演算か?)w
2進演算のプログラムを書いて両者の速度やサイズを比較、というのはしなかったけど、
多分、BCD演算命令を使った方が小さくて早いと思う。 BCD演算命令なんてARMにもRXにもRISC-Vにもない。これが答え AVRはRISCなんですけどね
RISCの設計思想を考えればBCD演算が搭載される訳がない >>85
徐算命令があってしかも1クロックでやれちゃうならBCD専用命令などいらんってだけだろ。 つうかなんでBCDでこんなに燃え上がってるの?
BCD命令なんてアセンブラでしか使わないから、アセンブラアレルギーのやつがヒステリー起こしてる感じ? BCD命令が無いってヒステリー起こしてるやつにみんながやさしく付き合ってる。 そう言えば、前にどこかで「プログラムが小さいとか早いとか何の興味も無い」とレスされて
エーッ!と驚いた事があったw
ま、プログラミングで何を大事にするか、人それぞれか。
ところでAVRに対する要望として<レジスタ群を複数組み欲しい>というのもある。
ソフトは上位コンパチに出来ると思うけど、これも見果てぬ夢だな。 >>91
自分は1クロック 1バイトに心血注ぎたい方だけど、
んまあ焼いてしまえば中は見えないから、Lチカを 1KB で書いても数十B で書いても結局 Lチカするワンチップマイコンがそこにあるということに何の変わりも無いよね。
でも例えばワンチップでオルゴール作ったとして、同じマイコンで単音ビープで精一杯の人とPWM で音色や和音再現できる人とじゃ、やっぱ後者の方がすげーって俺は思うよ。 程度問題とは言え、桁レベルで冗長なのは開発者の怠慢だと思う
他人に使ってもらう物ならなおさら >Lチカするワンチップマイコンがそこにあるということに何の変わりも無いよね。
その通り。
あるとしたら、「これよりも小さい(早い)プログラムを書ける人は他にいないだろうな」
という自負、プライドかな。
ホントに最速(最小)かどうかは、調べたことが無いので分らんけどw
AVRに関して自信を持って言える事は、AVRのプログラミングは楽しい、だ。
AVRのレジスタは命令によって色々と使用上の制限があるので、
プログラム設計時にレジスタをどう使うか考えないと、後で困ることになる。。
レジスタで思い出したけど、AVRを始めたばかりの頃、
複数のレジスタでUARTのリングバッファを作ったことがある。
最高通信速度が9600から38.4kまでアップした。
面白いCPUだなと感心した。
長文、多投、まことに失礼しました。
これで終わりにします。では皆様おやすみなさい。 AVR128DA/DB使ってる人おるいんか?
なんか中途半端なんやけど 1.ベアメタル+ワンチップ
2.Arduino IDE+Arduino board
3.Python+Raspberry Pi board
どれもLチカに違いはないが応用(実用性と置き換えても良い)を考えるなら無視できない差がある
1ならプラモデルに組み込んで電飾に応用できるが、3はサイズ的にも電力的にもかなり厳しい
2でNanoを前提としても1と比べたらサイズや電力面の差はかなりある
「Arduinoしか書けません」とかだと応用の範囲は当然制限される
>>96
デジキーでボード買ってみたけど積んでいる >>97
ここってID勝手に変わらない?
ちょっと時間が経つだけで勝手に変わっちゃう DA/DB使ってるけど何が中途半端なん?
mega128より安くて速いだけでも十分メリットあるやん? >>99
スマホとかだとコロコロ変わる気がする
自宅回線だと当日に変わったことは無い >>92
そういう高度なことを他人が作ったライブラリで簡単にできるのがArduinoなんだろうな
Arduinoは自分で全部書く場合はあまりメリットはなくて
あくまでライブラリが充実してるというエコシステムが重要なんだよな Arduinoはお手軽だけどコードが肥大しがち
io命令とか基本関数も重いけど、ライブラリも
Adafruit_SSD1306は無意味にロゴマーク読み込んで1.5kも無駄になってたとかあちこちある >>105
価値があるのはソフトたけどハード売ってる、って面白いですねー Arduinoは、非エンジニアのアーティストたちがちょろっと、自分の作品に電気仕掛けを取り入れるとか
そんな感じの使い方を想定して作られたものだから、とにかく簡単に使えることを目標にだなうんぬんかんぬん >>109
美大のホームページでArduinoの解説があったりするよね
NeoPixelみたいなRGB LEDを使いこなすのにはマイコンの知識よりも
芸術的なセンスの方が重要だと思う
プログラミングネタとしてはRGB LEDをライブラリ使わないで
自分で制御すると結構大変だったりするので面白い 電気シローとのアーティストがものづくりすると、まあ300Wくらいで動くんじゃね?
みたいなものを動かすのに必要な電力が5kwとか、面白いもの作って来るよw
現場の電気屋さんは悲鳴あげてるけど
やることが、予想外すぎて、ある意味面白い RGB LED用のコントローラも市販されてるようだし
もう電子工作関係なくなってきてるかもね >>109
でもそれがスタンダードになっちゃったら相応にデメリットも出てくるよな 対応するチップやボードが増えすぎて分かりにくくなってるよね。
純正と完全互換ボードだけにしとけば良かったのに。 >>113
他の選択枝はいくらでもあるから、そうなったら使わなけりゃいいだけ
むしろ、プログラミングさえ不要ってとこまで突き進んでほしいw >>115
それを認識してArduinoベースのシステムを使っている人って少なくね?
Arduinoから入ってきた人だとなおさらだ
Arduinoベースだとそうでないシステムより効率悪いしな(おそらく一桁以上) そんなに効率悪いか?
気になんないけど
所詮avrだし、cコンパイラだし
ライブラリがタコすぎると思ったら、そこは自前で作ればいいわけだし >>117
Arduinoライブラリを使わずにプログラムを書けば処理効率の悪さは解消するけど
サイズや消費電力は専用に組まれたボードと比較したら勝ち目はない >>118
サイズってのは、実行コードの話なのか?ボードサイズの話なのか?
実行コードはブートローダ除けば変わらないだろ。
基板サイズなら小さいのもあるし、専用に作った基板が必ずしも小さいとは限らない。 >>118
そんなことを使う人が、かんがえなくていいんだよってのが
Arduinoスタイルだから、いいんでね?
ライブラリも試作機完成までの時短だから、存在することに価値があるわけで >>119
物理的なサイズ。これは一般的なArduinoの仕様を踏襲する限りどうしようもない
専用のボードだったら書き込み機能が不要になるし、電源も用途に応じた物を搭載できる
>>120
その結果、ダウンサイジングの限界が大きいって話 サイズは有志が作った小さい互換機があることだし、あれ以上小さくできるんかね?
arduino流用で困るのはそこじゃなく、cpuから引き出されてない端子があることかな 一般人はATmega以上しか使わないから気にしなくてよろし
逸般人はATtinyでアセンブラごりごり書いていればよろし tiny10前提とかだったらXIAOやDigispark的なのでもでかい Arduino の話をするとソフトの開発環境の話なのか、ボードの話なのか混乱するんだよ。
基板サイズならArduino互換で小さく作ることも出来るし
だいたい、pico とかより小さくなんてしたくない。 最終的にはプログラムされたマイコンは何かをする部品に過ぎないわけで、それをやりたいことの手段として作るのか、それを作ること自体が目的なのか、それによって見方は変わってくると思うよ。
ただ特定動作する部品が欲しいだけなのに、中身のあれこれを把握してレジスタや I/O を適切に初期化してクロック数数えて、なんてやってられないでしょ。
この条件では 1秒周期で、そうじゃなければ 2秒周期で Lチカしたいと、端的にそう書ける方が便利。
どんなに冗長であろうとそのコードがマイコンに収まりさえすれば部品は動作して値段も変わらないんだから。 そしてちょうど tiny10 にちょっとハマってる自分としては、その制約がむしろ楽しい。
8pin あるマイコンを使うことですら邪道に思えてくるw Arduino用の簡単プログラミング言語をだれかを開発せんかな〜w 1/144ガンプラをマイコン使って電飾しようとするとtiny10あたりの小ささは圧倒的に有利 記述型の言語よりも
パズルのようにブロックを積み上げて動作を完成させるGUIツールを開発して
スマホで簡単に開発できるほうがご時勢にあってるとおもう >>130
絵で繋ぐか文字で繋ぐかだから、このさいどっちでもいいよw >>129
あの小ささは代えがたいものがあるけど、電飾だと出力ピン数が欲しくなってきちゃうかもな。
まあワンチップでがんばらず何個も使う方がむしろ便利かもしれないけど。
ちなみに入力の数は結構カバーできる。
ADC 積んでるから 1ピンで多値入力できる。
今作ってるのは tiny10 使った 16ボタン赤外線リモコン。
16個までのスイッチと、同数の同値抵抗で構成できる。
これはいろいろ応用効きそう。
ちなみに 16個というのは、今の回路構成で精度5% の抵抗を使ったとき閾値が明確に分解できる限界。 >>132
それ、抵抗てんこ盛りになって、結構でかくなんない? >>133
ボタン使う時点でそれなりのサイズになるけど、ボタン 1個に抵抗 1つだから、チップ抵抗ならボタンの裏に置けるしリード付きでも 1/6W 抵抗ならボタンのとなりにひっそり置けてサイズには影響しないよ。 >>134
おわ、ちょと予想外だった
ボタンが基板に載ってる前提なのか
ボタン類は基板の外にあるもんだと思ってたわ >>135
そんなもん作り方次第だよ。
ボタンと抵抗群で構成するキーボードはワイヤー 3本で引き出せるから、線で外に引っ張り出したっていい。 >>136
引き出しPAD3個分」でか、なるほどね
ところで、同時押しとか連打とかは対応可能? >137
すまん、間違って送信したw
https://i.imgur.com/hnxdYyK.jpg
こんな感じ。
同時押しは無理だね。
連打もどこまで求めるか次第だと思う。 >>139
連打は、普通の人なら指の動きが0.1〜0.2秒はかかるから、分解能的には0.05秒あればいけるのかな、しらんけどw
tynyを使うわけじゃないんだが、まあ入力がどうしても足りなくなったときに使ってみようかと思ったけど、同時押し不可はつかいにくいね >>140
抵抗値を 1:2:4:8… みたいな比率にしてパラに並べれば、4〜5本くらいの同時入力はいけるかもしれないね。
>>139 はリモコンに使ったからそれで充分だったのと、リモコンであるが故に普段はキーボードへのアイドル電流を抑えマイコンもパワーダウンして、ボタンでウェイクアップするためにピンを 2本使ってるけど、
原理的にはピン1本で多値入力できるから、同時押ししたいキーを別ピンに振り分けるなんてことも選択肢としてある。 >>132
それは構成次第じゃね。シリアルLED使うならLEDが複数あってもD線一本で済むし >>142
そりゃなんでも構成次第だよ。
ただ入力に関しては、tiny10 でも ADC 積んでるから多値入力に活用しやすいけど、デジタル出力は 1pin 1出力にしかならないから逃げ道が少ないってこと。
ただデジタル出力ピンでも、ハイインピーダンス状態を利用してデジタル 2出力にできるケースもある。
外付けのシフトレジスタ使ったとき、それで HZ と H の切り替えでクロックを、L に引き下げでリセットをかけるようにできた。
けどそれでもせいぜい二重化が精一杯だと思う。 >>143
調歩同期でシリアルたれ流し、しておけばいいんでない? >>144
それは方法のひとつでしょ。
相手がシリアル理解できるようなデバイスならそもそもこっちの入出力を物理的に増やす必要の無い構成にすりゃいいんだから。
>>143 で言ったのはこういうこと。
https://i.imgur.com/3lcHy8q.jpg
物理的に出力を増やす方法。
使い方は限られるけど、これを使う前提で周辺回路を組むこともできるから、最初から知ってれば選択肢が豊富になる。 >>145
方法の一つを言ってみただけだから、気に入らんかったら流しておくれ
シリアル信号だからってシリアル専用デバイが必要なわけでもないよ tiny10程度のフットプリントでより足の多いマイコンもあるようだ
足が不足していて縛りプレイでないならマイコンを変更した方が良いのでは
tiny10だって劇的に安いってほどでもないし >>139
144pin QFPでも十分乗ると思うよ。 >>148
1.27mmピッチだから意外とデカいよね。 tyni10とかで、ひ〜ひ〜言ってるのはパズルを楽しんでるんだろうから
止める気はない >>149
表面実装のタクトスイッチ使えば面積自体は広大だから何でも乗るだろうけど、そんなパターンおれには描けないからな。
1.27mm ピッチがおれの手描きの限界だわ。
しかし、ID 変わらない人もいるんだね。
うちは IPアドレス変わってるわけでもないし他の板ではこんな覚えも無いんだけど、なんでだろ? >>150
ファインピッチの数十ピンLGAや十数ピンQFNが3mm角で大体同じくらいなんだよね >>157
そういうの使う時って基板どうやって作ってるの?
業者に発注? EAGLEやKICADで書いて中華に発注。
10枚で500円+送料2500円ってとこ。
専用スレッドで聞いてみな。 >>159
なるほどありがとう。
やっぱハンドメイドでやるもんじゃないよね。 爪楊枝でクリームはんだ載せてトースターで焼くんだよ。
クリームはんだがキラキラしたら終了。 SMD使う人ならオーブンなりホットエアなり持っているんじゃ
小さい物作るならなおさら まあほとんどコテでできるんだけどな。
QFNでもランド引っ張り出せばいいし、腹パッドにはでかいスルー開けて流し込めばいいし。
部品が多いとトースターのほうが楽だ。 QFPで、こてで付けてたら、ちょっとこじる力がかかった時に一瞬でランドはがれてオシャカ
やっぱ、リフローか〜とクリームはんだの値段見てびびる
あれ、使わなかった分は、どれくらい置いとけるの? あ、そういえば、中華で作ってもらった基板、viaのところから、じわじわ腐食が進んでるんだけど、レジストで埋めてもらっといたほうがいいんですかね >>165
固まったらフラックスやアルコール足して練る。
ホビーならいつまででも使えるよ。
ハンダレベラーしてたら腐食なんてしないけどな。
ま、腐食環境で使ったことないけど。 パッド剥がれに洗浄不十分って相当出来が悪いんじゃ・・・ >>167
それがハンダレベラーなんだよね、大丈夫だろうと思ってたんだけど
最近未使用の基板をふと見たらジワジワきてるんよ
レジスト埋めオプションとかあったっけ?、次で試してみる >>165
ブリッジなんか気にせずとりあえずはんだ付けする。
フラックス塗ってきれいな小手先で触れればブリッジが取れる。
吸い取り線当ててもいいが取れすぎるので付いているのか不安になる。 レジストで埋めるかどうかはガーバーデータ次第だろ? >>170
吸いとり線はそれ自体がピンにひっかってメリってなったことがあるw >>171
そっか、オプションじゃないのか、だったら値段変わらんし、やってみない手はないね はんだ付け職人になりたいわけじゃないから、いいんだよ 今までスルーホールしかやってない人が1mmピッチ未満のICを練習なしに付けるのはかなり難しいと思うよ。
でも他人のやってるのを見て、捨てICや基盤で練習すれば0.65mmピッチぐらいまでは普通にいけると思う。
スルーホールとはやり方が変わる。だからやり方を覚える必要がある。 だからあ、みんながみんな職人になんなくていいんだっつうの
はんだ付け職人に向かって、回路設計くらいできるようになっとけとか言わねえだろ 現状だと(不適切な道具や作業、ガーバーを棚に上げて?)中華基板が悪いって主張に見えるよ https://akizukidenshi.com/catalog/g/gP-04399/
これを買ってATMEL-ICEでLチカ実験しているんですが
RESETボタンが10回に一回くらいの頻度で効かないんですが何が悪いんでしょうか?
効かない場合にはLチカも開始しません。どういう状態になっているのかよく分かりません。
2〜3度押せばRESET出来るので実用上は問題ないのですが原因が気になります。
何かヒントが有れば教えて下さい。 debugWIREにしてるかとも考えたが、
それだとそもそもRESET効かんか。 ライターが/RESETを強く引っ張ってる
…て言うのはないか(よほどインチキなライタじゃない限り) とりあえずリセット端子の電圧観測
指でゆっくり変化せるだけだからオシロとかいらねーから リセット線でLED点灯させようぜっ!(ドライブ能力大丈夫か?知らんけど 秋月で売ってる tiny13 と tiny202、それぞれ 110円と 60円だけど、どうみても tiny202 の方がスペック上だよね?
あえて tiny13 を使う理由ってあるの? 修理用やT13AのプログラムをT202用に修正できない人向け >>188
なるほど
せめて tiny13 がちょっとでも安ければ選ぶこともあったかもしれないけど、なんか高過ぎだよね あまりにも古くて時代遅れになったものは値下げ、更に福袋行きで、仕入れたものは破棄しないと思う
AT90S2313は2002年のものだけど200円→100円に値下げして未だに売ってる 自分で設計できる人ばかりじゃないんだよ
昔の制作記事をトレースすることしか出来ないとか… >>191
それだよなあ
PIC16F84Aだって何年前の製品だよ tiny0やtiny1が補充されては即売り切れを繰り返しているな。
まだ広がっていないはずのtiny2まで売り切れてるのは代替用だろうか? 前スレで今 Aliexpress に溢れてる USBasp は ATtiny10 に書けないのか質問して、さも書けて当然のような回答をもらってたんだが、やっぱり書けない気がする。
そもそも対応デバイスのリストから tiny10 はじめいくつかのデバイスが省かれてたから質問してたんだが、どうやら TPI のデバイスが省かれてるっぽい。
ファームは TPI 対応版に更新したが、事前に吸出しておいたファームと比較するに元々対応版が入ってたらしい。
本家の回路図と比較すると、Ali版はピンヘッダの 4, 6番が GND に落ちてるという違いがあることは分かったけど、これは TPI にはあんまり関係が無い気がする。
エラーとしては target doesn't answer で、-v いっぱいつけて観察すると 初期化時にシグネチャ取りに行ってるのに応答が無いということみたい。
Slow SCK や avrdude の -B 20 オプションを試してもだめ、Vcc は 5V で間違いなし、ターゲットを回路から切り離して単体にして接続してもだめ、同じ USBasp 2台とも同じ、ということだから、やはり製品の問題なり仕様なりなんだと思う。
ちなみに 2台の USBasp は相互に書き込みしてるけど問題なし。
という感じなんだけど、この辺の事情とか試すべきことの心当たりは無い?
自分はもう少し回路を追っかけてみる。 >>194
部品剥がして回路図起こしてみた。
https://i.imgur.com/d6gzmfv.jpg
回路は変わらないね。
本家の回路図が 28P のパッケージで混乱したけど、まあ一緒だね。
じゃあ TPI がうまくいかないのは別の原因だね。
すまんかった。 そのエラーメッセージ、aitendoで買った中華USBASPv3と1MHz動作中等の低速なデバイスと通信しようとして通信できなかったときにも見た
USBコネクタ付近の低速ジャンパをショートしたら通信できた >>196
あ、それがslow sckか
上記の時には毎回ランダムな識別ID返してたんだよなあ
同じことになるんだろうか >>197
あ、識別ID はランダムだわ。
ただデバッグメッセージの通信状況では全部 0x00 が読めてるっぽいから、そのランダムな識別ID は変数の未初期化バグみたいのがあるんじゃないかと妄想してる。
ランダムといっても何パターンかしかないみたいだし、avrdude のバージョン変えるとパターンが変わるし。
ちなみに -B も通信速度を変えるオプションだけど、これでうまくいったというケースもあるみたいで。
こうなったらパラメータとかいろいろ探るしかなさそうね。 >>199
ちょうど解決した。
ダメパターンは PB0 にライタの MISO を繋いだ場合。
成功パターンは PB0 にライタの MOSI を繋いだ場合。
単純ミスっぽくてごめん。
でも、AVRasp mkII で書き込む時は PB0 に MISO を繋いでたんだけどな。
MOSI を繋ぐのが正しいってことで合ってる? >>194
中華USBaspのFWはほぼ本家2007年V1.02をAutoSCKに改造したもの。
TPI対応FWは本家最終版2011年V1.04以後なので中華製はV-upするしかない。
中華FWは-Bオプ未対応だけれどAutoSCKなのでslowJPも必要ないので
不要なワーニングを無視して使えば初心者向けです。 >>200
ぐぐったら
MOSI -R220- PB0
MISO-R220- PB0
Rは200-1kだった
おそらくクロックの立ち上がりで送信、立下りで受信みたいな感じじゃないの
両方繋いでないと送信か受信しかできないと思われ
AVRasp mkII は1つのピンを送信と受信に切り替えてるから1本でいいんじゃないの
しらんけど >>201
なるほど、中華の改造ファームのこともあるのね。
ただ今回は本家のTPI対応版(2011-05-28版)が入ってたっぽい。
いろいろ試す中で本家のを書き込んだんだけど、その前に吸出しておいた中身と比較したら同一だった。
Slow SCK のジャンパはスルーホールだけ開いてて実装は省略されてるね。
自分でジャンパーピンつけちゃったけど、使わなくても問題は無さそう。
とりあえず動かせたので、はっきりさせたいのは TPIDATA に繋ぐのはライタの MISO なのか MOSI なのかかな。
今までは MISO 繋いでたんだけど、結果的に今回はそれでハマってたわけだし。 >>202
TPI のプロトコルとしてはまずはライタ側が送信で、送ったコマンドによってその後のデータをどっちが送信するかが決まる完全な半二重通信だね。
ライタとターゲットが同時にデータを出しちゃった場合の衝突検出方法とその回復手順も決められてて、少なくともプロトコル上はデータ線は 1本だけになってる。
んで USBasp は MOSI と SCK だけ繋いでればそれで半二重通信する。
一方で AVRasp mkII は MISO でやってる。
そのどっちでも行けるようにする繋ぎかたがその抵抗を挟んで両方繋いじゃうやり方なのかもね。 あとついでに分かったことだけど、tiny10 は Vcc 3V でも書けるね。
AVRISP mkII は電源供給してくれないけど、電池 2本で動かす機器ではその電池電圧で書けそう。 私のTiny10はUSBasp3.3Vではだめなので仕様通り5Vで書き込んでます。 >>207
ごめん、やっぱり 5V じゃないとだめみたい。
ぜんぜん書けなくなった。 ATmega32U4でUSB通信使わないときはVBUSとUVCCには電源供給しなくても動きますか? データシート見る限りコアには関係なさそうだし動くんじゃないの?
知らんけど ありがとうございます試してみます
できるだけ消費電力減らしたいので… 128DAに限らないと思いますが、アナログ関係使わない時はAVCCはオープンで良いんでしょうか? 「中でつながってるのか、じゃあ片方でいいや」
↓
「ごくまれに誤動作するなあ」
↓
「AVRってノイズに弱いね」
ここまでがテンプレ >>213
内部で繋がってます、くらいで特に記載は見つからなかったです。
>>214
繋がないとノイズ乗りやすくなるんですね!なら繋げておきます! ADCって下は何mVから読めますか?
80mV〜2Vくらいまで読みたいと思ってるのですが 2.048VをVrefにすれば、
8bitADCで分解能8mV
10bitADCで分解能2mV
12bitADCで分解能0.5mV
オフセット誤差や直線性誤差はデータシート見て使えるかどうか判断しな。 誤差ではなくて読める範囲を知りたいのですが…
例えば0mVと8mVはちゃんと読めますか 「分解能」って何なのかググれ
それが読めなきゃ「8bit」の意味ねーだろが。
しかもAVR関係ねえ。 (説明されてるのに自分の頭の理解力の限界を超えて)だめだこりゃ… >>218
技術的には可能ですがあなたには無理ですね tiny10 ならデータシートには GND〜VREF(= Vcc) と書いてあるな。
実際の変換の底が 0V から浮いてるかどうかは書いてないから、気になるなら自分で測ってみるしかないんじゃない? そうそう思い出したけど、ADCクロックと変換精度の関係はよく分からないね。
最大分解能を得るのに 50〜200kHz のクロックが必要って書いてあるけど、その中でどこが一番いいのか、それを外れるとどうなるのかは見当たらない。
実際どうなるの? データシート読めないやつがまた一人増えた。
墓穴掘るの好きな人っているのね。 1人のサスケが2人のサスケに
3人に 4人に えいえいえいえいおー
忍法影分身だー ん、おれのこと?
確かに読めてないのかもしれないから、どの PDF でもいいから書いてあるページ番号とか教えてもらえるとありがたい。 tiny10のデータシート見たんだろ?
PDF開いてCtrl+F押してADCっていれてEnterしていけよ。
それっぽいとこ全部読め。
確かに不親切なデータシートだから想像力が必要なことは認めるよ。 >>229
avr.jp の tiny10.pdf で言えば、仕様としての ADC の変換特性については P78 の表16-8 にまとまってるものだけだよね?
ADCクロックの範囲ももちろん書いてあるし、P57 13章からの ADC についての詳細でも最大分解能を得るためのクロックについての言及はあるけど、そのクロックの範囲の特性すらグラフになってないじゃない?
どこ見たら分かるの? もっと端的に聞く。
明示されてる 50kHz 〜 200kHz の ADC クロックについて、50kHz でも 200kHz でも分解能は一緒なの?
違うならどっちがいいの? その範囲において8bit分解能が保証されている = どうでもいい。 >>224
そうですそういうことです!
データシートからは分からないんですね
試してみます
マイコンはプログラミングの側面が強いから電気には疎い人が多いのかな…? 読めないもの同士、疎いもの同士共感したか。ヨカッタヨカッタ
がんばれよ データシートもろくに読めない一番疎い奴が何かいっとるわ え?
俺ちゃんとデータシートのElectrical Characteristics読めるんだけど。
ADCの一番下がどこから読めるかくらい余裕でわかるわ。
てかそれが俺だけでなくここにいる奴の大多数だろ?
余りの底辺さにみんなドン引きで沈黙しちゃってるじゃない。
xmegaはモードによって下にオフセットあるんだよね。
でもちゃんとデータシートで説明されてるから試すまでもない。 データシート読めないやつ vs 質問と関係ない回答をする文盲
まるでアンジャッシュのコントだな笑 スマホ引っ張り出して書く時もsageは忘れんなよ! データシート見てたけど、ATtiny102のADCのOffset Errorがよくわからない。
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42505-8-bit-AVR-Microcontrollers-ATtiny102-ATtiny104_Datasheet.pdf
P216
Int VREF = 1.1V, VCC=4.0V, ADC clock = 200 kHz
の条件で、
min -54LSB, typ 9.1LSB, max 2LSB
これはどう解釈するべき?
他の条件では min<typ<max となっていて飲み込めるのだけど。 自己レスだけど。
typ -9.1LSB
の間違いかな? >>241
自分も少し前にそれ見て理解できなくて困惑した
そのリストに載ってる他の条件での数値を見ると誤記である可能性が高いと思う データシートを読める >>237 が説明してくれるに違いない。 MicrochipStudioで使いたいデバイスを選んでシミュレーションしてみなよ。
実行に費やしたクロック数出るよ。
乗算器の無いtinyでザックリ1回400クロックってとこかな。 半精度はWikipediaによると仮数部10ビットで実質11ビットだから、
整数相当が格納できるのは±2047までになるのかな? アトメルやマイクロチップは完全に無関係の「(ロシアの偉大な技術力による)国産化AVR」というのが
アメリカ製を嫌うロシア軍向けに供給されているらしいが、
実はロシアの半導体メーカーが本物のAVRを輸入してきて、
樹脂を溶かしてベアチップを取り出し、軍用のセラミックパッケージに封入し直してたんだと。
かくして再設計したはずなのにスペックが本物と一致する「完全互換のロシア製AVR」のできあがり。
顧客であるロシア軍はそれに気づいてなかったとのことである。 >>251
わざわざそんな面倒なことしてんの?w
信じられん >>253
いやいや、紛れもなく本当の話だよ。ロシアメーカーの製品ラインナップには
(彼らにとって)設計・製造が困難であるはずの欧米製デバイスの互換品が多数存在しており、
そのからくりを知る前は感銘を受けたものだった・・・とのこと まもなくDDシリーズが出荷開始されるみたいだけど、
14ピンや20ピンがあるのはいいとして、機能的にはDBのダウングレードでしかない。
なんでこんなに大同小異なバリエーション出すんだろう?
モノ不足で貴重なウェーハをそんなことに使ってる場合なのかなあ。 複数chからAD変換したいのですが下記のようにしても数字がおかしいのですがどこが間違っているのでしょうか
ISR(TIMER1_COMPA_vect, ISR_NOBLOCK){
unsigned int i0,i1,i2;
ADMUX &= ~0b00000111; //ADC0を使用
ADCSRA |= _BV(ADSC); // ADをスタート
if (ADCSRA & _BV(ADIF)) { // AD変換の終了を確認
i0 = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、
// 変数アクセス中に割り込みが発生しないように注意すること
}
ADMUX |= 0b00000001; //ADC1を使用
ADCSRA |= _BV(ADSC); // ADをスタート
if (ADCSRA & _BV(ADIF)) { // AD変換の終了を確認
i1 = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、
// 変数アクセス中に割り込みが発生しないように注意すること
}
ADMUX |= 0b00000100; //ADC4を使用
ADMUX &= ~0b00000001; //ADC4を使用
ADCSRA |= _BV(ADSC); // ADをスタート
if (ADCSRA & _BV(ADIF)) { // AD変換の終了を確認
i2 = ADC; // ADCは16bit幅で、8bitずつ2回に分けてアクセスされるので、
// 変数アクセス中に割り込みが発生しないように注意すること
}
}
int main(void)
{
//AD変換設定
ADMUX |= _BV(REFS0); // 電源5Vを使用、データ右詰め
ADCSRA |= _BV(ADEN) | _BV(ADPS2) | _BV(ADATE);
// ADEN, ADSC, CK/16(125kHz) if (ADCSRA & _BV(ADIF)) { // AD変換の終了を確認
AD変換中だとお手できないので、待ても覚えよう >>260
loop_untilなんちゃらというのを使うんですね
やってみますありがとうございます 他にすること無く変換完了を待つなら、C でどう書くかは知らないけど AD変換雑音低減スタンバイモードが便利だよ。
このモードを設定すると、sleep と同時にAD変換が始まり、その間プロセッサは眠っていて、変換が終わると目覚める。
正確に言えば何かの割り込みで目覚めるから、AD変換完了の割り込みは許可、それ以外は不許可にしてないとだめだけど、割り込みルーチンで何かをする必要は無い。 最近はググってコード探してもスケッチが出てきて辛いわ スケッチならそのままAVRのコードに書き換えられるんでは
何を求めてるか知らんが arduinoとして使う場合とCとかで直接使う場合とでの速度差ってどんぐらいなん? >>266
コンパイラが同じgccなら、最適化などの条件を揃えれば、同じコードなら結果に大きい違いはないのでは。
文字列の処理をchar配列ではなくstringを使うみたいに、arduinoの便利な機能を多用してたら差はでるかもだけど。 Arduinoの記事は
・データシートを理解していない事が多い
・パラレルに実行できる処理もシングルタスクで実装される Arduino Lチカでぐぐると制限抵抗なしでIOにLED直結の記事が上のほうに出てくるんだよな
あと赤外線受信素子の記事でもやたら到達距離短いなとデータシート見るとフィルタCRが省略されてたり
電気的な知識が欠落して危険だったり性能が出てない事も多い
中華以下の印象 >>268
俺も速度よりサイズ重視だな、Arduino用ライブラリを書き直すと大体半分以下になるわ
といっても玉石混交でこれはすごいと思えるようなもんもあるからね Arduinoは知的障害者の職業訓練ツールスレ
あったのにもう落ちたか >>267
そっかーノウハウ次第って感じかな?
>>268
それも重要ですよねー >>270
I/OポートドライバのON抵抗が大きかったり、LEDのVFが高い、VDDが低いケース等で
電流制限抵抗なしで各仕様を満足する可能性があるけどそこまで解説しているサイトはほとんどないね Arduinoが遅いのはわかりやすさ優先?のためにタスクのブロックを多用するからでしょ
analogReadにしろdelayにしろ従来の実装なら割り込みで実装される所だろうし
あと初期化コードも各所にあって無駄が多い ここにもAVR…
こういうお馬鹿は大好き。もうちょっと安けりゃ買うんだが…
ttps://ascii.jp/elem/000/004/091/4091408/ DDシリーズ出荷開始
100個時単価で
AVR64DA28-I/SO \155
AVR64DB28-I/SO \167
AVR64DD28-I/SO \142
さっさと14ピンパッケージ出してくれぃ AVR64DD32-I/PT TQFP \130 在庫あり: 1,500 こっちじゃないの? すごい久々にマイコン工作する事になり当時使っていた共立のAVRWRT3という
ライターをひっぱりだしてきたんだけどWin11はおろかWin8までしか対応していないとのこと。
当然とっくの昔に終売になっているし・・・
という事で代わりの物を買おうと思っているのですが、上記ライターにはクロック出力という
機能が付いていて重宝していましたので同等の機能があればなぁと色々見てみたのですが
見当たりません。
現行Win11で動作可能なライターでクロック出力が可能な機種ってありますか? >>280
クロック出力ってどんな機能なの?マイコンの外部クロックとして供給するの? >>280
1MHz出力付いてるhidaspxはwin11でも一応動くがもはや共立ライター同様終わってるし対応デバイスも古い
クロック出力は本来ヒューズミスった時の救済機能だしそれ必須で考えると選択肢狭いぞ
CMOSのオシレータでも載せとけば?
それか、新品の米粒tiny10にCKOUTヒューズだけ焼けばプログラム書かんでもクロック出る >>279
10円20円しか違わないのに32選ぶ必要ないわ
14pinもTiiny3224とかでいいんじゃね >>281
クロック有り基板から引っこ抜いて書き換えるときとか重宝する感じの機能でした。
付属ライティングアプリ内から1MHz,2MHz,offのコントロールできたり。
>>282
そんなに世の中変わってしまったんですねぇ。
言うとおり内蔵は諦めて外部クロック用の工作考えながらなんか近代的なライター買います。 >>280
VirtualBox とかで Win8 動かせば? 水晶発振器買った方が安いのではと思ったけどマイコン買うほうが安いのか… 水晶発振器は30円からあるけど
3V/5V併用考えるとマイコンのほうが汎用性があると思う
5Vオシレータは3Vでうまく発振しないケースが多い 精度いらなければRC発振器で充分じゃん
それでもそういう部品集めるよりマイコン1個使う方がメリット多そうだけどさ
プログラム組めば任意クロックも出せるしな 水晶をAVRから離れた場所に置きたい場合、どれくらいまで離せるもんですかね? たかだか20MHzくらいだろ。
好きなだけ離せばいい。
クロック線を差動にするとか工夫はいるけど。 発振器出力と、水晶振動子を混同してるんじゃ?
水晶振動子を10cmの配線でつないだら
まともに動かない。
運よく(運悪く)発振してもスプリアス発振 >>290は水晶としか言ってないから両方考えないとな timecap[timecap_cnt] = (PIND & 0x02) ;
AVRのgcc
timecap[ ]はint型 これコンパイラがwarningも返さずに
右辺に存在しないはずの上位8bit分も演算して代入してくれるんだけど
timecapの下位8bitのみに代入するコードを生成させる場合どう書いてます? 元の値の上位8bitと下位8bit orして変数に代入とわかりやすく書いてる
構造体ならunion使う事もあるけどマイコンではまずやらないな >>296
範囲の大きい型への変換はオーバーフローしないから警告出ないよ。 >>296
右辺が左辺のintに型変換されるのはC言語の仕様、
AVRのgccだからと言う事では無い 返答どうも
勉強になるなー
どうも無理っぽいのでint型やめるわw timecap[timecap_cnt] = timecap[timecap_cnt] & 0xFF00 | (PIND & 0x02) ;
じゃないの? >>299
>>300
訂正、16進リテラルの0x02がintだから論理積の時点で右辺がintになります。
下位8ビットだけ変更したい場合はこうかな。
timecap[timecap_cnt] &= ~0xff; // 下位8bitを0にする
timecap[timecap_cnt] |= (PIND & 0x02); // ORで下位8ビットに代入 >>304
アナログ放送時代にマスプロのアンテナのCMで
おねいちゃんが困るって言ってた(^p^) 昔まだ東横線が地上を走ってた頃
渋谷の手前で大きくカーブしたときに
いつもわくわくして見え過ぎ君が見え過ぎてた
良い思い出 しゃばだばだ~♪
おれが昔とうよこせんだったころ
弟はてんはませんだった
親父はどげんかせんで母はあかせんだった
わかるかな~わっかんねえだろうなあ >>309
かーちゃん風俗嬢だったのか…
って松鶴家千とせのネタ分かるやつ居るのか? 60~70近いだろなw
少ないけど10代20代もいると思うから
幅広いといえば幅広いw 少ない年金で遊ぶしかないPIC爺がAVRに押し寄せてきたから高齢化は必至 年金かー
俺は期待できないから今のうちに貯蓄するしかない
けどここ数年はAliのおかげで楽しかったな、何円かぶりに電子工作再開できたし
でもそれも終わりだな 俺年金もらってるよ
老齢年金じゃないけど
まだAVRには手を出してない timer0 1msで7セグを駆動、timer1 100msで演算をしてます
timer1の処理が長いので、演算のタイミングで7セグがチラつきます
timer1の処理は時間を含むのでNOBLOCKにはしたくないのですが、NOBLOCKにするとチラつきは無くなります
関数とかで正確な時間を取得する方法はありますか? 60fpsあれば人間の目ではチラつき気にならないはず
1ms x16桁=16ms =62.5fpsってことなんかな
演算部分を区切って表示に時間を与えるとかしないと無理じゃね
大昔にテレビに表示しながらROMからFont読んで展開というのを書いたけど大変だった
MAX7219やTM1637使うかもう1つAVR追加してi2cスレイブな表示デバイス作るほうがより早く目的達成できると思う タイマーではフラグセットするだけにしておいて、
割り込み処理以外のメインループ内で フラグ見ながら
ゆっくり演算すりゃええんとちゃうん?
AVR使ったことないからよーしらんけど;^p^) フラグだけ立てても
スケジュールにマルは付くけどまとまった休みが取れなくて海外旅行なんてもう8年も行ってないよだれ係長みたいになるよ 根本的なプログラムの構成から間違ってんだろうなあ。
がんばれ若者よ! >>324
>>325
まさに74LS247使ってるんですけど16ケタ表示してるので1ms間隔で切り替えないとチラつくんですよね… >>318
時間カウント用にタイマを回すとか。もうタイマ残ってないとかです?
シビアなことやってそうですね 元を書いている人がバカ。
それPWMモードじゃなくピントグルモード。 >>332
1msのTickが一つあれば全部できるな。 >>325
7447 のほうがフォントがレトロで好き。
ってか、LS なんか使ってるんか。
14511じゃないのか。 >>331
バカな記事がバカを増殖させる好例だね。
疑問をいだいた君は偉い。 >>331
phase corrected PWMの場合、
up(0→255)→down(255→0)で1周期となるから
up(0→255)→clearのFast PWMに比べて周期が倍になる >>332
やっぱそれしかないですよね
タイマーではフラグだけ立ててwhileループに処理を移動してみます
精度は落ちてしまいますが… >>318
計時用と表示制御用
複数のMCU使っちゃダメなん? 割り込み処理で時間がかかる処理をやってはダメ
フラグ立ててメイン処理でやらないと 割り込みタイミングでのADの値やポートの値等が必要ならそれも保存しておく >>338
やっぱ精度求められるんですね。
表示する値の元を取得してから表示までの時間も限られてて、処理分割や別マイコンで表示も避けたい、とかもあったりします? 仮にLED表示が10mSズレたとして何か問題あるのか?
人間にそのズレは認識できるのか? 最初からチラつかせておけ
7セグなんざ一個当たり16fpsで充分
それから割り込みで計算データをFIFOに積むだけして
計算はメインでやれ まさか100msの演算が終わるまで表示停止になってるんじゃないか
前の結果を保存しておいて演算中はそれを16ms周期で表示するんだよ
新しい結果がでたら表示用バッファを更新する ペリフェラルやCPUの使い方やアルゴリズム等が不適切なだけに見えなくもない
20MHzとしても1msあれば2万ステップを実行できる。何を計算しているんだろうね
安易に浮動小数点で演算していてステップ数を浪費しているだけだったりして 演算じゃなくADCやパルスカウントのようなサンプリングやってそうだ >>348
それらの処理はどちらも単独で実行できるし遅くなる原因にはならなくね? 質問すると無能者呼ばわりされるのか?w
愛の鞭だと思って赦してやって下さい >>318 w
決して愛の蝋燭や愛の縄ではありませんw 無能者呼ばわりじゃなくて
質問だけ投げて詳細不明、あげくに後出し連発でもやもやするんじゃね
みえそうでみえない、ほらほーらきいろい錯乱坊 アカウント制でもないこういう掲示板だからしょうがない
質問者も回答者も肩の力を抜いて行きましょう 7セグの方の話は、ラッチ付きの74HC4511でチラツキ解決 7セグはなにげに、
長辺とドットとで定格電流が違ったりするからややこしや− ややこしやー ここに限らずエスパーキボンヌは適当にあしらわれて当然じゃね >>351
回答に必要な要因が最初から分かっていて質問時に記載できるぐらいなら、自力で回答に辿り着く事が出来るんじゃ無いの?
確かにワザと小出しにしてそうな質問も見かけるがね。 初級者でもなさそうなのに理由なく情報を出さないのは
アフィブログやアフィ動画のネタかと疑われてもしょうがない むむむむ、見えるぞ!
キミは電子工作が好きだな
そして、好きな色は黄色!
好きな食べ物はカレーだっ!! 滑る滑るよ時代は滑る
喜び悲しみ繰り返し
今日は倒れたBBS戦士たちも
生まれ変わって叩き合うよ AVRrcコアで、NVM領域に対する LD reg, X+ は大抵 2クロックなんだけど、たまに 3クロックになる(-X でも Y, Z でも同様)。
RCALL も大抵 4クロックなんだけど、たまに 5クロックになる。
この 1クロックが挿入される条件って知らない?
割り込みが入ってるわけでもないし、1クロック挿入される場所では毎回必ず挿入される。
同じような処理で同じような命令の並びでもこんな感じで挿入があったり無かったりしてよく分からない。
LD R23, X+
LD R19, X+
RCALL SUB1
:
LD R19, -X
LD R23, -X ← 挿入あり
RCALL SUB2 ←挿入あり クロックの数え方が悪いのかもよ。
実は全部データシートどおりでした〜なんてオチ。 >>365
そのデータシート自体、クロック数に幅を持たせて書いてあるんだよねw
でもその条件ははっきり書いてない。
NVMアクセスに関しては、実行コードとのフェッチと LD が競合すると 1クロック挿入がある的なことが書いてあるけど、ほとんどのケースでは挿入されてないみたいだし。
検証はまずはシミュレータでやってるけど、挿入のあるところでは必ず挿入があるし、実機で確認しても挿入があるっぽい感じ。
アドレスのアライメントによるのかと nop 挟んでみても変わらないし、プリスケーラの周期によるのかと思ってもそこへはいろんな周期で到達してるから、バラつかないのはおかしいし。 >>367
NVM のアクセスについての注記のことで合ってる?
そう、NVM アクセスでは追加クロックがかかると書いてあるのに、ほとんどのケースで追加されないのよね。
追加されないとことでは何万回ループしても追加されないし、されるところでは必ず追加される。
つまり確率的な内部状態じゃない条件で追加の有無が決まってるようなんだけど、なんとも法則を見出だせないんだよ。 >>368
他のCPUの話だけどワードアライメントまたぐと余分のクロックがかかるというのがあるけど、そんな感じ?
NOPで位置調整してみたら? 念のため、位置調整してみたのは、プログラムコードとデータと両方?、片っぽだけ? >>371
位置調整はコードの方だけだけど、データの方はループで X がバイト単位で変化するから全てのアライメントをなめてる。
今のところはシミュレータで確認して挿入があればそれに合わせてクロック調整して対応できてるから致命的な問題じゃないんだけど、コード書く段階で判別できたら効率いいんだよね。
ゆるゆると研究します >>375
該当箇所のだいぶ前に原因があって、そこまで来たときに競合が起きて1クロック入ってるってことでは? >>376
アセンブラソースで行数がかさばるので気が引けるけど、現象の出てる部分を引用するとこんな感じ。
SOUNDX1_LP2:
ld ARG, X+
ld PULSECNT, X+
rcall SUB_TONE17
cpi XL, LOW(ADDR(SOUNDX1_TBL_END))
brne SOUNDX1_LP2
WAIT 39 - 12
cbi PORTB, PNO_SOUND
WAIT 2061 * 4 + 13
SOUNDX1_LP3:
ld PULSECNT, -X
ld ARG, -X ; +1 clock
rcall SUB_TONE19 ; +1 clock
cpi XL, LOW(ADDR(SOUNDX1_TBL))
brne SOUNDX1_LP3
途中に入ってる WAIT はマクロで、こんな感じに展開される。
ちなみにクロック単位で待つマクロで、rcall の先は単純ループ。
(WAIT 39 - 12)
ldi TMP, 5
rcall WAIT_3X_11
(WAIT 2061 * 4 + 13)
ldi TMP, 0x20
ldi TMP2, 0x34
rcall WAIT_4X_11
LP2 と LP3 は X の進む方向は違うけど同じループ処理。
でも LP3 の方だけ +1 clock とある2箇所でクロック挿入がある。
別のケースも鑑みると、単純に X がデクリメント方向だからというわけではなさそう。
LP3 に入るまでに原因があったとしても LP3 自体がループなので、それ以前の影響がループ後にまで残るというのも考えづらい。
どう、なかなか謎じゃない? ごめんマクロの展開間違えた。
こう。
(WAIT 2061 * 4 + 13)
ldi TMP, 0x0d
ldi TMP2, 0x08
rcall WAIT_4X_11 ありがちなパターンを考えてみただけで
他人のコードをデバッグする気はないんだがw(スマソ)
まあ、おれも、イミフな現象をここで聞いてみたことあるが
自分の知らqないことは全部嘘君がうるさくて、なんも解決しなかった
まあ、頑張って あああああTiny2シリーズからADC_STCONVなくなっとる
細かく違ってめんどくせー NVMへのアクセスが気まぐれで1クロック増えようが頻繁にアクセスする物じゃないしどうでも良い
って思っているのは自分だけかな >>381
気まぐれだというなら別にいいのよ、それはそれですごく困るけど。
でも気まぐれじゃない条件があるようだから気になってるんだ。
幸い気まぐれじゃないからこそ、クロックが増える箇所を特定できれば調整して対応できるんで、結局完成品の動作には問題無いんだけどな。
NVM のアクセスが頻繁かどうかってより、タイミングの厳密さがどの程度かだよね。どうでもいいかどうかは。
ちなみに rcall が 1クロック増えたのは今回初めて遭遇した。 >>383
そそ、今回は音を出してる。
タイマーじゃなくソフトで。 そもそもデータシートのブロック図を見ても
ATmega328→CPUコアから伸びているデータバスにEEPROMを接続
AVR128DA→バスマトリックスにEEPROMを接続
もっと言えば物理的な接続や詳細な優先順位、割り込み条件なんてメーカーにしか判らないだろう
更に明文化されていないということはビジョンアップなどで変わる可能性すらある
自分だったらアクセスクロック数が保証される内蔵SRAMやレジスタファイルを使うな >>385
クロック数に幅のある命令は NVM と関係無いものにもあるし、NVM 使わなけりゃ済むかどうかも分からんけどな。
今回は rcall まで延びてるしね。
そしてシミュレータでもきっちり延びてるから、仕様としては固い部類なじゃないのかな。
もちろんそのスタンスを否定するつもりも無いよ。 ぐはっTCAもTiny0と1/2シリーズで微妙に違うぞksg
あーあーあーもう#ifだらけだよ MicrochipになってからPIC同様に行き当たりばったりでバリエーション増やすようになったよな。 meATMEGA168ってATMEGA328の小容量版って認識でOKでしょうか 基本的にそうだけど、hexは168用にビルドし直さないとそのままでは使えないよ。 >>388
データシートの誤植やった…
一日無駄に終わった…
avr.jpが悪いんかmicroなのか…
パアトラッシュもう…つかれたよ…ねる… 日本語データーシートを信じてはいけません。
まして avr.jp なんて・・ avr.jpよりDeepLやGoogle翻訳の方がマトモ定期 あのデータシートなぁ
戦時中のカタカナ語狩りを独りでやってるんか? 意訳したらしたで文句言われるからわざと機械風にやってんだって。 TCA8bit分割したらプリスケーラきかねえええええええええ
TCA0_HUNF_vectも呼ばれねええええええ TCA0_LUNF無効にしたらTCA0_HUNF呼ばれた、排他なんか… TCA8bit分割してもプリスケーラ効くし
TCA0_HUNF_vectも呼ばれるなあ
うん、tiny1616は問題無し。 TCA0_LUNFとTCA0_HUNFを同時に有効にしてもちゃんと両方呼ばれるわ。
うんうん、問題無し。 おおお、検証さんくす
俺のやりかたがどっか悪いんやね、とりあえずねる INTFLAGクリアしてなくてずっとベクターさんのターンだったというオチ
もうなんかイヤイヤやってるので変なミスばっかしてるなあ、ねるっ いろいろな作例見てると水晶の足にぶら下げてるコンデンサ、だいたい20ピコあたりがぶら下がってんですけど
データシート見ると浮遊容量含めて20ピコちょいくらいまでとのことで20ピコ接続するとと大きすぎるんじゃね?って思うんですが、どうなんでしょ デジットのランダム部品箱に27pF(実測33pF)のセラコンが大量に入ってたんで
1Mhz・4Mhz・8Mhzの水晶で使ってるけど普通に動いてるよ 現実に動いてるのはわかってるんですが
なんでデーターシート無視ってるような作例が多いのかな~って >>404
水晶に2個コンデンサついてるじゃん22pFとかの
水晶から見た負荷のコンデンサ分の容量は(22*22)/(22+22)=11pF
これに基板やICの寄生容量が足される3~10pF位?
結果14~21pFの負荷容量になる
たぶん\(^o^)/ >>407
データシートのほうだと合算値じゃなくて片側の容量最大値が20ピコちょいみたいにかいてるんですよ
で、両方の容量を同じにしろみたいな 発振周波数測ってみたら?
公称より低かったら容量が大きいんじゃないかな。 前に実験したら32kと4M以上で全然違ったなあ
データシートのリファレンス回路だと発振ギリギリのが多かったよ
コンデンサ容量増やすと安定したり起動早くなったのもあった ふ~む、いろいろと腑に落ちないものの
ちょっと大きめにしとくのが安全パイ的なかんじですかね >>408
ちなみに見てるデータシートってのはどれの何ページ? 手持ちのデータシートだと27p-30pだな
4MHz以上ならテキトーでも発振すると思うけど >>416
およよ(古)
まさに4MHzで使おうとして、20ピコでいいの?って調べ始めたのがきっかけです
データシートによって書いてることが違うって罰ゲームかいなw >>414
マイコン側のデータシートは推奨容量だから・・・・
水晶を誤差の少ない周波数で発振させるなら水晶側から見た負荷容量を適切設定する必要がある 昔ながらのリード型クリスタルと最近のSMD型だと適正負荷容量がまるで違う。
そこを無視して作例比較しても意味無いよ。
本来時計用の32kなんて消費電力を抑えるために適正負荷容量はめちゃくちゃ低い。
AVRだと32kにはコンデンサ不要な場合もある。
公式にクリスタル選定方法のアプリノートがあるから読んでみればいい。
リファレンスボードだと2個のコンデンサの容量が違うこともざらにある。 >>417
ちなみに使う水晶の負荷容量(Load Capacitance)は? でかいクリスタルと消費電力気にしてない発振回路だと、発振余裕度がでかくて適当でも動くな。
中心周波数ずれるけど。
経験したことないけど発振パワーのありすぎる回路だとクリスタル壊れることもあるんだってさ。 >>421
秋月の販売ページには20ピコって書いてある >>422
時計用の32khzはデカイ奴用の回路で発振させると、かち割れるって、複数のサイトで見た >>420
昔ながらのリード型でインバーター発振回路組むと5V12mAくらいで
328マイコンボード全体で7mAくらいだからなあ
32kはなかなかシビアなんだけど
余ってるインバーターでループ発振させてそれを注入する回路(俺はクロックインジェクターと呼んでいる)でめっちゃ安定するわ
04でも14でもだいたい150MHz付近で発振するもよう
発振のきっかけをつくるって動作らしい
けど消費電力は倍になるw >>423
その位の負荷容量だと使うコンデンサは24~36pF位の容量になるとおもう
逆にデータシートに合わせて12~22pFの範囲にしたいならもっと負荷容量の低い水晶を選ぶ >>426
データーシートによって書いてる容量ちがうっぽいし
もう、なにがなんだかw
まあ、水晶のほうの都合優先でいいってことなんですかね >>427
手元に水晶が既に有って変更しないなら水晶に合わせて設計する事になると思う
少しぐらいなら
水晶から見た負荷容量が大きければ周波数は低い方へシフトして
負荷容量が小さければ周波数は高い方向にシフトする
どのぐらいの周波数精度を求めるかによって設計は変わると思う >>428
時計的なものというか時計なので
安定度はほしいけど、周波数自体の正確性はまあまあでいいのです(ソフトの強味) 厳密にやりたいならデータシートの計算式で求める
面倒なら発信器 TinyシリーズのRC20MHzだと時計が1日5分も狂うので
しかたなくオシレータつけたよ1日5秒くらいの誤差になった >>429
ソフトで補正するなら
CL=20pFなら33pFのコンデンサで制作して
誤差測定して修正すれば良いと思うの
もしくはESP8266,ESP32でNTPから時刻を・・・ >>432
おしい、NTP時計じゃなくて、GPS時計作ります って言ってたら部品届いた、さて作るぞ~
あ、20ピコ買い忘れた >>431
1日で5分なんて誤差0.35%じゃないか。
当たり品だね。 年取ると脳にインプットより、脳からアウトプットする方が大事らしい
しょーもないダジャレの親父ギャグも、思いついたらすぐ口に出すのがその一例
だがな、ここはそんな場所じゃないんだよおお! https://www.excite.co.jp/news/article/Prtimes_2022-05-31-81631-8/
設計・材料選定プロセスにおけるAI活用の最新動向レポート[2022]を発表。データドリブンな材料開発の裏側と、設計・材料選定プロセスにおける工程時間を55%削減するヒントについて解説 PR TIMES 2022年5月31日
株式会社SUPWAT(本社:東京都渋谷区、代表取締役CEO:横山卓矢、読み:スプワット)は、この度、設計・材料選定プロセスにおけるAI活用の最新動向レポート[2022]を発表しました。データドリブンの材料開発は、大学や航空宇宙系研究機関でも活用が進んでいます。本レポートではデータドリブンな材料開発の裏側と、設計・材料選定プロセスにおける工程時間を55%削減するヒントについて解説します。
資料DL:https://note.com/supwat/n/nb3a9ec3b318c
https://spioenkopjp.blogspot.com/2022/05/blog-post_18.html
Oryx Blog - ジャパン 2022年5月18日
未来戦に備えよ:トルコが無人機による空戦技術の礎を築くための手法
トルコは「アクンジュ」や「クズルエルマ」といった無人戦闘機の開発に加え、いつかそれらの後継機を設計したり、先端技術を特徴とするその他の分野において働くであろう優秀な人材の確保にも入念に注意を払っています。
この国は、世界でも類を見ない規模で、子どもたちや若者の間でテクノロジー分野のあらゆるものに対する関心を高めることを通じて、その目標を達成することを試みています。
これを成し遂げようとする方法の1つとしては、毎年開催される「テクノフェスト」などのハイテク関連のイベントが挙げられます。
「テクノフェスト」を純粋な航空ショーや軍事的な性格だけのイベントと誤解することは許されますが、実際のところ、
このイベントはAIを活用した農業プロジェクトから電気自動車の設計までのあらゆるものを含む、30以上の技術コンペが開催されるテクノロジーの祭典なのです。
https://wired.jp/article/to-win-the-next-war-the-pentagon-needs-nerds/
AIによる戦争が現実化する時代 米軍での「高度IT人材」の不足が深刻化 WIRED 0531
この国は変えられる AIの活用 JDSC/4418テンバガー候補
https://jdsc.ai/news/ シニアマーケティング ゆこゆこ JDSCのAIを導入CVRが平均2.4倍 電力データとAIによるフレイル検知の実証を開始/中電 gpsの時刻で補正できるから、実は安定度もそこそこでよかったりします
完全自立で動くのは、gps受信機が壊れた時ぐらいかな お−、少し感心したw >>438
じゃ、オマージュで、こんな所でAVRを売るな 秋月から届いた荷物を開けたらなにか違和感が・・・・
なんだろう?と思ったら、袋にパーツだけ入ってんのが多数
前は必ずペラ紙でデータシートなり注意書きなりが付いてたと思うんだが
あれなくなったら秋月で買う意味半減だなぁ~ そんなのwebに記載してくれたら充分だ
人件費もタダじゃないんだぞ
たったそれだけの事で1個30円の部品が50円になったら200個で4000円も値上がりしてしまうぞ >>451
そんなん200個に一枚でいいんだから、¥4000も上がるわけない 昔PIC買った時はそのマニュアルが付いてたような気がするな。
マイコンのハードの説明、インストラクションマニュアル、プログラミングインタフェースまで一式。
それでプログラマーやらアセンブラ(アセンブリ言語でコードを書いたという話じゃなく、まさにアセンブラそのもの)やらを作って使ってたよ。
当時インターネットもやってなかったから、それが無かったら資料の入手の仕方も分からずマイコン工作はできなかったな。 A「紙が入っていない部品だけの袋が多数。秋月で買う意味半減」
B「1個30円の部品が50円になったら200個で4000円も値上がりしてしまう」
A「200個のうち199個は、紙が入っていない部品だけの袋でいい」
ナニコレ。
どうであれ、時代が違うんだ。
メーカー資料でも、秋月のオリジナル商品の資料でも、ダウンロードできれば済む話だし。 入荷したらすぐに10個入り袋を作りはじめる
200個注文すると10個入り袋が20個届く
それが秋月 んなことはない200個も注文が来るようなもんンは100個入りとか200個入りとあがある
次あほなこと言ったらアボ~ンするぞ 表面実装の電池ホルダー100個頼むと、リールテープなのに1個ずつ切られてる・・・
マウンターに使えないじゃん。
LED100個だと10個カットが10個だしさあ・・・ トランジスタなら両面1ページで済むけど
PICのすんごい要約した奴を紙もらって嬉しいかな?
また別にダウンロードした奴を読む事になるんだが。 >>459
長い説明書が無いと使えんようなもんは、昔は、縮小コピーで1枚に何ページぶんも入ってて、
説明通りに折りたたんでホッチキスで止めて切り開くと冊子になるくらいのが付いて来てたんよ
ネットで探す必要なしだった。初心者にやさしい店だったのだ
時代っちゃ時代だけどねえ 液晶には説明書が入ってたけど結局捨てるから、PDFでダウンロードの方が便利。
秋月ネタが続きそうなら、専用スレが有ったはずなので、そちらへどうぞ。 >>454
かがくぎじつ は日進月歩っていうし、
常識という名のcommonなsenseも、
その三レスの間に進歩というかupdateしたんじゃね?しらんけど;へQへ) かつて大量に買い込んだぷりんとごっこがようやく弾切れしただけじゃね 単品でも袋詰め作業してくれる秋月は神
秋月の頑丈なパーツ袋は再利用価値がありすぎて重宝してる 秋月のパーツ袋は材質がPEじゃなくてPPだからガスバリア性能が高いからね。 ppなんか知らんかった
peって結構ガス通るよね、中でなんか腐らすと外まで匂ってくるし 内蔵オシレータ校正レジ:OSCCALて読み書きできる風に書いてあるけど
0固定値しか返ってこないやんけ
今現在の設定値をどうやって知るのかね? >>469
いろんな値を設定しながらWDTの周期と照らして自己分析 >>469
あんたのプログラムのバグだろう。
デバイス名も言わないしそんなに困ってないのかな?
ただのグチか。 メガ328pだよ
おまいらのメガ328pは愛想いいかい? ソース見たわけでもないのにバグ断定とか何様
そういうこと言ってたらなんも書き込めないっての
ばぐだろうがなんだろうが話のネタなんだか別にいいじゃんよぉ カスタムbootloaderでOSCCALのセットを行えるようになっていてそこの値が0になってるくらいしか思いつかないな
Tiny202とかの新シリーズはプロテクト外して変更するけど旧シリーズにはそんなもの無い、生でいつでもさわれる makeする際にOSCCAL_VALUEというオプションがあってわからないからとりあえず0に設定したというのを忘れているんじゃないか まあそれでも最初にセットするだけだから他の値にすればそれが返るよな ところで校正レジスタの値って、初期値は何が設定されてるの?
工場出荷時にちょうどいい値が書いてあるの?
控えずにそれ書き換えちゃったら、もう元には戻せない感じ? >>477
<引用
工場出荷時、8.0MHz±10%となるOSCCALの値を測定して、その測定結果を「キャリブレーションビット」に書き込んであります。キャリブレーションビットは、普通のレジスタとは違って、CPU命令ではアクセスできません。
ヒューズビットなどと同様にして読み出すことができます(ユーザは、キャリブレーションビットには書き込みできません)。
リセット中自動的にキャリブレーションビットに記録されたデータがOSCCALレジスタに転送され校正された8.0MHzで発振します。
/引用>
Nanoでみたら173(0xAD
)がセットされてた、100に変更できた、リセットすると173に戻った 読めて当たり前なものが読めないんだから、脳かプログラムのバグだろうさ。
データシートすら読めないんじゃ話にならんよな。 >>478
おお、ありがとう。
じゃあ間違ってプログラミングして 0 になっちゃうってことは無いのね。 >>479
レジスタ読むだけなんだからバグの入る余地が無いと思うんだけど
余程の初心者か奇天烈な事してなきゃ
たったこんだけだもの
void setup() {
Serial.begin(115200);
Serial.print("osccal=0x");
Serial.println(OSCCAL,16);
}
void loop() {
} >>482
Arduinoおもちゃ扱いしてるお前すげぇーー!
超頭いいじゃん!もしかして神? へ〜
format指定はHEXじゃなく16でもいいんだ C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\print.h
#define HEX 16 ササっと検証して結果を出す>>481
何もせず愚痴ばかりの>>482 他にすばらしいものがあるという信念を持っているなら当人にとってそれが真実であり別に侮辱では無いと思うが
残念ながら彼は行動が伴ってないので残念な子になってる フト、AVRでLチカ作ったら最少で何行のASMファイル、
何個の実行命令があればいいんだろ?と興味が湧いて、
8MHzのmega328で1秒周期のものを作ってみた。
;<<< Lチカ mega328 >>> 周期1秒(システムクロック8MH)
C:000000 9a55 SBI $0A,5 ;ポートDの第5ビット(11番ピン)からLEDへ出力
C:000001 e3d2 Loop1: LDI R29,50 ;R29レジスタで0.5秒ディレイ(10ミリ秒を50回)
C:000002 e5f0 Loop2: LDI R31,80 ;Zレジスタ(R31:R30)で10ミリ秒のディレイ
C:000003 9731 Loop3: SBIW R30,1 ;Zレジスタ-1
C:000004 f7f1 BRNE LOOP3 ; ゼロになるまで繰り返す
C:000005 50d1 SUBI R29,1 ;R29レジスタ-1
C:000006 f7d9 BRNE LOOP2 ; ゼロになるまで繰り返す
C:000007 9a4d SBI $09,5 ;0.5秒経過したのでLEDのオン・オフを反転する
C:000008 cff8 RJMP LOOP1 ;次の周期へ
良い子の皆さんには薦められないかな?
上級者のマウンタの方々が、ま、うんと気にするようなものではありませんw >>491
mega328 使ったこと無いんだけど、SBI $09, 5 で ON/OFF が反転するの?
単に High になるだけのような。
というか、IO の $0A は DDRD で $09 は PIND で合ってる?
出力を変化させたいなら PIND じゃなく PORTD($0B) だったりしない? >>493
ちょっとマニュアル確認した。
PINx への 1 の書き込みはポートの出力反転なんだね。勉強になった! 内蔵オシレータを観察していると3.3Vのほうがバラつきが大きいな
温度変化に対する感度が5Vより高いからか
電気特性の表どおりの傾向を示している
工場出荷値は5v/3.3vに合うように低めに調整してるが
CAL値の感度は5Vの方が高いからむやみにあげるのも考え物だな Visual Studio 2019ベースに移ったりしないのかな。 >>494
出力反転命令のニーモニックがSBI(Set Bit in I/O Register)というのは問題だよねぇ
分りやすいのに、なんでTBI(Toggle)などにしなかったんだろ
たとえば、「TBI 9,5」とい文字列からアセンブル変換すれば済む話なのに。 >>498
言ってることは分からんでもないけど、インストラクションの問題じゃなくIOレジスタの振る舞いの話だからなぁ
x86 の分岐ジャンプなんかでエイリアスがいっぱい用意してあるようなのとはちょっと違いそう。
もしその TBI案の場合、IOレジスタを限定する必要が出てくる。
でもそういう制約がきちんと実現されたエイリアスならあってもいいかなという気もする。 アセンブラが文字列「TBI 9,5」を16進数「9a4d」に変換してくれ、という簡単な話です。
もちろんオペランドの数値チェック込みで。
昔だったらアセンブラを自作したけど、今はもうそんな元気は無い・・・ うーん・・・カタカナばかりで何言ってるかわからん!!(^p^)
インストラクションは命令の事だろう、
レジスタは知ってるぞ、抵抗器だな(違)
分岐ジャンプは論理演算条件分岐のことだろう、
エイリアスというのが絶望的にわからんなぁ・・・
よし、(^p^)がこの異世界に転生したときに女神様から頂いた
特殊チートスキル「ぐぐる」発動!!
エイリアス【alias】とは、偽名、別名、通称などの意味を持つ英単語。
ITの分野では、ある対象や実体を、複数の異なるシンボルや識別子で
同じように参照できる する仕組み
なるほど通名ってことか! なんという在日テクニック。つまり、
『x86 の条件分岐命令等で通名が潤沢に確保済の状況とは些か違いが予想される。
TBI案下では入出力用途に用いる置数機は限定する必要性が生じるが、左様な制約が
徹底された通名なら破綻しない可能性もありそうだ』ということか。
よし、なに言ってるかわからん!!(^p^) >>503
基本的で重要な命令だから、アセンブラがちゃんとサポートしてほしいんだよね。
意味不明、ワケワカメ、何それ?がイヤなんだよね。
>>504
調子悪いのか?ちゃんとオチてないぞ。
書き込み禁止の影響か?無理するな。 >>505
それ言ったら割り込み要求フラグのクリアも特殊だから、専用の記述を用意するの?
それに IO のトグルにせよフラグにせよ sbi で 1bit 単位でやるばかりじゃないから、やっぱ微妙だなぁ >>506
I/Oレジスタと割り込み等の制御レジスタは異なるものだし、
「反転する」と「セットする」、「リセットする」も異なる動作だと思う。
SBI命令の対象ビットはビット番号の0-7で、1ビットしか操作できません。
複数ビットを同時に反転するときは別の手順になります(当然ですが)
これから病院に行くのでこれで。 by もうすぐ棺桶に両脚をつっこむジジィ へー。他マイコンでは ビットセット命令が 実態が read modify write だったりして他ビットに
不本意にもアクセスしちゃう副作用があったりもしましたが、AVRでは
ちゃんと単一ビットだけのアクセスが用意されているだなんて
洗練された石なんですなぁ・・・ ごいすー >>507
SBI 使ったら 1bit 単位だけど、OUT で複数bit まとめて反転もできるでしょ。
そしてそのピンの反転動作はそれが単なるレジスタではなく I/O の機能としての実装であり、割り込み要求フラグに 1 を書くとその値とは裏腹にクリアされるのといっしょ。
TBI案はプロセッサのインストラクションにではなく I/O の動作にニモニックを与えることになるから、レイヤーが違うというか、やはり異質だよ。
PINx を操作するためだけのニモニック、TIFRx を操作するためだけのニモニックとか、そんなのあったらややこしくなるだけでしょ。
だから I/O の挙動を踏まえた記号が欲しいなら、マクロが妥当だと思うよ。
別の例だと、同じインストラクションにローテート ROL Rd と加算 ADC Rd, Rd の異なるニモニックが付けられてたりするけど、これは至極妥当だと思う。 ニーモニック云々はおいといて
mega328とか8ビットそろって出てないとか出てても他の機能と共有で
全ビット使えねーじゃんってなって、うなってたら
一ビット操作命令があるの知ってほっとした
1クロックだし >>509
あなたと私の間にはとんでもなく深くて暗い川がありますね。
命令とは何か、アセンブラとは何か、というレベルの認識や理解度の違いだと思う。
書かれている内容も抽象的で私はついていけません、ゴメンネ、ゴメンネェw >>509
ADC Rd, Rd はキャリー0とした演算を期待するけど
ROL Rd はキャリーを含めた回転になってるな
LSL Rd ならキャリー0としたシフトなんだけど
ホントにADCとROLのコード同じなん? >>512
1f00 ADC R16, R16
1f00 ROL R16
ちなみにこれは AVR のインストラクションマニュアルに書いてること。
>>511
抽象的も何も、プロセッサの挙動なのか I/Oデバイス固有の挙動なのかの話で、I/Oデバイス固有の挙動に対してニモニックを定義するっておかしいでしょと言ってるだけよ。 >>512
>ADC Rd, Rd はキャリー0とした演算
どういうこと? >>514
ごめんごめん、ADDとADC混同した
俺の勘違い ニモニックを自分用に読みやすく変えるだけなら
適当にdefなり書いて最初に読ませとけば済む 同じレジスタの加算=左1ビットシフト は2進数だから当たり前 つまりLSL命令は冗長(無くても構わない)ってことだな
プログラムの流れによって適切に使い分けて下さい、というアセンブラ(CPU)メーカーの思いやり
他にもある 3ビットシフトとかどうすんの?
ADD Rd, Rd
ADD Rd, Rd
ADD Rd, Rd
で出来るか。 >>519
すくなくとも AVR では LSL は ADD Rd, Rd の別名としてしか存在してないな。むしろディスアセンブラを作るときに悩みそう。
ところで、AVR のローテートが必ずキャリー経由というのはちょっと使いづらいよね。
ROL を ADC で代用してる都合でもあるんだろうけど、それならせめて BLD のキャリーフラグ版が欲しかったな。 逆アセンブラ、オプションでどっちで表示するかきめればいいだけやん AVRプログラミング最近始めました。
良く分からないままネットで見付けたソースを適当にコピペして
組み合わせるとだいたい動くんですが、そんなやり方で上達するでしょうか?
みなさんどんなふうに勉強しています? プログラミンしないでプログラミングが達するわけない うわ、脱字がw
まあ、美味しい惣菜を買ってきて適当に盛り付けてると、みんなおいしいねってほめてくれるんですが
これで料理がうまくなるでしょうかって言ってるみたいなもんだw そのうち「ここはこうしたいな」とか出てくるから、その時ちゃんと学べばよい 趣味でやる分にはそんなんでいいよ
大事なのは長く続けること 上達というのはやってるうちについてくること。
目下のこととして、コピペでもなんでもやりたいことがやれてるなら立派なもの。 やってるうちに付いてくること、すなわち、やらないのに付いて来ません 他にもたとえば NOP と MOV Rx,Rx は同じ動作になる(機械語は異なる)
つまりNOPは不要で、MOVで代用できる命令だが、
プログラマとしては無操作を MOV R0,R0 などと書くのは心理的に少し抵抗があるw
代わりにアセンブラが文字列NOPをたとえば MOV R0,R0 の機械語$2C00に翻訳してくれるなら
それは勝手にどうぞ、になる。 >>531
MOV だとフラグが動いたりするかもしれない。 命令MOVはNOPと同じくフラグは変化しません。
空いたNOPのコード$0000を他の用途に使えます。 NOPは機械語が全ビット0になるのがいいところで
間違ったところをNOPで上書きするということができる
今どきは毎回アセンブルなりコンパイルなりして、全部書き換えちゃうから意味なくなっちゃったけど
ハンドアセンブルしてた頃の名残ですねえ フラグが変わるのは68系だっけか。
そもそも MOV R0, R0 自体意味がないんだったら
それに別の命令を割り当てればいい。 >>536
その辺はハードウエアで構成されてるから意味のある命令を実現した結果無意味な命令も存在してしまうってだけのことで
ソフトウエアとちがって、他に割り当てるってのは簡単じゃないのよ >>537
難しくはないよ。
単にデコーダの話だし。 じゃあ、無駄な命令コード判定して他の機能に飛ばすデコーダー設計してみてよ >>526
多くの完成品を見るだけでもレシピや処理方法の幅が増えるじゃないか
プログラムの場合も環境やライセンスの問題で最良と思える方法が使えないのはよくあること
実装手段が増えるとそこで頭を抱え込まずサっ別案出せる 無骨な書き方でガシガシコーディング
他人のソースみて洗練された書き方に置き換えていく
細かい文法の理解なんて後付でかまわん サッカーオタクが、いくらプロサッカー選手の素晴らしい試合を見たところで
一流の選手には、なれませんて しかし、他の選手を一切見ることも分析することもナシに一流になった人もおらんだろうな。 あら探ししかできない奴は良い所を取り入れる事ができなくて
いくらコピペしても進歩っしないんだろうなとお前ら見ててそう思うわ まっ、半年放置してから見直してすぐやっていることが理解できるなら
それほど悪いコーディングではないだろう。 >>548
半年後に見直してわけ分からないが、よくよく読むと昔の俺すげーってなる。 ついつい、トリッキーなの書いてしまうから
翌日すでにわからないw 機械語$0000のNOPが代用できるなら、BCD演算(補助)命令 にでも変えてくれ。
8ビットPICにもあるんだし。
なんて書くとCプログラマから、BCD命令なんか要らん!、と猛烈な反対意見が来るけどw
あるいは、コード1ワードでは足りないが、複数のレジスタ組みの中から
一組みを選ぶSRB命令select register bank とか。これは強力だぞ。
ついでに書いちゃうけど、tinyにもDMA欲しいw >>539
Z-80 なんか 8080 の空いてた命令コードに
4バイト命令割り当てるとか無茶苦茶やってたろ。
CPU を Verilog とかで書くの難しくないよ。
このへんとか見てみたら?
https://opencores.org/projects/avr_core 1ゲートは血の一滴・1byteは血の一滴
そんな時代もあったよねー
8bitでチマチマ貧乏くさくやりくりするのは時代に逆行している >>543-545
サッカーでは下部団体でも選手になれない(たぶん一般人はこういう人を三流未満のサッカーと考える)ような偏差値でも、エンジニアなら給料をもらえている。
エンジニアの学びは一流になれるかどうかの人から、十流から九流にステップアップする人まで幅広い。もっと多様にとらえたらいい。 CPUやメモリが貧弱だったころならBCDもメリットあったが
多倍長演算ライブラリで楽勝なんだから今時BCD使うマゾなんておらん BCD演算より EORI を用意して欲しいな。
ADDI ADCI は SUBI SBCI で代用できるけど EORI はどうにもならん。 演算効率なんて言い出したらキリがない
16bitや32bit逝った方が良いやんけ
あっちは乗算器完備や
8bit2KBの世界でチマチマ貧乏くさくやるから楽しいんだろ? >>552
あれは CISC だからマイクロコードで例外的なデコードなんかもやれただけじゃね。
RISC はマシンコードの特定のビットだけで行う演算を確定できるようなシンプルな設計が基本でしょ。
命令がレジスタの組み合わせまで見ないと決定できないのはデコーダにとってそこそこのコストを強いると思うけどな。
もちろん回路規模増やせばできるだろうけど、そのために消費電流増やすのもね。
>>557
そうだよ、ある種の縛りプレイを楽しんでる。
だからこそこの命令があったら 1クロック 1ワード減らせるのにって思うんだし、そういうことを言うこと自体も楽しいんじゃないの。 >>559
縛られてる中で雑談するとなんか問題でもあるのか? >>558
Z80でマイクロコードとか何を言ってるんだ?
そもそもCISCとかRISCとか意味あるんか?
8051はRISCか? BCD演算にトランジスタ使うくらいならタイマの本数増やしたほうが余程有益だ >>528
長く続けても全く上達しないことはどのジャンルでも沢山あるので、その中で何に焦点を当てるかを伝えた方が聴く側としては得るものがあると思います 結局ねレジスタファイルの数だけですよ
せや!スタック使わなくても済むくらいレジスタファイルの数を増やせばいいんや! >>561
Z80 はマイクロプログラム式だろ?
それでブロック転送みたいな複雑な処理や DJNZ のような複合命令を実装してるんだろ? まだ、その手の技法を積極的に取り入れて設計出来る様な集積度の時代では無い
試行錯誤しながら頑張ってゲート数減らしていた時代の話
マイクロプログラムとかは、当時のミニコンや大型の技法だな >>565
djnz も jr z も2/3サイクルだぞ。
もしマイクロコードで
DEC B
JR NZ, hogege
ってやってたらサイクル数違うはずだが。
ちなみにDJNZは8051にもある。 z80なつい
時間稼ぎに、レジスタもフラグも変化せずクロックを激しく消費する命令とか探して使ってたなあw
AVRなんか、ほとんど1クロックだもんなあ そんなことよりMC68000_DIPパッケージのでかさに驚くべき >>531
x86とかそんな感じだったけど、
x64になったら動作が異なるようになったから、機械語分けなきゃならんくなったんだけど、
NOPはそのまま居座って、本来の方が別の機械語に左遷されたりw >>557
AVRのビット処理は簡単で速いぞ、>>491
AVRは機械のI/O制御に向いている。
演算はしょうがないな、なんせ8ビットだから期待する方が間違っている。 軽トラとF1カーを比べるようなもんだな。
軽トラはスピードは出ないが、農道で収穫物を運べるw そうそう、アメリカではメチャ古い軽トラが人気あるんだって。
(詳細は検索して) >>575
新しいのは規制がかかって輸入できないから古いので我慢してるんだけど >>575
25年以上前の車は輸入税軽減があって
何エーカーもある広大な個人の庭や畑をゴルフのキャディーカートのように乗り回してたり
ミニカーのように集めてたりしてるのディスカバリーでみたわ プログラミングが趣味なら演算処理プログラムをAVRのアセンブラでチマチマ書くのもまた楽しからずや 秋月でも AVR の値上げ予告が出るようになってきたね。
この円安進行じゃしょうがないな。 あまりAVR関係無いけどマイコンの外部バスに自作のベリフェラルを繋いであれこれするのってもう失われた技術なんかな
ググってもZ80とかの解説ばかりだし、最近主流の32bitマイコンの高速外部バスを活かす解説や作例はほとんど出てこない 外部バスがUSBやEthernetやPCIeになっただけじゃ? バスはメモリやI/Oを接続するためのものだから、
それらを内蔵しているワンチップCPUには本質的に不要なものになる。
CPUメーカーは需要に応じて何種類も製造しないといけないので大変だと思う。
たとえばエラッタが残ってしまうとか。
Z80の時代を思えば、完成品で動作が保証されているハードを入手できるのは嬉しい。
「あ〜今回もUART使わなかったなぁ、もったいないなぁ」なんて思ったりするけどw 枯れた技術なんで誰も話題にしないだけでしょう。映えない。
けど実際は使ってる。Z80の頃より便利。 >>575
そういや、つい先日も米国で軽トラがパトカーとカーチェイスしてて受けてたっけ。
ミッドシップの四輪駆動を舐めるなよってか? ノートPCとかだと裏面に拡張用のコネクタ剥き出しになってたりするけど
仕様も公開されてないしメーカーどころか機種毎に仕様違いそうだし
失われた技術というより現役で使われまくってるけど一般人にはメリット無い技術ってことじゃね
ラズパイのGPIOの方がはるかにまし
SPIもI2Cもあるっちゃあるけどちょっと意味が違う 今時、自作I/Oとか使う人いるのかなぁ、と思ったら私がやっていたw
今時とは言っても、もう何年も前の話だけど、
50芯フラットケーブル用のケーブルチェッカ(コネクタのピンが正しく接続されているか)を作った時に、
CPUのI/O点数が不足したので、出力6ビット使って外部にマトリクスを組んで対応した。
・・・純粋なI/O拡張とは言えないかな? ttp://www.picfun.com/partdigit.html
ttp://elm-chan.org/docs/avr/avrdma_j.html
この辺の話
前者はZ80想定って事でせいぜい数MHz・・・昨今の32bitマイコンなら10倍くらいは出るし
ウェイトを増やすかTC74VCXみたいな超高速のICを使うかFPGA or CPLD?
後者はSHのハードウェアマニュアルで紹介されていた。これ専用のモードがあるらしい >>581
MCUのつもりで書いたけどその辺のPC系インターフェイスをやっている人も少なくない?
その中だとEthernetをたまに見るくらいで次点でUSB FS?
USB SSやPCIe弄っている人はほとんどいないような
USB FS/LSだってEZ-USBが流行ってた頃の方が活発だった気も・・・ 今はメモリー(EEPROMやFlashとかだけど)はI2CやSPI接続普通だし
I/O拡張やリアルタイムクロックICも勿論、イーサネットだってSPI接続出来る訳だし
簡単な拡張はI2CやSPIで良い
なんなら595とかで3wire,2wireでやるんだし
パラレルバスは、高速な奴とか古い奴
FPGA/CPLDでSPI実装するのメンドイ時とか… >>591
USBは変換チップが色々出てるからやりやすくなったよ。
EZ-USBとか使わずにすむし。
AVRで言えばArduinoとか。
EthernetはRaspberry Piなんかで使うじゃん。 AVRといえばやっぱしv-USBじゃないの
Tiny85が有名だけどもTiny44とかのもっとプアなチップでもできるところがすごい >>594
tiny44でvUSB実装すると、本来の目的に
使うリソースがほとんど無いって事態に
ならない? USBって通信してないときでもCPUパワーを食いつぶすほど、
のべつ幕なしに、なんかしてないと、いけないものなの? >>596
リソースってCPUパワーだけじゃないと思うの。 CPUパワーのほとんどはUSBデバイス応答のためのポーリングが占めるから
空いてる数ミリsecだがの間に分散して処理を割り込ませないといけないよ >>597
あ、べつに反論してんじゃなくて、素朴な疑問だからね
USBいじったことないから、そんなにCPU食うのか?って思っただけね
他に何が必要?タイマー割り込み必須とか? >>598
ポーリングが占めるってことは、CPUはとっても暇ってことですね Implementing USB 1.1 in Firmware - V-USB
ttps://www.obdev.at/articles/implementing-usb-1.1-in-firmware.html てかmouserとか見るとtiny44って300円以上するけど
この価格帯ならUSBコントローラ付きのマイコンを買えね? >>601
そっちよりもRAMがなぁ…
残り100byteくらいになっちゃうから
うっかり関数コールや割り込みすると
ヒープ領域がとれずに一番嫌らしい
タイプの不具合が出る >596 の流れはV-USBの話しな。
チップ内に乗ってれば全然負荷少ない。 DIP8ビン主義の人と同じ匂いがする。貧弱マイコンでV-USBとか。 ジョイスティックを作りたいと思ってるんだけど
まだ何も調べてない、ちょうどV-USBの話題が出たので
ジョイスティックにもつかえるかな~とちょい期待
avrがジョイスティックになるにはどうすればいいんだろう
参考になるサイト知ってたら教えてたもれ Arduinoを使った作例は幾らでもあったかと思うが >>609
Atmega32U4ならいくらでも
tinyは聞いたことがないや ロースピードだと1パケット8バイトまでじゃなかったっけ
アナログ軸がいくつもあるようなコントローラは難しそう
PS4 DS4のレポートパケットは64バイト。もちろんフルスピード ラジコンのプロポをジョイスティック代わりに使えるようにしたっけな
(遠い目) 簡単な回路だし、ユニバーサルでいいかと、久しぶりにユニバでゴニョゴニョしてたら
デバイが応答しません的なエラーが・・・・・
久しぶりのユニバだし配線まちがえたかな~とチェックしてみても合ってるし
電圧計ると来てない ヲイ
ISPコネクタ抜いてコネクタ側計ると来てる・・・・
ん~~どっかショート?、がそれらしいところなし
結局書き込み機の電圧切り替えのジャンパーピンの接触不良というオチ
ジャンパーピンやばいね、スイッチに交換するかな >>608
digispark(T85)のサンプルに確かあったと思うからソース見れば? >>615
スイッチの接触不良嫌ってジャンパにしてるのに本末転倒やなw >>617そうなん?、コストダウンかと思ってたわ
どっちにしろ接触不良起こすことわかったから収穫 というわけで、そのままでテストボタン追加するか
スイッチに換えるか
電子スイッチ化するか
考えながら、もう寝る いちいち喧嘩売ってくるやつってバカなの?あほなの?
あぼーんするけどw 収穫を得るなら すけーぷごーと を決める事よりも
その不具合の内実にもちッと踏み込みませぬか?
ピンヘッダー側の異常なのかショートプラグ側なのか
ショートプラグ買い替えで改善するものなのかピンヘッダー側の清掃で解消する問題なのか
更に欲を言えば改善策を試す前に現状・問題の掘り下げをした方が同種問題の再発回避には有用でしょうし
指で触れた皮脂酸化による絶縁なら利用者側の落ち度に分類されると思いますしお寿司 >>622
頻発するもんでじゃないから、ほぼ検証不能なんよ
むしろ、頻発してたら、「またか」ってことで、
なんの疑問も持たずに、即行抜き差しで復旧して、あれこれ悩まずに済んでるw いつ買ったか忘れてるくらいだから、数年はノントラブル
そんだけもったら充分だともいえるね。
とはいえジャンパー抜き差しに、いちいちケースの蓋開けるのもあれなんで
スイッチにして、外からパチパチできるようにするわ スケープゴートって、無関係な物に濡れ衣着せて、非難と攻撃の標的にすることでしょ
そんなことしてないと思うけど? >>624
いつ買ったか忘れるくらい古いやつなら
接触不良になってもしゃあない。 >>626
それをふまえて、さて、これからどうしようかねえって話 ジャンパーはショートプラグを挿すときの指に伝わる感覚が大事。
抵抗なくヌルッと入るのは要注意で、
少し抵抗というか引っかかりを感じるようならOK。
具合の良さが何かと似てるなw 手触りてきには何の問題もなし
おそらく酸化膜的な物だと思う
5vデバイスしか使わなかったから
数年間抜き差し無かったねえ
あ、なら、直結でもいいかw USBってサンプルを動かすだけなら簡単だけど特定の目的に合った物を作ろうとするととたんに面倒になるイメージがある
ゲームのコントローラと言っても流派が複数あるし、動けばいいでなく仕様準拠を目指すなら更に手間がかかる >>608
最初は悪い事言わんからちゃんとペリフェラル載ってる奴を選べ
どっちがダメなのか曖昧になっちゃう
2作目からは好きに白。 上手く動かなかったらD+/D-波形とUSB仕様書をにらめっこになるんだからどっちもどっちじゃぁ >>633
数年たってもピカピカならそれもありだけど 2コンのマイクはどういう仕組みでゲームは何を検出してたかはしらないんだけど当時はすごいテクノロジーだと思った 接触不良その後、うわ、また出た再発?って思ったら
今度はIDCのほうだった、う~ん、定期的に抜き差ししろってか スイッチもそうだけど、ある程度電流流しつつ
オンオフしてないとダメになるね。 とはいえIDCなんて差しっぱで使うもんだよね
まいったな、IDCで配線した奴作ったけど、数年後にトラブルのが見えた イリソさんの金メッキ仕様のピンヘッダ+ショートプラグを採用した製品を、
長年 納入しつづけて使ってもらってるけどさ、
今のところ そこでのトラブルの話は うちにははいってきてないけどな。変更指示も無いし。
そんなとこでトラブル頻発するひとおるんけ? 世界は広いんやな。しらんけど;^p^) tiny85のカウンタ2個じゃ全然足らん!
どうにかしろ禿げ >>643
頻発じゃないからめんどいんだわ
たまたまであってほしい 某サウンドドライバは8bitTimerで62.5kの割り込みして8chの波形作ってたな avrネタじゃないんだが
gps受信機買ったら通信速度が違ってたんで、変える方法と問い合わせたら、何の交渉もなく、代わりの送りますってなった
で、代わりの来たら、コールドスタートの時間過ぎても、1ppsLEDが点滅しないし時刻データーが取れない・・・
これもナンカおかしいって言った後で1じかんくらい経過した時点で突然動き出した
衛星ロストしてたんか?っておもってごめんなさいメールしたけど、あれ?でも測位データは来てたぞ???
大丈夫か?この受信機 1個のカウンタを使い回す方法もある。ってレスは抽象的すぎるな、
足らん!、だけでは分らん!w >>648
センテンスは来ていてもまだfixしてなかったんじゃ無い? >>649
Arduinoスレでイベントの数だけタイマーが欲しいとか言ってたやつの同類 いやちゃうわ、今見てみたら
fixしてないと測位データが空のセンテンスが飛んでくるわ ファミコンだって60Hzの垂直同期割り込みだけで音楽やら変化する効果音も鳴らせばいろんなキャラのタイミングを取ったりしてるんだから、タイマーなんて1個あれば充分なんだよ。 タイマー下手に複数使うと、タイミングがお互い干渉してなかなかカオスなことになったりする 書き込み機のトラブルを乗り越えさあやるぞと・・・・
あれ?文鎮?
ヒューズまちがえたか?orz 1MHzで動かすことを信条としているからタイマの分解能をあげてタイマを使いまわす手が使えないことが多いのだ
わっかるかなー? わっかんねーだろうなあ >>657
500kHz で動かすことが多いけど、クロック数の関係でタイマー割り込み自体が使いづらくなってくるな。 タイマー割り込みは一つありゃ充分
その割り込み使ってすべてのタイマーのカウント処理しとけ 何がヌルいだ
ゲームで何1000キャラのアニメ処理や
裏でFM音源演奏してんのも全部一つのタイマー割り込みでやってんだよ PCのゲームなんて極端な例をあげられても困る
その高度なゲームは1MHzでカウンタ2個のプアな状態で動いているのかと >>663
661が言ってるのはファミコンとかの話だから
そまさにの程度のプアさだでw 何言ってる
CPUが生まれた時からある普通の技だ
カウンタ2個しかないとか、タイマー割り込み4つしかないとか
嘆く奴が間抜け その時代ハードの支援もない232Cは300ボーの世界やないか
画面はどうにでもなるが通信のタイミングはそうは行かない んで結局何がやりたくてタイマーが足りないんだよ?
それ言ってみ? 文句言いたいだけだろ
4kしかないTiny44でもV-USBできるよっていったら、それじゃフリースペース残らないとか
だったら8kのTiny84にすればいいだけなのに
目的もなくぐだぐだ言いたいだけなんだよ Uart-SMbusブリッジですがなにか?
まあボーレートめっちゃ遅くすりゃタイマ割り込みスライスでどうにでもなるからとりあえずやってみるが >>664
ファミコンはキャラ何千個も動かせないよ。
FM音源なんてずいぶん後の時代だしね。 >>671
カウンタ2個で足りないの?
システムクロック 1MHz でやるから大変って話? >>674
すごいよな。
正確に言えばタイマー割り込み的というか、ただ 60Hz で割り込みが入るだけで、カウンタは必要な数メモリ上に取って自分で数えるんだけど、メモリもそんなに潤沢に使えなかったしな。
1個の割り込みで全部やるから、キャラが増えると割り込み処理内で処理を完結できなくなり、次の割り込みを取りこぼして全体的にテンポが半分になってしまったりしたな。
あとラスタースクロールまでさせてたな。走査線割り込みも無いのによくやるよ。 1MHzを256分周して1tickとするやん?
※256ステップ以下にはしたくない
こいつを使いまわして同期タイミングをつくるとすると
4800baudで誤差max58.5%でアウト
2400baudで27.1%
内蔵オシレータ誤差10%割り込み応答遅れを見越すと2400baudがせいぜいてとこか
1200baudだと12.7% 600baudで5,2% ちょうどいい周波数の水晶にするという発想はないんかい >>676
1MHz を 256分周だと割り込みは 3906Hz でしょ。4800baud で誤差 58.5% ってどういう計算なの?
のっけから 256分周以下を避ける事情は分からんけど、208分周なら 4808Hz の割り込みにできるのに。
割り込み処理に飛んできて iret するだけで 14クロックくらい取られたと思うけど、差し引き 196クロックあったら割り込み処理としても結構なことできない? スライドswでボーレート変えてるパソコンもあったな シリアル用の分周期はだいたい2の累乗分の1しか設定できんからそれの思い込みじゃね? 1カウンタUartにミートさせるなら最初から割り当ててしまったほうがいいし
制御線の変化割り込みをカウンタ値でぶった切っていったほうが精度が出る
とにかくUartのタイミングとTickの相関はなしで
ステップ数の確保のほうが大事でーーーす 208分周とか。。。誰でもまず考え付く発想はやめてくれよ(´・ω・`) >>683
>制御線の変化割り込みをカウンタ値でぶった切っていったほうが
↓
カウンタ値を制御線変化割り込みでぶった切るほうが LQFP100な32bitマイコンのタイマが2本じゃ足りない→判らないでもない
DIP8なAVRのタイマが2本じゃ足りない→そんなに何に使うんだ? >>686
タイマーがPWM兼用だとねー
3chPWMで使って!とかはねー ゲームショーが刑務所に聞こえたり
会社という場所柄でのストレス溜めすぎは毒だわ DIP8なAVRのタイマが2本じゃ足りない→必用な数だけDIP8ならべる。
→全体の管理用にもう1個追加する。
どう?w タイマーじゃないけど、60ほど出力足りんからシフトレジスタでって図面書きかけて
シフトレジスタてんこ盛り・・・・・・
もいっこmega8乗っけりゃいいじゃんですっきり あら、送っちゃった
慎重にやれば、ヒューズなんて間違わんだろうと思って、基板直付けで組み立てて慎重にやったはずだけど
文鎮になちまった、応答しないから、どういう値が書き込まれてしまったもわかんねえw
というわけでZIFソケットを用意してヒューズ設定まではこっちでやることにした
で水晶発振モードにするとき、周波数帯によってヒューズ設定違うみたいだけど
これ違う周波数の水晶繋いでもとりあえず動いちゃったりしますかね
合わせとかないと発振しないということだと水晶も交換できるようにしとかなきゃだし
設定する間ぐらいなら、なんとかなっちゃうようなら適当に直付けするんだけど >>693
足りない分だけで60って、何作ったの? >>696
想像ついてるだろうけど
時計だよ
秒針代わりにLEDw >>697
想像は付いてなかったけど、なるほど理解した。
少ないピンで点灯させる方法はいろいろあるけど、マイコン足すのが結局簡単で安上がりになりそうだね。 >>698
値段的には、びびるほどじゃないけど、かさばるのがねえ、それに
ハードでやっちゃうと、こうしかできませ~んになるけど
プロセッサだと、あとからいろいろできるから気が楽
まるちぷろせっせだぜ、いえ~い ヲイ LED点灯するだけならマトリクス組む方法もある。
PWMで明るさを変えながら、複数LEDを流れるように点灯するとか、
周囲の明るさをセンサーで検知してLEDの明るさも変えるとか、
CPU使えばアイデア次第で色々出来そうだね。 60点なら高価なマイコン使うより8x8のMAX7219でよかったんじゃないの?
俺はアリエクで28円で買ったのいっぱいもってる >>701
mega8が高価なマイコンになったのか。
日本も貧乏になったもんだな。 そういうトゲのある言い方はよくないと思いまぁす。
それに1円を笑う者は1円に泣く、というじゃありませんかw 7segで秒無しで設計
ハード組み立て
やっぱ秒ほしいかも
追加しよう
秒表示部設計←今ここ
MAX7219の存在自体知らなかったので(汗
次があれば使うかも LED円周でならべると駄菓子屋にあったコインがn倍になるルーレット思い出すな モーターにLED付けてタイミング取って点灯させれば、LED用に1出力、同期用に1入力でやれるな。 >>706
できるできないで言えば、なんでもできるさw
機械式時計は、深夜音が耳についてしょうがないことがあるので、選択肢から外してます あ、7SEG時計だから丸くないのよね~
丸いの想像しちゃった人ごめんね~|
時計といえば、普通丸いと思う罠~ >>709
HDMI 出力でもいいね。AVRじゃ厳しいか。 NTSCならやれるかもね。
ずっと昔にPICでブロック崩し作った人いたよね。 演奏側
ドラムの音が気に入らね~
俺が求めてるのは、そんな音じゃない
スタジオにあったいろんな物を叩きだす
「これだ」「この音だ」
その時たたいていたのはイショウケース
無事レコーディング完了しましたとさ
オーディオ屋
イショウケースをすぴーかーぼっくすにしたら、とっても気に入った音が出たんだが
こんなもの認めるわけにいかね~、なかったことにしようw >>716
ここって、IDで検索して人の発言集めてる人が住みついてるから
きっとその人が、おしえてくれるんじゃない?w フューズ設定器その後
一個もレスつかんかったので
とりあえず水晶交換できるようにしようと、ソケットを探したら
ジャンクに転がってたコネクターがちょうどよい大きさだった
で、さっき水晶が届いたのでさした・・・・・あれ?刺さらない
うーむ、プランプランするのを止めるため接着剤で固めたら
接着剤が先まで染みてきてしまってるようだ
毛細管現象恐るべし
一分硬化型とかじゃないと間に合わねえですかそうですか >>716
初心者系スレで
フィルムコンデンサの話題から
ピュアオーディオ系話題に
連鎖していった文脈があって、そのなかで
その投稿を見かけた気がする。
>>704
2^6=64>60だから
6個のLEDで二進ヒョージはドデスカチュチュポリン 2進直読は、私の勘ピューターオーバーヒートするので、いたしません LED に高周波を流して AMラジオで聞くとかでもいいな アセンブラで遊ぼうってことで
テストコードを、適当にでっちあげアセンブルして
リストファイルをみてみたらコードセグメントのアドレスが?????
ぐぐってみたら、2バイト毎に1増加だとか・・・
コードセグメントのデータ参照でラベル値をそのまま使うと明後日のアドレスを引いてしまうとか
んわ、凶悪 >725
それって、AVRコアが世に出てから四半世紀
AVRコアの特徴上当たり前なのでは? attiny85のピンが2本多かったら世界の歴史は変わってた(´・ω・`) ケースにちょうどよい大きさの2バイ材の端材があったので、ホジホジしてたら
ん?なんか、節が飛び出してきている
裏側は面一だし、もしかして成長してんの?ほえ~
あ、このスレでケースの話題はまずかったかなw >>729
水入れた皿に入れておけば端材が取れ放題。tiny13もブレッドボードに刺しとけば85になったりせんのかのう。 >>730
ピン間隔が25.4mmのtiny13になるだけだろ? ドラえもんのビッグライトで大きくしてからハンダして、スモールライトで元に戻したいと思う今日この頃 >>735
ああ、あれは読めないなw
小さいからというより、単純に見えづらいよねあれ。
切り欠きが無いパッケージの向きの判別にめちゃ苦労する。 俺はもう開き直ってICに文字書いたシール貼ってるわ ここだったかな?、片栗粉で見える様になるって聞いて
片栗粉無かったから、白ペインをなすりこんだら見やすくなったけど
いちいち全部やってられんのよねw >>737
若いときにシールの文字の向きを信じてp-rom交換したら、逆向きに貼ってあって
rom潰して酷く起こられたことがある、www 片栗粉つかうんか・・・
「タイト気味の熱収縮チューブ装着」するときなんぞに
タルク(滑石粉)としてのベビーパウダーは便利に思う事はある。
ジョンソンアンドジョンソンのは香料がすきじゃないのでお勧めは和光堂(の紙の容器の奴、まじ良い香り)。 ちなみに今の片栗粉は、ジャガイモから作ってるらしい アセンブラで遊ぼう2
ちょっくらタイマーを使いたかったんでデーターシートを見るが
なんで一か所にまとまってないんだ~~で、めんどくさくなって
きっとどっかにコピペできるソースがおちてんじゃないかと探すけど
無いね~
でも、一つ収穫が有った、カウントアップして即座に0に戻らず、次のクロックで0に戻らしいので
一個余分にカウントするらしい、タイミングチャート見ればわかるだろと言う話ではあるが
結構みんな、やらかしてるみたいね 見にくいマーキングはエレクトリックフラッシュ付きのデジカメで撮影 デジカメだと接写どれくらいまで効くんだろう・・・(^p^;
老眼にはUSBマイクロスコープの方が いろいろやさしい可能性も微レ存 >>744
ダイソーとかのスマホ用マクロレンズが手放せない ATtiny202 の内蔵オシレータって、買ってきた状態では 16MHz と 20MHz のどっちになってるの?
これってヒューズで設定する以外、プログラム自身で切り替えたりはできないよね? つかその前に、ATtiny202 って USBASP じゃ書き込めないのね?
アセンブラでコード書いてるけど、同じようにタイマーを使うだけでもかなり書き換える必要があるし、すごく別物感があって使いづらいなぁ… >>742
ソースくれ
割り込みが何クロックか遅れるてはなしだろ?
でないとOVF割り込みは使い物にならんて話になってしまうま >>748
742 じゃないが、割り込みが遅れる話じゃなく、カウントが比較値やTOP値に到達してもフラグが立つのは次のクロックってことを言ってるんじゃない? >>748
あ、CTCモードの話ね、他のモードは、まだ見てないけど
データーシートのコンペアマッチのタイミングチャート見れば意味はわかります
カウントアップしてコンペアマッチした瞬間に0に戻るんじゃなく、つぎのクロックで0に戻る
つまり、1,2,3と数えるんじゃなくて、0,1,2,3と数えてるって話 で、ソース書き上げて、up、あれ動かね~
ソースけずって、LED点けるだけにしても点かない(うそ~~ん)
自信なくすわぁ 同期系回路ではあたりまえの動きをしているようにしか思えんのだが
誰か
>>750が何を言いたいのか解説頼む 750 はインド人より数千年遅れで 0 を発見して嬉しくて仕方がないんだろう そのあたりまえを、間違えてるのを気づいてない人が結構いますねえってはなしだよ おまいら、ほんとうにディスりたくって仕方ないんだな h8だとマッチと同時に0クリアみたいに書かれてるから、当たり前ていいかたも、あってるのかどうか? >>757は、タイミングチャートが手元に無いので、ググって出てきたアプリケーションノートにかいてたことなんでタイミングチャート持ってたら見てみて >>746, >>747
tiny0系はxmegaの流れをくむものなので別物と思った方がいい。
起動時は基本的に20MHzの6分周。
ヒューズであらかじめ16MHzにできるが、プログラム自身ですべてを起動後に設定する前提。
したがってあとから自由に変更できる。 USBaspがUPDIに対応した話は知らない。調べたことないから。
SNAPでも買えば? いけるよ。(経験済み)
わざわざ買うには高いけどね。 UPDIならATtiny416-XNANOをライター
代わりに使っちゃうのが安上がり
…と、思ったらずいぶん値上がりしてるな >>759
>プログラム自身ですべてを起動後に設定する前提。
どのビットで変えられるの?
データシート見たけど分からない。 >>764
ちょうど俺もそれ聞こうと思った。
データシートもなんか見慣れないというか、なーんか読みづらいなぁ
あと UPDI での書き込みは USB-シリアル変換に抵抗とダイオード足せばいけるみたいね。
秋月で FT234X モジュール買ってきてみた。
うまく書けるといいけど SOIC DIP 変換基板買い忘れてなんか面倒になってきたw >>765
202 は良く使うけど、20MHz と 16MHz を
ソフトで変えるなんてやったことないし
コードも見たことないんだよね。
ID:ukgZpk2Q は詳しいみたいだから教えてくれよ。 4809のコードだけど
void setCPUSpeed8MHz()
{
uint8_t oldSREG = SREG;
cli(); // suspend interrupts
PLLCSR = _BV(PINDIV); // dissable the PLL and set prescale for 16MHz)
CLKPR = _BV(CLKPCE); // allow reprogramming clock
CLKPR = 1; // set clock divisor to 2 (0b0001)
PLLCSR = _BV(PLLE) | _BV(PINDIV); // enable the PLL (with 16MHz prescale)
SREG = oldSREG; // restore interrupts
}
#endif >>767
それってプリスケーラの設定してるだけじゃなくて?
202 にはオシレータが 16MHz と 20MHz の 2つが入ってて、ヒューズでどっちを使うか選べるみたいなの。
で、動き出してからそのクロックを切り替える話ね。
ところでプリスケーラの設定変更には CCP の操作はいらないんだっけ。 例も何も、全く的外れだよ。
>>768
厳密に言うと、発振周波数を選べる OSC20M というオシレータ。
プリスケーラの設定には CCP 不要。 ddrd=4
portd=4
でpd2がハイにならんのだが
だれかエスパー頼むw asmなのでこうだけど・・・わからん
なんか根本的にまちがえてる?
ldi r16,$04
sts ddrd,r16
sts portd,r16
loop2: rjmp loop2 tiny202 に書けた!
USBシリアルの RxD と TxD 間にダイオードを TxD側が K になるように入れて、RxD に 470Ωの抵抗入れてそれをターゲットの UPDI に繋ぐ。
誰かがパッチ当ててくれた avrdude で comポートを指定して書けばすんなりいった。 6ピンと6ピンを結ぶイルミナティ結線だから簡単だよね >>774
こんなんまちがうわけあるかいというわけで、ハードをチェック
ハハハ、書き込み終わったあとリセットがローにおちたままやんかw
書き込み機壊れてます orz
USBASPでも作るかな(汗 tiny10 で動かしてたのを tiny202 に移植しようとしてるが、想像以上に面倒だな。
タイマーで割り込みとPWM使ってるだけなのに、何かとうまくいかない。
つか、割り込みで OVFフラグが自動解除されなくなったのはなんでだ。
それ以前に PER に値がうまく設定できなかったり、TEMP がいつの間にか更新されてたり、勝手が違い過ぎて上手く動く答えを見つけるのに苦労する。
そして I/O操作が増える分コードサイズは増えるね。アセンブラで書いてるけど。 tiny45のI2Cはマルチマスタに対応していないやんけ
チェック項目大幅に減ったwwwwwwwwwwwww tiny202 の割り込み時は Iフラグが自動的に禁止されないんだな。reti で有効にもされない。
自分で cli や sei しないといけない。
なんでこうなった?? AVRのINC命令てあるやん?
あれ0xFFまでいくと0に戻る? >>781
0 に戻るけど、inc は C フラグが無変化なのが addi Rd, 1 との違い >>780
tiny202は割り込みコントローラがあるから
割り込み中に同レベルの割り込みはかからんよ。
レベル0割り込みを使ってないなら排他制御はいらん。 >>785
ありがとう
割り込み処理のとこ読んで分かった。いろいろ高度になってるんだね。ここはあんまり真面目に読んでなかったわ。
んでついでに簡易割り込みベクタを見つけた。これいいね。
でも、16bit レジスタアクセスがなんかイケてないなぁ
Lバイト書いて Hバイト書き込みで適用だと、もっぱら下位バイトばかりを更新したくても必ず 2バイトアクセスが必要になっちゃう。
sts は 2クロックかかるから省略したいのに。
tiny10 なんかに比べるとやっぱりまどろっこしいな。
でも動き出していろいろ見通し立ってきた。 CRY立つんだから0に戻るに決まってるよな
わい疲れてるかも 書き込みがやたら失敗すると思ったらIDCコネクタの接触不良だった
そういえば、なんか緩い、ピンが細いのか、受けが広いのか?・・・・
メーカー間の相性ですかね? 旧tinyのポンコツI2Cはマルチバスマスタ対応可能だよ
ポートを細かくおまいらで記述しろて突き放した仕様だから
SDAコンフリクトもセンス可能 tiny202 の RESETピンを L に落としてもリセットがかからないんだけど、どんな理由が考えられる?
ヒューズは買ってきたまま、コードはアセンブラで書いてて、初期化時にはRESETピンをプルアップしてる。ハード的にはピンには何も繋いでない。
UPDI でプログラムはできる。
そもそもいろいろ不安定で、プログラミング後しばらくはパワーON で動き出すんだけど、電源切ったまま数十分放置すると再び電源に繋いでも動かない。
RESETピンを L に落としてもだめ。もちろん H にしても変化なし。
でもプログラマ(USBシリアル)繋ぐとリセットされて動き出す。
いろいろ分からないんだけど、なんにしても RESETピンを L に落としてリセットがかからないというのが一番分からない。
ヒューズ以外の初期化の仕方によって、RESETピンを殺せたりする? GNDだと思ってるところが実はGNDじゃなかったとか そりゃデフォルトのピン設定をいじってないんならUPDIピンになってるわな。
RESETピンとしては機能してない。
データシートPDF内で「RESET」を検索しようとかひらめくようになりなよ。 >>794
おー、RESETピンはデフォルトではRESETピンじゃないのか。でもヒューズで設定するのね?
もしピンの動作を RESET に変更したら、普通には UPDI できなくなるってことね?
それだとあんまりいじりたくないなぁ…
実はヒューズの書き方がよく分からないし。
アセンブラソースでヒューズの値も記述できるの?
それはともかく、パワーオンリセットがかからないのもよく分からないんだよ。
プログラム後しばらくはブレッドボードから引っこ抜いて差してもちゃんと動くのに、しばらく時間が経つと電源入れただけじゃ動かない。
電源のコンデンサに電圧が残ってるとかそういうことでもないはずなんだけど、この挙動も UPDI と関係ある? 似たようなことと言えば、電源切ってもポートからの流れ込みでブラウンアウトしてて
リセットしなかったことはある。
USB-シリアルブリッジなんか繋いでるとよくある。
ソースにヒューズ設定書けるかどうかはアセンブラ/コンパイラ側の仕様。
何使ってるかによる。gccやxc8なら書ける。 >>796
回路自体も電源と PA3 くらいしか繋いでないし、まだブレッドボードで組んでるからそこから引っこ抜けば何も繋がってないマイコン単体になるんだよ。
そうすれば内部状態もすっかり忘れてくれそうなものだけど、なんか不安定なんだよね。
ところで UPDI 端子はオープンにしておきたいんだけど、この場合はプルアップをイネーブルにすべき?
tiny10 の時は RESETピンをプルアップするようにしてたから同じようにプルアップしてるけど、これが悪かったりする?
データシートでは UPDIピンは内部プルアップ抵抗を持つって書いてあるから何もしない方がいいような気もするんだけど。 マシン語使えないんだったらArduinoでやってみれば? 容量1KBだからな
arduino化したら残容量はすずめの涙 リセットかからんとか言うレベルで、容量がぁとか、なにを贅沢な。 リセットなんてマニュアル読めよてはなしだが
容量はどうにもならんからな
てかarduinoを薦める時点でもはやAVRにこだわる必要ないし
新しいCPUならメモリ腐るほど乗せてるから贅沢も糞もない すでにライター作ったんならブートローダ要らなくね? 小さいメモリのマイコンにブートローダを載せる価値があるかどうかは別にして、
ブートローダの応用は、ユーザーによるファームウェアアップデートにも使えるしね。
「ライターを持っていれば、ブートローダは不要」とは必ずしもならないよ。 > ユーザーによるファームウェアアップデート
絶対これ言うやついるよね。 最近はどうか知らんけど、ちょっと前は
ユーザーにTFTPとか、やらしてたからなあ
めんどくさいちゅうねん
USBからアップデートできるのは有難いわ ユーザーにArduino IDE入れさせるのかね。
まあ、書き込み専用のアプリとか作れるだろうけど。 >>804
202 は 2KB あるよ。
202 で結局モノは完成して、安定して動いてる。
起動しないことがある問題は多分電源の品質。電源の立ち上がりがよくない感じだったかも。
微妙に解せないけどそういうことで納得してる。
使った感想としては、tiny10 は 1KB でそれで足りず 202 使ってみたんだけど、メモリは倍になってもコード効率が悪くて単純に倍の規模が作れるわけではなさそうなのが残念。
tiny10 は全ての IO や SRAM アクセス命令が 1ワードだけど、202 はほとんど 2ワードになっちゃうからね。
当然クロックも 1クロック余計にかかるから、速度的にも不利。
16bit IOレジスタも上位8bit アクセスを省略するような技が使えないから必ず 2バイトアクセスが必要。
でもかけ算命令や高度なインデックスアクセスが使えるから、tiny10 と別のアプローチで最適化できる余地はある。
単純に倍と見ることはできないといってもやっぱり 2KB あるし汎用レジスタもSRAMも多いから、間違いなく tiny10 より凝ったことができるね。
今回はファミコンの APUもどきを実装してファミコン風オルゴール作ってみた。
ROM や RAM が多いから、エンベロープのパターン増やしたり LFO かけたり、曲の音譜数も増やせたりで満足行った。
LED演出も追加してみた。
これがやれるマイコンが 60円ってのは本当に素晴らしいね。
でもやっぱり tiny10 の良さも捨てがたいんだよな。
メモリが倍になった tiny20 とかあればいいのに。
もちろん60円以下で。 細けえことはいいんだよ
132MHzデュアルコアでブラックボックスのライブラリ使ってガンガン回せ 細けえことはいいんだよ
240MHzデュアルコアでブラックボックスのライブラリ使ってガンガン回せ
なお謎通信 多分とか、解せないけど納得している、はちゃんと調査、解決した方がいい。 mega328でtimer1で、はまってます
なんか抜けてます?
ほかにハマリがちなところもあれば、教えてくださいやし
;tccr1a ctcモード pinout無効
ldi r17,0
sts tccr1a,r17
;tccr1b 分周なし ctcモード
ldi r17,9
sts tccr1b,r17
;ocr1a 7999 $1f3f(8000 )
ldi r17,$1f
ldi r16,$3f
sts ocr1ah,r17
sts ocr1al,r16
;ocr1b $fffff 絶対踏まない
ldi r17,$ff
ldi r16,$ff
sts ocr1bh,r17
sts ocr1bl,r16
;timsk 一致割り込み許可
ldi r16,2
sts timsk1,r16 I/OレジスタはSRAMと同じセグメントじゃなかったでしたっけ? Cで書いてから最適化すればいいのに。
良く分からずに使ってんだろうな。 ほんとにどこにでもいますね、自分がわからないこと聞かれると質問者をディスり始めるバカ >>823
せめてデータシートぐらい読もうぜ…
7810D-AVR-01/05のp. 92あたりに
ズバリの解答がある
あと、他の人も書いてるが、右も左も
分からずに、アセンブラに挑戦する
なら、まずはCで書いてlssを読む そのデーターシートはもってないリンクくれるとうれしい
あとアセンブラむつかしいみたいな言動がいろんな人から出るけど
アセンブラってめんどくさいだけで、めちゃ簡単よ、(とくに今回みたいなレジスタ設定に関しちゃ)なんか勘違いしてると思う >>828
せめてググってくれよ
328/pの最新データシートだよ
最新版のデータシートを手元に
置くのは必須だと思うぞ あ~、後出しとか言われる前に書いときます、私cプログラマーじゃないので、cでやれって言われると手も足も出ません >>827
オフィシャルの最新は
DS40002061B
だよ。該当ページは123-124
(microchipの形式よりatmelの形式の方が
データシートのデザイン、カッコいいと思う…) え~と。AVR.JPのですね、これ、これなら手元に有るのですが123-124pは通信関係になってるので、やっぱり違うものを見てるのかも? いやググったらでてきただけですが、オフィシャルでサイト内検索しろってことでか、了解しました オフィシャルで DS40002061B を検索しても出てこないですね
mega328pで出てきたやつをとりあえずDLしましたが
私、英語ネイティブじゃないので(ちゃちゃっと読めないので)、当分レスないかもしれません、ではでは >>830
AVR のアセンブラプログラマだったのか。やるな! >>838
いやいや、AVRはこれからです、習作作ってるところです
z80とかH8は、だいぶいじりましたけどねえ
こんなところで、はまるとは思いもよりませんでした データシートをざっと眺めた感じではavr.jpのと、違うことが書いてあるようにもみえないのでちゃんと訳すなりしないと先に進みません
オフィシャルオフィシャル言うのはavr.jpのは内容がおかしいってことなんでしょうか?
でaruduinoでなんと偶然にもctcモードのコードを見つけてしまったのでチートしちゃおうということでuno だということにしてコンパイルして書き込んでみたら
あっけなく動いてしまったので、HEXを逆アせしてみました。
なんでこんな長いんだというリストが出てきて意気消沈してますが、とりあえず動くコードが手に入ったのでなんとかなるかも(ほんとか?) AVR.jp はサラッと呼んで内容掴んだあと原本読んで
「えぇ?ここ意味違うじゃんw」って笑う為のサイトだよ。 >>841
チラ裏までにしてほしい
この手の定年爺はドヤ顔でデタラメを書くから
デタラメが拡大再生産されてしまう ASMでしか書けないジーチャンとCでしか書けないニーチャンの共通点、と掛けて何と解く?
・・・
・・・
・・・
どちらも未来が無いでしょうwww >>844とかけて
出汁を取るのが下手な蕎麦屋ととく
どちらも、かけがクソ不味いでしょう ギリギリでいつも生きていたいからさぁ
またタイーホだって データシート持たずにマイコンいじり?
ありえない
さてはお前人工無能スクリプト「アセンブラおじさん」だな? >>817
mega328 のデータシート見てないけど、16bit レジスタに書く時に下位と上位どっち先にするかは合ってる?
tiny10 は下位バイト書き込みのタイミングで、tiny202 は上位バイト書き込みのタイミングで 16bit値確定だったよ。 カウンタがうごかねーパタンは大抵初期化と割り込み解除の順番がまずいてことが多い マイコンの取り扱いを一から始めるなら、多分アセンブラの方が簡単じゃね。
IOレジスタについてはどっちでやっても覚えること変わらないし、むしろ何かするのに C ではどう書くことになってるのかを知る必要がある。
アセンブラなら単純にそれをする命令を置くだけで、非常に直感的。
いちいち自前でレジスタ操作しないでありもののライブラリ使っとけということで C を勧めるのは分かるけど、言語は本質じゃない。 開発カンキョー様が整えて用意してくれてた諸々の初期化処理の数々を
いちいち自前で工面する手間を考えると
簡単と言えるのか大いに疑問といわざるをえないんじゃね?しらんけど;^p^) ライブラリ云々なら、別にASMから呼んだってっていいんだから、本質じゃねえわな え~と、いろいろでてますが
最初に出したコード部分については、動いてるコードと一致しましたので
原因は他の部分にあるようです
データシートも見ずにうんたらかんたら言ってる人もいますが
データシートなしにあんなレジスタ名わかんないですからね
的外してますよ マイコンのレジスタを使ってみたい人と
マイコンで何かを動かしたいあるいは処理したい人とでも、何をもって簡単とするかは違ってくるな。
そこを見ないでどっちが簡単と断じることができるのは、自分の観点しかないからだろう。 ごちゃごちゃ言わんでも、普段使ってる物のほうが簡単ってことよ
日本人は日本語、中国人は中国語のほうが簡単にきまっとるわい
ちなみに日本語の習得難易度は各言語の中で唯一、「悪夢」だそうな >>849
書き込んで一回だけ動作するようなレジスタ以外は書き込み順は関係ないよ。
UARTの送信データくらいじゃね?
sei してないから割り込み来ないとかじゃないよね? >>858
seiはしてるよ
念のため最初にcliして設定終わって無限ループ入る前にsei
そこらへんは基本でしょ、てか、同じ機能の設定に使うビット群が複数レジスタに分散してるとかで
データシートが読みづらい、これがriscあるあるか~ってw >>858
データシートで16bitレジスタアクセス手順を確認した方がいいよ。
8bit プロセッサで 16bit値の上下バイトを同じクロックで確定するため、内部では TEMPレジスタを使ってる。
tiny10 では上位バイト書き込みは TEMPレジスタに書かれ、下位バイト書き込み時に TEMPレジスタの値と合わせて 16bit を一息に適用する。
だから上位下位の順で書かないといけない。 >>861
先に出したコードは動いてるのと一致したから、そこもOK
なんか見逃してるんだろうけどなあ >>860
「そこらへんは基本でしょ」とか言われても
>>817 に書いてないだろ。コードの一部分だけ出してその言い草か。
>>861
>データシートで16bitレジスタアクセス手順を確認した方がいいよ。
そこらへんは基本でしょ >>862
出したコード動いてるなら
動いてないコード出さないと意味ない
簡略化してスタートアップコードから全部出した方が話が早そう >>863
>>その言い草か。
べつにやしめてるつもりは無いんだが
そううけとれちゃったんなら、ごめんな >>865
出してもいいけど
3行で長いって怒るひとが居るから、だいじょうぶかなあw >>867
だから 簡略化してって
つか、どこまで動いてて、どこから動いてないか
理解してる? 行大すぎで書き込みできんかった
分割するわ
.device atmega328p
.equ tccr1a = $80
.equ tccr1b = $81
.equ tcnt1l = $84
.equ tcnt1h = $85
.equ ocr1al = $88
.equ ocr1ah = $89
.equ ocr1bl = $8a
.equ ocr1bh = $8b
.equ timsk1 = $6f
.equ sreg = $5f
.equ portd = $2b
.equ ddrd = $2a
.equ pind =$29 .cseg
rjmp start ;RESET 電源ON, WDT, BOD等の各種リセット
reti ;INT0 外部割り込み要求0
reti ;INT1 外部割り込み要求1
reti ;PCINT0 (PCI0) ピン変化0群割り込み要求
reti ;PCINT1 (PCI1) ピン変化1群割り込み要求
reti ;PCINT2 (PCI2) ピン変化2群割り込み要求
reti ;WDT ウォッチドッグ計時完了
reti ;TIMER2_COMPA タイマ/カウンタ2 比較A一致
reti ;TIMER2_COMPB タイマ/カウンタ2 比較B一致
reti ;TIMER2_OVF タイマ/カウンタ2 溢れ
rjmp int_500 ;TIMER1_CAPT タイマ/カウンタ1 捕獲発生
rjmp int_500 ;TIMER1_COMPA タイマ/カウンタ1 比較A一致
rjmp int_500 ;TIMER1_COMPB タイマ/カウンタ1 比較B一致
rjmp int_500 ;TIMER1_OVF タイマ/カウンタ1 溢れ
reti ;TIMER0_COMPA タイマ/カウンタ0 比較A一致
reti ;TIMER0_COMPB タイマ/カウンタ0 比較B一致
reti ;TIMER0_OVF タイマ/カウンタ0 溢れ
reti ;SPI0_STC SPI0 転送完了
reti ;USART0_RX USART0 受信完了
reti ;USART0_UDRE USART0 送信緩衝部空き
reti ;USART0_TX USART0 送信完了
reti ;ADC A/D変換器 変換完了
reti ;EE_RDY EEPROM 操作可
reti ;ANALOG_COMP アナログ比較器 出力遷移
reti ;TWI0 TWI0 状態変化
reti ;SPM_READY SPM命令 操作可
reti ;USART0_START USART0 フレーム開始検出
reti ;PCINT3 (PCI3) ピン変化3群割り込み要求
reti ;USART1_RX USART1 受信完了
reti ;USART1_UDRE USART1 送信緩衝部空き
reti ;USART1_TX USART1 送信完了
reti ;USART1_START USART1 フレーム開始検出
reti ;TIMER3_CAPT タイマ/カウンタ3 捕獲発生
reti ;TIMER3_COMPA タイマ/カウンタ3 比較A一致
reti ;TIMER3_COMPB タイマ/カウンタ3 比較B一致
reti ;TIMER3_OVF タイマ/カウンタ3 溢れ
reti ;CFD クロック障害検出
reti ;PTC_EOC 周辺機能接触制御器 変換終了
reti ;PTC_WCOMP 周辺機能接触制御器 窓比較動作
reti ;SPI1_STC SPI1 転送完了
reti ;TWI1 TWI1 状態変化
reti ;TIMER4_CAPT タイマ/カウンタ4 捕獲発生
reti ;TIMER4_COMPA タイマ/カウンタ4 比較A一致
reti ;TIMER4_COMPB タイマ/カウンタ4 比較B一致
reti ;TIMER4_OVF タイマ/カウンタ4 溢れ start:
cli
;pd2出力
ldi r16,$04
sts ddrd,r16
sts portd,r16 ;点灯
;tccr1a ctcモード pinout無効
ldi r17,0
sts tccr1a,r17
;tccr1b 分周なし ctcモード
ldi r17,9
sts tccr1b,r17
;ocr1a 7999 $1f3f
ldi r17,$1f
ldi r16,$3f
sts ocr1ah,r17
sts ocr1al,r16
;tcnt1=0
ldi r16,0
ldi r17,0
sts tcnt1h,r17
sts tcnt1l,r16
;timsk 一致割り込み許可
ldi r16,2
sts timsk1,r16
sei
loop: rjmp loop
int_500:
ldi r16,0
sts portd,r16 ;消灯、一度でも割り込まれれば消えるはずだが・・・
reti >>871
シミュレータで動かしてたみたら?
レジスタやフラグの動きも全部見られるよ。 だから、なんでSRAMに書き込むんだよ
何一つ前進してねぇ…
ってか、本質的なことを理解せず、つまみ食い
しては「分かった気」になって、うまくいかないと
アラシさながらに書き込み、揶揄されると逆ギレ ページまで教えて貰ったデータシートを読んでないのか、
読んでも理解する能力がないのか… >>873
汎用レジスタもIOレジスタもSRAMもNVMも sts/lds でシームレスにアクセスできるでしょ 例えばPORTDがIOアドレスで定義されていたらSTS/LDSではアクセスできない。
メモリアドレスで再定義しないと。 >>878
ずいぶん無責任な奴だな、言い訳がそれか >>879
まあまあ、一部だけ見て反応するのはネラーの特徴だから、しょうがねえよ
資料云々言ってる人も居るけど、入手出来てないって書いてるの読んでくれてないみたいだしw 割鋳込み → 割り込み
CPUはmega328だよね >>881
あ、ほんまや、でかいねこれw
でもベクターの位置は12番目で合ってるから、メモリ食ってるだけと思います ゴメン、そうだよね、冗長なだけで動かない原因とはならないな >>883
ソースが出たから誰かが解決するのは時間の問題だと思うけど
あと出しでもめないように
1. マイコンの動作クロック ?
2. 書き込んだフューズの値
3. アセンブルするときのコマンド全部
4. 逆アセンブルリスト startから int_500まででOK
もあると安心 >>882
328ですよ~
328系の資料しか開いてなかったはずなんだけど
どっからコピったんだ>俺w では、後出し行きますw
クロック4mhz
ヒューズ
h D9
l E6
e FF
コマンド
"C:\Program Files (x86)\Atmel\Studio\7.0\toolchain\avr8\avrassembler\avrasm2.exe" -fI -l 0list.txt -m 0map.txt clock.asm
リスト
start:
00002d 94f8 cli
;pd2出力
00002e e004 ldi r16,$04
00002f 9300 002a sts ddrd,r16
000031 9300 002b sts portd,r16 ;点灯
;tccr1a ctcモード pinout無効
000033 e010 ldi r17,0
000034 9310 0080 sts tccr1a,r17
;tccr1b 分周なし ctcモード
000036 e019 ldi r17,9
000037 9310 0081 sts tccr1b,r17
;ocr1a 7999 $1f3f
000039 e11f ldi r17,$1f
00003a e30f ldi r16,$3f
00003b 9310 0089 sts ocr1ah,r17
00003d 9300 0088 sts ocr1al,r16
;tcnt1=0
00003f e000 ldi r16,0
000040 e010 ldi r17,0
000041 9310 0085 sts tcnt1h,r17
000043 9300 0084 sts tcnt1l,r16
;timsk 一致割り込み許可
000045 e002 ldi r16,2
000046 9300 006f sts timsk1,r16
000048 9478 sei
000049 cfff loop: rjmp loop
int_500:
00004a e000 ldi r16,0
00004b 9300 002b sts portd,r16 ;消灯、一度でも割り込まれれば消えるはずだが・・・
00004d 9518 reti 昔作ったプログラムを見たら、TIFR1レジスタにも設定してた
あまりに昔すぎて内容をよく覚えていない、参考になればいいけど
;----- setup timer#1:CTC 0.5S inteval for time base
clr ZL ;not output, OR1A_CTC
sts TCCR1A,ZL ; WGM1,0=0,0
ldi ZL,0b00001101 ;prescale 8M/2/1024 (125nS to 256uS)
sts TCCR1B,ZL ; WGM3,2=0,1 CS2,1,0=1,0,1
ldi ZL,HIGH(3906) ;19531 * 256uS = 0.5S
sts OCR1AH,ZL
ldi ZL,LOW(3906)
sts OCR1AL,ZL
ldi ZL,0b00000010 ;OCF1A flag
sts TIFR1,ZL ;enable int.
sts TIMSK1,ZL ;set mask flag >>889
ありがとうです
TIFR1設定追加してみましたが変化無しです
TIFRってなんぞ?と見てみたらすでに見てましたw
マッチした後に設定されて、割り込みが発生するとかで
ユーザーがいじらなくてもいいとこみたいな感じだったので
意識に残ってなかったですね、まあavr.jpの資料ですけどw
そっからまた、他のレジスタにも波及するようなので、
そっちが、なんか関係あるかもしれません >>849
横からですが、そういうのあるんですね。
考えたことなかったです。気にしてみます! >>857
日本語を習得した英語圏の人でも、難しいのは英語。という声もあるので諸説あるようです https://pastebin.com/rzeV2PEg
これで動くんじゃね?
たぶん\(^o^)/
あとコード貼るときは以下のサイトを使うといいと思うの
codepad.org
pastebin.com >>894
質問者ではないが割り込みベクタアドレス合ってる? >>893
謙譲語とか尊敬語とか難しいでごじゃる。 というかシミュレータ便利だよ。
Atmel Studio だか Microchip Studio 入れれば使えるしタダだし。
フラグ変化のタイミングやクロック数とか、実機じゃ確認しづらいことも確認できる。
全部の割り込みベクタにブレーク張っとけば割り込みベクタの間違いにも気付けるし。
まあ、いろいろ変な挙動も多いんだけどね。
CPUステータスレジスタを読むコードをシングルステップで実行してしまうと Iフラグがおちちゃったり、シングルステップで流していくとタイマー割り込みが入らなかったり。
power down な sleep は実質ハングアップするから、そういうのを含むコードはすごく追いづらいってのもあるし、周辺IO によってはクソの役にも立たないと思うけど。
でもそれを差し引いても便利過ぎる。
実際に見てみないと分からないデータシートから読み取りづらい挙動が多いよ。 >>898
どうやってシミュ起動するかちょこっとレクチャーよろしくです >>899
プロジェクトのプロパティ、Tool のタブでデバッガとして Simulator を選択。
F9 でブレーク張って F5 で実行だけど、Debugメニューの中見れば操作方法は分かると思う。
ちなみにディレクトリパスにマルチバイト文字が入ってるとうまく動かない。 >>900
マイクロチップスタジオのプロジェクトとして作っておかないとだめな感じですか? >>901
それ以外でやったことないけど、まだ実験コードなんだからコピペしちゃえばいい。
アセンブラプロジェクトを作ると main.asm ってのが自動的に出来上がるから、そこに。
プロジェクトが自動的に include するデバイス毎の定義と自前の equ が被る場所はちょっと調整する必要があるけど、これから作るものは標準の定義に合わせていくといい。 いきなりEQUかぶってんで詰まりますね
スタジオがデフォで読み込んでる定義を抑制できればいいんですが・・・
EQUを全部コメントアウトすればとりあえず先へ進めるけど
デフォの定義はメモリーアドレスなのか、IOアドレスなのかすらわからない
この件でキレてた人居たからIOですかね?
うん別名で定義しなおしますか >>904
in/out でアクセスできるレジスタはそっち使う方が命令長も実行クロックも短くなるよ。
sts/lds は 2ワード命令 >>905
outだと、大きいアドレスが来ると届かなくてASMに怒られるんで
めんどくさくないようにメモリアクセスで統一してます
あと数バイトたりね~とかになったら、削ります I/Oアドレスの問題もそうだけど、命令の対象レジスタの制限、即値の制限など、
AVRには色々と制約が多い。
生まれて初めてAVRでアセンブルしたときに
エラーメッセージ(この命令はR16〜R31でしか使えません)が一杯出てきた。
「なんだよぉ、コード16ビットにしちゃ命令の種類が多いなと感心したのに
そういうカラクリだったのね、詐欺みたいなCPUだな」
と思ったw
でも3回ほどプログラムを作った後は、
「良く出来たPUだな、プログラミングが楽しいCPUだな
これからも使いつづけよう」
に変り、今に至るw
逆に3回ほど使って「二度と使うか!」と思ったのがPIC。
(PICファンの人、ゴメンね、相性です)w あるあるw
16ビット加算ないのぉ?って命令表見てたら、あるじゃ~ん
もっとよく見るとオペランド6bitってwww、こけたよ >>896
少なくともMicrochip Stadio7.0+中華328P(16MHz)では意図したであろう動作はしてるよ
リセット -> PD2(High) -> 8ms -> PD2(Low)
たぶん\(^o^)/ >>909
ほんとだ、TIMER1 COMPA のベクタアドレスは 0x16 だった。
同じデータシートに複数モデルのベクタ表があって見間違ってた。 >>910
まあ、アップした表も間違ってんだけど
ベクター位置は合ってるからまあいいかで放置w
複数モデルのベクター表載ってるデーターシートがあるの?
そこからコピったのかな>俺w >>912
ベクター位置は合ってるって、>>870 は間違ってるけど今試してるやつは修正済みということ? >>913
コンペアマッチAについては同じ位置ですよ >>914
ベクタ番号とベクタアドレスの対応をよーーーーーく見てみ >>909
実機で動いてんですか?
じゃあコードのもんだいじゃなくて他だと
う~ん >>915
12番目で
csegアドレスなら0b
実体で16h
でまちがってます? cseg上だからどうやっても一バイト間隔にはできませんけど >>919
アドレスの単位はバイトじゃなくてワード。
メモリアクセスのためのメモリマップ上のアドレスはバイト単位でポイントできるけど、それはコードのアドレスの2倍が基準。 アセンブラでcsegに直配置すると、ワード単位でしか配置できないので2バイト確保できてないなんて心配は要らないと思いますが? なんでm328pdef.incを使わないんだろう… >>923
その表は初めて見ました
ん~、4バイトごとに配置しろってことですか?
試します
」
動きました
LED消灯したので、交互にオンオフするように書き換えて
ばっちり点滅してます
感謝感激
あり豪ございます >>924
program address と言われたら、バイトじゃなくワードアドレスってことに留意ね。
アドレス 0x0000 の次の命令のアドレスは 0x0001 ね。 >>925
私がcsegアドレスって言ってたのがそれなんで
そこに見解の相違は無いと思います
なにはともあれ、たすかりまし、ありがとう >>926
そっちじゃなくデータシートの読み方だよ。
ベクタ12 のアドレスは 0x0016 って書いてあったでしょ。
これはバイトアドレスじゃなくワードアドレスね。
ともかく動いてよかったね。 >>927
こっちで見てた表はアドレス無いやつです
12番目しかわかりませんでした これ下位のCPUだったら、全然気が付いてなかったかもですね
ベクターサイズ網羅した表ほしいですねえ >>929
ちなみに番号歯抜けもあるからね。
少なくともオフィシャルのデータシートにはアドレスも書いてあるよ。
秋月に貼られてるデータシートにも書いてあるから見ておくといいよ。 >>930
avr.jpのにも書いてありました
物自体が他のcpuのだし
謎な所から拾ってしまったのが敗因ですね
改めてコピペしようとしたら、すんなりコピーさせてくれなかったので
あ、なるほど、これでwebに探しに行って、変なの拾っちまったわけかと納得 そういう違いを吸収して移植性を高めるために
MPU毎に定義マクロ(.inc)があるのに、
なぜ使わないんだろう
何が何でも、車輪を再発明しなきゃ気がすまない
タイプの人? >>932
実際にベクタの中身書いたことあってそれ言ってるの? >>934
定義マクロ使ってベクタを書くサンプル見せてください。参考にしたい。 >>935
その前に聞きたいんだけど
開発環境に何使ってるの? >>936
おれは atmel studio よ。 >>937
だとすると、わざわざプロジェクトの
プロパティを編集してatmel studioが
用意してくれたアセンブラオプションを
毎回削除してるわけ? >>938
え、どういうこと?
普通にプロジェクト作ると main.asm の中身んてただの無限ループひとつでしょ? >>938
いいからマクロ定義使ったベクタ定義見せてくれよ。
もしかして全部のベクタに org 付けるって話? >>940
そうだよ。
こんな感じ
.org OVF1addr
rjmp myhandler
myhandler:
insructions
reti そんなものが無くてもアセンブラで書けるけど(サンプル>>491)
取りあえず言える事は、<マニュアルは眼光紙背に徹するほどいちいち叮嚀に読もう>
ベクタが2Wであるのはマニュアルを見さえすれば気が付くし、納得する。 >>941
ベクタ以外の実処理の org はどう書くの?
ベクタの最終アドレスの定義がある?
まあ実際全部のベクタを org で指定すればどのプロセッサにも適用できそうなコードにはなるんだろうし、それなりのメリットはあるんだろうね。
でも多分自分はやらないなぁ
よく空きベクタに別のコード置いたりしてクロックやらサイズやら節約してるってのもあるし、どのプロセッサでも動くようなものじゃなくターゲットが明確なことが多いからな。
アセンブラで書くのは1クロック1バイトを削りたいからという目的もあって、中途半端な移植性のために無駄の出る書き方するなら本末転倒だ。
もちろん個人のスタンスの話で、一般論を語るつもりではない。 >>943
あの?なんでコードサイズに影響すると思ったの??
もしかして、まるで理解できてない? とりあえず、べくたーを修正中
4バイト間隔にするために、とりあえずnopで埋めたけど
なんかかっこ悪いな~ >>945
空きベクタの領域にコードを書くなら、そのアドレスを強く意識する必要があるでしょ。
そのアドレスを隠蔽する書き方じゃ目的を果たせないよね? >>898
これ
外部ピンを互いに任意に接続できるようにしてくれるともう無敵なんだがなあ >>949
対応しているチップが限定されるけどSimulIDEとか >>902
使い方がだいたわかってきたところで、答え出ちゃったので使う機会がなくなっちゃいましたけど
ありがとう >>948
例えばタイマの CMP0A と ADC変換完了割り込みしか使わないなら、その2つのベクタの間には別の処理を置くことができるでしょ。
それで数ワードの節約になるし、割り込みルーチンへの定型的な rjmp を省略できれば 2クロックの節約になるわけだけど、そういうコードかくなら隙間が何ワードあるか把握しないといけないでしょ。
この間は 13クロック周期の割り込み処理書いたけど、そういうタイトなコードを書くにはアドレスを隠蔽してられないし、そういうコードを書きたいからわざわざアセンブラを引っ張り出してくるんだよ。
別にタイトなコードじゃなくても、小さなテーブルとか小さなウェイト処理とか、隙間に押し込めるものはいろいろあるよ。 >>952
そういうこそ普通は定義済みマクロを使うでしょ?
なんか、頭に血が上ってキャラの使い分けが変になってますよ? >>953
そういうこそってどういうことだ??
たとえばさ、OC0Aaddr と ADCCaddr の間に何ワード詰め込めるか、定義値を見ないでどうやって知るの?
基本的の定義を使うと言うことは、その中身は「知らない体」にするものだろ?
アドレスの差どころか代償にすら依存するコードの書き方はできなくなるんだぞ? >>954
いろいろtypoがひどい
そういうことこそ
基本的に定義を使うということは
アドレスの差どころか大小にすら
読み替えてくれ >>954
え?本気で言ってるの!?
「まとも」な実施教育や研修を受けたことある? >>954
一度、プロが書くコードをじっくり読んでくれ
話しはそれからだw
間違っても個人ブログとかを参照してドヤすんなよwww >>957
プロの書くコードを見る機会はほとんどないだろ。しかもAVR••• >>956
どう受け取っていただいていいんだけどさ、じゃあこのコードを org と定義マクロ使ってまともに書くとどうなる?
見ての通り、空きベクタに割り込み処理そのものを書いてる。
ベクタ番号6 が入り口な。
.ORG 0
rjmp RESET
reti ; 2 INT0addr
NEXT_TICK:
out TCCR0A, ARG ; 3 PCI0addr
mov PULSE_TIMER, TICK_WIDTH ; 4 ICP0addr
reti ; 5 OVF0addr
dec PULSE_TIMER ; 6 OC0Aaddr
breq NEXT_TICK ; 7 OC0Baddr
reti ; 8 ACIaddr
reti ; 9 WDTaddr
reti ; 10 VLMaddr
reti ; 11 ADCCaddr いきなりレスが減ったな
一人何役か知らんけどauの回線使ってたか? きっかけの問題(プログラムが動かない)が解決したからね。
みんな、「なぁんだ、そんなことが原因か」、と力が抜けちゃったんじゃないか?
ベクタテーブルの大きさを間違えるなんて・・・とあきれただろうな。
その後の言い争いについては、当事者以外は誰も興味無いと思う。 ID:Vu/9z4cE だが >>953 あたりにはぜひずっと説明していた >>959 こういう時こその書き方を教えてもらいたかったけどね。 >>965
.org 0
rjmp RESET
(bad_vectorの処理は省略)
.org INT1Addr
NEXT_TICK:
out TCCR0A, ARG
mov PULSE_TIMER, TICK_WIDTH
reti
.org OC0Addr
dec PULSE_TIMER
breq NEXT_TICK
reti
でいけるでしょ。推奨されてないけど
ベクターテーブル内にrjmp / reti以外のインストラクションを書くのは一般に
非推奨だよね。昔のリソースぎりぎりの時にはよくやった手だけど絶対に飛び
込まないようにコーディングする必要があるのと,使うチップを変えた時に
移植できなくなる可能性あるし >>965
非推奨どころかBad Idea扱いだなAVR assembler
のチュートリアルだと…
わざわざ書くぐらいだから「ボク凄い事思いついたお!」
ってやる例が多いんだろうね なんか>>959がナチュラルにdisられてる気がする そもそも
中の人がせっかく2ワード命令のスペースを用意してくれたんだから
べクタテーブルには素直にJMP命令を使えばいいんだよ
RJMP+NOPに比べれば見た目もきれいだし、入力文字数も少ないしw
+1クロックなんか気にしてもしょうがない、
それよりも他にもっと気にしなけれないけない事があるだろ? >>965
それが成立するのは各アドレスを明確に把握してる場合だけだけど、わざわざそう書くとどんないいことがあるの?
目的を見失ってませんか? ところで、推薦ってだれの推薦?
英語難しくてわからんわ。
>In case the program never enables an interrupt source, the Interrupt Vectors will not be used and, consequently, regular program code can be placed at these locations. >>974
非推薦らしいよ。
>>965,967 がああまで言うんだから間違いないはず。 In case the program never enables an interrupt source,
the Interrupt Vectors will not be used
and, consequently,
regular program code can be placed at these locations.
割り込み入力を使わない場合は、
割り込み割り込みベクターは使われません、
その結果として
通常のプログラムコードをここに配置できます。
この文章には推奨(できればやりなさい)か非推奨(やるべきではありません)かは書かれてなくて、
できるかどうかだけが書かれていると思う。
推奨=できればやりなさい、非推奨=やるべきではありません
とあえて書いたけれど、推奨、非推奨の意味や雰囲気の捉え方は人によって異なるかもしれない、
そこを先にすり合わせないと、推奨か非推奨かの議論は成立しない。
あと、公式ドキュメントも単一の思想のもとで書かれているとは限らない、
本当に非推奨の意図で書かれているものもあるかもしれない。(だとしたら、公式でも意見が
分かれるものの可能性があるわけだから、ユーザーからみればどっちでも良さそう。
あとは、所属組織のコーディングルールとかに従えばいいと思う。 >>976
うん、できると書いてあることをやるかやらないかはポリシー等の問題。
>>943 のような条件の中で >>965 のような結果に行き着くことについて、目的を見失ってると言ってるのな。
その上非推薦だからと言うから、その根拠を確認してるんだよ。
いいのよ、オレオレ縛りで非推薦だから非推薦なんだって回答でも。そしたらそうなのねって言うだけ。 tiny202 で足りなきゃ204使えばいいだけじゃん。
あほくさ >>980
誰もピン数の話なんてしてないだろ。
あほくさ たった300ワード5ピンの用途に1616使ってすいません! >>972
RETI命令があるところ(割込み処理の終わりとか)にジャンプさせる。
JMP reset_start
JMP int_ret
JMP int_ret
・・・
JMP int_ret
int_ret:
RETI
reset_start: 遊びならともかく(>>491)
通常のプロフラムでベクタ領域に実行命令なんか置きたくないな。
やはりベクタテーブルは見た目が整然としてないと気持ち悪いw >>985
だから最初から遊びだって
もう そっとしておいた方がいいよ >>984
avrgccはコンパイル後のリスト見ると使ってない割り込みは
rjmp __bad_interrupt
で埋められて、行き先で
__bad_interrupt:
rjmp RESET
なってる。retiせずに最初に戻る。
どっちがいいんだろう? >>987
RESET にジャンプしたところできれいに初期状態に戻せるかな。 >>988
リセットにジャンプしても、スタックがほったらかしだから、最初にスタックポインタの設定を書いて置けばいいんでない?
あと、電源オン時のデフォルト値を期待しないように書いておく >>989
意図しないベクタに割り込みが来てるようなレジスタの状態になってるわけで、元々初期化が怪しいよねぇ
ソフトウェアリセットかけられりゃいいけど、それができないモデルなら出力ピンひとつ潰してRESETピンに繋いどけばいいのかな。
と書いたところで思い付いたが、RESETピンを出力に切り替えて L にするコードでハードウェアリセットがかけられるかな? >>990
開発中ならそうでしょうね
完成後なら、おそらくハード異常だから、haltさせちゃってもいいような気がする
ってHALT無いんか ブラックボックスのライブラリ使って132MHzデュアルコアでガンガン回す時代になにやってるの? >>994
リセットかけても、どうせぶっ壊れてんだから意味なくね?って話 >>995
リセット後にリセット理由で対処すれば??? >>995
「ソフトで(真の)リセットがかけられるか?」
に対するレスなんだが? >>997
Reset Flag 以外に何か残るっけ? 静電気などによる偶発的な暴走もありうるので、からなずしも
変なアドレスにアクセスしたから、システムが永続的に壊れていると考える必要はないですね。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 98日 20時間 34分 55秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。