ゆるAVR
AVRマイコンでなんか作ったりとか ゆる~く遊んじゃおうってスレです 一応、他人をこき下ろすような発言は禁止 どうしてもって場合は、どうしてそう思うのかまで書くこと 作ったものを一方的にさらすんじゃなくて なんだかんだ雑談してるうちに あ、それ、おもしろそう、俺作れるわ 作ってみたど~、ドヤって感じを想定していました 閑古鳥が鳴くようなら、作った物自慢スレ化してもしかたないかもしれません なんかネタないか、かんがえてたら 総合スレの方で出た話題で思いついた ウインドウズの電卓のプログラマーモード あれ、実物作ったらおもしろいかも せっかくだから 64bit 対応にしてほしいね ついでに RPN がいいなぁ なんにせよ設計のキモは表示器とキーボードかな? プログラムはどうということなさそうだから、ハードを如何に簡単に(そしてできれば安く)作るかな気がする。 きもというか、ほぼそれしかないようなw やすくあげるなら百均電卓流用かなあ 同じようなこと考える人は居るもので ぐぐってみると液晶と基板がフレキで接続されているようで 流用しやすそうな感じですね そして24キーのキーボードまで手に入ると、これはなかなかコスパよさげ ただキーパッド部分は導電塗料の印刷らしくて耐久性はなさそうです ま、壊れたら変えりゃいいか百円だし 電卓流用は面白そうだね。 そうなるとピンだけは沢山必要になるね。 でも 8桁しか無いな。 32bit の 10進数表示時は 10桁欲しいね。 ですねえ、ひとけたが3*3ででてて、3はコモンであとは3*桁数分らしいので あ、考えたくないw アリエクに多桁のSPI表示器売ってるので、そっちのほうがいいかもですね 安くて足がいっぱいあるシフトレジスタがあるといいんだけどね。 こういうのでも 16 I/O で 140円だしな。 16bit I2C I/O エキスパンダー MCP23017 https://akizukidenshi.com/catalog/g/gI-09486/ うっかりするとマイコン使う方が安いんだけど、とは言え600円だもんね。 ATMEGA64L https://akizukidenshi.com/catalog/g/gI-01118/ これ 64出力あって 60円だけど、パラレル入力だし 8bit 毎にクロックが別れてて使いづらいよねぇ I/O エキスパンダー TC6381AF https://akizukidenshi.com/catalog/g/gI-03481/ mega8あたりを2個で 12桁液晶を6桁づつ担当でどうだろうとか妄想チウ 使う上ではdラッチが一番簡単そうですね シリパラ変換系は、AC駆動するには、めんどくさそ~って感じがヒシヒシとw 機能しょぼくていいからやたらI/Oが多くて安いデバイスとかほしいですねw 近所のセリアに8桁と10桁の電卓があったので買ってきた さっそく使わずに分解w 8桁の方は28ピンで余った1ピンはなに?と思ったらNCでした 10桁の方は34ピンで、やっぱり多いし、全部接続してある ちょっとんナゾ、繋いでるけどNCを期待w フレキと液晶、フレキと基板の接続が、貼り付けてるタイプで いっぺん剥がすともとに戻せないような感じで、ここが一番やっかいそうです あれ、なにげに、LEDのダイナミック点灯みたいなイメージで考えてたけど 液晶ってそんなに反応速かったっけ? でもマトリックスにってるってことはそれで良いんだよね(汗 >>15 先人の成果によれば、コモンの切り替えは 40ms くらいじゃない? 結構遅いよね。 でも表示はなんとかできそうだけど、キーボードが問題だね。 16進数だから、電卓のキーボードじゃ絶対足りず流用できないし。 でも ADC 使って 1ピンあたり 20ボタンくらい読み分けることができるよ。 2ピン使えば 40ボタン。 同じピンで同時押しはできないけどね。 >>16 なる、反応おそいから、30桁なんてあっても、のんびりやっとけばOKってことですね キーボードは24キー/100円なんで、足せばええやんて感じですね でも、24キーあれば、たりるんじゃないですかね 0-fで16個 ?÷-+=で5個 c、とceで2個 メモリー関係は捨てとw LCDは無理に利用しようとしても意外と安くならないんで キーボード利用がいいとこかもしれないですね >>17 2/16/10進切り替えと AND/OR/XOR/NOT を忘れてる。 シフトなんかも欲しいかもしれない。 >>17 あとそのキーボードを読むのに何ピン必要かって問題も忘れてない? >>18 切り替えはウインドウズの電卓みたいにディスプレイが一杯有る感じでw ディスプレイ一杯あるとデバッグにも使えそうだし それでも足りない分は、もう一個の電卓から持ってくるといいかも そこまでやるとキートップとゴムのペコペコだけ使って、作ったほうが、かっこいいかもしれんですね >>19 6*4のマトリクスで10ピン 24キー 6*6で 12ピン 36キー 余裕っしょ ばらした基板ながめてたら、マトリクスに入ってないキーも存在するようです けっこう切り貼りせんといかんかな そやそや一個シフトキーにしてしまうってのは、どうでしょうか I2C LCDドライバ見つけた。部品箱に入れておいてもいいかも。 データシート https://www.nxp.com/docs/en/data-sheet/PCF8576.pdf aliのリンク貼れなかったけど、送料込み 5個 650円くらいかな? >>24 そろそろ手段と目的が反転しかけてますが、いいかもですね アリでさがしてたら、16桁4行のモジュールなんてのが出てきて これでいいじゃん感がでてますw アリの検索窓に、これ入れるとでてきます 1005003744714925 アリのリンク貼れてるひともいるみたいですけど 同じ方法で、だめな人も居るとか、どうやるといいんですかね? 16桁あってもビットパターン出しちゃうと16ビット分かあw 64bitは諦めても、32bitはほしいよね、気持ちとして OCTッて要る?、私まずつかわないけど HEX、DEC、BIN上下2段表示とかw、むりやりすぎw >>26 個人的には OCTはいらないなぁ BINも、HEXがあれば正直いらない。 けど分割表示かドット表示で対応してもいいかな? しかし4行あったらステータス表示に1行使っても残り3行、それだけあると RPN にしても使い勝手いいね。 RPN いいよ RPN、RPN モードもぜひご検討を。 RPNといえば FORTH(あ、歳バレるw) いっそFORTH組み込んでプロ電にするとかw まあ、個人プロジェクトを語るスレじゃないんで、 面白そうと思ったら、先にやっちゃっていいですよw ドット表示かあ、これ液晶自体はドット液晶なんですが、システム的にキャラクター表示っぽいんですよ ドットで表示できるやつだと4行と言わずもっと表示できるようになりますね でもソフトがめんどくさそうw コントローラが44780互換のキャラクターLCDの場合はフォントはほとんどROMで持っていてJIS-8bit英数カナにほぼ対応してるんだけど ただ8文字分だけはCGRAMを持っていて5*7ドットのユーザー定義文字(フォント)を登録して表示できる だけど"0"と"1"だけだとしても本来の1文字分(5*7ドット)の中に「00,01,10,11」のように2桁表示するのは厳しいな >>30 CGRAM を書き換えると、表示済みの外字の形もその場で変わっちゃう? それとも表示済みのは変化せず残る? >>31 表示済みのものも変わってしまう CGRAMが8文字分しかないのでユーザー定義文字は「同時」に8文字しか表示(設定)できない 表示されているユーザー定義文字を消せばCGRAMを動的に書き換えて新たに別の8文字分のフォントを設定できるけど 昔の8bitCPUよりずっと高性能だしCRTCがあれば8bitパソコン作れそう コアは性能上がってるけど、メモリーが貧弱なままなのをどう解決するかやね そういえばグラフィック液晶の残骸がジャンク箱にあったなと サイズ感をみてみた、なかなかいいかんじ ドットサイズ128*64 https://downloadx.getuploader.com/g/mcnc/484/DSC_0072.jpg アリエクでみてみたら、もうどこにもない感じだけど 一回りちいさいのが主流になってるみたい キーボードマトリクスを解析しようと基板を追いかけて図面書いてたら 間違いまくりでいつまでやっても終わらない orz テスターで追いかけたほうが早いかもと、やってみたら 導通が無い、え?、と思ってレンジ変えたら動いた スイッチオンで1kオーム近くあるのね マトリクスは5*5でした+キーが2つぶんのスペースを占領してるので24キーですね パワーダウンから起こすためなのでしょう パワーオンキー(C)が片側がマトリクスのラインにつながってますがぽもう片方は単独でCPUのほうへ行ってます LCDは対して安くならないので諦めましたがキーボードの利用は行けそうです AVRでシーケンサ(PLC)を実現するというのはどう? これならソフトだけなので始めやすいし、 ゆくゆくはPC側のプログラムが得意な人にも出番がある。 FORTHみたいなデータ・スタックを使う、中間コード方式のインタプリタになるかな。 オルゴール演奏プログラムはどうだろうか? 単音ではつまらないので、和音(3音同時に)を出せるようにすれば 少しは音楽らしく聞けるようになると思う。 tiny2313クラスで十分ではないか? 「3音同時に」は誤解を招くね、 アルペジオ(分散和音」をあたかも同時に鳴っているかのように超高速で演奏する、です。 >>43 tiny10 でファミコンAPUもどき実装して 3和音 PWM出力のファミコンオルゴール作ったよ。 矩形波2音、三角波1音、ノイズ無し。 ROM不足で長い曲は難しいのと、レジスタやSRAM不足でシーケンサは 2トラックだけど。 んで tiny202 バージョン作って、こっちは 3トラックシーケンサと LFO も実装できた。 TVでピンポンが鳴ると玄関に出て、あら誰もいない ってわけで、音を変えようとしてメロディーIC買ったら 音が悲惨すぎてやる気なくしたw 一瞬渡りに船って思ったけど 楽曲データーは自分で作らないかんのだよね >>45 >音が悲惨すぎて 昔、通販で毎正時に鳥の無き声がする掛け時計を買ったら、 メモリ不足のせいか、全部の鳥が風邪を引いてるような低音のダミ声で笑った、 ウグイスは西川のりおの「ほーほけきょ」を越えていた。 即、返品した。 >>46 誰かが作ってアップしてくれたらいい ←他力本願w フト思ったけど、タイマ/カウンタを使わないという縛りをお遊びで付けても面白いかもしれないな 只今から惨事をお伝えします「ボ~~~、ボゲギョ~~」 鳥の声クロックいいなあ 割当で悩みそうだけど 朝6時 鶏 朝9時 ヒバリ 午後3時 トンビ 午後5時 カラス 午後9時 ふくろう う~ん >>50 肝心の鳥の声どうするのよ。 でかいROMのを選んでPCMでやるの? SDカード繋ぐとかもアリかな? 発声方法より音源データーが無いなあ 素人にはなんの鳥か区別つかんのが多いし MIDIメッセージの送信くらいなら ATtiny10 でもやれそうだね カステラ1番、電話は2番〜3時のおやつは文明堂〜♪(´ω`) 小ネタです、今回はAVR関係ないけど 7SEGで消えてるセグメントが見えないほうが かっこいいんじゃね?というわけで 小細工してみました https://downloadx.getuploader.com/g/mcnc/486/7seg.jpg 効果音が最大4音鳴るおもちゃが4音同時発声時に不安定になる症状に悩んでて、割り込みのタイミングやら丸一日精査してたけど、 電池の電力不足かー 新品電池なら動くから、とりあえずWDTリセットでも仕込むか… つかれたよもう… 今更だけどAT90S2313が秋月で投げ売りだし無くなる前に少し買っておこうかと思ったけど開発環境が何気に面倒だったりするな MPLAB XはもとよりAtmel Studioも5~7まではtiny2313/Aはあるけど90S2313ではプロジェクトが作れない… AVR Studio4入れてみたけどいまいちやり方が変なのかコンパイラが起動してくれない 自分でMakefile作って何とかしろってことかな >>59 開発環境を自作すればAT90S2313 だって一生使えるのに・・・。 (PCやOSが変って動かなくなったら、少し手を入れる必用があるけど) 私がAVRのプログラム開発に使っているCPUメーカー製品はAVR(CPU)だけ、 後はハードもソフトも全て自作した。 (あ、忘れてた、アセンンブラはどこかの誰かが作ったもの。 旧アトメル提供のものはDB命令にバグがあったので、信用でけへん!、と乗り替えた。 AtmelStudioは大き過ぎて、サッと立ち上がりスイスイ動くものが欲しかった。 ついでに書いちゃうと、 私は秋月で購入したAVRライタでAVRプログラミングを始めたのだが、 驚いたのは「ターゲットの回路がライタによって制約される」だった。 歌舞伎の黒子がセリフをしゃべっていいんかい?!と思ったw 他のデバイス(回路)から信号を貰ったりするリセット・ピンが特に困る。 2、3回秋月ライタでプログラムを作った後、AVRが気に入ったので使い続けることにして 回路に影響しないシリアルライタを自作し、 続けてPC側とAVR側のデッバグ用プログラムを作り(AtmelStudioもイヤ)、 パラレルライタを作った。 エディターでソース書いて asmなりcコンパイラなりへ直接投げるバッチ書いて(makeでも可) ファイル管理はWINのフォルダー管理におまかせ、軽いよ~w winのフォルダー管理じゃなくて、エクスプローラーだにゃ、失礼 AT90S2313って-4とか-10だけど前に-10PCのやつを20MHzのセラロック付けたら20MHzで動いたな Lチカだったけど4Vくらいまで下げても20MHzで動いてた結構余裕あるんだな 10MHzだとかなり下げてもいける 百円電卓改造計画のLCDパネル、アリエクのお約束、資料ありませ~ん コントローラーがst7565らしいけど、日本語の資料が落ちてない (T^T) 読み取りバッファが無いので、読み取りが必要な場合は自前でバッファを持たないといけないらしいというのはわかった バッファサイズが1k要るとか、mega328あたりが必要っぽいですねえ それは、絵は描かないと割り切るかw はは、」途中で飽きて完成しない悪寒もw でも、LCDは使えるようにしときたい、他でも使えるから 必要な人が居るかどうかわからないけれども キーボードマトリクスです この電卓の基板はテストパッドがついてるので、そこにはんだ付けして簡単に線を引き出せます ただしキートップがシリコンゴムなのでキーの表示を変更したい場合は難易度高いです キートップがプラのを買ってみたんですがテストパッドが無くて撃沈しました(レジスト剥がしという手もありますが)w https://downloadx.getuploader.com/g/mcnc/489/100%E5%86%86%E9%9B%BB%E5%8D%93%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89.jpg >>69 どれか一つのキーをShiftキーのように決めておいてキーが押されたらLCDにキーレイアウトが表示されるようにするとか Shiftキーを押すごとに異なるキーレイアウトを表示し何かキーが押されたらそのキーにマッピングされた機能が入力される キーマッピングは3セットくらい持っておけば足りるかな 全キー表示しちゃうと表示領域がもったいないので DOSみたいに上段1列がいいかもしんないですね >>61 DB命令のバグってどんなの? バグではないけど、.db でバイト単位のデータの定義のしづらさはなんとかならないのかね。 2バイト単位でしか定義できず、奇数バイト数定義だと隙間が 0埋めされちゃうのがクソ面倒。 行末に ¥ 付けて改行すれば折り返しだけは見やすくできるけど、ラベル振れないから限定的。 アセンブラ丸ごと作ろうとは思わないけど、せめてイカしたプリプロセッサ作れたらいいんだけどな。 でも.macro やら #define やらまで考えるときちんとしたプリプロセッサ作るのも容易じゃないのよね。 >>74 AVRを始めた頃の古い話でよく覚えていないが、文字列2個を続けて定義すると 前の文字数が奇数個か偶数個かで、後ろの開始アドレスが一つズレる、だったかな それ、アライメントの作用であってバグとは違うような 統合環境と親和させられるならアセンブラを丸ごと自分で作りたいな。 シミュレータでデバッグするときのブレークポイントがソースコード上に張れればいいんだけどな。 どこかにアドレスとソースコードの行番号の対応を持ってるんだろうけど、そういう仕様ってどこかに公開されてるのかな。 マイクロチップスタジオ、重くて使う気がしないので 軽い統合環境ほしいですよね~ >>78 マイクロチップスタジオ立ち上げなくてもシミュレータが動かせればいいんだけどな。 でもシミュレータは独立の exe になってるから、単体で使える可能性もあるんかな。 でもレジスタやらメモリやら I/O の状態表示やデバッガの操作インタフェースを考えると何らかのフロントエンドは必要で、大人しくマイクロチップスタジオ使っとく方がいいのかなぁ メチャ大事なポイントだよね → ブレークポイントがソースコード上に張れればいい → 何らかのフロントエンドは必要 >>81 よく見たら単体のというのは語弊があったかもしれないけど、Atmel Studio 7.0 では atbackend.exe だと思う。 その名前じゃわからんわなあw ポチっとしてみたけどなんも起こらんかった >>83 標準入出力か何かで情報交換するんかな? そこら辺スルーさせつつ記録する中継exe 作れば解析はできそう 標準エラー出力を開発統合環境のデバッグペインに垂れ流してくれるとデバッグが捗るんやけどな・・・ qfp32の3281番ピンの角、欠けてることになってるけど 全然わからん・・・ pin3とpin5がGNDらしいので テスターで各辺の三番目‣五番目間の導通を・・・ >>89 なるほど、無事判別できました、ありがとう やっぱり表向きにしようと剥がした 接着剤が詰まって1ピンマーク見えませんw テスターえらいw 自作ボードを超えて 今、時代の最先端だよ 自 作 の 壱 ピ ン 記 号 >>94 信号名ではなくてピン番号だけでもいいから どこかでシール作って売り出してくれないかな >>95 ラベルシールエディタで自作したら? シールはサイズ違っても適当に切って使えばいいし。 フリーのマクセルのラベルプロデューサーはオブジェクトの位置やサイズ 0.1mm 単位で指定して原寸印刷できて結構便利だよ。 一方ろしあは マジックで点を打った・・・ たしかにQFPとかSOPのICをひっくり返して空中配線するとき白いペイントマーカーを使うなぁ SOPも1ピンと16ピン/14ピンを間違えないように1ピンに点を打っとく(´・ω・) 今日9月9日は重陽の節句 「菊の香や 奈良には古き 仏たあち」 (芭蕉) 新暦じゃ菊なんかまだ早いっちゅうのw そういえば、いつの間にか「カム着火ファイアー」とか言わんなったな(´・ω・) 455kHzのセラミックフィルター(セラロックでもセラミックレゾネータ―でもなくラジオに使うフィルターのほう)があったからそれで発振させてみた 既に書き込み済みのAVRはちゃんと発振してクロック周波数比相当に遅くなった 別のHEXを書き込もうと思ったらUSBaspがエラーになった SlowClockのジャンパーしてもAVRDUDEの-Bオプション付けてもダメだ まさかとは思ったけど別の時期に買ったもう一つのUSBaspで書き込んでみたらジャンパーもオプションもなしでそのまま455kHzのAVRに書き込めた USBaspって書き込み済みのファームのバージョン確認することってできるのかな?新しいファームを上書きするしかない? 本家のファームがアップデートされた日付と、買った日付を比べて 買った日付より新しいファームが入ってるわけは無いので 最新じゃないことの確認くらいはできるんじゃないかな 中華usbaspの場合、ハードを変えてあったりして 独自のファームになってることもありだから、気を付けて うっかり本家のでアップデートしたら文鎮化なんてこともあるよ そもそもプロテクトされてなくて読みだし放題という落ちはないかなw 1台は中途半端な「追記ロック」がされてたけど読み出しは2台とも出来て一応flashのHEXとかFuseビットとか保存しといた EEPROMは2台とも空だった 2台は微妙に違っていてジャンパのシルクとかも違ってた https://i.imgur.com/BYvUGkD.jpg 上が最初に買ったほうでJP3をショートしても遅いAVRに書き込み出来ない 下はあとで買ったほうでJP3をショートしなくても遅いAVRに問題なく書き込み出来た いろんなサイト回ってみたけど本家の最新より新しいのもあるみたいでよくわからん 本家の最新はTiny10とかで使うTPIに対応してると書いてあるけど別のサイトではバイナリ(HEX)は古いからTPIに対応してなくて自分でソースからビルドが必要とか書いてあるところもあった まあ当分TPIとか使う予定はないけど… 本家のファームで動くことが確認できてるなら、アップデートしちゃったほうがめんどくさくないかも うちにあったのは見事に文鎮化(軽すぎて文鎮にもならんかったというのはナイショ) いろいろよくわかってなかったときだったから捨てちゃったけど どうせピンの接続がちがってるだけだろうから、ソースからビルドすれば、多分使えたんだろうなあと思う お手軽だからか、回路図ついてるからか、自作してる人よく居るね で、自分で機能追加しちゃう猛者までwで、ファームがよくわからん状態に というわけで、本家回路で作っとけというわけでKicadの練習がてら作ったんだけど いろいろ間違えてて、あれ、なんでここの線細い?とかUSBコネクタが逆とか、かわいそうな基板が たくさんできてしまいましたw ここもそのうちに「ひどい有様」になる どこだって必ず「ひどい有り様」になる なぜなら日本人だから 2台あるうちの古いほう、JP3ジャンパしても遅いAVRに書き込めなかったほうのファームを書き換えてみた とりあえず本家の最新版2011-05-28 JP3ジャンパすると遅い(455kHz)のAVRにも書き込みできるようになった もう一台のほうはJP3ジャンパなしでも遅いAVRに書き込めるからもっと別のファームが入ってるんだろう 本家の最新(2011-05-28)はVer.1.04らしいけどgithubに1.06とか1.08が存在するらしいことが書いてある もしかしたらそれかもしれないし… いろいろ検索したついでにちょっと出てきた情報 5V/3.3V切換えジャンパはあまり有用ではないということ 3.3Vに切り替えてもターゲットに供給する電源は3.3VになるけれどMISO,MOSI,SCKなどの信号は5Vのまま 安いUSBaspに搭載されている3.3Vレギュレータの近くにバイパスコンデンサがない (ウチのやつは2台ともレギュレータがXC6206-3.3Vが載っていたがコンデンサがない) 入力はUSBコネクタの近くにあるコンデンサが多少効くかもしれないが出力はケーブルの先のターゲットのところまでいかないとコンデンサがない この場合のレベル変換は、双方向じゃないので抵抗分圧でも、いけるそうな、でももっと簡易的には 5Ⅴ出力から3.3vの入力へのラインに電流制限抵抗を入れるだけでもいけちゃうって話を聞いたことあります(やってみてないけど しかし、波形がかなり鈍るそうなので高速ではだめかもしれない、真面目にやるなら、まともなレベル変換チップを入れたほうがよさそうですね やっぱり、改良版を作っときますか グーグル先生に質問してきましたw 制限抵抗式は、5v出力→抵抗→ダイオード→3.3vへクリップという方式のダイオードを省略し、代わりに入力の保護ダイオードを利用してるものらしいです 制限抵抗でいいんかいという疑問が晴れました 実際上問題はないのでしょうが、ダイオードくらい自前でいれとけば回路見た時に、なるほどと理解できそうなもんですがw ターゲットへの供給電圧を切り替えればクリップ電圧も切り替わるのでめんどくさくなさそうです >>111 私もググってみました 1.06から応答がない場合にSCKを自動で遅くする機能が追加されたみたいですね 本家の回路で謎なところ、USBの信号が3.3Vなのでツェナーでクリップしてるようなんですが ツェナーの電圧が3.6vなのはなぜ~w ここのフォーラム少し読んでるんだけど https://forum.arduino.cc/t/usbasp-update-warning/350679 最初の人が5個のHEXファイル載せてるけどそのうちの「chinese1.hex.txt (9.58 KB)」が>>107 の2台目のジャンパなしで遅いやつに書き込める方から吸い出したHEXと完全一致した… 名前がchinese1っていうのがちょっと引っかかるんだけど…う~ん…まあ動いてるからいいか、でもできればこれのソースも見てみたいかも 1台目から吸い出したHEXはネット上に転がってるHEXと一致するものがまだ見つかっていない(古いのかそれとも改変してるのか、まあいいけど) 1.08のソース有った https://github.com/nerdralph/usbasp/releases/tag/v1.08 ドライバーを入れなくても、ウィンドウズが持ってるドライバで動くようになったみたいです レベルシフト問題は、とりあえずは基板いじらずにケーブルに抵抗入れとくという方法でもよさそうですね 三端のコンデンサなしもんだいは、使ってる三端によっては発振しちゃうみたいですね 基板にコンデンサをはんだ付けして対処してるようです あとは、改造して使うか、基板起こすか READMEに書いてあるバージョンは1.4とかになってるしよくわかんないですねこれ ソースのコメントには、* Last change....: 2020-11-26 ってあるから、 本家のよりは新しいみたいだけど、同梱のHEXはファイル名が新しくない 自分でビルドしろってことですか、そうですかw なるほど、ということはそこの1.08が今のところ最新っていうことになるのかな 1.08のusbasp-1.08\bin\firmwareにあるのはどうやら本家のやつらしい、1.08のビルド済みHEXはusbasp-1.08\firmwareのなかのソースと同じフォルダにあるmain.hexがMega8用、m88.hexがMega88用みたい(たぶん) とりあえず本家の1.04までとそれ以降のGitHubの1.06、1.08あたりが本流ということのようだけど(どうでもいいかもしれないけど)それ以外のもあるようだ というのも>>117 に書いたchinese1.hex(うちにある2台目から吸い出したものと一致したやつ)が気になったので調べてたらどうやら正体が分かった 売られているUSBaspは微妙にいろんなバージョンがあるけどきちんとメーカー名の入ったものはそう多くはなくその中の一つに「LC Technology」というシルクが書かれている基板がある これ用のファームが「usbasp-lc-technology-2015-12-29-atmega8.hex」というファイル名でネット上にいくつかあってそれと一致した 最新のオフィシャルWebページが不明だけどアーカイブの http://www.chinalctech.com/index.php?_m=mod_product&_a=view&p_id=1238 がそうらしい ちなみに 「chinese1.hex = LC TechnologyのHEX = ウチの2台目から吸い出したやつ」 はここでも拾える(他にもあると思うが) https://github.com/bperrybap/usbasp/tree/1.06-alpha/bin/firmware のなかのusbasp-lc-technology-2015-12-29あたり >>116 たしかにこの3.6Vは謎だけど正常時の電圧というよりはサージや静電ノイズ等からの保護って感じかな 寝て起きたらひらめきが有ったので回路図をもう一度見てみた なるほど~、USBバスは双方向なところへ、この回路は5vの信号を 3.6Vに落とすようになってる、一方通行のレベルシフトだ PCから見ると、ツェナーが直接ぶら下がってるので、3.3v以下のツェナーだと具合が悪い というわけで、3.6Vになってると理解した MISO、MOSI などのレベルシフトにつての考察 幸いに双方向で有る必要はないので出力は抵抗一本ですますことができる だがしかし入力はどうだろう、入力のスレッシレベルがおよそvcc/2だから ターゲットからの出力が崩れてなければそのまま受けることができる だがターゲットの電圧が2Vだったりすると、ハイレベルが認識されなくなってしまう 書き込み機を3.3Vでうごかしてやるとうまくいくんじゃないかとひらめいたが ほんとだろうかw 暇な人は検討してみてくださいやし そうか、USB→Mega8方向ではなくてMega8→USB方向のためのツェナーか USBasp→ターゲットについてはMega8Aを3.3Vで動かせばっていうのは自分も考えたけど仕様上はちょっと無理のよう Mega8Aのデータシートのグラフに補助線を引いてみた(実際にはまあまあ余裕があるから動くだろうけど) https://i.imgur.com/aWBs6ZG.png 実力値で動いちゃうかもしれないって感じですかね 本気で幅広いターゲット電圧に対応するなら 真面目にレベルシフト回路を入れたほうがめんどくさくないってところでしょうか USBのことをググってたら信号レベルが2vなんてのが出てきて あれ?3.6vツェナーの立場は?ってなってます 信号レベル2vの謎 どうもスレッシレベルが2vってことのようで 実際何ボルトで出してんのか不明でした でも3.3あたりでだしてんでしょうね、多分 なんとなく JS で AVRrc の簡易エミュレータを作ってみた。 I/Oの動作は何も再現しない CPU だけでクロックタイミングも合わせてないけど、Celeron N4120 な PC の Webブラウザ上で実機より速く動いてる。 今時の JS はすげーな 103 だと思って付けてから、よく見たら 10Jだった・・・ USBASPを一個つくって、1.08のファームを入れてみた(main.hex) 新品チップに書き込むときも、スロージャンパを切り替えずに 自動でクロックダウンしてくれるのが確認できた しかもジャンパで落としたときより、かなり速い、段階的に落として通信できたところで 動くようになってる感じかな? こっちがメインになりそう、今までのは予備としてそのまま置いとこうかな スロージャンパ刺しても自動と速度変わらんかった、 以前のが落としすぎだったのかな?(未確認) あとはドライバー問題ですね、 main_winusb.hex を使えばwinusbで動きました が、すでにlibusbkが入っているのでZADIGでリプレースして試したので、 すっぴんウインドウズですんなり認識してくれるのかは試せてません すっぴんウインドウズ(win10)で試してみました 確かにウインドウズの持ってるWINUSBドライバで認識はするのですが 自動認識してくれませんでした コンピューター上の利用可能なドライバーの一覧から選択してやらないといけません これなら、ZADIGでぽちっとなと、するほうが簡単なので 無理にWINUSBバージョンに変更することはないかなと言う感じでした USBASPの10ピンコネクターにはtx,rxがつながってるけど、ファームが対応してないので使えない 対応ファームを作ってる有志も居るようだが、ベースになってるファームがちょと古い そこで、FT232あたりを載せて、そっちに任せてはどうかと思ってみる そうすれば、bitbangライターとして動作可能にもなるので 自作したときの「最初の書き込みどうするの?」が解決するし アップデートのときに「他のライターが要る」問題も解決する どうこれ 以前にbitbang試したときは全然苦労した記憶が無いのに、 何故か動かせない、う~む コンパイルし直せ的なメッセージでるが 前は、すんなり動いた記憶しかない avrdudeのバージョン依存か?まいったな avrdude 7.0でスタティックリンクになって、リビルドしろメッセージは出ない模様 が、デバイスから応答がないから接続を見直せと宣う、一応動いてるようだが 接続間違えてるようには見えないんだが・・・・詰まった 他のライターあることだし、まあいっか おおぼけかましてた slkとselfを取り違えてた 信号線しか見てなかったよw あっさり動いた usbasp + bitbang + usbuart miso mosi sck rst に抵抗入れて3.3V対応 downloadx.getuploader.com/g/mcnc/492/bitbang.png avrdude 7.0はここ github.com/mariusgreuel/avrdude/releasesm/g/mcnc/492/bitbang.png 昔買ったAT90S2313でちょっと遊んでいる PICで言うところの16F84Aみたいにすごくシンプルで隅々まで理解しやすいな -10っていう10MHz品と-4っていう低電圧まで使える4MHz品があるけど-10でも5Vで20MHzで動いた(Lチカだけど) 今、12MHzのクリスタルで出るUARTの最高速度750kbpsでAVR→PC方向に少しデータを送ってみたけど特に問題なく送れてちょっと拍子抜けした感じ PC→AVR方向でも試してみるか… 懐かしや、私の「初めてのAVR」 ワンチップCPUをPIC16F84で始めて、すぐにこれに乗り替えた。 思えば遠くまで来たもんだ。 今数えたら私の所にも未使用AT90S2313が19個残っていた。 AVRの魅力は何と言っても、<汎用レジスタが32個もある>だと思っている。 ザイログZ8みたいに複数組みあればもっと良かったけど、上を見ればキリが無いし、 下を見ればPIC16F84 がある事だしw (PICファンの人、ゴメンネ、当時の話です) ATTiny10 は 16個しか無いけどな。 SRAM も 32バイトしかない。 だがそれが楽しい。 フト、16個を二組持つのと32個を一組持つのとでは、 どちらが良いんだろ、と5秒ほど考えてしまった。 (二組のどちらを使うかは命令あるいはフラグなどで切り替える) (Cからアセンブラを呼び出すときとか)マニュアルで(フラグとか切換え命令で)切り替えてもいいけど、割り込みで自動的に切り替わって割り込みハンドラからの戻り(RETI)で元のレジスタグループに戻るみたいなのがいいか… あれ、そういうのどっかで見たような気が… >>146 考える余地なく32個を一組だよ。 たとえば16個2組だと、各処理は結局16個のレジスタだけで処理を書くことが基本となる。 そうやってレジスタ数を絞って処理が書けるなら32個一組のレジスタの内 16個を使っても書けるわけで、そういうレジスタ数の配分を16個2組といった枠に囚われず自由にできるようが間違いなく良い。 この4レジスタは割り込み処理専用ね、とかね。 ただし Z80 みたいにレジスタの役割が実質固定されてるようなアーキテクチャだと、バンク切り替え式の方が便利だろうね。 なぜならレジスタの住み分けができないから。 Z80裏レジスタは割り込みでpush pop してると遅いときによく使ったけど AVRみたいに他が充分速いうえに演算に使えるレジスタがいっぱいあると 出番ないよね AVRは16ビットが扱いにくいのが玉に傷 AVR32はむりやりAVRって名前つけてるだけで、中身別モンって言うじゃない >>152 >AVRは16ビットが扱いにくいのが玉に傷 データ8ビット、基本命令コード16ビットのCPUだから、 そこまで要求したらCPUを設計した学生が可哀想w 私はむしろ制限ありとはいえ、16ビット演算命令があることに感心した。 32個もレジスタがあるから、全レジスタを指定する命令なら 命令コード16ビットのうち5ビットも消費してしまう。 CPUを設計するってトレードオフの連続なんだろうな。 あちらを立てればこちらが立たず、仕方がない諦めよう、みたいなw 別に扱いにくくはないけどなぁ••• まさかアセンブラで書いてんの? でも EORI が無いのは納得いかない。 例えば EORI と引き換えに ORI を無くしても、 ORI Rd, imm は ANDI Rd, ~imm EORI Rd, imm で代用できるけど、EORI は ANDI や ORI じゃ代用できない。 一時レジスタ使えば 2命令で実現はできるけど、レジスタ数キチキチの時には厳しいんだよ。 >>157 数KB、せいぜい数10KBの小さな制御用CPUプログラミングで、 AVRを使う面白さや楽しさは、AVRの個性、特徴、持ち味などが 存分に発揮されるアセンブラ・プログラミングにあると思っている。 制約の多いレジスタ群の使い分けをプログラム設計時に検討するのも楽しい。 アセンブラじゃないと実現出来ない仕様もあることだし。 アセンブラパズルプログラミングとか 30年前に卒業したわ Cでやりたいことやれてるなら無理してアセンブラ使う必要は無いわな。なんならBASICだっていい。 アセンブラ持ち出さないとスペックが足りないならいくらか払ってマイコンをクラスアップすればいいし、AVR にこだわる必要もなくシングルボードコンピュータ使う選択肢だってある。 わざわざアセンブラ使うのは、やりたいことがそもそもアセンブラを使うという場合くらいだろうな。 AVRで速度足りないからラズパイってことにはならないだろ。 むしろI/Oなんか遅くなるよ。 ARMもアセンブラで書くのか?OSは使わずに。 スペックってのは速度とは限らんよ。 メモリが足りないとかストレージ欲しいとかいろいろあるでしょ。 Cの人ってなぜかアセンブラをばかにするけど Cなんて高級アセンブラって言われるくらいあせんぶらに寄ってる言語なんだからねw >>163 メモリ32KBのAVRから4GBのラズパイに切り替えなきゃって そもそもおかしくね? >>165 やりたいことができるならアセンブラで頑張る必要は無い、アセンブラを使うことが目的じゃなければね という主張を補足するのに並行して やりたいことができるなら AVR でがんばる必要は無い、AVR を使うことが目的じゃなければね という文脈で言ったつもりだったんだけど、難しかったみたいね。ごめんね。 スペックというのが速度だけじゃなくメモリとかあるでしょと言ったら、今度はメモリに拘ってくるとか頭痛いわ。 温度測って Bluetooth や WiFi で飛ばすもの作りたいと思った時、あえて AVR で頑張ってもいいし別のもの使ってもいいでしょ。 AVR でもアセンブラでも、目的にも手段にもなるというお話をしたかっただけですよ。 SBC使う選択肢「だって」ある がどうして AVRから次はラズパイ限定になるのか? nanopi 面白かったよ。 iSCSI のネットワークディスクを USB HDD に見せかけるブリッジ作った。 ラズパイまで行かなくても、picoだってだいぶ高性能だよね ゆるAVRのスレなんだし、基本AVRで遊ぶことが前提ってことでいいんじゃないの? ファンが集まるところにやってきて、ほかのマイコンその他への乗り換えを勧めるのって、 感情を害する確率が高いことを分かっててやってるよね。 デリカシーが乏しいとか、悪意が強いとかそんな感じ。 マイコンの比較をしたいなら比較スレがあるからそっちでやれば良いと思うんだ。 だれも乗り換えろなんて言ってないだろ。 (一連の書き込みがどうとかじゃなく一般論として)アセンブラに拘ることを半ばディスるような言い方がある中で、AVRに拘ってモノを作ることに重ねてみただけだ。 ここにはわざわざ AVR を使う連中が多いのだろうから、そうたとえることで「わざわざ」そうすることの意味が分かってもらえるだろうと狙ったのな。 どうやら狙いは大外れだったようだけどな。 >>160 優秀なんやな、そつぎょうおめでとう ぼくは 在学資格を失って放校処分です(^p^)うぇーい >>172 アセンブラでガチガチに書くことのどこが 「ゆるAVR」なんだよ? > 私がAVRのプログラムをASMで書く三つの理由 > AVRのアーキテクチャの面白さに密着したい > 小さくて早いプログラムを書きたい > マルチタスクを使いたい 人それぞれの選択理由があるんだろうな、趣味か仕事かでも異なるだろうし、好きにすればいい >>177 マルチタスクというのがよく分からんけど、どういうこと? 技術的な優劣を一次元で考えるのも変だし、そんないい加減な技術的な優劣で、趣味の優劣を論じられた気になる人がいるのも人間の弱さだなあ。 >>180 禅問答みたい。 抽象的すぎて私にはよく理解できまっしぇ〜んw 前から気になっていたのですが、 もう少し分りやすく具体的に書いてくださるようお願いいたします。 ソースコード一つとっても動作の堅牢さという軸、 コメントを含めて保守するための読み易さという軸、 この例だけで二軸=二次元なんだしもっと多元的な評価が本来は必要だろう、 というようなことなんだろうなーとかってに理解したつもりになる;しらんけど。 avr用のおぺれーちんしすてむって、あぶろすってよむのかな? なんつーか…精密製品につき踏みつけないでください、という上乗り式体重計的な不安感が漂うとるな・・・しらんけど(^p^; OSであるために何があればいいんかな とりあえずスライサーは要るよね MS-DOS だって OS だぞ。 ざっくり言って資源管理してアプリケーションの求めに応じて切り売りできれば OS だと思う。 じゃああ~、avrでosに割り振ってもらいたくなるものってなんだろう 外部ストレージ使いたいとかだと、avrDOS ってのもありかもですね マルチタスクみたいのやりたい訳じゃなければライブラリでいいじゃんっていう。 マルチタスクにしたってどうせ電源入れてから切るまでずっと同じのが動いてるんだから、別に OS に世話してもらわなくてよくね?っていう。 タイムスライスにしても、規模的にいつも並行して動くというよりイベントを受けての処理になることが多いだろうから、割り込みでよくね?っていう。 余所のOSに書かれたコードをそのまま動かすレイヤーとしても、やっぱライブラリでよくね?っていう。 複数の動作をするプログラムを一個のプログラムとして書くのと 単独のプログラムを複数書くのとでは楽ちんさが違うのよさ たしかFreeRTOSはAVRに対応してたんじゃないか? 皆んなで楽をしよう\(^o^)/ >>197 ただでさえ少ないCPUパワーとリソースが... LED 1個に1タスク ボタン1個に1タスク みたいな姿が目に浮かぶ >>198 そこでATMEGA1284Pの突入ですよ >>199 ボタン1個やLED1個にタスク2〜3割り当ててもええんやで \(^o^)/ >>193 void main(void) { task1(); task2(); } そのtask1とtask2が同じリソースを必要としてる場合どうなるかな まあ昔は>>201 みたいな順繰り回しのOSも存在してたらしいけどな >>202 両方のタスクがPB0を使いたい場合、 ちゃんとしたOSならどうするの? どうにか出来んの? >>202 もしかして全てのリソースを使える単独のプログラムを複数作るのと比較してる? 違うでしょ タスクに分けた各タスクを単独のプログラムと呼んでるわけてしょ? そういうのはOS様に、使わしてくだせ~て、お願いしてから使うから 同時使用にならないようにOSが管理する 複数からアクセスしなきゃならない必要がある場合は、OSが交通整理してくれる 1番さんどうぞー、2番さんちょっとまってね~、空いたよ~2番さんどうぞ~てな感じ ちゃんとしたOSならって問だしね~ なんちゃってOSでも便利になるならいいと思うのよね ちゃんとしたOS配下のプログラムって書くときの手続きがいろいろめんどくさくなるから ここで作るとするなら、なんちゃってOSのほうが受けがいいかもしんないね 例えばゲームウォッチを OS 使って書き直したらどんないいことがあるだろ。 ファミコンのゲームでもいいけど。 windowsだと複数からアクセスされるべきハードはデバドラ経由でしかアクセスさせてくれなくて linuxはこっちで使わせてくれってお願いして許可が降りたら直接いじれるって聞いた >>211 世の中にあるRTOSはちゃんとしたOSじゃないと? OSの権限が強すぎるとリアルタイム性が犠牲になるからRTOSができてきたんじゃないの? 「夢みれば夢も夢じゃない」 なんでもできるはずだわ〜♪ そこにあるもので〜♪ 夢が広がりんぐ \(^o^)/ もちろんマルチタスクで書けるプログラムはシングルタスクでも書けるが あえてマルチタスクにする目的、恩恵は 「プログラム構造を単純化する」→「開発時間を短縮する」 ではあるまいか? >>199 模型自動車のライト制御 まずSW1個と対応するLED1個の点灯プログラムを作り、次にこれを8組並べる ここでは排他制御、明るさ制御など少し複雑化されているが プログラミングに時間は掛かりません https://pastebin.com/hZ4EiF7m 参考 SWとLEDを2組並べたもの https://pastebin.com/ZYFYsR3S でもゲームとかFM音源バリバリ制御しながら 500キャラ動かして弾幕描写とかをマルチOSに任せて作っても 画面にノイズ出て始末に負えなさそう >>218 プログラム領域が無限なら、とか 応答までの時間猶予も無限大なら、とかいう 制約が付かないとシングルタスクでも書けるとは言い切れないんじゃね?しらんけど;(^p^; ライブラリでいいじゃんとか、OSって結局ライブラリの集合体みたいなもんやん リンクされて一体になってるか、別々に存在してるかってだけでしょ >>221 それはそう。 ただどのみちひとつにしてROMに焼き込んじゃうんだから、AVRアプリケーションくらいなら一切合財全部リンクしちゃう方がいいな。 例えばファミコンはカセットの中の ROM を CPU が直接実行するけど、スイッチのはカセットの中のファイルを適宜メモリにロードしてそれを実行する。 後者のような構成だとOS欲しくなるけど、前者のようなのだとOSなんて大袈裟なもんいらん と判断するな。 同じプロセッサ上で動く未知の誰かと協調する必要もないし。 それだよ、みちの誰かと強調することができるってのがOSのメリットやね うわ、タイポひで~w 未知の誰かと協調できちゃうってのがOS利用のメリットやね >>218 >「プログラム構造を単純化する」→「開発時間を短縮する」 じゃあアセンブラとか使うなよ 書いてることが支離滅裂 シングルタスクならリソースもパフォーマンスも有利だからCで余裕じゃ? ディスパッチャ君だよね いまだにLEDやSWから卒業出来ないの? 万年Lチカ? OSイランようなちっこいプログラム書くのにCだろうがASMだろうがたいして工数変わらんやろ OS使わない=>ちっこい って発想はヤバい 8bit/16bitマイコンでもピン数やROMRAMが大きな物が存在する これらの使われ方を考えた事があるかな? アセンブラ 工数 大 保守性 最悪 可読性 最悪 移植性 最悪 可読性、コメントのないソースはCでも充分可読性悪いしぃw 移植性いいのは、Cの中の人がやりくりしてくれてるだけだから 他人の作ったライブラリ使ってるのと同じよな OS使うのも同じよな OS否定の理由としては弱いね というか、いつの間にかC対ASMの構図にすり替わってるのは何なんだろう?w あ、OS配下なら開発言語がバラバラでも共同開発できるってのもメリットじゃね? >>233 サイズ、速度、メモリ使用量なんかを突き詰めたくてASM使うのに、OS の出る幕は無いということだと思う。 他人の作ったライブラリすら避けるかも。 >>235 ASMで冗長なソースばかり書いててゴメンねゴメンね~ >>233 8bitマイコンのソフトはC, OSレスが普通 ASMは一部では使われている OS搭載ほぼゼロ >>234 8bitマイコンの話だよね? >>220 また知らんのに書き込んでるアホがいるな。 マルチタスクなんて仮想的なもので、ひとつのCPUで動けるならシングルタスクで動いてると言える。 ちなみにどんなプログラムでもアセンブラで書ける。 >>237 何が主流で普通とかは置いといて、ゆるっとなんか作って遊ぼうよというスレなのでイイのです >>232 なんか適当にペリフェラルを2つ3っつ使うようなのをライブラリ使わずに書いてみ、ASMとたいして工数変わらんやろ 逆にASMからでもライブラリ使えるんだから、こっちもたいして工数かわらんよな 8ビットでもマルチタスクな小さいOS作って 利用していたけどね。Z80とかの時代だけどさ PICなんかが流行ってタイムスライスすらやりにくく なって、TK-80な時代に逆戻りした感が半端なかったっけな >>241 Z80 に比べて PIC がタイムスライスやりづらいってどういうこと? Z80 には裏レジスタあるからってこと? でもそれだと2タスクでしか恩恵無いけど。 裏レジスタなついww スライサが使うレジスタセットとスレッドが使うセットの1対あればいいんじゃね? スレッド数分ある必要ないでしょ あVRにも隠し命令であったりすると嬉しいな、裏レジスタw うそつくなよ とうじは りあるたいむもにたってよんでたろ!(^p^) 8bit でもかなりしっかりした OS-9 なんてのもあったな。実際に使ったことは無いんだけど。 そのプロセッサ 6809 はレジスタの多い AVR とは対極で、ほんの少しのレジスタと 256バイトメモリ領域を変数として簡単に使えるダイレクトページを設け、そのページもレジスタで指定できたからマルチタスクOS に適してたんだろうね。 コンテキストスイッチがかなり軽くできる。 逆に言えば、レジスタの多い AVR は OS がマルチタスクをサポートするのには面倒かも。 >>240 仮に動くまでの工数がほとんど同じだとしても その先の工数が大きく違うのだよ 同じロジックを別CPUで使う場合 5年後に動作変更する場合 別の人に引き継ぐ場合 ... モデムを使うときのウインドウズのテレホニーAPIが95の頃のままだと Windows10から使うと回線切る時にブルースクリーンなんよ・・・ ライブラリ供給元が更新しなくなる可能性があるわけで; あんなの シリアル経由でATコマンドうつだけなんだろうから自分でくんどきゃよかったよ・・・ まぁそれもめんどくさくて騙し騙し使ってるわけだが; >>246 5年も前のソースなんて見たってわからんわ そんな長期にわたってメンテナンスするもんならドキュメント残してるだろ 5年後に変更するかどうかなんて予想出来る? 5年後じゃなくて1か月後でも 引き継ぎは? >>218 を誰か引き継げる? だからメンテナンス性考えるならドキュメント残しとけよって話やろ cだろうがasmだろうがドキュメントの有り無しが肝よ いちいちソース解析からはじめて動作理解からコード直してとかやってらんねーっての >>252 私はドキュメント類は一杯書く。 アセンブラでもほぼ1行ごとにコメント書くし(さすがにRET等は除く事が多いけど)、 サブル−チンにも先頭に機能や受け渡し情報などを書く。 それでも後で思い出すのはた〜いへんw 皆様方には色々と御意見やら御批判をいただいている >>218 です。 私は「より早く、より小さく」を目標に、 お気に入りのAVRのプログラミング道を私なりのやり方で究めたい、と日夜努力しております。 皆様、これからもCでもASMでも、お互いに自分の信じる道で切磋琢磨いたしましょう。 なんちゃってw ソースと言えば今日の我が家の夕飯は オムライスのグレービー「ソース」掛け、スパゲティサラダ添え >>252 同レベルのドキュメントがあった時に Cとアセンブラどちらの方が早い? 修正とか移植とか流用とか 同レベルのドキュメントを作るのに Cとアセンブラどちらの方が速い? アセンブラの方がドキュメント量は多いよね? Cとアセンブラで工数が同じなんてのは大嘘 >>254 より早く、より小さく ならディスパッチャとか論外じゃん ドキュメントあってもどうせコードも読むよ。 というかむしろドキュメントなんてほとんど読まずコード読んでる。 >>253 コード変えた時にコメント直し忘れてると何が本当か分からなくなるよね。 害悪でしかない。 >>261 あるある、だが自分のミスだからしょうがないw そこで日本語プログラミングですよ ソースがそのままコメントw >>251 別に業務の引き継ぎだけじゃなくて 他人のコード流用でもいいけど ディスパッチャ君のコード流用は不可能 >>253 本当に1行ずつコメントが必要だとしたら ソースがまずい >>255 流用が下手 ということ 趣味のコードでドキュメントなんてたいそうなものいちいち書かんだろ 簡単なメモくらい ディスパッチャ君自信も PIC、STM8、RL78 に移植とか出来ないでしょ だから万年tiny2313 俺のキーボードを昆布茶でびしょびしょにしようとしないでくれ ここではディスパッチャ君なんて名前がついたのか。 相変わらずのガイキチっぷりだな。 >>264 移植というか、アセンブラで最適化したコーディングするならそれぞれに作り直すんじゃないの? そもそも同じものを別のマイコンで動かす必要があるかも分からんけど。 コメントやドキュメントはこう動けば良いなの願望が書かれたモノだから。 >>269 少なくとも只者ではない 僕は彼の根気強さに負けて作例を1点作った\(^o^)/ 1000uFへの突入でレギュレータ飛ばしてしまった 低ESRヤバい >>273 へぇ・・・ 保護に電流制限の抵抗を入れると電源投入直後の充電時以外は邪魔でしょうけど どう対策するんすか? インダクタで電流制限とか出来るんすかね? ああそうか 極論として 仮に一瞬短絡したとしても 電圧が急減するだけで それだけで 電源を壊わすというのはむしろ難しいような気もするか; むむむ >>273 それで飛ぶくらいの容量のレギュレータで動かす負荷に対して 1000μF がデカ過ぎってことじゃない? >>273 大抵のレギュレータには過電流保護機能とかサーマルシャットダウンがついてるので 大容量のコンデンサで飛ばす(壊す)のは難しいと思うの たぶん\(^o^)/ 僕はむかし3端子レギュレータの端子をIN,GND,OUTと思い込んで間違った配線して壊した 7805とかと同じ感覚でNJU72233を配線したらポンした\(^o^)/ >>258 実際にサンプルの模型自動車ライト制御プログラム(ただのLチカです)を シングルタスクで書いて。催事と速度を比較してみていただければ、と思います。 もちろん万能ではありません、一度、マルチタスクで書いた後に、 シングルタスクでゼロからやり直した事があります。 >>263 「溺れる者は藁をも掴む」じゃないけど、将来の機能追加など万が一の時を考えて まだ泳ぎ出す前なのにコメントを沢山書いていますw 実際に機能追加作業が始まると、意味がよく理解できないコメントに溺れてしまって、 なんだこの意味不明役、立たずのコメントは藁か!と腹が立つ。 ASMではプログラムの個々のステップの処理内容が小さく抽象的なので 分りにくいってのもあると思う。 コメントあるあるやねw 自分のために書くと、結局イミフと化すとかよくくある 最近は初めから他人に説明(解説)するつもりで書くようにしてる なんだかタイプミスが多いな、睡眠不足が原因かな・・・眠い・・・ >264 このディスパッチャは移植なんかできまっしぇんw なにしろ相手はマルチタスクに何の配慮も無いAVRですよ。 ただし、考え方(動作原理)さえ理解していれば、全てのCPUに応用できます。 (あ、ごく一部のCPUを除く) >>269 ただの通りすがりのAVRプログラミング求道者です。 「あと5年有れば真のAVRプログラマになれたのに」 と言って死にたいのですw しかし、このゆるスレがすっかり本スレになってしまったね 仕事の話で言えば、関数の中身が全部コメントアウトされてて、なんでって聞いたらこうしないとビルド通らないからと言われて唖然としたことがある >>276 彼が頻繁にURLを貼っている(模型自動車のライト制御?) https://pastebin.com/hZ4EiF7m tiny2313にSW8個とLED6個を接続して自動車のライトの動きを再現したもの またUART入出力でPCと接続もできる(詳しくはURLに動きの詳細が出てる) ↑この仕様はCPUの貧弱なPICでは作れないとPICスレで主張してたの(涙) これを8ピンのPIC(12F1572)で作ったの \(^o^)/ >>284 別にサブスレって位置づけじゃないし、いいんでない 面白い話題ふってやれば戻るんじゃない? >>286 8ピンじゃIO足りなそうだけど、外付けの部品で拡張したの? AVR便利帳みたいのほしいなあ、ペリフェラルの初期化手順とか、コピペでパっとできる的なやつ(それにかぎらないけど) 一回作っちゃせば使いまわしできるけど、AVR使いだして間がないから、全然ストックないんだよね 疲れた頭でデーターシート読でも、なかなか入ってこないし、みんなでよってたかって作んない? >>286 SW8個も使うなら、すべてに抵抗値違う抵抗噛ませて全部並列に繋いで アナログ入力1個で判別すれば楽 まぁ、すべての組み合わせの合成抵抗値計算したりすんの大変だけどw 並列でなく直列に繋いで、SWで抵抗をパスさせた方が簡単だな 足し算で済む 押されたボタンの分だけ抵抗値が減る >>291 抵抗値を、1,2,4,8みたいに2進数式に使うと 複数押されても何が複数押されたか判別可能 >>294 8個の識別には 8bit 必要だけど誤差やらばらつきを吸収するためにあと 2~3bit は欲しいだろうね。 でも同時押しいらないなら計算上 5% 抵抗でも 8bit ADC で最悪値 20個くらいの読み分けができる。 実際は 5% 抵抗だってそのばらつきは小さいから、もっと多くのボタンの読み分けができる。 同時押しいらないならじゃなくて、同時押しの流れやんw >>296 同時押しのパターンは説明したじゃん。 その上で元のアプリケーションの操作性を鑑みて同時押しを捨てた場合について言及してるんでしょ。 8ピンか・・・ 給電に2ピン、 シリアル通信に2ピン、 残り4ピン・・・ ダイレクトスキャンに3ピン使うと1ピンしか余らんなぁ; あ、じゃあ、 スキャンアドレスは外部カウンタでクロックから生成して 同期用に一ピン入力 スキャン周期8でスイッチ系の入力に1ぴん LEDには1ピン、8周期中6使って各各のLEDに、二周期は消灯、なら 1ピン余るから、なんとかいけるのかなぁ・・・しらんけど; >>294 抵抗のバラつきがプラス方向で かつ抵抗小さい方からの累積数より大きいという条件なら判別可能で10ビット分解能で余裕 1,2,4,8,16,33,67,140とかさ 途中欠番になるだけだし いまいちよくわからんけどこういうこと? 140Ωの5%が7Ωだから、4Ω以下のが埋もれないか? 付け替えはしないだろうから較正表というか換算テーブルで見れば行けるのか・・・?? >>301 どういう判定方法をとる気か知らんが 較正作業めんどそうやぞ・・・ よく考えると、SW 8個の場合合成抵抗は例えば 0~255Ω の間の 1Ω刻みのリニア値が得られるけど、それを電圧に変換して ADC に読ませるのは面倒だね。 定電流元使えば抵抗値に比例した電圧に変換することができるけど、当然定電流を流す電源の電圧は VREF より高くないといけないから、VREF が電源電圧に近いとフルレンジは取れないことになる。 んで >>300 の指摘のように、8bit を得ようとすると一番小さい抵抗は一番大きい抵抗の 1/128 = 0.78% でしかないから、かなりの高精度抵抗を使う必要がある。 5%抵抗なら 4bit 程度の精度 = SW 4個が保証限界だね。 逆に 4bit 程度なら、前述の定電流元は抵抗で簡略化できるかも。 >>305 まちがった、5% なら 1:16 が行けるから 5bit だね。 >>306 さらにまちがった。誤差は一番小さい抵抗の 1/2 未満じゃないといけないから、やっぱ 4bit だね。 >>298 だいれくとじゃねえ ダイナミックスキャンや 走査時にスイッチも順にみて行けばええんやな >>308 そに場合スイッチにはダイオードを挿入する必要があるし、ダイナミックスキャンのためぬ外付け部品いろいろ付けるくらいならピンの多いマイコン使う方が安いと思う。 >>309 タイポがひどい… それはおいておいて、LED 2個を並列に逆接続したペアを作れば、コモン線を 1本と LED線 n本で、つまり 1+n本の GPIO で 2n個の LED を外付け部品無しに点け分けられるね。 8ピンのマイコンで GPIO 5本取れるなら、8個の LED を制御できる。 混乱させるとスレが盛り上がる\(^o^)/ 8ピンの内訳 VDD,GND,UART RX,TXで4個 MCLR <- リセット兼スリープ復帰で1個(SW10) 残り3個 LED以外の半導体は使ってないよ〜 (※電源の入力回路を除く) SW1 Turn signal L SW2 hazard SW3 Trun signal R SW4 HeadLight change L SW5 HeadLight change H SW6 Hi/Low Change SW7 passing SW8 brake SW9 Brightness change SWの同時押し判定有り(512パターン) >>312 3ピンで LED 6個とスイッチ 9個繋いでるの? 回路図見せてくれ! 外部半導体なしか・・・なら、シリアル制御LEDと、ラダー抵抗のAD読みかなぁ・・・ ↑の補足 switch群をデジタル入力と見做して、ラダー抵抗でアナログ値を形成して それをAD変換器で解読 >>278 500mAくらいパルスで流すんで そのくらい無いと変動しちゃう レギュレーターは定格300mAまでだけど パルスだから良いかなあと思って >>279 過電流保護付きなんだよね フの字の 原因別かなあ コンデンサへの突入くらいしか思い浮かばない >>286 マイコンで扱う処理としては最も簡単な部類だな LEDのPWM周波数と、8段階の各デューティー比に関する要件は? 8pinか 素直に20pinくらいのを使った方が安いでしょ そんな、ジグソーパズルを楽しんでる人に、完成品をあげるようなことを言ってはいけないw この前試作したUSBASP+bitban+シリアルコンバーターを ケーブル2本つなぐの嫌だからusbハブと一緒にケースに収めてテストしたら 動かね~・・・と、たそがれてたら、リボンケーブルの片側逆に作ってた orz >>312 LED 8段階のデューティー比はどのくらい? DACが使えるのか PWMもリッチだね 3本で6個のLEDを8段階かあ わからん 半導体を使わないって 抵抗も? キーは1本に3個ずつかな 点灯してない瞬間にサンプリング 3品で6LED? PWMで中間値出してプッシュとプルとか LEDは1本に2個ずつ 中間電位に繋いどいてLOWとHIGHでそれぞれ点灯とか? 1pinにつきキー3個とLED2個 LOW出力でLED-A点灯 HIGH出力でLED-B点灯 入力orADCで消灯 互いの逆向きの並列接続LEDペアを 1-2間、2-3間、3-1間に繋げば全部で 6個制御できそうだと思ったんだけど、 例えば 1 を H、2 を L、3 を HZ にすれば 1-2間の順方向LEDは光るのはもちろん、1-3間と3-1間の経路の順方向LEDもうっすら光りそう。 LED 1個分の VF で 2直列のLEDが光らないなら問題無いんだけどな。 >>333 まちがえた。1-3間、3-2間の経路の順方向LEDがうっすら光りそう。 ああ、中間電位があればピン間に渡さなくてもいいのか。 でもその中間電位はシンクもソースも両方向の能力が求めらるよね。半導体無しじゃ厳しそう。 つかったLEDがWS2822Sとかじゃねぇん?しらんけど(^p^; 中間電位はCRでいけるんでね? でも、入力にするってのが正解やろね、SWも読まなあかんことやし 1ピンにLED2個の方がデューティーを最大50%に出来るし制御も単純なので良いような 電源電圧2直で光らないとかキーを押した時に光らないといった制約はいずれにしろ必要 RのかわりにCにしたら1ピンでLED3つくらい制御できるかもよ >>337 よく考えたらそうかも。 中間電位の要件はそんなにシビアじゃない気がしてきた。 でもブリーダー電流は多めに必要な気がする。 でもなかなか面白いお題だね。 3ピンでLED6個とボタン9個はやれる気がする。 スリープ復帰に専用ボタンてのは製品じゃあり得ないな ていうか、 電池駆動前提なら光らないだけじゃダメで リーク電流も考えないと シリアル通信省いて 3ピン制御だけにすれば、ATTiny10 でもやれるね。 >>339 このケースで C で制御するいい方法ってある? でも C を使ってパラレル通信するアイディアは実現されてるんだよね。 パラレル入力の LCD モジュールのデータ線 4bit をマイコンの出力 1ピンで制御できる。 ラッチ/イネーブルの2本の制御にもう1本。 >>342 例えばハイパス側とローパス側に分けたら? CはアノードにシリーズでカソードはどっちもGND >>343 ハイパス側を光らせずにローパス側を光らせることができないような。 そして明るさ制御もするっぽいから、過渡特性の利用は難しいんじゃないかなぁ。 はずしてるかもしれないけど。 CをRのかわりにって書いてたけどフィルタにするからRもいるわ >>346 へえ 面白いノウハウ持ってるなぁ 周波数を低、中、高で制御するの? それカットオフ周波数付近で使ったら明るさもコントロールできるんじゃない? しかし結構きれいに動作するもんだよね。 低周波で駆動したとしても所詮矩形波なわけで、その高調波でハイ側も光っちゃうと思ったんだけど。 >>333 これがチャーリーさんだよね、実用的にはこれだろうな 極端にVfの異なるLEDを混在させるとうっすら光る可能性はあるだろうけど単一色のみのLEDだけなら問題ないし、[Vf-a ≧ 2・Vf-b]のようなLEDaとbを混在させようと思ったらVfの低いほうのLEDにちょっとRとかDを直列に入れといたらいいのかも まあハイパスローパス方式もネタとしては結構面白いと思う 電源---|>---[ポート]---|>---GND に対してメリットは? リーク電流くらい? >>354 ピンを入力にしたら両方光っちゃうじゃん >>356 >>333 はおれだけど、その条件じゃないよ。 あっちのケースでは、1個の LED と 2直列の LED が並列接続される回路になるから、2直列の LED に対して VF しかかからない原理になってる。 ようするに LED が 0.5 VF で全く光らなければ問題無い。 あとは、 どんなキーの状態でも光らない キー状態が確実に判別可能 な回路を考えないと >>359 それな。 ADC で読むには電圧出す必要があるからねぇ 読むとき以外も、ボタンの ON/OFF が LED の明るさに影響する回路じゃいけないし。 8値を判別出来ればいいから そんなに難しくはないとは思うけど 電源5Vなら 2V~3Vくらいに割り振る感じ 電流制限抵抗含めて1Vで光らなければOKみたいな >>318 せやな~ なのでそれを難しくする事に意味があるんよ~ >>319 振られたお題はAVRで簡単に出来る複雑なLチカをPICで作るって内容だから (悔しくてもっと複雑なLチカにしたのよ) >>336 そんな高価なLED使えるかーー! こっちとら低所得者だぞ\(^o^)/ 今日1日で凄い勢いでスレが伸びてる やはり>>218 「模型自動車ライト」の御方は只者ではなかった\(^o^)/ <アリガトー♪ みんなも↑の御方に感謝の気持ちを持ってもらいたい 8段階の明るさは 1:2:3:5:9:14:22:32 くらいなら区別がつくかな 同時点灯2個で100Hz制御だと 0.1秒タイマー割り込みで処理すればいい PIC 32MHzだと800命令分の時間があるから まあ間に合うでしょう >>354 だと同時に3個点灯可能だから 1200命令使える こんなに盛り上がると思ってなかったの〜 しょぼい(低レベルな)回路図とコードですまん m(__)m https://i.imgur.com/sy8uDiL.png (回路図) https://pastebin.com/9RtDdnbt (ソースコード) ↑粗探し放題だよ \(^o^)/ < みんなで僕を虐めて気持ち良くなろう >>363 上げたで〜 >>365 >PIC 32MHzだと800命令分の時間があるから これが「PIC32MZだと800命令分の」に見えた \(^o^)/ >>368 ありがとー LED部分は当たりだったがボタン部分がぱっと見ただけじゃなんでそんな定数なのかよく分からんw ちょっと考える データシートの先頭に 8-Pin MCU with High-Precision 16-Bit PWMs なんて書いてあると思ったら やっぱりハードPWMだったか 確かにこれだと簡単だけど CPUを選ぶね void timer_isr(void){ LED_PORT = pwm_table[step++ & 31]; } こんなのを考えてた 複数ピンを一気に設定 >>368 よく見てないけどこれはPowerOFFはAutoPowerOFFでSleepになるの?SW10でもPowerOFFになる? SleepしてもSW入力の抵抗がVddからGndまでつながってるからここにはちょっとは流れ続けてるってことかな(まあちょっとだろうけど)? 電流制限抵抗入れないでインダクタにしてるのは何で? Charlieplexing というのか・・・ うぃきぺじあ先生の解説をあとでよもうっと。(^p^;べんきょうべんきょう >374 なんのキャリブレーションかしらんけどswitch読みのことなら 先の案の様な最小側に寄せないで 単純な整数比で判別できるように抵抗値側を合わしてあるばあい 3chの10びっとADに三ビット配分だろうから較正要らないくらいの余裕をもたせられてるんじゃね?しらんけど LED? (この回路図とは別個に提案されてた ローパスフィルタ使って云々 っていう方法の場合は実在の素子の値に応じて 較正が必要になりうる可能性もはらんでるだろうけど)この回路見る限り、LEDまわりにキャリブレーション必要な要素ってどこかにあるんすか?? 3.3V, 0V, Hi-Zの切り替えで制御するだけらしいなので 較正する余地はなさそうに思うんよ、しらんけど 今回3.3VでちょうどいいLEDがあったみたいだけど 5Vで運用するばやいは適宜ダイオードを直列に挿んでトータルのVf稼げばいいとおもうたんよ 図は一段だけど、必要に応じて直列二段三段増やしていけbあ、と。 >>373 おれもそれ気になった インダクタなんてわざわざ使いたくもないだろうに、それを使うとなればそれなりの理由があるんだろうが。 >>379 そんなことせずとも >>368 のインダクタを抵抗にするだけでもいいような気がするの。 そして電流制限ならむしろ L より C の方がハングアップ時も安心だし、でも L でも C でも力率悪くなってマイコンのドライブ能力をフルに活かせなくなるからやっぱ R が最適じゃないのかなと。 インダクターの存在理由をエスパーすると 逆接のダイオードはコンデンサを形成するので(絶縁層を挟んで電極が存在する形になるため) 突入電流防止でインダクター入れてんじゃないかと 何でインダクタなんて使いたくないとか決めつけてるの?なんかかっこいいじゃん!コイルなんだぜコイル!!(^p^) だな。シルクに萌え絵入れようぜ(^p^)もえもえきゅーん PWMで駆動したら、抵抗よりコイルの方が効率がいいとかでは。 LEDの電流制限は、この場合電位差が小さいので出力の内部抵抗で足りちゃってるだろうから制限抵抗なしになってると思うんだわ で、寄生コンデンサのディスチャージ時はチャージ電圧+電源電圧が出力の内部抵抗にかかるから、ドカンと来るからLでナマスと ちゃうかな~ なんたらスパイスの達人がいたら答え出そうだけど >>387 そりゃ効率は良いだろうけど 条件や個体で電流が大きく変わっちゃうじゃん 簡単に定格越えちゃう 抵抗なら気にしなくて良いのに どうせやるなら電流制御のバックコンバーターっぽくしようよ >>390 Lの逆起電力で、マイコンが破壊される心配してる? マイコン側の入力保護ダイオードでクランプされて問題なしかと 回路図上ではLにしておいて、実際にはRを付けるという ブービートラップとかね 最大点灯時間12.9% 制御周期15.5ms 点灯周波数64.5Hz PWMデューティー15%~97% ちらつきが気になる人がいるかも 点灯 1500us x6 消灯待ち 100us x6 ADC準備 100us AD 100us x3 計10ms (100Hz) とか デューティーと電流の関係がわからないんだけど どうやって計算するの? R なら連続通電で流れる電流にデューティー比を掛ければいいんだけどな。 水、木、金とゆるAVRのユルくないレス数に読みつかれた 商売なら多ピンのCPUを使うところだけどそれでは話はすぐにおわってしまう 普通の降圧電源ならデューティー比と電圧が比例するから電流はヤバい事になるんだけど Cもダイオードも無いからよくわからん ダイオード:CPU内のクランプダイオード 平滑コンデンサ:無し とした時の降圧電源と考えれば良いのかな? 実験してみるか 10A超のLEDの制御をした時は デューティーに対して電流変化が大きくて 非常に苦労した覚えがある 突入防止かと思ってたけど クランプダイオードとインダクターでPWMを均してんのか チラツキ防止にも「なるな デューティーの最大が97%だから 制限抵抗が無いのと同じだな やっちゃいけないLEDの駆動回路の代表 320kHzで1mH 感覚的にはすごくデカいんだけど たまたま1mHを持ってたとか? コンデンサは入れたくなかった? 入れられない事情があった? なんかいろいろわからないことだらけ PWM周波数320KHzで2ms点灯 13.5ms消灯 >>407 6個のLEDは同時には1つしか点灯しないから、その時点でデューティーは 1/6 だよ。 2個同時にも点けられるけど、1個の場合と 2個の場合とで明るさが変わっちゃうからそうしないはず。 でも仮に 2個同時に点けてもデューティーは 1/3 だ。 それをさらに 8段階に制御するんでしょ。 でもやっぱり、ひとつの L は 2ペアの LED に繋がるから、どんな意図の電流制限であろうとあんまりいい方法ではないんじゃないかなぁ 連続する 2ペアの LED が両方 ON の場合と片方 OFF の場合とで電流変わっちゃいそう。 >>412 キーサンプリング時間、オフ待ち時間もあって PWMオン期間は12.9% 2ms デューティー最大97%はPWMオン期間2msの話 >>413 オフ期間流れてたらキーサンプリングが出来ないし 他のLEDが点灯してしまう 消灯まで100us待ってから次のLEDを点灯してる なるへそ パズルはむつかしいほうが面白いけど 難しすぎると、途中で飽きる ルービックキューブみたいにw >>412 普通は 制限抵抗がLED別なら 2本点灯でも明るさは変わらないはずなんだけど インダクタが共通なのと ポートの内部抵抗を使ってるっぽいので この回路だと変わっちゃうかもね ナゾは なぜ電流制限抵抗ではなく インダクタを使ったのか というところだけ それ以外は特に疑問点はないかな >>419 13.5msもの間光らせるのは大変 微妙な電圧差で電流が大きく変わるので それ以前に 逆向きのLEDが光らなくなっちゃうし キーサンプリングにも影響が出る 抵抗に置き換えて実験してみれば、なるほど~ってなるかも 各チャンネルボタンが3個 押下状態8通りで電圧が変わるようにして ADCで押下状態を判別 ADC中は3pinは入力状態 電圧によってLEDが光らないように 最大でもVf未満の電圧になるのうに設定 サンプリングは15.5ms周期 5回一致で確定 >>427 いやそうなんだけど、回路定数がなんでああなってんのかだよ。 ボタンの押下状態に対してリニアに電圧が出るようになってる? インピーダンスが一定になるようになってる? みたいなことがあるのかと思って手計算してたけど嫌になった >>430 うーん、そういうことじゃなくて… まあもう少し考えるわ ADC判定の4キーパッドがAliに売ってた ありふれた技術なのかな? 値の決め方は ざっくり8個が等間隔になるように まず単キー押しに影響する縦の4個を決めて それから複数押しに影響する横を決めれば良いかと >>432 同時押ししたときに破綻しないようになってんでは? 実験は PIC12F1572は持ってないからPIC16F18857で キーは面倒なので3個だけ 保護抵抗は無し インダクタのかわりに抵抗で 電源は安定化電源 抵抗は全部ある 来週 Q.なぜインダクタ(コイル)を使ったか? A.抵抗じゃ普通すぎて面白くないと思ったから(難易度を上げる目的もある) あと電力効率改善できるかな?と思って Q.インタクターが1mHの理由は? A.家に転がってた(本当は2.2mHとかも試したかった) LEDに定電流に近い制御をしたいと考えて試した結果 1mHでもスイッチング周波数320kHzの場合で4mA前後の揺れ これが470uHとかだと更に高いスイッチング周波数が要求されるため現実的ではなかった また、大きいと(10mHとか)コイルの抵抗値が大きい事やLED切り替え時に電流が0になるまでの時間が長い Q.制御用のテーブル大変なんじゃ? A.すごく面倒だった(笑) LEDの色(Vf)の違いで3種類×最大・最低輝度で2種 合計6種類のテーブルを電源電圧範囲3.5V~5.2Vを0.1V刻みで作成 つまり108パターン(煩悩?)の電流値を実測で測定してテーブルを作成した( ;∀;) Q.キーマトリクスの抵抗の値の理由 A.E3系列の中から大きくて(LEDの動作に影響が出ない)ADCでギリギリ読み取れた物を採用 完全に自己流で作ったので良い方式や組み合わせは有ると思う Q.この構造で定電流になる理由 A.回路上には抵抗は入れてないですが実際には抵抗が存在してまして〜 抵抗とは[GPIOのFETのON抵抗,LEDの電流でのVfの変化分,インダクタの抵抗分]これらの合計が50~100Ωあります 抵抗の影響で一定のデューティー比なら一定の電流に落ち着きます (※単純な抵抗に比べて制御はシビアだよ) Q.PWMのデューティー比が最大98%の理由 A.電源電圧が3.5Vの時の値なのだが、その電圧だとGPIOのゲート電圧の関係でFETのON抵抗が大きく100%でもLEDの定格を超える電流が流せない なので3.5Vの明るさ(電流値)を基準に5.2Vの電源電圧まで明るさ(電流)が一定になるようにテーブルを作成したため たぶん\(^o^)/ >>437 結構細かいことしてるんだねぇ でも自分は L じゃなく R でいいや >>437 う~ん... フィードバック制御とか何か変化を打ち消す要素が無いと定電流とは言わないとおもうんだよね ただ平滑しただけ 素直にRにしておいた方が良かったね やっちゃいけないって事をわざわざやる積極的な理由がない コード フリーランタイマー部分、私が良く書くコードとほとんど同じでちょっとびっくりした こんなところは誰でもほとんど同じになるのかな? 気になった点は 配列の要素数をsizeofで調べるのはNG 今後要素のサイズを変えることがあったら死ぬし 意味的にも違う sizeof array / sizeof array[0] としよう マクロを定義しておくと便利 あとPWMnPRLの値って-1しなきゃいけないんじゃなかったっけ? PICだったけど、LEDとSWの入出力制御、面白かったんじゃないでしょうか? 顔文字さん、沢山のレスお疲れ様、今度はAVRで頼むね。 今更nano互換機をISPにしてtiny/megaライタ作った 書いたmegaはArduinoっぽく出来る ユニバ基板配線えらい大変だったけど愛着が湧くお 一生使えそうだ >>443 3行でまとめてやる パズルでた ワイワイガヤガヤ わかんねー、じっけんしてみようぜ←今ここ おっはよ〜 \(^o^)/ >>439 電源電圧と明るさのテーブルを使って2次元テーブルで狙った電流値にしてるので 定電流の仲間に入れてほしいの( ;∀;) LよりR使った方が楽なのは本人が一番良くわかってるんだけど難易度を上げることが主な目的だったの >>440 自分はコードの書き方が完全に独自なので変なところが多いと思います (趣味で少々しかコードを書く経験しかないため) sizeofのあたり参考にさせて頂きます >PWMnPRLの値って-1 確かにその通りですねコメント欄修正しときます >>441 こちらこそありがとうございます >>442 AVRで何か面白げなものが作れないかは研究中なのですが >今度はAVRで頼むね。 これを全力で勘違いすると>368を8ピンAVRで作るって話ですね〜 ATtiny202,204,212,412辺りなら作れるかも〜 ほかの8ピンAVRだとハードウェアPWMを3ピンから出力できるのあったかな〜? まあLをRにすれば楽勝なんだけど たぶん\(^o^)/ >>447 PWMは 2ピンから出せれば充分でしょ。 シリアル通信省いて ATtiny10 でどうよ。 LED点灯特化だから、ソフトでオンオフでもいけんじゃね?(計算してみてないけど) >>448 なるほど、PWMの相手をHIGH,LOWで変えれば2個で行けますね (ローサイドとハイサイドのFETでON抵抗が異なるのでテーブル追加でいるかな?) 僕はあの地獄の様なフィードバックテーブルを作りたくないので ぜひほかの方がチャレンジしてみてほしいです >>450 電流制限をRでやるならソフトウェア(点灯時間)の制御で楽勝ですよ〜 Lでやるなら・・・・出来るのだろうか? >>449 こちらにもサロメイト様がいらっしゃいましたわ〜 わたくし感激ですわ〜 わたくしの中でお嬢様はメジロマックイーン(CV大西沙織)ですわ〜 PICだとPWMの出力ピンを変えられたりするので 1個でOK AVRはそういうの出来ないんだっけ? L を使ったのは明るさをデューディー比じゃなく周波数で制御するため? それはそれでなかなか面白いアプローチだな。 >>452 PPS(IOマトリクス)的な方法で任意の機能を任意のポートに自由に設定する機能はなかったような気がする 比較的新しめのDA,DB,DDでも付いてないし 選択式で複数のポートが選べるような機能は有る(自由度は低い) たぶん\(^o^)/ >>453 電流値はデューティー比でコントロールしてるよ〜(シビアだけど) Lを使ったのは「面白そう、難易度が上がる、電力効率改善(時代はエコ!)」とかが理由ですね〜 僕もいつか「奇策士」(とがめ(CV.田村ゆかり))になるんだ〜〜〜 「ちぇりお!」 >>402 苦労するなんてかわいそうに・・・ 条件にもよるけど楽な方法あるでぇー \(^o^)/ 上手い手があるのか・・・ Vfの敷居値電圧跨ぐと電流急増するのを 機械的な電圧制御としてのPWMだけで制御するから ピーキーになるのかなぁ・・・と解釈。ならば 電力制御すればいいんじゃね?ということで、 PWM先のキャパシタ平滑後にから えるーでーとを結ぶ経路に 直列にインダクタを置いて、電流成分も平滑化すればいいんじゃね? しらんけど >>457 コード一行も打たなくて完成するで \(^o^)/ https://i.imgur.com/RrNE6L5.jpg でも僕は素人なんで手を出すのはやめときますね インダクタにトロイダルコイルを使っていそうだという事は解った いやいや そんなおもちゃじゃなくて もっと高速なCPUが必要な制御 小さいインダクタンスのコイルを使って、サイクルごとに電流監視するのだと大変かもしれないけれど、 大きめのインダクタンスを使って何サイクルかでデューティを上げ下げするのならプアなマイコンでもできないかな? >>460 えっ!LED向けの定電流制御の話じゃなくて? >>462 そうですが 照明用ではないです 定電流制御ですが頻繁に電流が変化して その変化の応答速度の要件が非常に厳しい >>465 とても苦労するような内容に思えないんだけど? 一部上場電機メーカーの開発部門が苦労したものを 苦労せずに出来るのなら素晴らしい >>467 苦労するか、苦労しないかの技術力に勤めてるメーカーとか関係なくない? ただ、LEDの定電流制御に特別な技術が要るとは思えない 特別な条件が有るならそれを書けば良いのに >>469 たいしたもの作れないのがばれるもんなw >>457 別のタイプのインダクタもあるで \(^o^)/ https://i.imgur.com/znaLZEh.jpg ( 開磁型で〜 ノイズを〜 まき散らすぅ〜! ) (前の画像はゲートドライバ間の配線1本足りてなかった・・・) >>460 おもちゃ作り楽しいよぉ〜 \(^o^)/ >>461 LEDの定電流制御をPWMとかのデューティー比で制御するのは大変なので向いて無いと思う これの場合はPDM変調?とか使って楽してる たぶん\(^o^)/ >>470 僕の事か・・・さーせんww \(^o^)/ PDMのMはmodulationのMだからPDM変調って変だな \(^o^)/ PDMかPDM制御って書けばよかった ( ;∀;) チートスキルぐぐる発動! pulse density modulation パルス密度変調 ふむむ・・・どうやら、 PWMはPDMの一種らしい。 PWM以外のPDMには、PFMやΔΣ変調などが挙げられるらしい。 かれがどっちを指していたのか?は おれにはわからん!!(^p^) https://synapse.kyoto/glossary/pdm/page001.html PDMは固有名詞でもあるから、PDM変調方式と言ってもそんなに変ではないような >>472 表現が誤解を生みそうだな・・・ 誤「LEDの定電流制御をPWMとかのデューティー比で制御する」 正「電流制御(フィードバック含む)をソフトウェアで計算した固定値のデューティー比(ソフトウェアで可変)で制御するのは」 こんな感じのニュアンスでお願いします \(^o^)/ >>476 「デジタル電源」で検索してみるといいよ >>467 >一部上場電機メーカーの開発部門 ♪いいな いいな! 一部上場電機メーカーの開発部門 っていいな! ぽかぽかおふろに 美味しいごはん あったかい布団で眠るんだろな 僕も帰ろう お家に帰ろう でん でん でんぐり返って ばい ばい ばい (^p^)ノシ LED制御の話だけど PICでタイマー割り込みでのソフト制御で 制御周期150kHzくらいまではいけた 256階調でも585Hz、全く問題ない UART送受信とLED制御含めて割り込みでやった場合で Cでほぼ最適化してないコードでの話 アセンブラで、送受信をメインループにすればもっといける 音声ミキサーだと このくらいの処理周期で複雑なミックス処理やエフェクトをソフトでやるんだよね すごすぎ >>477 頭に「アグネス」を追加して画像検索してみた\(^o^)/ https://i.imgur.com/XmIy9Zp.jpg 結果>キョンシー衣装のデジたん ( ..)φメモメモ >>481 ご冗談を イコライザー、コンプレッサーが全入力チャンネルと出力チャンネルに リバーブなどの重いエフェクターも何個も使える 単なる掛け算足し算も非常に多い チャンネル40個、バス20個の小型ミキサーでも単純計算で800回 これを全部1サンプルごとにやる 1サンプルの時間は10.4usくらい ミキサー卓にいろいろ入ってるのはわかるけど ミキサーつったらミキサーだけっしょ ミキサー卓>製品 ミキサー>機能 卓にはいろんな機能てんこ盛りで詰め込んどかないと スペック厨にそっぽ向かれる > ミキサー卓>製品 > ミキサー>機能 えっ? 何でそう思った? ていうか イコライザー、コンプレッサー、リバーブもミキサーの機能だし コンピューター:計算しか出来ない っていうくらいの屁理屈 ミキサーに周辺機能を足し合わせてミキサー卓という製品ができてんじゃん 言葉尻にこだわるのとか興味ないし 業界違えば用語も違うってね ミキサー卓って言わないなら、音響卓でもいいよ 「言葉尻にこだわるのとか興味ないし」 ここ笑うところ? 技術的な話をしてるとこで、ミキサーっていったらミキサー単体にきまてんじゃん 音声ミキサー:音声加算器 なんて思ってるのはお前だけ じゃあ、こんぷれっさーやイコライザーがないとミキサーじゃないのかい? 普通の会話でミキサーと言ったら、調理器具のあれか製品としてのミキサー卓だろうけど 研究開発に関わる場でミキサーと言ったら音声加算器を指す可能性は非常に高いよな 例えば、AVRでUAC Compliantのオーディオインターフェイスを作ろうとした場合にループバックの実装をどうするか考える文脈でミキサーといえば 信号処理は明らかに性能が及ばないから、単機能の加算器を指すよね >>480 を読んで単機能の加算器を指してるように感じるわけですかそうですか おいしくなーれ もえもえきゅーん まだやってんのかw 作る側の人間が、ミキサーって聞いたら、それはミキサーであって、実はイコライザーのことに違いないとか思わないってw よくわからんかきかたになってもーた ミキサー設計してって頼んだら、全部入り複合機の設計が帰ってきたりしたら うれしいかも、ミキサーの分しか払わんけどw エ〜、僭越ながら私めが問題点をとりまとめたいいと思います。 皆々様、心の準備はよろしいでしょうか?w Aという単語に対して、その業界にいる人はBを想像し、いない人はCを想像する。 >>479 PIC18F27Q43だと制御周期761kHzまでOKでした サイクルにしてたったの21命令 単独ISRになったのとクロックが倍になったのと 命令がちょっとリッチになった恩恵 AVRだとどのくらいで出来るんでしょうか 誰か試してみて AVRの方がCPU的には速いはず 割り込み発生 => LED制御 => 割り込みRET が21命令サイクル未満てすごいね ただの普通のC言語の処理なのに これでmainループもとくにもたったりしてない ARMやMIPSじゃ絶対無理 MCUの範疇だと10倍くらい PICの割り込み応答時間を調べたら PIC32(MIPS)よりもdsPICの方が早かった 8ビットは時間にすると若干MIPSよりも遅いくらい そういや、AUXという略語はカナ表現(≒日本語的発音)だと、みんなどうしてるんだろう。 「おぐじりあり」だと思ってたけどいろいろあるね。 「おぐじゅあり」って言ってる人がいた。これは他の外来語の「らぐじゅあり」に引っ張られてるのかな? たまーに、「あうっくす」「おうっくす」っていう人もいる。FETを「ふぇっと」と呼ぶのと同じ? 今更ながらググったら auxiliary の略だった 調べたらラテン語由来らしいなので、そうそう間違ってなさそう。 フランスのスケコマシっぽいベテラン俳優風に、低い声で言ってみよう「おぐじりあり」 >>521 「リ」が一つ少ないような。(アメリカのエンジニアの発音だと、わりとはっきり「L」「R」の2回分「リ」が聞こえたよ) 恋はゲームじゃなく 生きることね 答えて 愛しい人 今確かめたい 言葉より大事なこと >言葉より大事なこと 言って解らない子には肉体言語で教育的指導だよ!! _,,_パーン ( ・д・) ⊂彡☆))p^) じょうおうさま ごほうびありがとうございます!!! う~ん年寄りにしかわからないのか…>>525 はしばたはつみのマイ・ラグジュアリー・ナイトの一節だな それはともかく>>527 前はUSBaspが10Pin-6Pinアダプタも含めて200円でおつりがくるくらい安かったから2台買ってファーム変えたりして遊んだけどこれも高くなってきたしTiny44を使ったTinyISPだかのほうが安くていいのかな おきゃくさまー! おきゃくさまのなかに AVR用のライターのおすすめ問い合わせ(>>527 )に お応え可能なべてらんさんはいらっしゃいませんかー!! 初めて買うなら AVRICE だろ。 microchipdirect から買うと安いよ。 「ライター」だろ? USBASPでいいじゃん。 「デバッガ」なんていきなり使いこなせないさ。 もちろんデバッグ出来た方が嬉しい PICKIT4が高いから買おうかどうか迷ってて 他に良いのがあればいいなあと USBaspは安いけど書くだけ? 中華ST-Linkみたいに形してるのもあるけど 安開発環境(ハード)を列挙してくれたら嬉しい >「デバッガ」なんていきなり使いこなせないさ。 AVRの開発環境のデバッガって特別難しいのかな? 厄介だね。 いまどきの一般的なマイコンの統合環境のデバッガって、どれでも簡単に使えるものだと思ってたよ。 デバッグもやりたいならATMEL-ICEを買うのが良いと思う。 対応デバイスが少ないとか 遅いとか 接続が面倒とか ブレークポイントの数が少ないとか あったりする? >>536 使った事無いけど それでもOKだと思う。 デバッガならMPLAB SNAPがやすくていいんじゃないの? ATMEL-ICEやPICKIT4と遜色ないよ。(なぜか全部持ってる) ISPの6ピンケーブルは自作しないといけないし、UPDI使うなら抵抗1個後付け必須だけど。 ブレークポイント張るたびにフラッシュ書き換えるから、デバッグに使ったチップは納品物に使うなとかどっかに書いてたなあ フラッシュにしかプログラムおけないのにどうやって書き換えずにブレーク張るのかおしえて オンチップデバッガがやってくれてる。 ブレークポイントセットしたままデバッグ終了したって正常動作してるよ。 ベリファイしたってファーム変更なんかされてないし。 てか、知識がやたら古臭いな。 >>544 は時代に取り残されたジジイだな。 へ~じゃあ、データシートに書いてあることpは嘘なんだ どのデータシートのどのページなのかおせーて 嘘見てみたい そこまでおぼえてね~、 mega8か328の内蔵デバッガの説明のとこに書いてあったと思うよ 読んだ気がするだけで実際にやったことないってことか。 そんなクソ仕様ならブチ切れてるはずだもんな。 人格攻撃に移行すんのは、反論できなくなったやつの特徴 >>544 むしろ、フラッシュ書き換えてどうやってブレークかけるんだよ? 止めたらまた書き換えてそこから実行すんの? リモートデバッガ(Arduinoのリモートモニタみたいなもの)では定番の手法だよ。 リモート先からの指示待ちでループすんの。 ふっる〜い手法。 インストラクション見たことないの? BRAKE命令ってのがあるわけよ(内蔵デバッガ専用) あったなそんな命令、思い出したわ。 ってこたあブレークポイントセットしたまま止めたデバイスは バイナリが違うってことか? 俺も思い込みは捨てて、今一度確認しよう。 単にnop扱いで気づかなかっただけかもしれん。 ソフトウェアブレークポイント使わなけりゃ関係ないと思っていたが。 >>554 インストラクションセット、一つ一つ確認したことはないな。 ブレークポイントセットしまくった状態でデバッグ開始。 ブレークで止まることを確認。 そのままデバイスぶっこ抜き。Studioも閉じる。 ライターソフトでhex読出し。 どこにも8985h(BREAK)なんてない。 やっぱ命令セット上あるだけでソフトウェアブレークポイントなんて使ってないな。 大昔のデバッガでは使ってたのかもしれないね。 内蔵デバッガを使ってないってことでは? どうやってんだろ? 単にOCDがプログラムカウンタを監視してる。 ICEと同じ仕組みだよ。ってかOCDって広義でICEなんだが。 メモリアドレスも監視できるから特定のメモリアドレスにアクセスがあっても止められるよ。 ICEに制御を移す仕組みがAVRには無かったような気がすんだよね なんかトリッキーなことやってんじゃないかと、興味シンシン コード位置でのブレークはソース画面で指定するのが何となく想像つくんやけど メモリの特定アドレスへのアクセスでブレークするのは どういう画面経由で設定すればいいんでしょう・・・ブレークポイント設定用の ダイアログウインドみたいのがあるのかな; 以前何度かやったけどどう設定したっけなw やってみるわ。 Atmel Studioでの中断点設定はプログラム メモリにBREAK命令を挿入します。 BREAK命令で置換した(元の)命令は保存されます。 プログラム実行が継続されるとき、プログラム メモリから継続される前に保存した命令が実行されます。 一時停止(ブレーク)はプログラムにBREAK命令を置くことによって手動で挿入できます。 「挿入」とあるからBP以降ずれるんかな、ぜんぜんイメージがつかめん PCのゲーム改造とかだといじりたい箇所の3byteをワークにコピーしといてそこにjmp命令書いてワークに飛ばす そこでイケナイコトをして(DVDのマウントフラグ立てるとかね)コピーしといた命令を実行して戻るとかそんな感じなので「置き換え」なんだけど data breakpointの設定方法。 デバッグを開始して一時停止状態にする。 目的のメモリラベルをハイライトして右クリック。 Breakpoint → Add Databreakpoint これで設定ダイアログが出る。 しかしDxシリーズではサポートしてないと来た。ざんねーん。 tiny1616ではできるな。なんで上位デバイスでサポートしねえんだよ・・・・ >>564 実は裏フラッシュメモリがあってそこにBREAK入れてるとかw >>531 こんなこと書いてる本人が使いこなせてませんでしたって落ち? 最近のデバッガはいろんな事が出来るからねえ AVRがどこまで出来るかは知らんけど ・実行中のブレークポイント設定/解除 ・実行中の変数のウォッチ/値の設定 ・特定のメモリのアクセスや値でのブレーク ・RTOS対応デバッグ(特定のスレッドのみブレークなど) ・デバッグ中のコード変更 どんなにデバッガが進化しても デバッガを使ってデバッグ出来ない事は多いわけだけどね 組み込みだと特に >こんなこと書いてる本人が使いこなせてませんでしたって落ち? 「つかいこなす」というのは恣意的に使えるものだから、人を批判するときに使うのは良くないね。 その人の作業の習慣で、普段使わない機能は使い方を忘れていることぐらいあるだろう。 批判的に使ってるヤツにそのまま返しただけだから 何の問題も無い USBASP勧めてんのは、 書き込み機のおすすめ聞いてる人に対してのもんだろ 切り取りマウント良くないw プログラミング歴35年 今まで多くの開発環境、CPU、デバッガを使ってきた 質問者はこんな人かもしれない そんな人が書き込み機のおすすめを人に聞くとは思えないw >>576 それはあなたの感想ですよね AVRがはじめてなら十分聞く可能性はある 聞いた方が早いから だね、だけどここで聞くと、マウンターがわらわらと湧いてくっからね~ 自分で調べる能力があるなら避けるんじゃないかなw ただの参考だよ 中華とかの格安ツールとか自力系とか 変な情報が手っ取り早く得られる事がある ここで一句。枯れ木もマウントの賑わい (^p^)カカカ 俺が始めた頃は328nanoが200円でUSBASPが同じかそれより高かった なのでUSBASPは買わずnanoを余分に買ってispのプログラムを入れて使った 8ピンからprominiやnano挿せるソケットも作ったわ でも今はnano700円とかするからなあ 手持ちのtiny44で作ってもいいかも まあUNOやNANOがあればmega8やtiny44でUSBASPを自作するときに書き込みできますよって話 一発書くだけならft232rのbitbanでかけるよ、劇御遅だけど 多少遊んで終わり だとは思うけど... でもデバッガはいるよね AVRははじめてなんだよね 今はPICやSTM32やRL78が多くて 良かったら長~く使うことになるかもしれん ゆるーく遊ぶならデバッガまで必要なくね シリアルで値見るコード追加して#ifdefでデバッグモードと切替えればいいんだし そこまでの余裕が無いとか速度が問題なら ループにはいったらLED光らせるアサートだけでも動作がわかる そういった工夫で乗り切れる希ガス ゆる~く遊びたいからデバッガで楽をしたい と考えてしまう ハードいじってるとブレークさせるより ポートに信号出してオシロなりロジアナなりで 状態見るほうが楽だしね。 >>587 楽っていうか ブレーク出来ない場合は多い だからブレークせずに色々とデバッグ出来る機能が進化してきたわけで AVRのデバッガにそういう機能があるかは知らんけど ロジアナやオシロスコープデバッグ printfデバッグ GPIOデバッグ デバッガによるデバッグ デバッグ手段は多い方が良い 前にハマったのがtimerとかの16bit値を連続して読み出す時割り込み禁止にしなきゃいけないのにやってなくて 不定期におかしくなってなかなか原因がわからんかった BP仕掛けてレジスタダンプできたら楽なのにステップ実行できたらいいなとか思ったけど 何かトラップ仕掛けないとバグが捕まらないやね 最近はAVR0/1/2への移植作業ばっかであんま楽しくないなー ESP32はもうマイコンというよりPCで何か作ってる感じで99%ソフト、仕事みたいで楽しくない モーターとか動かしてわーうごいたーとか言ってる頃が一番楽しかったな 感動コスパ上は Lチカを経験したらすぐ卒業するのがクレバーだよ説 誕生の瞬間であった・・・ そうかな、毎日使うようなものだと見るたびにニヤリとできて満足度は高いよ >毎日使う 私が作ったAVR機器で一番稼働時間が長いのは、オートロックと連動したアパートの玄関の 出入り管理装置で、メンテ以外で電源を切る事は無い。 廊下移動や入り口ドアの開閉などを検出して、液晶画面やプリンタに時刻や出入りを表示、記録し、 TVモニターの電源を入れる。 ハード、ソフトとも手を入れたりして来たけど 最も古いプログラムの日付けを見たら2006年だった。 毎日見るけどニヤリとはしないなぁ・・・ PCでテレビ観てるからそれ用のリモコンかな毎日使ってるのは、寝転んだままCMスキップと早送り巻き戻しできて作ってよかったとおもうわ エアコンコントローラーと連動サーキュレーターは常時稼動してるけどいじってないので忘れがち、NTP時計もあったな オーディオプレイヤーの操作ボタンで [<<] [■] [>>] こうあったら、 [■]ストップ [>>]早送り [<<] ←なんて呼ぶの? 「RWD(リワインド)です!」とでも答えるんだろうかw ここ5年以内に書かれたなろう小説なんかでも 「異世界転移で時間を巻き戻すチートを手に入れた」とかの表現はあるから普通の人は理解できる言葉だと思うぞ >>602 書いてるやつがすでに若者じゃないからでしょうw 生まれたときにすでにテープデッキ類が無かった世代はマジわかんね~らしい ダイヤル式電話も使い方がわからないとか 生まれたときにすでに無かったは甘え リレー式計算機や穿孔テープ、カードは生まれたとき既に無かったが知識としては知ってる あなたが知ってるからといって他の人が知ってるとは限らないあるね >>603 シーケンシャルファイルとかで概念は残ってるんじゃね CDやDVDも1本溝だな レコードは絶滅したから溝というのもおかしいが説明が楽だな 建築で使う墨出し器は今はもう全部レーザーで墨と糸なんて宮大工すら使ってないけど言葉だけは残ってるな で、みんなどんだけ古いこと知ってんの(知識として) テープパンチャーの使い方 パンチカードの使い方 8インチうロッピーの使い方 UV-PROMの消し方 ゼロ戦のエンジンのかけかた 蒸気自動車の走り出すまでの手順 etc,etc UV-EPROMならギリ消し方わかった あとは全滅や 終わった知識なら穿孔テープの読み方だな リーダー作ってくれと頼まれたわ… マイコンを使い始める前だったけどw しくみを知らず使い方だけって何の意味もなくねと思いつつ上から4つは体験的に知ってる オープンリールテープの最初の巻き方とかの無駄知識もある ネジを巻いたことからアンティークドールとの奇妙な生活がはじまる。人形の名は真紅 人生を巻き戻しても知識を持ち込めないなら同じ過ちを繰り返すのが人の業といふもの ネジが意識持つと何かいいことあるんかね? 抜けないように頑張ろうと思っても動けないし。 もうゴールしていいかなとかつぶやくとメンテナンスが楽になったり信頼性が向上するんじゃね 飛行機なんかは毎回フライト後に点検する必要があるみたいだし 駄菓子屋で穿孔テープを巻いたの売ってたの知ってる? Q:なんでそんなものが駄菓子屋にあったのでしょうか? ガラス試験管に入った毒々しい色のチクロゼリー こすると煙の出る紙 ニッキ味の紙 貝殻に入った黒糖 針金でできてるゴム銃 紙カンピストル ひもを引くとプロペラだけ飛んでいくヘリコプター 選択はさみみたいなのがついたガムのびっくりおもちゃ 夜光塗料塗ったガイコツのフィギア 刺すと引っ込むナイフ マジックハンド めんこ 雑多な文化のるつぼみたいやったな >>606 一度この文明が廃れてしまった後の新たな文明では、発掘された AVR が研究されそのマシンコードやアセンブリ言語は古文やら考古学になるんだよ >619 超豪勢版の人柱なんじゃね? 人造付喪神か そんなことして何が楽しいのか知らんが シリアル経由のAVRからのメッセージ表示に 「はやくにんげんになりたい・・・」とか言わせているやつになら 答えがあるかもしれんな(ねぇよ >>621 駄菓子屋にあったのはなんかうっすら記憶にある 昭和40年代のアニメだけどこの当時コンピュータと言えば 磁気テープ、やたらチカチカ点滅するランプ、そして紙テープなんだよな ガキどもの中にはこのテープにはxxxって書いてあるんだとかイキってるやつもいただろうな(今でもいたりしてw) https://i.imgur.com/rx5V6w7.png ↑このテープにはえんどうさとしって書いてあるんだぜ!どやぁ(^p^ >>627 紙テープ読めるとはなかなかのハッカーだな >>632 せやな コンピューターの五大機能には出力機能というのがあるよな。 せやから、大量の印刷物が重なる共用設備のプリンターには これは必須の機能やな、紙テープ(※添付図) >>636 単純な反復計算でやるもよし ニュートン法を使うもよし いずれにしても AVR でやる前に PC上で適当なスクリプト言語でやると試行錯誤しやすいかも。 あ、もしかして 1/3乗すればいいって話? べき乗関数あるならそれで。 ニュートン法ぐぐってみた・・・即死w 1/3乗ってシンプルな方法に展開できるんですかね(数学は得意じゃない) 反復しか無いんかあ、まあいっか #include <math.h> void main(){ float inValue = 45.0; float outValue = pow( inValue, 1.0/3.0 ); printf("%f",outValue); //3.556893と出力される } こんなんじゃだめなん?\(^o^)/ 数値出したいだけなら電卓でいいんで、そういうことじゃなくて アルゴリズムが知りたいなあというわけでです xをa^(-1/3)に近い値にざっくりしておいて x += 1/3 (x - a x^4) を繰り返せば a x^2がaの立方根に収束する 収束が速く、加減乗算だけで計算出来るのでオススメ 1回の計算で正しい桁が倍になる(二次収束) 長大桁数にも使える 初期値 frexpで指数部と仮数部に分解してから 指数部を-1/3倍するくらいでいい 収束の初めのうちは精度がいらないので 8bit 固定小数点でいい y=3√xのグラフはy=x^3のグラフを軸転換しただけ y=x^3のグラフを作成しろってのは出来るよね? 当然グラフだけでなく数値データとしてデータにもできるよね? そうするとx=テキトーな数値を入れればyがいくらかわかり yがaより小さいか大きいか比べて、x値をどんどん変更しながらy=aになるまで続ける じゃねーなw データが出来てんだからy=aに近い点をダイレクトに検索できるw グラフが出来てんならy=aに水平線描いて グラフと交差したとこのx値を求めればいいだけ なんで洗練された方法を書いた直後に 原始的な方法の思い付きだけを書くかなあ グラフ作成は、要するに表の逆引きですよね、あらゆる場合の数値を用意しておくことになりませんか? 飛び飛びの値だと、補完がまた大変そうですよね 反復法は想像つくんですが累乗の繰り返しが重そうだなあというわけで なんかすっきりした方法がないんかいなあと ちょっとつぶやいてみました 「テーブル」 1単語で書ける内容を長文で説明したわけですか >>648 でもそれってシミュレーションの手法 太陽系サイズのグラフだって描ける 単に解像度や拡大率変えればどの範囲でも参照できる そこでY=aの線と交差したとこまでの線分長さを測るだけ 指数関数のグラフで、線分の長さで換算できるもんなんですか? テーブル使うなら、任意のpowに対応したいなら指数対数テーブル持っておくのがいいんじゃないの libcなんかもそんな感じ https://git.musl-libc.org/cgit/musl/tree/src/math/pow.c テーブルは1~8で十分 どうせ最後は閉ループを使うので 数もそれなりでいい 今更なんだけど、立方根の求め方の質問の理由はどのような目的? 雑談の流れで沸いた事でもないし AVRに関係するとしたら、既存の手段に比較して計算速度を改善したいとか容量を節約したいとか有ると思うけど たまたまそのときに立方根が必要になって 電卓引張出したら、あら?立方根キー無いのか~って わりとめんどいけいさんなんだな~と思って ネタにいいんじゃない?というわけで振ってみました 深い意味なくてすまん Cubic Root 機能のない関数電卓?ダッサ >>660 が引っ張りだしたのは、そもそも関数電卓なのかな? (グラフ式とか あなろぐ計算というなら違和感ないけど) テーブル式と言われるとコラム間の離散値が生じてそうじゃね?しらんけど(^p^; 関数電卓までは行かなくても^2と√とπは欲しいなぁ I^2Rとか1/2π√LCとか… 関数電卓アプリでいいじゃん、何を求めてるのかは知らないが ルートは付いてるやつ多いし 2乗は *= でいけるだろ。 πだって 3.14 でいいと思う。 逆ポーランド記法電卓、スマホ用アプリとかでありそうじゃね?しらんけど(^p^; >>642 それって何て言う手法? その式の導き方がわからん f(x) = 1/(a x^3) - 1 のゼロ点を求める 素直に以下だと除算が必要になる f(x) = x^3 - a >>675 ちょっとした書き間違えなのかおれの考え違いか分からんけど、その式の x に a^(1/3) を代入しても 0 にならなくない? >>678 あ、理解した 立方根を直接求めてるわけじゃなかったね とりあえずAVRなら乗算器乗ってるから、反復計算で実用的な速度で計算できそうだというのは置いといて ぐぐってみると、なかなか深いですね ルートしかない電卓でも立方根出せるとか(数学得意な人には自明のことかもですが) 事務用電卓でもルートくらいあるのが多いから、覚えといて損はないかもw で、よく出てくるのが1/3乗しろってやつ、式はかんたんだけど・・・ 今時ダイソーの電卓ですら√計算出来るというのにおまえらときたら ダイソーの電卓で無理して立方根を計算?? 素直にスマホ使え >>685 そういう話をしているわけじゃないんよな AVRで電卓機能を実装しようという話じゃね?しらんけど(^p^; 市販されとる関数電卓の立方根キーは そういう(ニュートン法みたいな)アルゴリズムで毎回計算しとるのかいな? >>692 電卓だとボタン押してから表示が消えて黙り込んでる時間があるから、そんな感じで計算してるんじゃないかなぁ ちなみに電卓IC に抵抗が外付けされてるやつだとクロックアップができて、ルートの計算もめちゃ速くなる。 そのかわり電池の減りもめちゃ速い >>692 毎回計算しないでどうやって表示すんの? >>695 どういう意味で聞いてるのか分からんけど、20年くらい前かもしれないな。 でもその頃は電卓なんてすでにワンチップだよ。オシレータ用の R が外出ししてあるくらい。 今時の電卓だってルートの計算はワンテンポあるから性能自体は大差ないと思うが、R は外出しになってなかったりするのかな。 遅いのは省電力のためだかr、ソーラー電卓とか今でも遅いんじゃね? >>698 大昔もなにも、電卓なんてその頃から大して進歩してないだろ せいぜい100均に並ぶようになり10桁になったくらいだ。 関数電卓で思い出したけど何十年も前の高校時代に友達と使いもしないのに電卓の関数の数が多い少ないで競ってた 70個の中から30個とった時の組み合わせ…みたいな計算がすげー時間かかってた記憶(70C30とか書くんだっけ) それ以上の数値を入力すると時間かけて計算した後エラーが出てた 関数電卓なんて一回買ったら一生モン、めったに壊れないしキー配置変わったらめんどくさいんで、 使ってる人は、まあ買い換えないでしょ しょっちゅう買ってんのはコレクターなんじゃない? 一生モンっていうか、普通にパソコンで計算するようにならない? ノート PCを仕事に使わない人だと違うのかな 昔はExcelで計算してたけど、最近は代数的計算もできるPythonのインタラクティブモード使っちゃう。 >>700 買ってないし、個人的には関数電卓の話をしてるつもりは無かったな。 >>705 だよね。関数電卓派を否定するわけじゃないんだけど、 大学の教養の実験で関数電卓買えって言われたから買ったけど、実験でもExcel使ってたからマジで使い道なかったw スマホを与えられないような年齢の子供のおもちゃとしてはいいと思うけどね。分数もそのまま計算できるし おそらく関数電卓派のほうが計算は速いだろうな。 たとえExcelを使う場合でも。 一生なんてもたないよ。 CanonのF-502がもう3台目。 ほぼ毎日叩いてるからなあ。 1台10年くらいかな。 キーが効きにくくなればパッド面クリーニングしたりして。 それしなきゃもう何台か買ってるかも。 キー配置変わるとイヤだから旧型製造中止の時焦ったわ。 モデルチェンジしても同じ配置でほっとした。 そんだけもてば十分な希ガス 学生んときは高頻度でつかってたけど、卒業してからは頻度激減したから こっちは、マジで一生もつかもしれんw エクセルについて、PCが立ち上がるの待ってる間に電卓ならおわっちゃうんだよね 大量のデータをゴニョゴニョする場合はエクセルがいいだろうとは思う 昔のPCは何十万もスルものだったから、学生がモテるようなもんじゃなかったんで 今ならエクセルでやるような作業を電卓でやってたんよなあ 俺の前の世代なんか計算尺だったしw HP-49G 系は3台目だった。 ONスイッチが利きにくくなる。 熱で溶かして組み立ててあるからバラすと戻せないし。 TI は壊れにくいね。TI-92 は10年以上使ってた。 永年使ってきた関数電卓が強い明かりの下でしか動かなくなったので 分解して太陽電池の透明カバーの裏側をみがいたら また快調に動くようになった そんなに汚れているようには見えなかったのに。 式が欲しいのか答えが欲しいのか、それが問題だ… つか電卓スレは作ろうしか無いんだなw 収束アルゴリズムは>>642 で終了 初期値はまだ多少議論の余地あり フィードバック==>通づる か えらいざっくりだな 一発で決まらないのはフィードバックに限らないけど frexpで指数分離し0.5~1の範囲に 定数との比較3回で8分割 リニア近所 二次収束を1回 これでfloat精度になる double精度の場合 float精度後三次収束か、 32bit固定小数点精度計算後二次収束 平方根も立方根も4乗根も同じ frexpって ライブラリ使っちゃうんなら、立方根出す関数有るわけでw frexpはand, or, shift, - 1回ずつくらいで出来る超軽い関数 ライブラリを使うのがイヤなら作れば良い ていうか floatの四則演算もライブラリだから 定数との比較回数 多項式近似の次数 二次収束の回数 これらの組合せでいろんなバリエーションがあって この中で演算回数が最小なのが上記 演算の前半は16bit固定小数点で済むので 手間じゃなければ高速化可能 >>716 >そうそう >裏側がなぜか汚れるんだよw 静電気が帯電することによって一種の電気集塵機のように機能している可能性 >>715 >永年使ってきた関数電卓が強い明かりの下でしか動かなくなったので >分解して太陽電池の透明カバーの裏側をみがいたら >また快調に動くようになった >そんなに汚れているようには見えなかったのに。 アモルファスシリコン太陽電池は短波長の光に感光域があるらしく、波長の長い赤から赤外域の光では問題ない微細な微粒子でも影響があるのかも。 仮にタバコを吸う環境であれば揮発性有機化合物や煙の微粒子が付着していたのかも。 ほんとに静電気か? 表示してるときは電圧かかってるから、それに引き寄せられてるんじゃない? キーの配置とか表記が違ってたり、挙動が違ってたりで 買い替えるとしばらく大変なんだよな 私AVRで書いた、もっともゆるいプログラムは猫除け発振器かな。 プログラムを検討しているときに(これはもしかしたらRET命令無しで書けるかも?)と思い、 やってみたら、出来たw >>740 結構部品多いけど、どんな仕様なの? ただ高周波をスピーカーから流すだけじゃないよね? >>742 猫の嫌いな周波数帯の音を出すわけじゃないんか。 んまあ高周波というと電波帯な感じになっちゃうかもしれんが。 人間には聞こえない20kHzちょいオーバーの音出してるだけだろ 若者除けのモスキート音全く聞こえねぇなぁ・・・・・ >>741 既存の焦電センサ回路を流用したせいでゴテゴテになってるだけでは? >>747 真ん中の基板が焦電センサモジュール? 動物が来たときだけ音を出す感じなのか。 AVR専用というわけではないが、動作チェック用の補助具を 必要になる度に作っていたら、いつのまにか増えた。これでも全部ではない。 右上は圧電ブザー、左上は中にヘッダがありをケットを挿して使う。 https://i.imgur.com/QsvSNQp.jpg (復刻シリーズ) AVR専用というわけではないが、QFPの足上げ道具 基板に半田付けされているQFPの1ピンだけ、ハンダ付けを外して浮かせたい時に使う。 0.4oのステンレスワイヤの先端をJ字型に曲げて、 ワイヤホルダ(細いドリルの刃の手回し用チャックやシャープペンでも可)に装着。 ピンの隙間から差し込み、90度回して外したいピンに引っかけ、 軽く引きながら半田ゴテを当てる。 ワイヤにヤスリを掛けて少し厚みを減らせば、 0.4oより狭い間隔のピンにも使えるかもしれない https://i.imgur.com/gAdmpgg.jpg >>750-751 誠文堂新光社が出していた「アマチュア無線アイデア百科」みたいなネタだ。いいな。 そういう小物を作って職場においていたら、いつの間にか消えていくんだよな。 >>751 は作ったことがなかった。便利そう。 個人的には、常用するQFPが0.5ピッチなのでもっと細いのが要るな。 以前、出荷基板の検査記録とってるとき 冬場ボールペンのインクの出が悪い日があって、 温めるといい、昔はライターで炙ったりしてた、という話を聞き、傍らに ハンダゴテつけっぱにしてたまにボールペン先をあてて温めてインクの出をよくして 出荷検査を続けてたら 熱が累積してボールペンのプラスチック部がぐにゃっと歪んだことがあるんよ。 作業ピン数が少なければ実害ないのだろうけれど、ちょっとそんな事件を思い出した;ご安全に><; 金属製のドリルチャックなら熱を心配する必要はないな 俺を誰だと思っている俺はシモンだ カミナのアニキじゃない俺は俺だ!! 穴掘りシモンだ!! 俺のドリルは天を突くドリルだぁぁああああ!!! ほらドリルはこんなにも熱くなれる AVRのAはドリルの象形文字 AVRのVはドリルの角度 AVRのRはドリルの半径 AVRのAはAdultのA AVRのVはVideoのV AVRのRはRegulationのR 文例:君にAVRはまだ早い、もっと大人になってから ヴァルヴレイヴはヴヴヴと略すのだから、省略加工の逆関数を想定すれば AVR・・・アヴルをそれにかければアァルヴレイルか。紅茶みたいなひびきやな、しらんけど(^p^; AVR専用というわけではないが、ペン、インクという単語で思い出した。 私が使用しているフラックス(gootのBS-55)には、 容器の蓋に毛筆タイプの塗布用筆先が付いていて(写真上)、 それを使ってハンダ付けするランドやパターンに塗るのだが、 蓋を外したままだと倒さないかと心配、でも蓋の開け閉めは面倒で時間もかかる。 それに必用な範囲だけを細かく正確には塗れない。 で、替え芯付きの水性サインペンを買ってきて、 フラックス塗布用のサインペンを作った。 https://i.imgur.com/QAtYuqv.jpg 作業容はとても簡単 1.名前ペンを分解し、2.石けん液でていねいに洗った後、 3.十分に乾燥させて(写真下)、 4.フラックスを入れて、5.元通りにペンを組み立てる。 >>764 構造が簡単だけど洩れたりしないか誰か試してくれ(他力本願) >>765 の説明をよくよく見たら容器のみ(中身無し)と書いてあった 中身無しで\3,289もするのか! 溶剤によってはペンがもたないからなぁ 俺はハケでいいや… Aliで買ったフラックスペンが空になったから再利用してる、買ったときは200円くらいだったな 日立さんに入社できそうなコネが、祖父にはあったんだがなぁ。。。 俺さまが就職する時にはすでに祖父は他界していてな・・・ぐぎぎ 公正な世の中というのは生きにくいものよな;しらんけど(^p^; >>771 贈る言葉「鶏口となるも牛後となるなかれ」 でももしかしたら日立の社長になっていたかもしれないね >>772 おいおい、もしも俺様が社長なんてしたら 一部だけだったのすら みなおして抜本的改革を断行し 東証全部上場しちまうやろがーい(^p^) A V R と書いて あぶら と読む オイラの今夜の飯はスーパーで買ってきたカツ丼 冷たく固まったそいつを少しでも美味しく食べる方法 溶き卵に「つゆの素」を混ぜ、フライパンで軽くかき混ぜながら半熟に加熱し 電子レンジで温めたカツ丼の上に回しかける カツ類はトンカツででもビーフカツでもカキフライでもアジフライでも 出来たての衣サクサク状態でなければ意味が無いような気が… 「カツ煮」というメニューが実在し、一定の人気がある現実を受け入れなさい ♪ダバダ〜違いがわかる男 時間が経過して柔らかくなった衣 vs 料理した結果として柔らかくなった衣 なんだか腹減ったなぁと思ったら、朝から何も食ってなかった チャリで3分のなか卯にカツ丼+冷たいウドンでも食いにいくかな。 CPUマニュアルを隅から隅までは読まないタイプの人間なので 長い間、ビット反転出力機能を知らなかった… However, writing a logic one to a bit in the PINx Register, will result in a toggle in the corresponding bit in the Data Register. マニュアルに記載されているI/O回路図を見ると、出力ポート書き込み命令と同様に 命令コードをデコードしてラッチパルスを作っているだけのように見えるが? 私が言いたいのはアセンブラに関しての単純な事で 出力ビット反転のアセンブリ言語のニーモニック文字列、たとえば"SBI PInD ,5"を (mega328でのマシンコードは$9A4D) "TBI PortD,5"(Toggle PortD bit5)にでも変えて欲しかった 命令説明書にもビット反転命令として記載して欲しかった です 何か不都合があるのか、それとも私が何か基本的な勘違いをしているのか? 純粋に、ニーモニック文字列によるアセンブリ語の表現と アセンブラが翻訳生成したマシンコード間の問題です ナンか説明すればするほどドツボにハマりそうだなw 要は、アセンブラはニーモニック文字列 TBI PortD,5 からマシンコード $9A4D を作ってくれ、です 昔はアセンブラを自作したりしたけど、今はもうそんな元気はない プリプロセッサならともかく アセンブラを自作する時代じゃないだろ >>788 PORTx 専用の命令になっちゃうからなぁ マクロで定義したら? 古いAVRはどの世代まで遡ってArduino化出来るの? 旧アトメル社の技術者(アセンブラ制作者)の考え方 「入力ポートへの出力命令というニーモニックでOK」 がモヤモヤするんですよね。 出力反転命令は重要な命令だと思うけど 命令マニュアルにも記載されない日陰者扱いになってるし。 PINxってInputの意味だったの? てっきりPin(ピン)だとばっかり… >>795 それはCPUの動作じゃなくI/Oの動作であって、ニモニックはCPUの動作(インストラクション)に割り当てるのが一般的じゃない? もし LED が繋がる I/O があったとき、それを操作するために led というニモニックがある方が不自然でしょ。 そういう特定のハード構成に対応してコードを分かりやすくしたいなら、ユーザーがマクロでお好きに整備すればいい。 >>790 そんなのいらない 余程の理由がない限りと同じコードに なるニモニックはただ一つにしないと 混乱の原因になる (昔、POP PCって書く奴がいたなぁ) この流れなので質問 PINxへの論理1を書いてのトグルアクション、 データシートを読むとトグルするのはピン そのものじゃなくては該当ポートのデータ レジスタって事になってる。 物流的にピンの反転が成立するのは次の クロック?(PINxへの書込み後2クロック目?) >>800 >>787 の回路によれば、PORT 書き込みの WRx または PIN 書き込みの WPx によってラッチされるようで、これらは CPU的にはいずれも同等のレジスタ書き込み動作だからタイミングに違いがある理由も無く、 故にレジスタが変化するタイミングは PORT 書き込みでも PIN 書き込みでも同じように思う。 それが何クロック目かは確認してない。 アセンブラのニーモニック文字列"SBI Pinx,n"のマシンコードをCPUがデコードして作る信号は 出力レジスタへのラッチパルスなんだから、ニーモニック文字列は"TBI Portx,n"のほうがふさわしいのでは? ニーモニックを見ればすぐに動作内容が理解できる。 >>800 命令の実行時間はマニュアルによれば、たとえばmega328では2クロックと記載されている。 そういえば昔、CROSS32というメタアセンブラがあった。 コレを使えば任意のニーモニック文字列が使える(マクロではなくて) >>802 その信号は CPU というより I/O の回路(I/Oアドレスデコーダ)が作るんでしょ。 ニモニックは CPU のインストラクションに対応していて、I/O の個々の動作に対応してるわけじゃない。 あらゆる I/O レジスタに対してトグル動作になるんだったら TBI があってもいいだろうね。 >>802 たぶんその意見に同調するのは一握り ほとんど人は 「何言ってんだ?」 「データシートを、ちゃんと読めよ」 って意見だと思う ではアセンブラ「TBI Portx,n」命令は無しで、 無いので当然、命令一覧にも記載しないということにしましょw 記載しないというか、元々そんな命令無いじゃん。 PINx への書き込み時の動作は命令じゃなくて I/O の動作だぞ。 >>804 EORI A,K があれば良いのに って話に帰着すると思う… 俺は余り必要性感じないけど >>808 CPU の命令と I/O の動作は別の話。 そこで言う EORI が I/O レジスタとリテラル値をオペランドにできたなら、それはどんなレジスタ相手だろうと(読み書き可能なら)ビット反転に使える。 それは、その演算を ALU で行い、結果をレジスタに書き戻す CPU の動作だから。 一方で現状の PINx について SBI をした場合、CPU はあくまでその I/Oレジスタのビットを立てる操作を行う。 ただその I/O は、ビットを立てる操作をされた時にトグル動作になるように実装されている。 これは CPU がそうしてるわけじゃなく、I/O の実装個別の仕掛け。 もちろん TBI でも EORI でも CPU の動作として実装されてるなら、当然そのニモニックは定義されるし、PINx に限らず全ての対象について等しくそのような操作が行われる。 もちろん CPU のその操作によってその通りにレジスタが書き変わるかは、その対象の個別の実装次第。 PINx については CPU が操作した通りの値には必ずしもならない実装だが、それによって便利になってる。 で一般レジスタとリテラル値の EORI、これは欲しいな。 EOR なんて結構よく使う演算なだけに、EORI が欲しい場面もかなりある。 ぶっちゃけ ORI を潰して EORI にするのが便利な気がする。 ORI r, x は ANDI r, ~x EORI r, x で実装できるけど、EORI は ANDI と ORI の組み合わせじゃ計算できない。 ORとAND=>EORは動作が違うし ORとEORの使用頻度を考えたらORを削るのはアホ >>811 そりゃ3つ揃ってれば言うこと無いが、オペコードが足りなくて 2つになってるわけで。 で、EORI が無いと EOR を取るには必ずレジスタが余計に 1つ必要になってしまうのに対して、ORI ないし ANDI の一方が無くても 余計なレジスタは必要無い。 そして ORI については実質必ず Zフラグは降りるから、条件判定としての価値も低い。 また、複数条件の OR 判定を演算で行うケースでも、それは元々レジスタを使うんだから、使うのは ORI じゃなく OR。 そしてレジスタのビットを個別に立てる命令もある。 なので 3つのうち 2つだけを残すとすれば、ANDI と EORI が妥当。 CPUは$9A4Dというマシンコードをデコードして ポートDビット5の出力レジスタへの反転用ラッチパルスを作る。 これは誰も否定しないよね。 ニーモニックはCPUのマシンコードの動作内容を人間に理解できるように言葉で表現したものだから コード$9A4D → 文字列"TBI PortD,5" で良いと思うけどな。 命令の種類については、コード16ビット+汎用レジスタ32個なので制限があるのは仕方が無い。 私はむしろ他の16ビット固定語長のCPUに比べたら、命令の種類が多いなと感心している。 可能なら、いつも反対が殺到するけどBCD演算命令が欲しい。 贅沢を言えばキリがないが、レジスタ複数組選択命令も。 くどいなぁ 単にデータシートを読んでれば良いだけだし どうしてもやりたいならマクロで書けば良い それを公開して皆が賛同すれば実装されるはずだぞ >>813 >ポートDビット5の出力レジスタへの反転用ラッチパルスを作る。 それは CPU が作ってるんじゃない。 CPU は PIND のビット5 に 1 を書くことを試みてるだけ。 他のレジスタに対してそうするのと全く同じように。 で、PIND というハードウェアがその書き込み動作を受けて PORTD のビット反転動作をさせてる。 CPU がやることと I/O のハードウェアがやってることをいい加減理解しようぜ。 >>812 ORIとEORIでは圧倒的にORIの頻度が高い ORIをANDIとEORIで実装するのは問題が多く普通はやらない 2つを選ぶならANDIとORI >>817 >ORIをANDIとEORIで実装するのは問題が多く 解説希望 >>818 組み込みCPUの基礎の基礎だから この手の問題点は理解しておかないと まずは>>810 に聞いてくれ >>816 > それは CPU が作ってるんじゃない。 > CPU は PIND のビット5 に 1 を書くことを試みてるだけ。 入力レジスタPINxnに書き込む事は出来ません。 書き込む相手は出力ラッチPORTxnです。 各信号はCPUの命令デコーダ部が作ります。 >>821 >入力レジスタPINxnに書き込む事は出来ません。 そうだよ。だから試みてると言ってるんだぞ。 CPU はアドレスバスにI/Oアドレスを出し、データバスにデータを出し、そして書き込みパルスを出す。 ReadOnly のレジスタならその試み反応するハードになってないから何も引き起こさないし、PINx は >>816 のように動作するようにハードが作られてるというだけ。 CPU は PINx に対して何も特別なことはしていない。 >>820 その前に、>>810 の手順で OR になるというところまでは理解できてるの? 最終的に(普通のメモリであれば)ORIと同じ結果になるというだけで ORIとは動作は違う この違いが問題点 色々あると書いたけど 少なくとも問題点が3つはある >>824 メモリというか、ORI はレジスタと即値の OR演算なんだが。 まあそれをメモリと便宜上言ったとして、その場合では問題無いんだろ? じゃあなんの話をしてるんだ? >>816 >PIND というハードウェアがその書き込み動作を受けて PORTD のビット反転動作をさせてる。 その「PIND というハードウェア」の内容がよく分らないけど、 CPUマニュアルのI/O回路図(たとえばmega328のFigure 13-2. General Digital I/O)は 出力ラッチPORTxnへのWRXというクロックパルスが記載されている。 この信号は他のWPXやRRXと同様にCPUが命令コードをデコードして 作ったものだと思うけど異なるのか? I/O回路ハードウェアの例外として、この信号だけが特別製なのか? 特別製なら、ではその回路はどこに存在するのか? なぜI/O回路図に記載されていないのか? このビット反転反転機能はtinyシリーズから追加されたのだが、 ともかくその発売時点で命令マニュアルには記載して欲しかったな。 CPUマニュアルで1行チョットの説明で終わらせるなんて、 まるで妾の子のような扱いで、出力反転命令があまりに可哀想w >>822 あいまいで何だか意味がよく分からないな、 CPUはもっとYes、Noがハッキリしてるものだと思うけど。 >>828 >その「PIND というハードウェア」の内容がよく分らないけど、 >>787 >>827 いやーさっぱり分からんわ まさかだけど、ORI の I が他の一部命令の規則に取り入れられてる I/O の意味だと思ってるわけじゃないよな? 今どきのガキンチョはワンチップマイコンしか知らないから区別がつかないんだろう じじいたちは自分でアドレスバスをデコードしたりアクセスタイムを計算しながらRAMやROMを接続したりしてCPUとメモリやIOの関係を学んできたんだよ >>828 インストラクション・マニュアルに記す 理由は全く無いと思うが? トグルにしてもデータシート中にわざわざ 見出し付き(Toggling the Pin)で書いてある データシートをマトモに読まず「ボクの 考えが絶対なんだ!」って駄々をこねる 人には何言っても無駄か… >>828 >>787 の回路図の読み方を教えてあげる。 まず青矢印の先の方にある Dラッチが PORTx レジスタの bit n な。レジスタの正体はこれ。 んで信号 WRx は、CPU が PORTx に対して書き込みを行うときのパルス、WPx は PINx に対して書き込みを行う時のパルスな。 んで WPx はデータ線と AND が取られてるだろ。これが PINx の bit n に 1 を書いたことの検出。 この次の OR によって、PORTx への書き込みか PINx への 1 の書き込みで PORTx のラッチパルスを作ってる。 でそのパルスで何を書くかだが、それは青矢印のセレクタが決める。 PINx へ 1 を書いた場合は PORTx の当該ビットの反転が、PORTx への書き込みだった場合にはデータ線が選択される。 んでこれらの回路は CPUじゃなく、I/O の回路な。 CPU はトグルがどーたらなんてことは気にせず、インストラクションの通りにデータ線に 1 を出し書き込みパルスを出してるだけなのな。 それで何が起こるかなんて CPU は知ったこっちゃないのよ。 これで分かるかな? お互いにCPUという単語が指すものが違うから永遠に分かり合えないにだった。ちゃんちゃん >>835 AVRを始めた時から何回も見ている回路図(構成図 ?)だけど、 叮嚀に文章で説明してくれてアリガト。 でもねぇ、一目見れば分かることを文章で長々と書かれても・・・ 3、4行読んでイヤになって諦めた、申しわけない。 >>836 多分、CPUというよりI/Oに対する考え方の問題であり、 スレ違いは微妙で大した事では無いと思う。 太古の昔からCPUのDOはラッチ、DIは3ステートゲートと決まっているけど、 最初から >>835 が >PINx へ 1 を書いた場合は PORTx の当該ビットの反転が、 と書いてくれればまだ良かったのに、 >PIND というハードウェアがその書き込み動作を受けて PORTD のビット反転動作をさせてるな。 なんて書くから、 「PINDというハードウェアが?書き込み動作を受けて? 入力回路の3ステートゲートではなくて? 何それ?どこにあるの?入力ハードウェアは出力とは関係無いだろ? CPUは命令をデコードして反転出力用のラッチパルスを作ってるだけだぞ」 と疑問符で頭がいっぱいになってしまった。 ま、CPUマニュアルのI/O回路図の中身はともかく、 命令一覧表には出力ビット反転命令"TBI Portx,n"を記載して欲しかったな。 アセンブラを変更しないといけないから無理だろうけど。 そう言えば思い出したけど、昔、サブルーチン・コール命令を ニーモニックでBAL(ブランチ&リンク)と記述するCPUがあって驚いた。 無操作命令をNOPではなくてPCI(Program Counter Increment)なんてどうだろ? 皆様、大変お騒がせしました、ではこれにて。 >>838 I/O と聞いて GPIO に限ったことしか想像できない人なんだろうね。 CPU の DO とか DI なんて言ってるあたりでお察しだけど、一言 >>830 これに尽きる。 でも、TIMER なんかのひとつひとつの動作にもニモニックを割り当てろなんてことはさすがに言わないでしょ? それは何故だろうと立ち返ってみたらどうだろう。 これはおっさんの自己満と言われることは承知だけど、たとえば Z80 という CPU と 8255 という PPI について調べてみたらどうかな。 この PPI は GPIO的なもので、CPU との関係と照らして考えるとこれまで言われてることが分かると思うよ。 ついでに DO やら DI やらが CPU の話かってことも分かる。 もう終わりにしようと思ったけど、AVR仲間としてどうしても君の将来が気になったので。 書いている事が抽象的で中身が何も無いぞ。もう少し論理的に具体的に書いた方が良い。 それとCPUの勉強をもっとしてくれ。理解が浅すぎる。 健闘を祈っている。 tiny10 のブロックダイアグロム CPU はマーカーで囲った部分だと思うけど、どう思う? WDT はちょっと特殊だったり INTERRUPT UNIT は CPU に含むかで異論はありそうだけど。 https://i.imgur.com/5KAgS0K.png >>842 ttps://microchipdeveloper.com/8avr:avrcore >>843 ああ、明確なのがあったのか。失礼しました。 メモリも含んじゃってるのね。 ただ言いたいことは変わらなくて、PORTx は CPU の外側だよねってこと。 ここのサマリー動画見るだけでも有用だよね (ここの動画見てればTBIが必要なんて間違っても ならないと思うんだが…) >>844 こことデータシートを見ればほとんどの 問題は解決するよ (メガネの姉さん、なんか迫力あるよなw ) ノイマン型コンピュータは3つのユニットで構成される。 CPUにメモリは含まれない。 CPU:Central Process Unit I/OU:In & Out Unit MU:Memory Unit >>847 ハーバードアーキテクチャは厳密には ノイマン型じゃないと思うが? スーパーアスリーテス吉田沙保里さまについて語る文脈で A「平均的人類の男性には 腕が二本と足も二本備えている。 頭部は胴体に含まれない」 B「吉田沙保里は 厳密には 人類の男性じゃないと思うが?」 こう置き換えてみると、 たとえ発言に虚偽が無いとしても、 AさんよりもむしろBさんが失礼な気がするのは 気の迷いだろうか? 知らんけど(^p^; ↑たとえが難しいよ。 AVR専用というわけではないが、24点までのDI/Oデバッグ用のSW/LEDボード CPUと動作電圧が異なる回路(124Vのフォトカプラなど)にも使えるように 抵抗はSIPのソケット交換式にした。 ケーブルは過去のものが使えなければ、必用に応じて適当に作る。 https://i.imgur.com/DysWn5H.jpg 皆様には色々と御不満もおありでしょうが、「スレの恥は掻き捨て」でやってます お気に入りのAVRのために歯をくいしばって、生き恥をさらしながら頑張ってます しょうもない画像だよね、いいかげん誰か作品画像をアップしてくれよ つまらん画像見せられるぐらいなら、過疎化の方がまだマシ、という意見もあるか・・・ >>39 メーターの横のスイッチみたいなのは何です? 5/3.3Vの切り替えとセルフパワーかISP供給するかじゃね まっ、TikTokだのyoutube だのを嬉々としてやってるようなのに比べりゃ遥かにおとなしい自己顕示だわ。 >>857 カメレス来たw ターゲットへの供給電圧切り替え(5v、3,3v、無し(ターゲット側に電源あり)) 書き込み低速モードと通常モード切り替え(自動対応のファームにすれば不必要) の2つです >>859 いや、このスレは、もともとそういうスレdふぁったんじゃ? 14.7456MHzのクリスタルでAT90S2313-10PCはあっさり動く(5V) I/Oは八潮で買った16x1の200円LCDとCH340によるUSB-UART 14.7456MHzの計算上最高速度921.6kbpsもあっさり通信できた ただそれだけ… ABVRの命令で お気に入り SBIとCBI、SBISとSBIC もっともよく使う LDI PICやAT90S2313のビデオゲームは衝撃的だったなあ2000年頃だからもう25年近く前か プアマイコンでI2Cスレイブデバイスを作れば処理やIO節約になると思ってたけど 32bitデュアルコアがすごく安くなってパワーで押し切れてしまう >>867 AVRはシーケンサ(PLC)みたいな使い方ができて面白い シーケンサと言えば1ビットのCPUが発売されることはもう無いのかな モトローラのやつみたいな、型番忘れた プログラミング素人だけどMS CopilotやGoogle Geminiがプログラム作ってくれるね。 ところが PCがARM Windows 11 Pro 64ビットの環境(M2 Pro Mac上のVMwareFusion)で Microchip Studio Ver7+ AVRISPmkIIって書き込みの方法がわからない。 だれかこの環境でAVRの開発してる人いたらAVRISPmkIIの人気のさせ方から教えてください。 SPmkIIは対応外されたから、開発環境を古くするかSPmkII捨てるかだねぇ。 古いタイプのAVRを切り捨てるならUSB-シリアル変換器で簡単にライター作れるし。 >>872 AVRISPmkIIは持ってないけどレスしてみる avrdudeから使えるみたいだから Microchip Studioでavrdudeを使えるように ごにょごにょしてやれば、いけるんじゃね? 悪いことは言わん、PlatformIOに移行してしまえ。 read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる