初めてのPIC 0x24 ※顔文字は禁則事項です!
PICの本を読んでいて質問があります。
↓この回路を見てください。
https://imgur.com/vAeIIoa.jpg
技術評論から出ている後閑先生の本のOP AMPの説明のページです。
質問は
1 「上書き入力選択」の上書きとは、何のことでしょうか。
2 出力の手前にあるスイッチは、どんなときに使用するものでしょうか?
(回路で、OP AMPの出力を切断するときがわかりません) 上書きに関わる信号がORx?と思ったら、オーバーライドだった…
後閑先生、オーバーライドを上書きって翻訳したのかな?
書籍で疑問に思ったらデータシートを見よう。Override control って書いてあって、
- Forced tri-state output (出力遮断強制)
- Forced unity gain (ユニティゲイン強制)
って説明がついてる。
>回路で、OP AMPの出力を切断するときがわかりません
ORM0を1にして、ORPOLが0のときは、ORSELで選んだ信号が1のときに、
OP AMPの出力が遮断されます。 C++でオーバーライドはクラス継承して機能を付加するニュアンスで用いられますな。
字引にあたると 乗り潰すとか 乗り越えるとか 覆すとか 無効にするニュアンスが示されていますな。 そういやPICが入門用としてひろくつかわれている理由のひとつが、相対的に良質なテキストがたくさんあることだよなあ。
特に後閑先生の功績って大きい。PICだけでなく、電子工作そのものの入門ガイドとしても使える本も出してる。
この先生のおかげで、学校やサイエンススクールの電気系の先生の手間がどれだけセーブできてるかとか、
なんもわからん、WEBの情報の探し方もわからん、っていう初心者がよりどころにできているとか偉大だと思う。
彼がいなかったら、電子工作をしてる人はもっと少なかったんじゃないかと思う。
今は、Arduino が幅をきかせつつある領域だけどな。(こっちは中学生、高校生の作品を見てるとPIC以上に遅延多用の
プログラムがたくさん出てくる。割り込みとかタイマーとか使わなくても、そこそこ書けるからだろね) >>304
上書きでも通じないことはないような機能だけど、できるだけ原文の単語の意味は使った方がいいと思うんだ。
レジスタの名前もオーバーライドと覚えていたら、ORxを連想しやすくなるし。 >>298
入門に向くと主張して人に教えてもらえば良いんじゃない?
私は書かないよ
何の得もないから >>303
ありがとうございます。
>後閑先生、オーバーライドを上書きって翻訳したのかな?
ですよね。
上書きは、後閑さん誤訳ということですね。ありがとうございます。
>- Forced tri-state output (出力遮断強制)
>- Forced unity gain (ユニティゲイン強制)
>って説明がついてる。
はい、それは読みました。
外部抵抗で決めたゲインを何かの要因で
x1倍に切り替える、出力をHi-Zにする、というのを、強制というなら、
それはそうでしょうけど、
実際に、
そうしたいときって、どのような使い方を想定しているのでしょうか。
・x1倍 過大入力が来たときに、ゲインを下げたい時?
・Hi-Z 外部のピークホールドのような回路で、次回更新するまで縁を切りたい...?
わからないです。 >特に後閑先生の功績って大きい。
まったく同意です。
日本語訳になっているだけでも、とても助かります。 >>307
>私は書かないよ
>何の得もないから
はい、わかりました。 ごかん先生の本は幾冊かは持っているはずけど 読んだ記憶がないなぁ・・・; いま手元にあるPIC 系の本 いずれも未読
・PIC活用ガイドブック(ごかんせんせい)
・PICマイコンでつくるインドアプレーン(たなかせんせい)
・PICによるホームコントロール工作入門(なかおせんせい) PICファンのみなさん、どうかPICを一生使い続けてください
そうしていただければ他のCPUユーザーの優位性が続きます 技術立国中抜きコンサルタントで1チップマイコンそのものがが廃れちゃったりして。。。 x1倍 余分にピンを消費したくないときとか
DAC等の単なるバッファとして使用するとか
PICって3.3Vで使うことが多いこともあって、増幅することが多いとは限らなくて。
さすがにマイクつなげたりする時はゲイン上げるけど。
HiZこれはそもそもそのピンをOPAMPとして使わないときは
HiZにしとかなきゃいけないからじゃない?
GPIOの時はHiZ
オペアンプ入りのPICを使ったことないか。
私はいつもMCCで使ってるから、設定にはそれほど詳しくないけど。
にしても177XのOPAMPはけっこう入力複雑だねぇ。
PICのOPAMPは電源電圧から考えるとけっこう優秀。
価格面でも。 このオーバーライドの多さ、選択肢の広さにはびっくり。
そもそも何の略だっけ。
CCPとCPWMはいいとして、CxOUTってコンパレータだっけ、CLCだっけ
LCxとCOGxもだれか教えてくださーい、顔文字のひと。 >そうしたいときって、どのような使い方を想定しているのでしょうか。
>・x1倍 過大入力が来たときに、ゲインを下げたい時?
>・Hi-Z 外部のピークホールドのような回路で、次回更新するまで縁を切りたい...?
>わからないです。
そのPICを使ったわけでもないのですけど、たとえば
x1…単にボルテージフォロワとして使いたいとき、外部ピン経由でのフィードバックがいらない。
HiZ…スリープ時に外部フィードバック回路に電流が流れないようにする。 >>315, 317
どうもありがとうございます。
お二人の説明で、ずいぶん理解が進みました。
>- Forced tri-state output (出力遮断強制)
>- Forced unity gain (ユニティゲイン強制)
この場合のForceは、強制とは考えない
私の予想ですが
・OP AMP出力とI/Oピンの切り離し機能
仰るとおり、OPAMPの出力をピンから切り離す機能だと思います。
disableでOP AMP7
全体をoffにすれば、入出力セレクタ回路から切り離され、
I/OピンはOP AMPやCpmparatorから浮きます。
しかしOP AMPの出力をコンパレータの入力に内部接続の選択もできるので、
OP AMPをまるまる機能offにはできない、そんなときこの縁切りを使います。
切り離されたI/Oピンは、さらに別のI/Oピンとして使うこともできそうです。
・x1倍に切換る機能
仰るとおり、OPAMPの出力を内部で直接(-)に接続したいときに使う機能だと思います。
余分にピンを消費せずに済み、
(-)に接続されていたピンは、他のI/Oとして使用可能(未確認)
PICの品種によってGBWが 2MHz、3.5MHzと、2種類あるみたいです。
10MHzくらいあると、もっといろいろ使えるのですが、ちょっと残念です。
でも、定番のLM358, 2904系より10倍高速で性能も良いので、
工作に便利に使えそうです。
みなさん、ありがとうございました。 >>318です。
すみません、間違ったことを書込みました。
Hi-Zにすれば、内部接続でコンパレータに接続できる、というのは間違いでした。
>>300のブロック図を見ると、コンパレータへの接続より上流にSWがありました。
すみません。 PICでストップウオッチを作りたいのですが、
Timerモジュールを使って以下の手順を考えました。
1 TMR値=0にして
2 GPIO start入力ピン→→→Timer0スタート
3 GPIO stop入力ピン→→→Timer0ストップ
4 TMR値を表示
という感じなのですが。
Timerモジュールのブロック図を見てもTMR1H,TMR1LのRESET端子がみつかりません。
どのようにして0にすれば良いでしょうか。(スタートストップもよく分からないんですけど) >>320
MCCを使ってる場合は[ TMR1_WriteTimer(0); ]で0を書き込める
直接の場合は[ TMR1H = 0 ; ] & [ TMR1L = 0; ] で0を書き込み
MCCの場合は[ TMR1_StartTimer(); ] [ TMR1_StopTimer(); ]でON/OFF
直接の場合は[ TMR1ON = 1; ] [ TMR1ON = 0; ]でON/OFF
↑は[ T1CONbits.TMR1ON = 1; ]でも可能 タイマー止める
HとLレジスタに0を書く
タイマー開始する >>320
PICの世代によっては16bitタイマーにバッファーが有るのでH,Lの読み込み&書き込みの順番に注意が必要
【書き込み】TMR1H → TMR1L の順
【読み込み】TMR1L → TMR1H の順
この順番逆だと正しくない値が書き込まれたり読み込まれたるするから要注意!
たぶん\(^o^)/ みなさん、ありがとうございます。
なるほど、0を書けばいいんですね。ありがとうございます。
ということは、途中の値 0x1234を書いたら、そこから加算(減算?)できるんですね。
ありがとうございました。大変よく分かりました。
(ゲートICのフリップフロップで作るときは、
リセット端子をLにできたので、同じかなと思い込んでいました)
スタート、ストップの関数もあるんですか。便利ですね。
ということは、読み出し、書換えもできそうですね。調べて見ます。
本当にありがとうございました。 >>324
それはひどいですね。
PICはPIC16(L)F1773/6-I/SP です。
ありがとうございました。 >>326
PIC16(L)F1773/6-I/SP だとTIMER1等にはバッファーが無いので、読み書きには注意が必要かな!
タイマー停止中(またはバッファー付きの機種)の読み書きなら問題ないけど動作中の場合
16bitのタイマーの値を8bit,8bitで2回に分けて読むのでタイムラグでカウントアップすることがある
なので動作中に読み出す場合は(停止すると都合が悪い場合)カウントアップの有無をソフトウェアで処理する必要がある
(書き込みは停止中してから行えば良いと思う) LHの順で読んで、Lをもう一度読み込んで変化してたらHを再読み込みしている ストップウォッチとして使う時に、どのくらいの精度が必要なのか、
それと、どれくらいの時間を計測するのかで話が変わってきます。
とりあえず、普通に売られているストップウォッチくらいの時間を
8M程度のクロックで計るということで以下の話を進めています。
タイマを止めたりしていると、誤差が増えるのでラップタイムなど継続して計る、
もしくは長期間計るために時間をコントロールしようと
タイマを止めて書いたり、TMR1の値を変更することは推奨できません。
TIMER1は16bitですから長い時間計れそうですが、高クロックで動かした場合、
たかが知れています。ピリオドレジスタがないため、TMR1を指定時間待たせるためには
0~0xFFFFまで回し続けるしか誤差なく測定するのは困難です。
TIMER2などのピリオドレジスタ(PRx)があるタイマーを動かして
20msなどの時間で正確に割り込みがかかるようにし、
タイマー割り込みで変数をカウントアップしていくのが長い時間正確に計るための秘訣です。
(TIMER1でもできないことはありません。CCPのOutputCompareのスペシャルイベントトリガを使うと、CCPRxを超えた時点でTMR1が0になります。)
あと、水晶発信子をつけるのをお勧めします。
PICの内蔵発振はそれほどにはずれませんが。 要求精度を先に決めれば。
60秒ぐらいまでの時間を0.1秒単位で測るなら0.1%ぐらいの誤差で十分。
ってことは、セラミック振動子ではヤバいかもね。 >>329
ありがとうございます。
ラジコンなどの趣味競技の1着2着3着を数値で出してみたいと考えています。
精度はさほど必要なくて、1着2着3着の差が数字で出れば
0.1秒違っていてもいいと思っています。
>タイマー割り込みで変数をカウントアップしていくのが長い時間正確に計るための秘訣
ありがとうございます。
16bitあるので、startは必要ですが、途中で16bitのカウンターの値をcopyができれば
stopは無くても良いかな、と思い始めました。
byte単位で取ると繰り上がりが...のお話もお伺いしましたので、要注意ですね。
数値は計算無しにそのまま0.00秒とか得られると都合が良いので、
分周(プリスケーラ?)の合わせた水晶の周波数にするのもありかと思います。
最長時間は10msのタイマーにすれば、655秒まで測れますので十分です。
データーシートを見ていたら、Timer0(8bit)のオーバーフロー信号を
Timer1(16bit)で数えることもできそうなこともわかりました。
いろいろと教えていただいて、ありがとうございました。
PICは参考本も多いし品種も多いので、入門者には嬉しいです。
全部C言語でできるので、プログラムも楽しめそうです。 8bitや16bitのタイマーの値を32bitや64bitに拡張すればいい キタキタ、質問者が聞いてもいない事まで規定して「ねばならぬ」口調で語り出すオッさん達。 質問自体もただのネタ作りの為で
本当に知りたいわけでもないし サッカーのボールにチップ仕込まれてたってのもガセだろ
かりにボールやラジコンカーにチップ仕込んだとして
着順やライン通過判定に使える精度をどうやって出すんだよ >>332
成功することをお祈りしております。
がんばってください。
わからなくなったらまた戻ってきてくださいね。 >>338
ありがとうございました。
プログラム、作ってみます。
また教えてください。ありがとうございました。 初心者向けの実質的な質問スレだしね
自分でやっているところに割り込んでくる、教え魔、○○警察と一緒にするのはアホだと思います。
それに該当するのは、PICをディスりに来る行為でしょう。 ズレるだけなら構わないけどさ、安いセラミック振動子がたまたま不良品で
発振しなかったことがあってトラウマだってのは俺だけではあるまい・・・
>ねばならない
ゲームは一日一時間!!(^p^) わざわざ相談に来てアドバイスを受けておいて「教え魔」とか
さすがPICスレ PICスレのプロ素人、教えられ魔さんパネェゼ!!(^p^) >>343
発振したかどうかってどうやってやってます?
素直に質問です そういうときはオシロスコープですん なんかすみません; >>346
オシロがなくても、プログラムで既知の周期でLEDを点滅させて、その通りになるかどうかでも。
オシロがあっても、発振子の足にプローブを当てたら条件もかわってしまうので。 オシレータの足って、ロジックのみで来てないのよね?たしか。
LPにしたらなんか、OUTも100kΩくらい挟んで設計してあるんだよね?
発振ってけっこう大変だった記憶がある。 32.768kHzの水晶で時計を組もうとしたらコンデンサの値に注意はいるね。
適当だと、月差1分ぐらいは簡単にずれるし。 >>348
> オシロがあっても、発振子の足にプローブを当てたら条件もかわってしまうので。
まさにここを危惧してた
数pFでも効いてくると思うし >>353
なので、直接ピンには触らずに、(確認のために一時的に追加するバッファでなく)もともとついているバッファなり、
それがないなら、マイコンの回路を通ったあとで確認することになります。
発振条件が厳しいとかそうでないとかは、発振余裕度の検証方法とかが水晶屋さんの技術資料にあるのでぐぐって。 “発振してるかどうかの確認”ならxーtalの脚にぢかにプローブ当ててるぞ(^p^) クリスタルだけど各極20pFのコンデンサで発振失敗したこどないけどね。
ユニバーサル基板でもプリント基板でも
PICでも他でも >>346
発振しているかの確認なら、ラジオでその周波数を受信して、
マイコン電源on/offで受信もon/offするなら、それでOKです。
正しい周波数を見るのでしたら、
PICのOSCxx(NOTゲートの出力側)ピンに高抵抗を繋いでそれをOp AMPでバッファして
オシロで波形OKを確認した後、周波数カウンターで測定ですかね。 その手の問題は
1)どういうわけかプログラムが動かんぞ
2)そもそもクロックは出てるんか?
3)オシロで確認
ですしおすし (暴論)プローブ当てて発振しなくなるような基板なら、そのうち勝手におかしくなる。 なんか変だな、動かないな、と思ってプローブを当てて確認したらちゃんと発振してるのに。 水晶とCPUのピンンとの距離を5p程度にしたら発振が不安定になった。
解決策・・・発振器から供給した USB HOST、Ethernet、特殊な用途
くらいしか思い浮かばない USBはデバイスでも必要じゃないかな。デバイスによっては高精度内蔵オシレータとか、
ホストに合わせるタイプのがあるけど。PICのUSBデバイスのクロックはどうだったけか。
今はセラロックで良いような用途だったら、内蔵でもそこそこ大丈夫だし、外付けが必要なのは
時間精度が必要な場合に限られるね。
ArduinoのUNOの本家とかはセラミックオシレータ。それで世界の多くの人がまあまあ使っているところを
見ると、多くのアプリがそれでいいということなんでしょう。 >>365
お!確かにUNOのクロックはセラミック発振だ
USB用のATmega16U2は水晶なのに・・・
どうせ付けるんだったら水晶にしてくれればいいのに・・・ PIC16F1454もホストに合わせるようになってますね。 USB規格書にもデバイスの48Mクロック源は
セラロックで良いと書いてある。確か。
市場がそれを超えるモノを求めるならそれはそれ。 USB LS 1.25%
USB FS 0.25%
USB HS 0.05% USB 2.0 HighSpeed 対応の PIC ってあったっけ。
1.1 FullSpeed 対応は見かけるけど。 >>368
PIC16F1454は私のお気に入り
後継を望む ディスコンにもなってないのに後継を望むとはこれいかに 秋月で買えなくなるのはディスコン
異論は他一店だけ認めるw >>376
値上げしたけどまだ売ってる
もうちょっと値上げしたらBluePill, BlackPillに全面的に移行する 10年もUSB搭載8ビットが出てない
8ビットじゃなきゃ他行くし この10年で8ビットMCUになんか進化ある?
ヨソでも構わない。 8ビットに求められる価格帯で、高速で大量のデータを扱うのはバランスが悪いのでは。 変化と進化って違うし、何が変化で何が進化なのかは恣意的。
どの程度の変わりようで変化・進化とみなすかも、恣意的なものだしね。 こんな違いはあるけれど、って言っても、挑発的ともとれる「なんか進化ある?」だったら、
「そんなの進化に入らない。次」ってなる雰囲気いっぱい。
原因作っておいて、無能呼ばわりはおかしい。
リアルでもなんらかの(地位的や心理的な)優位な立場を使って、自分が下とみなしている人に
こういう吹っ掛け方をしてそう。 それを業界では「枯れた/mature」って言うんだわ。
供給さえ続いてたら何も問題ない分野。ま、供給出来てないから問題なんだけど今。 USB機能付き8ビットマイコンの供給ができてない、ってことはなさそう。 とりあえず老害と言っておけば、面倒な思いは低減できると思ってる人いるね。 過去の風習に固執し、モヒカンと肩パッドの流行が来たときに良心を捨てられないのが老害
柔軟に変容して ヒャッハーして火炎放射器で汚物を消毒できるのがナウなヤング
おまいらもし将来その時期が来ても、老害がいなかったら
いったいだれにヒャッハーするや? だから、貴重な資源としての老害を みんなでたいせつにしやう(^p^) 昔バラした扇風機のリモコンが4ビットだったな
きっと10年どころじゃない進化をしてるだろう >>376
> 秋月で買えなくなるのはディスコン
割と同意
気軽に買えるから使ってるだけだし 幾ら老害とか吠えようが月1000個も使わない
ホビイストの意見が省みられる事ないけど。 さあみんなぁ! 老害の捨て台詞コンテスト、はっじまっるよ〜!!!(^p^)
おめーによませるエラータはねえ!!! 400
知らんがな
知らんて
知らんわ
知っとるけ 老害ワード一覧
8ビット/PIC/DIP/秋月/5V/小ピン ルネのターゲットボードにクリスタル乗せた奴はクリスタルの足にオシロのプローブを当てるだけで発振が止まるw
CLの値が良くないんだろうか >CLの値が
ターゲットボードは水晶はついてなかったっけ。あとから自分で追加されました?
傾向としてCL(負荷容量)の小さい水晶だと、ぶら下げるコンデンサの容量も小さいのでオシロのプローブの容量も影響が大きくなるし、
インバータの入力側と出力側でも変わる。
それと32kHzのオシレータの場合、駆動力も抑えるようになっているので、インバータの出力側も影響が出やすい。 >>403
基本的に外部発振子は非搭載
ttps://www.renesas.com/jp/ja/products/microcontrollers-microprocessors/rx-32-bit-performance-efficiency-mcus/rx-family-target-board-target-board-rx-family 素人です。
水晶発振回路を自分で組んだこともありません ぼくも水晶発振回路童貞です!! しまった! うそうそ ドドド童貞ちゃうわ(^p^) 僕もないな〜
天然水晶はAmazonとかで買えるけど、加工とか電極を付ける方法よく知らないや
暇な時に一度ぐらいは作ってみたいな (;´Д`_)
( つ 彡⌒ミ 前髪切らないで
「 ( ・∀・)
|/~~~~~~ヽ 生やせと言われたら困るけど
切らないのは楽勝だろ(^p^)どやぁ FT-243の水晶だったらネジ緩めれば中の水晶片取り出せる。
水晶が高価だった前世紀では削って周波数変えてた人もいたと聞いた。 石英ってクソ硬いけど金剛砂とかで研げるんかな・・・? ダイアモンドやすり? 南米の水晶髑髏は、回転工具も無い時代にどうやって作ったのか
方法が不明のためオーパーツ(あうとおぶぷれーすあーちふぁくと、場違いな骨董品)扱いもされる謎の工芸品。
印度のジョーンズさんも謎解き大変だな頑張れ;しらんけど(^p^; CQ出版から出ていたアマチュア向け工作技術の本に載っていたような記憶がある。
カーボランダム(金剛砂)研磨剤をガソリンかベンジンのような液体に分散させて、
上澄みの粒子の細かい部分を分離したものをガラス板の上で広げ、5円玉で水晶片を
抑えつつゆっくりと研磨するとか言う方法だった。
研磨しすぎて周波数が高くなってしまった場合は・・・赤チンを塗ったら周波数が
下がる、ただし経年劣化は保証できないとかいうことだった。
詳細内容が知りたいなら古本を探してみるよ。 ごえんだま摩耗させるの犯罪の様な…しらんけど(^p^; 字面そのままでしか表面的に解釈しない人いるしなあ。
「知らんけど」を「本当に知らないと表明している」と意図的に表面的に解釈してるんだよな。
こんにちは、って言ったら、「それでこんにちはどうしたんだ」って噛みついて、してやったり、って思ってるんだろうな。面倒ダナー。 発達障害は文脈からおふざけなのかが判断できない。
これが顔文字の人を嫌う理由だと思われる。 発達障害や認知症でなくても
ストレスによる極端な睡眠不足でも認知能力が低下して思考が極端になることが有る(経験済み)
もしかしたら環境に恵まれてないのかもしれない
ストレス→睡眠不足→ストレス→睡眠障害→ストレス→認知障害→作業効率悪化→睡眠障害悪化→以下、悪循環
やがて鬱病に・・・
早い段階で手を打たないと、抜け出せなくなるぞ そうだ そうだ!!
・・・顔文字の途中で改行しないで、
行数制限が顔文字の途中だった場合、
前の行に続けるか、顔文字の直前で改行する、とゆーことじゃなんけ?>禁則処理
例)
しらんけど(^
p^;
↓
しらんけど(^p^;
違うというのならどういう意味か教えてくれ(^p^) 考えるな・・・
(432のなかに 顔文字を)
かんじるんだっ!!ΣG(”∀” ) マイクロチップの8BITのPICを使っているのですが質問さしてください 公式のオフィシャルドキュメントをみると「条件AのときはXを、条件Bのときはαを
設定する事」って公式ドキュメントに記載があってそのとおりに実装したつもりなんで
すけど、実際に公式ドキュメントどおりに実装したら全然動かなかったんです それで「おかしいなぁ?どこまちがえてるのかなぁ?」って検索して調べたら同じPI
Cを使ってる例があって、それをみたら条件BのときでもXを設定していたんです そんなはずは無い!公式のオフィシャル公式ドキュメントではαを設定するのが正
しいはずだ!と思ったんですが試しにそのサンプルどおりにXを設定したら、確
かに動くようになったんです!そんな馬鹿なと思って何度もコードを読み返しまし
たがやっぱり条件BのときにXを設定していて、それでちゃんと動くようになった
んです マイクロチップのPICにはエラッタが多いちゃん言うのは事前に知っていましたが公
式のドキュメントにも記載ミスが多かったりするんでしょうか?もしそうなら、ドキ
ュメントの改訂版とか誤記訂正集のようなものはないんでしょうか?ちなみに参考にし
た公式のオフィシャルドキュメントはマイクロチップのページから直接ダウンロードし
てきたものです メーカーに質問して誤りだったら次回改訂してもらおう >>446
メイカー(ここではマイクロチップ)に直接質問できるようなフォームってありまし
たでしょうか?もしあるならメイカーに質問さしてみたいです そこに質問しても場当たり的な回答しか来ないよ。体験済み。 >>449
どこのメーカーでも第一回答はデータシートの解説みたいなことが多いと思う。
そこから踏み込んで質問を繰り返さないと。 繰り返しても奴らの目線は客の問題を解決する事じゃなく、ISSUE をいかに早く閉じてもらうかに向いてる。
少なくともうんこ💩 コミュニケーション能力が低いことって自慢になるんだっけか。 >>454
突然どうした?
コミュ力に自信が無いの? シリアルコミュニケーションは大抵のPICにそなわってるぞ!きっと。しらんけど(^p^; PIC10F200 110円
多分コスパ最低CPUだよな? マイコンのコスパのコストは、マイコン自体のコストと、流通にかかわる費用で決まるしね。
小売店の1個売りだったら、店員さんが、1個1個梱包勘定するコストの割合が大きくなるから、
もともと低価格なマイコンは、1個買いだとコスパが悪くなって当たり前。
趣味でコスパを議論するときって、購入価格は自分の作品に対するレギュレーションみたいなものだよな。
自分に課すルールだから、判断基準も自分ルールでやればいいし、他人と共有するのは難しかろう。 自分で「俺の電子工作は秋月で買えるもので作る」みたいないルール作ってるんだろね。
広義(あるいは原義) の「スポーツ」は実利に繋がらない「息抜き」のことなんだけど、
自分ルール作って電子工作するのって、すげえ「スポーツ電子工作」だよな。
しかも自分しか使わないルールって点で、他人とも交わらない、孤独なスポーツだ。 どうでもいいじゃん、人それぞれで。
うちはDigikeyも使うけど。 >しかも自分しか使わないルールって点で、他人とも交わらない、孤独なスポーツだ。
だね。
10kΩ1種類しか使わないアンプ とか やってみたい やだぁ❤ お父さんたら血のつながった10歳の実の娘を孕ませたい❤ 孕ませてボテ腹にしたいって、
アナルの奥までじゅっぽし入った直径5cmガチガチおちんちん❤❤ からドロドロザーメンを
ビュービュー中出ししたいっておちんちん (PIC PIC) させちゃってる❤❤❤ microchip.com落ちてる?
MPLAB拾ってこようと思ったのに
(´・ω・`)ショボボボーン >>464
数年前50円くらいじゃなかった?
使いみちなくて
10個くらい眠ってる PIC10F222が45円
PIC10F200が110円
私も50円くらいの時に10個くらい買った
普通に買える汎用CPUの中で最弱 MPLABのcharの符号がバラバラなんだけど
何これ
XC8(PIC, AVR) : 符号無し
XC16 : 符号有り
XC32(MIPS) : 符号有り
XC32(ARM) : 符号無し 型のサイズ int, double, long double
XC8 16, 32, 32
XC16 16, 32, 64
XC32 32, 64, 64 処理系が違ったら仕方ない
Cの仕様では処理系依存になってるんだから C言語にバラバラにしなきゃいけないなんて仕様は無いけど 32ビットのMIPSやARMはそれぞれの慣例に従ったとしても
PICの8ビットと16ビットで変える必然性は全く無い 「処理系依存」は「バラバラにしなければいけない」ではない。
それはともかく「PICの8ビットと16ビットで変える必然性は全く無い」という理由は何だろう。
ただ単にID:cHKg9cyoは同じであるべきだったという願望を一般論としての必然性にすり替えようとしているだけじゃないのか?
だからおそらく「全く無い」と言い切ってはみたものの「全く無い」ということを証明するとはできないだろう。 単純にダサい
同じメーカー、同じブランド名、同じ開発環境なのに統一出来ないところが
統一してないよりしてた方が良いのは当たり前
バラバラの方が良いと思うヤツはいない というか今時intとかchar使ってる時代遅れ(知恵遅れ?w)おんの?
PICのコードなんか全部 uint8_t とか int16_t しか使ってへんわw >>487
組み込み系は、その通りだと思うよ。
intはループ変数程度、charはシリアル通信くらいだな。
intをけちってcharで使うと移植性は悪くなる。 >>486
マイコンのメーカーが出すコンパイラは、そのマイコンでメーカーが想定している用途を反映していて自然。
だから、8bit PIC で doubleが倍精度でないのにも、商業的な合理性もある。
逆にいえば「それはダサい、16ビットPICと揃えるべきだ。8ビットPICでも倍精度を使いたい」というニーズが相当数あるなら
「8ビットPICでも倍精度を使いたい」という人向けに、サードパーティのコンパイラが対応すると考えていい。
「どれぐらいのコンパイラが、自分の希望をサポートしているか」で、自分の希望がどれぐらい一般的なものかどうかを判断できるよ。 >>490
想定してる用途によってcharの符号有無が決まると
へ~ >>487
ダサいって言ってる人が指摘している不一致は浮動小数点だしね…。 文字列はUTF-8で符号化して、UniCodeだろ。 >>493
>>479
>>478で整数型の符号の話が出てた。>>492は訂正。
コンパイラは、一つの設計思想のもとで作られたものでもないので、
不統一な部分があって当たり前。
それぞれに歴史があるので、デフォルトをある時点で揃える方が弊害がある。
バラバラなのがダサいとしても、それをマイコンベンダーがそれをダサいと思って
あるときに統一して、従来のユーザーを混乱させることもまたダサい。
charに関しては、文字表現(ポインタを使ったゼロ終端文字列表現を含む。ここに揚げ足をとるとは根性がダサい)、
に使うもので、何かにキャストすることもなく、演算に使うべきでもないのでは。
このあたりは stdint で解決するべきことだと思う。 ID:H4H4dphj が何をしたいのかはっきり表明していないのが問題。
自分が期待する話の着地点を提示せずにテクニカルな話をするのはおかしい。
ダサいという個人的感想を持っている、それはわかってるよ。
期待している着地点はどれ?
(1)ダサいという僕に共感してほしいの。
(2)ダサいからMicrochipに直してほしいの。
(3)その他(______________) 他者は心の鏡という言葉は侮蔑の方向性で用いられることが多いけれど、
↑の御仁が 会話の着地点を模索しつつ建設的な会話に終始する知的生命体だからといって
他人も自分と同じだと無意識に期待してしまうのは、残念ながら根拠に乏しい想定と言わざるを得ないんよな
妊活に励む夫婦がいる一方で、これは世界中の全女性に向けた膣外射精や!とかほざきながらオナニーしている子もいるんやで;しらんけど(^p^; そもそも処理系で違うデフォルトに依存するコードを書くのが間違い
符号を気にする使い方をしているなら明示的にsigned, unsignedを付けるべき 共感でも反感でもOK
解決策は求めてない (困ってない) デジタル時計作りたい
なんかいいのおせーろ下さい
7セグのLED がええっす! 以下の関連部品があればゼロから作れる。(あとプログラムも)
7セグLED表示器
AC100Vからの基準クロック取り出し回路
AVRやPICなどのCPU
時計の基本形が出来たら、センサーでLEDの明るさを変えたり、
温度・湿度表示や音声読み上げを追加したり、
やる気さえあれば遊び方tはアイデア次第。 そりゃ時計が欲しいなら時計を買ってきた方が早くて安い
でもここはPICスレだからな、PICを登場させないとダメだろ?w >>501だけじゃ何を求めてるのかわからん
こういう質問に真面目に答える必要はない というか、元質問は「時計が欲しい」ではないしね。
キットから入るのは悪くない。
特に、マイコンを使った装置のキットは「半田付けして動いた」で終わらずに
そこを足場にして、作る楽しみをスタートできる。
まずはマニュアル通りに作って動かす。
・回路をなぞって、読み解きながら自分オリジナルの回路にすげ変えていく。
・マイコンのプログラムをオリジナルなものにしていく。
キットを使わずに最初からやろうとすると、入門の人にはハードルが高すぎるよ。 勘違いしてる人がいるようだけど
初めての電子工作でも初めてのマイコンでもなく
初めてのPICのスレだから だから>>502は「PICのもあるし 好きなの選びなされ」って言及してるんじゃないのかな?
PICユーザーとしてのソリューションを出せばいいのに。 >>511
何でもかんでも英語なんだ。
手段と言えばいいのに。
アジェンダ 式次第だろう
エビデンス 記録だろう
普通に日本語で言えよ >>511
お前>>510の意味を何も理解してないな >>512
あなたは「プログラム」は日本語で言わないの? そういえば大昔に見た資料に「目的算譜」とかの単語が出てきたビックリした事があったなたな。 ・・・ってことは、だ。要は、ハッキング可能な 回路図・そうすコード付き
PIC応用製品 完成品時計(奇麗な 射出形成の 市販時計に見える様な筐体)というのを
秋月さんとことかで販売してれば理想的なんじゃね?
筐体には PICKITとか用の接続端子とか
機能拡張に備えたデジタルあいおー端子用の
穴とかコネクタとかプラグが用意してあると
その時計自体を制御用マイコンとしていろんな用途に使えると思うんご!(^p^)
市販の電波時計とか アルゴリズムが謎過ぎてストレス抱えたりするけど好きなだけリトライとか出来るようになればそれだけでも付加価値になると思うんご 電波時計、設置に適したところを選ぶのも難なのよな。
とりま課題として 電波時計信号強度の可視化
a)二行キャラクタ液晶
b)スマホアプリで確認
みたいな機能を誰か実装してくんろ(^p^ >>522
台湾は北京語で香港は広東語では?
返還で変わったのかな? >>522
台湾、香港、大陸は日本という主張だと思って良いのかな? 外来語をつかわずに日本語で言えよ。
と言っていた本人が別のところで「プログラム」って言ってたので
「プログラムは日本語にしないの?」って聞いたわけだが、
おそらく別の人が「式次第」かなあって言ったわけ。
で、ほぼ誰の目にも明らかだと思うけれど、
「(日本語じゃないけれど)プログラム は 台湾・香港なら程式で、大陸(北京とか?)なら程序って言うんだぜぇ」
って話が広がったんだよな。
でも、
[全体]−[ほぼ誰も]
のグループの人の一部(ID:P6LE2ldKだけど)は、「日本語でどう言うか」に留まってたものだから
「台湾・香港なら、日本語で程式、 大陸なら日本語で程序」って言ってる、みたいな解釈になったんだろな。
なんかおかしいなあ、って思ったら、多くの人は前提が変わってるのでは? と自然に切り替えた解釈を試みる
わけだけど、そういうのが苦手な人もいる。
切り替えができるのは、多くの人が、自分のポジションの常識以外に複数のあるかもしれない常識を持ち合わせていて、
状況にフィットするものを選ぶ能力があるから。
でも、複数の常識とか前提とかが苦手な人はそれが難しい。予定が変わるとひどくうろたえる人がいるけれど、
それも予定という前提が変わったことに対応することが難しいから。
できるなら、前提が変わった話をするときは「変わるけれど」と言っておくと、こういう人が混乱せずに済む。 近くの海辺に行って砂を一杯集めてくる。
(以下略) ムーブメントを買わずに、たとえばステッピングモーターと歯車で作るとして、
歯車ってどれぐらい自由に選択して入手できるんだろう。
昔、機械系の仕事をしてたときは、協育ギアのカタログで選べたけれど、
WEBで見たら、樹脂ギアが軒並み購入できなくなってるみたい。 サーボモータって何度動くんだろ?
サーボ3つでなんとなく作れそうw PICを使うなら
DCモーター & ロータリーエンコーダーとか プラギアは3Dプリンタ。
家庭用でも売れ筋モデルの精度あればモジュール0.5からいけるぞい。
減速ギアも自由自在だし。
CADで歯車モデルをパラメータ入力で生成するだけ。 ( )y-~~( ´)y-~~( ´-)y-~~(´ー`)y━~~∑( ゚Д゚)y━~~スゲー!! MPLAB X は、漢字を含むパスは まだダメなのでしょうか 学校や職場によっては管理者の理解がなくて、漢字でのユーザーフォルダ強制だったりするんだよな…。
MPLAB Xでは試したことないが、Eclipseがダメだった。 自分の漢字名フォルダにプロジェクト置いといて(=A)どっか漢字入らないフォルダ(=B)作っといて
BにAを指すリンクを張る windowsでも標準UIが無いだけで仕組みはある。 mklink /D ですね。
なるほど、これだとうまくいくかも。機会があったらためしてみよう。
と思ったが、漢字名を強制されるような環境で、ユーザーフォルダ外に
「漢字入らないフォルダ(=B)」
を作らせてもらえるかどうかも壁ですね… junctionを使えばフォルダを作る必要がなくて他のフォルダ名に見せかけられるので
可能と思うが管理者権限でやらせてくれるのかな >>547
そういう職場で、MPLABとかのソフト使う機会有るのかな? 管理者が偏屈、ってパターンは割とあるよ。
「類推されない方が良い」って理由で社内ホスト名が延々学者の名前だったり。 >>554
むしろ、ないと論理的に考えられる理由が乏しい。
直接の関係は全くないけれど、電気電子板でも
「いまどき日本語フォルダが使えないソフトなんてないだろう」
みたいな思い込みをしてる人がときどきいるしね。
逆説的煽りだとしても、背景にそういう考え方の人がいるからそれが成立するわけだし。 >>556
なんでMPLABは漢字のパスが使えないのでしょうか?
日本なんて相手にしてねーよ、ということ? >>554
それな、いったいどういう職場なんだろうw 自分の常識でよその世界を判断する人がいることは確か。 日本どころか「一文字が複数バイトだなんて…シラネ。」だろう。 >>559
確かとかじゃなくてそれが当たり前
自分の脳内以外はよその世界 他人は自分と同じ考え方ではないと考えるよ。
そうでないと、世の中はありえないことで満ち溢れることになる。 >>555(さーばのはなし)
>ホスト名
源氏名という奴ですね(^p^) 初めてデバッガーを使います。タイマー割込の中の変数の値がデバッガーしたいです。
マイコンはPIC24F32です。デバッガーにPICKit4を買ってきました。
main(){.....} では、ブレークポイント(BP)の設定や、変数watchが出来たのですが、
Timer1の中にBPをセット(行番号をクリック)すると、以下のようなメッセージが出てきます。
(英訳しました↓)
現在のデバッグツール設定で使用できるハードウェアブレークポイントリソースが
1つあります。ステップ オーバー、メインへの実行などのデバッグ操作には、
空きブレークポイントリソースが必要です。
ソフトウェアブレークポイントを有効にしますか?
質問は、この説明の意味が分かりません。
1. ブレークポイントの ソフトとハードとは、何でしょうか?
やりたいことは行番号のところで停止して、変数の内容が読めれば良いです。
2. 上の文章は、
ソフトとハードの両方の方法ができるけど、
PIC32じゃないんだから、ハード方式は1個しか使えないよ。
ソフトならいくつでもできるからそっちを使う?
という文意で正しいでしょうか?
宜しくお願いします。 ハードウェアブレークポイントはチップに内蔵された
デバッグ用ハードウェアがPCとブレークポイントに
設定したアドレスを逐次比較して一致したら実行を
停止させる。
チップの中のハードなのでもちろん上限がある。
すでに何か(知らずのうちに)設定されているので
削除してしまえばまた新たに設定出来る。 ソフトウエアブレークポイントは指定したアドレスにブレークを発生させる命令を挿入する。上限はないが実際の開発では
無闇に10も20も張る事ばない。 >>567
ありがとうございます。
そういうことですか。
初めからブレークポイントするハード回路が入っているPICに対してだけ
使用される言葉ですね。
ソフトウェアブレークポイントは「goto 自分」みたいな命令を、
アセンブラレベルで挿入してコンパイルするのですね。よくわかりました。
だとすると、ソフトウェアブレークポイントだけあればいいようにも思いますが、
なぜハードウェア...があるのでしょうか。時間を正確にしてデバッグしたいというとき
必要かもしれないですが、多くの場合は、ソフトウェア...だけで良いですよね。 ソフトウェアブレークポイントは設定/クリアのたびにフラッシュの書き換えが発生する
書き換えが出来ない場合(品質やエリア)には貼れない
ハードウェアは単純なブレーク以外の機能があったりする 逆にハードだけで十分と思っている。
ブレークポイント掛ける時は恐らくここに来るだろうと
当たりを付けてから走らせるので、数の少なさは気にならない。 ブレークポイントで ハートブレイクが発生して
そこから デバッグ用システム割り込み処理へ向けて
処理がセンチメンタルジャーニーするんですね(^p^) >>546
まだダメどころか、さらにダメになった。
XC8のコンパイルが終了しないのでPICに書き込めない。 >>575
ブレイクしたら状況をしっかりチェックしましょう。
もしかしたらハートブレイクホテルに1泊する事になるかもしれませんが、
正しく修正すれば幸せなリスタートが待っています。 step in
step out の違いが分かりません うんこ入れるとか上級者すぎるだろとおもったが、
叢生菌が死滅したり偏って健康を害すレベルになった人の腸内環境を
健全化するために健康な人の液状大便を注入する治療があるらしいな;しらんけど(^p^; >>579
ネタなんだろうが、
関数の行でブレイクしてStep inすれば関数の中をステップ実行する。普通にステップすれば関数を実行してそのレベルの次の行で止まる。
関数の中をステップ実行してて「あ、もうこの関数見なくていいや上のレベルに移りたい」って時Step outすれば関数の残りを実行して上のレベルの次の行で止まる。 Step in …… 他人のプライバシーを根掘り葉掘り聞きだそうとするやつ
Step out …… 人が大事な話をしているのに「あーはいはい...」といって早々に切り上げようとするやつ 会社でPICを使うことになり 初めて使うのですが、
MPLAB X 4.0を使用し、シュミレーターで動かしたいのですが、
main.cのファイルは読み込めるのですが、
main.c内で使用する ヘッダファイル の読み込みが上手くいかないせいか、
ヘッダファイル内で使用されている変数が参照できず
シュミレーターで動かしている状態です。
元はMPLAB IDE ver8.3位で作成されたファイルを
MPLAB X 4.0でインポートし使用しているのですが
インポートは出来、シュミレーターは動いたのですが、
ヘッダファイルが参照出来ません。
どなたか分かる方がいましたら
教えて頂けないでしょうか? なんで今頃4なん、6.05でいいじゃん
ついでに実機で、LEDでもつけて動かしてみればいいんじゃね?
LEDなければオシロで見ればなんとかならない?
8bitマイコンだよね?
16bitとかはexternなしでヘッダに変数書くのは反則だと思う。 そう、私はデバッガ使わないおじさんなのです。
内部の計算はLEDやオシロの出力へピンの信号を出す、
複雑な値を表示したければUARTもしくはI2C等で液晶に出力、
そもそもSPIとかI2Cとか外部との信号のやりとりは
オシロやロジアナで見るしかないと思うのですが。
デバッガを持ち出さないといけないときって、どういう時があるのか、
私にはわかっていなくて。 >>588
色々と使えるようになっといた方がいいぞ やはりIOで見たりオシロ使うのがいいですよね
分かってはいるんですが、
社内でも誰も知らないプログラムで、
シュミレーターがあったので、ブレイク貼って止めてまたRUNしてとかしながら数値見れたら解析が楽かと思いまして mainは変数値を参照出来たのですが、ヘッダファイル内の変数が反映されてないみたいで
最新のMPLABを入れたらインポートが上手くいかなかったので、あえてインポート出来る以前のバージョンを使用しています。 このPCもIPEがなぜか三種類ぐらいインスコしたままになってるけど
先日久々にICD3を使って書き込む作業が発生したが
現行最新のIPEだと(ICD3を)認識すらしないのか・・・
てことで ふたつ古いバージョンのIPEで作業したんご。
どうりで古いバージョンを削除してないわけだ・・・
新しいバージョンでも対応してりゃ削除できるだろうに。
マイクロチップのユーザーって地球規模でいると思うけど
累計したらどんだけの資源を浪費させてんのかな?しらんけど(^p^; マイクロチップ(という会社名、PICの製造元)のユーザーって地球規模でいると思うけど
(マイクロチップ社 が最新版ソフトで古い環境を非対応にすることで
地球上各地のユーザーが古いソフトウェア環境を削除できない事態に晒され、
PC上で浪費される資源の量を)累計したら(マイクロチップ社の判断の影響により、
マイクロチップ社は)どんだけの資源を浪費させてんのかな?しらんけど(^p^; まぁたしかに現代文も古文も酷いもんだったが
ドイツ語やフランス語は単位落としたので
それに比べればましだぞ?
もんぺとくわ〜 あざぶじゅばん〜 他人の日本語をディスる発言をする人が、
他人をディスる資格ありと見做せるぐらい立派な長文(といっても10行ぐらいでさえ)を書いてるのはまれ。
ぼろが出ないように、短いコメントで憂さ晴らししてるんだなって思う。 以下は、文法的な修正が必要な可能性がある文です。
「日本語の成績悪かっただろ」
修正案:
「日本語の成績が悪かったんじゃない?」
「日本語の成績が悪かったんじゃないか?」
「日本語の成績が悪かったでしょう?」
「日本語の成績が悪かったのではないでしょうか?」
「日本語の成績が悪かったのではありませんか?」など 他人から見て綺麗な文章を書ける人は才能のある人。
仕事でも、部下の日本語に添削を入れる管理者の言うことを聞いていると、よけいに客が混乱する事態も珍しくない。
文章表現について、特別な才能の上にそれなりの訓練した人でもなければ、
客に分かる文章=自分に分かる文章
だと思ってしまうこともある。
ここは文章書きについての才能に恵まれた人が集まるスレじゃない。
ヘタな書き手もヘタな読み手もあたりまえ。
コミュニケーションがうまくいかないときはコミュニケーションで補えばいいのでは。 そもそも日本語の成績っていうところに違和感
日本語なんて科目はなかった そういや民族学校ではなんて言ってるんだろうな
ていうか、授業に科目自体無かったりするのかな?しらんけど(^p^; すぐれた医者や数学者でエッセイ作家としても活躍してる人がいるけど
まぁ頭が良くないと短くて分かりやすい文章は書けないだろうな 電電板では誤解されないようにと詳しく書くと
「長すぎて読む気がしない」と言われるし
そうかといって誰にも読んで貰えるようにと短くシンプルに書くと
「何が言いたいのか分からない」と言われるw
自分が書きたいようにうに書くのが一番 >>605
詳しく書く その書き方がヘタなんじや?
インデントと箇条書きを使って詳しく書くんだよ
あとは送信する前に読み返すこと 一筆啓上
火の用心
お仙泣かすな
馬肥やせ(^p^) そうそう。学会の一流教授が書いた専門教科書が、一番わかりやすいね?? PIC初心者です。MPLABXでプログラムを作り始めたのですが、
...(520) ... necer called というワーニングが一杯出るのですが、
ワーニングレベルを-3から0にしたら出なくなりました。
0でやってもいいのしでしょうか。皆さんはいくつでやっていますか?
あと うるさいので、C99 もC90にしました。良いでしょうか?
ご指導宜しくお願いします。 それでいいんじゃない?
たまに有意義なワーニングが出るのでそのまま使ってるけど。 ありがとうございました。
おかげで無事にプログラムが動きました。
FPGAではwarningはほったらかしですが、PICはwarning無しで作ってみたかったです。 すいません。今までESP32でちまちま作っていたのですが
知り合いから模型に組み込めるサイズのLチカを作ってほしいと依頼されました
サイズ的にPICでやるかなあとなったのですが
PWM出力で明るさを変えられてC言語対応で 出来れば独自のIDEでは無くて PlatformIOを使えるPICってどんなのがありますか?
ESP32みたいにシリアルで書き込めればいいのですがどうもPICってそういうのが無くて書込気もいるみたいですが
書込気もなるべく安いのがいいです >>612,613
その条件ならAVRの方が向いてると思う
AVRならブートローダーを書き込めばArduinoで開発できる
(↑その場合はシリアル書き込みできる)
PlatfomIOのPlatformsでAtemlAVRをinstallして
BoardsのPlatformフィルタでAtmel AVRを選択すれば使用可能なAVRの型番を調べられる アナログ時計を作ってみたいんだけど
秒を60個のLEDで回すにI/Oが足らないっす
10カウントを6カスケードとか?
なんかマイコンはpic使うけど周辺I/Oもマイコン使うのがええすか? >>616
目で見るための(つまりスタティックに点灯していなければならないわけではない)
60個のLEDを駆動するのにいくつのポートがいるのだっけか。
デューティが下がればピーク電流も大きくなるし、それも制約要素になるわけだけど。
ポートで直接駆動したら、多角形の辺と対角線に双方向にLEDを入れるテクニックが使えるので、9本のポートで制御できる。
でもデューティは下がるしポートの電流に制約を受けるし。
ダイナミック点灯の要領で、アノードコモンにしてカソードは8ポートで直接駆動
コモンを74HC138+PNPトランジスタで駆動したら、64個のLEDを合計11個のポートで制御できるのでは。 >>616
SPIやI2C接続のIOエキスパンダ―とか、74HC595のような出力レジスタ付きの
シフトレジスタを使う方法もあります。
出力ポートを拡張するだけなら74HC595が簡単かも。
SPIと同じ方法で使えて、1個で8ビット拡張できて、直列につなぐことができて、
秋月でも安く買えるし。
この場合、マイコンからは出力ポート3つで、いくつでも出力ポートを増やせます。
データシートにはタイミングチャートも載ってるけれど、内部の等価ロジック回路を
見る方がわかりやすいと思う。 あんがとあんがと(・∀・)
MAX7218とかいうドット表示できるのを見つけますた
これだと8x8=64点の制御ができるなと(;´Д`)
ってどうマトリックスを書くかまたハマりそうだw
いやもうちょっとあがいてみる 別に144pinのPIC使ってもええんやで、もったいないけど >>620
なんだかんだ言っても、結局HC595が1番便利だよ。
・595が値を記憶してくれるので、ソフトのダイナミック点灯処理の負担が無い。
・LEDのコモン駆動のトランジスタが不要
・部品入手が容易。MAXIM使ったら、部品入手が大変 >>622
74HC595使うと接続はSPIになるの?
つか595ならたしかに手元にあるなw >>621
そんなのもうPICじゃない(;´Д`) >>623
595のシフトレジスタのクロックがSPIのSCK。
一番マイコンに近い595のDINがSPIのMOSI。
595の出力レジスタのクロックが、SPIのCS#。
SPIのCS#と違って、シフト中は、CS#がHでも構わない。シフトレジスタに全部送ってから↑が発生さえすればいいです。 MAX7218じゃなくてMAX7219でしょ、Aliでも7Seg8桁とか8x8ドットマトリクスLED付きで安く出てる
まさかICM7218のほうじゃないよね?こっちは結構レトロだから 技術的に可能か不可能か判断する為の質問をします。
RF-Explorerと言うUSB機器の本体を改造せずにシリアル信号を取得する事は可能ですか?
PICにはUSBホストの機能が有る品種があるみたいなのでソレで可能でしょうか?
PIC24FとかPIC32MXでシリアル信号を抽出する事を記述した書籍は無いでしょうか? >>627
まず「RF-Explorer」という商品名だと複数該当する可能性が有るので、メーカー・型番等を含めて詳細を提示した方がいい
「RF-Explorer」のワードで検索上位の調べたけど、CP210xのUSB信号を扱う可能性が高い
CP210xだとして、USB通信が「CDC」じゃなくて「Vendor Specific」
PIC32等で「Vendor Specific」にも対応可能らしいので技術的には可能だろうけど
現実的には時間・手間=コスト的に難しいと思う
>PIC24FとかPIC32MXでシリアル信号を抽出する事を記述した書籍は無いでしょうか?
詳しくないし、調べてもないけど、日本語の書籍で探すのは難しいと思う
PICのUSBだけでなく、USB全般の書籍も複数読む必要があると思う
まあ、自分は詳しくないのでこの様な回答だけど、手軽な手段が有って簡単に出来るよって回答も有るかもしれない CP2102/9が使用されているとして、ドライバとかプログラミングの手間を考慮するとパソコンで受けてパソコンからシリアル出力するのが楽そうに見える
linuxのドライバもありそうだから、raspberry piの様な品物でも出来るかもしれない >>628
>>629
製品は小型スペクトラムアナライザ RF Explorer−3G Comboです。
PCに接続するとデバイスマネージャーのCOMポートに繋がる奴です。
Silicon Labs CP210x USB to UART Bridge(COM5)
こんな風に繋がっている奴です。
PIC24FとかPIC32MXとCP2102 USB-TTL変換アダプター組み合わせとかでもムリかな?
パソコンで受けるのが簡単そうなのは判るのだが今回のテーマはひたすら軽くだから。
やりたい事は下記の様にしたいのです。
RF-Explorer〜PIC24F〜CP2102 USB-TTL変換アダプター〜HC-05 BTモジュール
HC-05 BTモジュール〜CP2102 USB-TTL変換アダプター〜PC
発案の切っ掛けは、検索ワード「ポンプチェッカー infutest2000 無線化に挑戦」。
スペアナをドローンで飛ばしたら面白そうな出来るかもと言う妄想なのです。 627だけど解決法が見つかりそうかも。
Arduinoのホスト機能を使ってシリアル通信する記事を見つけた。
その記事はFTDIのチップを搭載する奴だったがSilicon Labsのライブラリーが有れば?
「CP210x Android driver - Silicon Labs Community」とか有ったわ。
自己解決にはまだ遠いけどArduinoを使用する方式を模索しようと思います。 >>630
正直なところ、本体を改造しないと言うような趣旨に反するけど
本体開けてUSB変換前のUARTを直接出した方が楽だと思う
↑改造ならUART → ESP32(Bluetooth) → PC
>>631
Android:スマートフォンで使用率の高いOS
Arduino:マイコンのプラットフォーム なぜスペアナ全体を飛ばす事を考える? A/D変換した奴をESP32で飛ばせば良くないか? >>633
受信タワーの建設前に調査をするには伸縮ポールが付いた電界強度測定車や高所作業車が必要。
双方共に購入するにしてもレンタルするにしても劇高いからです。
地上高測定棒にしても全長が6m位しか無く建築物高+地上高測定棒の高さしか測定不能。
しかし、超小型スペアナ+BTモジュール+基盤ログペリをドローンで運用すれば?
建築物の助けが無くとも地上高50mの受信点調査も楽勝と考えたからです。 >>632
すいません。Arduinoのホスト機能を使ってを模索したけど難易度が高そうです。
そして見付けました。検索「PICのUSBホスト機能を動かしてみる(CDC-Basic編)」です。
24FJ64GB002にホスト動作のさせてシリアル出力をUSBに変換してPCで通信。
コレのUSBに変換する部分を排除してHC-05 BTモジュールすれば出来るかもです。
最初はコレでシリアルを取得してCP2102 USB-TTL変換アダプターに直結して実験します。
お騒がせしました。 あれ、なんか違う?
あんまりよく読んでなかったけど。
とりあえず、モノは違っても、できそうではある。 >>636
>>638
本体を無改造と言う縛りなら新たにスペアナを購入すると言うのも手ですね。
RF EXPLORER 3G+ IOT ARDUINO+ARDUINO本体+USB CP2102
PDFマニュアルに 「to PC - you should get a USB CP2102.」と有った。
ココから推察するにPCアプリには「USB CP2102」の縛りが有る予感。
RF EXPLORER 3G+ IOT ARDUINO+ARDUINO本体+HC-05 BTモジュール
HC-05 BTモジュール+USB CP2102+PC
コレで通信出来るかもです。でもPICの記事を発見したのでコレから実行します。
検索「PICのUSBホスト機能を動かしてみる(CDC-Basic編)」 ・PC側ソフトで対応
・中継機を使う案
・USBプロトコルアナライザ
中継機を作るのが簡単では?
Nucleo F446REならUSBホストとUSBデバイスと両方使える
TK-USB1N/TK-USB2NみたいなのでNucleoにUSB端子を生やす まあこれは当たり前すぎて問題ないんだろうが、
通信してる時間と、データを取得する時間と区切っておかないと
Bluetoothの電波をもろにセンシングしてしまうよね。 Aliの12F629買ったら5個中2個が同じところでベリファイエラー出る。3EFFが3EFBになっちゃう
digikeyで買ったやつはでない。イレースはできるしほかのHEXだと通るよくわかんない助けて
ただの不良? ライターはTL866CS 考え得る可能性としては、三個はかけているのなら、
電源がちゃんと安定して動作しているのか確認するのがひとつかなぁ…知らんけど(^p^; >>644
Aliで3個も書き込めるPICが届いたのだから大当たりだね
FLASHメモリの故障について説明します
壊れたFLASHメモリの場合、個々のビットを0に設定することができなくなることがあります
これは、劣化や書き込みの耐久性を超えた場合などが原因です
また、0が1に変わることもあります
しかし、FLASHメモリが壊れていても、イレースは出来る場合が多いです
初期値として、すべてのビットが1に設定されているため
FLASHメモリを削除すると、すべてのビットが1にリセットされます
HEXによって無事に書き込める場合は、故障したビットに1を書き込んだ場合だと思われます
ベリファイによって書き込みが正常に完了した場合は、そのビットが正常に動作していると判断されます 639だけど早速トラブルが発生。
検索「PICのUSBホスト機能を動かしてみる(CDC-Basic編)」でコンパイルが出来ない。
info: Configuration "default" will build with toolchain "XC16 v1.30" at "C:\Program Files\Microchip\xc16\v2.00\bin".
これはインストールされたコンパイラとプロジェクトで設定されたコンパイラが異なると言う事?
旧タイプのコンパイラを探したが無いのでソースの修正が必要と言う事だろか?
それとも何処かにこっそり旧タイプのコンパイラが有ったりしないだろか? もう別のバージョンが入ってる、ってんなら
コンパイラが見つかるように
Toolchainの設定し直しで良くないか? 639だけど古いバージョンが有った。
「Go To Downloads Archive」から入れば有りました。
お騒がせしました。 >>646
ケーブルとかポート変えても同じだった
>>647
021hだったか
>>648
なるほどこれは買ったらだめだたいして安くないし
あとdigiのと見比べたらBG0とBG1とかいうのが入ってないっぽい 639だけどコンパイルしたら「Loading completed」に成ったんだけどコレでOKなん?
「プロジェクト名\dist\default\production\」これのフォルダー下に下記のファイルが出来た。
ELFファイルとHEXファイルとMAPファイルとXMLドキュメント
後はチップに書き込みすればOKなんだろか? HEXだが、どうやって書き込むんだ?
そこは大丈夫か? 硬直化した組織だと
「書き込みファイルが送られてないんですけど…
拡張子elfって何ですか?」
とか聞かれたりするぞ。 elfかもしれんが、PICKit2でもIPEでもHEXなのではないだろうか?
(2で悪かったな)
MPLABXは何を書いてるかわからんし。
おま環?それともPICが古い? いや、最近のツールは僕も持ってないが
最新のソフトウェア環境だと旧ツールが使えないのは、
おそらくマイクロチップさまのスタンスは↓こういう感じ なんやろうか・・・(´A`;
>>660
うわっ、恥ずかしっ。と言われそうだ。
問答無用で5Vを勝手にかける、とかいろいろ問題はあるけど、
秋月のPICKit2互換ライターが便利すぎて、手放せない。
デバイスファイルを勝手に変えて使ってたけど、
最近のはVPPも12Vから9Vに変わってるし、新しいのには対応できないのかも。
PICKit4も使ってるけどね。 質問です
5Vで使えるPIC24Fってありますか?
5Vで使える32MHzで以上で動く16bitマイコンを探しています。
PICKitを持っているので、なるたけPICで槍たいです。 >>662
PIC24F32KA,PIC24F16KA,PIC24F16KM,PIC24F08KM
このあたりのワードで検索してデータシート確認してみて >>663
ありがとうございます。助かります。
どうして、すぐにたくさんの候補が見つけられるのはなぜでしょうか?
スゴいと思います。 >>664
他にもPIC24FVとかdsPICにも対応機種ある 別人だけど、digikeyでpic24→マイクロコントローラ を検索しておいて、動作電圧が5Vを含むもの、クロック周波数(速度)32MHz以上、必要があれば取り付けタイプ・パッケージあたりもチェックして絞り込み。
こんな感じですかね。
マルツでも似たような検索方法が使えた気がします。 >>666
ありがとうございます。
デジキーがありましたね。調べて見ます。
昨晩、マイクロチップにも検索選定するページを見つけました。
ありがとうございました。 >>667です
PICの型番を教えてもらったので買ってきたので、やってみました。
しかしLEDチカチカで躓いています。教えていただけないでしょうか。
ピンに出力ができません、というかコンパイルが通りません
画面コピーを張ります
https://imgur.com/biv6CK0.jpg
Timer1という関数の中でRA0につないだLEDを点滅させたいです。
buildすると、写真のようなエラーが出ます。
13行目で「エラー 必要 宣言 または .の前に(」という意味だと思いますが
コンパイラーのヘッダーファイルの2015行目に宣言されていますし
後閑さんの書き方で書いているので間違っていないと思います。
昔は RA0 = 1; で良かったと思うんですが。今回は何が悪いのでしょうか。
MPLAB6.05 コンパイラーはXC16 Ver2.0 です。
今日ダウンロードしたばっかで新しすぎるでしょうか。
PIC24FV32KA302の28ピンDIPを使っています。
あと、C99からC90にする設定と、
ワーニングレベルを0にする設定はどこにありますでしょうか。
Production --> Set Project Configのなかをさがしましたが出てこないのです
よろしくお願いします >>668
LATCAbits.LATA0
プロジェクトプロパティだったかな? ありがとうございます。動きました。
LATCAbits.LATA0ではなくて、LATAbits.LATA0でした。
どうもありがとうございました。
ヘッダファイルには大文字で書いてあるのに小文字でないと通らないって、
変な感じがしますね。
File--->project propertyは、Production--->と同じ画面が出てきました。
C99 C90の選択は、ネットで見るとXC8のものが多く出てきて、
XC16の記事は1つも見つけられませんでした。
どうもありがとうございました。これでLEDがon/offできます。
SW取込みとRS232の接続、EEPROMまで進みたいです。
その前にMMCの使い方を覚えないといけませんね。
どうもありがとう LATABITSは、変数の型名で構造体のexternされている変数名がLATAbitsですね。
C90,99は、XC16だと無いみたいです。 >>672
ありがとうございます。お詳しいですね。スゴいと思います。
その後、また分からないことが出てしまいましたので、聞いても良いでしょうか。
PIC24FV32KA302 28ピンDIP型ですが、RA4, RB4が出力になりません。
次の方法で確認しています。
設定は、MCCのピングリッド表示機能で、全部outputにします。
除外ピンは、水晶発振器、MCLR, UART2-TXD, RXD の4本です。
Generateして、mainには、 __delay_ms(500); を入れて全I/Oの1 0を繰り返します。
IOにはI/Oピンに全部LED+抵抗を付けて、確認できるようにしました。
ICSPも自分でTRISを書き直して直してLEDチカチカしました。
全体が綺麗ですが、RA4, RB4だけ付きません。
調べて見ると、隣同士のピンで第2水晶のピンです。デホルトがアナログになっているのかも。
しかし、MCCはグリッド表にも個別の設定にも、出力でセットしています。
しかし生成されたファイルを見たら #pragma SOSCSRC?=ANAになっています。
質問なんですが
この設定を自分でアナログからデジタルに書換したいのですが、
ANAの反対の言葉はどのような表記をすればよいでしょうか。
MCCの設定のセカンダリ発信にチェックは入れていません。なのにANAになります。
MCCというのはそういうところまで面倒をみてくれれば良いと思うのですが、
やってくれないのでしょうか。 >>673
だからarduinoにしとけばいいのに。 余りにも簡単にできてしまうより、
ちょっとだけ意地悪してくれるところが
可愛いと思います。 ↑
今流行りの悪役令嬢系作品マニア
ツンデレ属性を拗らせたりすると発症するらしい。 >>673
MCCは、判らないけれどCONFIG bitでSOSCを無効にすれば行けるんじゃないだろうか >>673
MCCはけっこうバグがある
おかしいと思ったらデーターシート見てMCCが吐いたコードが合ってるか確認が必要 PICは半導体不足の影響受けてないくらい潤沢に見える chatGPTにxc8で書けるか聞いたら
書きやがったwwすげー(;´Д`)
タイマー0でLチカでけとるw >>684
自分も試してみた\(^o^)/
ChatGPTのGPT-3.5だと微妙だったのでGPT-4で出力してみた(動作は未確認)
【Q.】
PIC16F18326を使いタイマー0でLチカするコードを書いてください(コンパイラはXC8)
【A.】
こちらはPIC16F18326を使って、XC8コンパイラ向けに書かれたタイマー0を使用したLチカのサンプルコードです。
PICのデフォルトのクロック周波数を使用しています。コードは適切なピンにLEDが接続されていることを想定しています。
以下のコードを参考にしてください。
https://codeshare.io/MNLYPQ (出力されたコード)
このコードは、デフォルトの内部オシレータの周波数である500kHzを使用して、タイマー0の割り込みを利用してLEDを点滅させます。
この例では、RC0ピンにLEDが接続されていると仮定しています。必要に応じて、他のピンに変更してください。
また、LEDの点滅速度を変更するには、プリスケーラやタイマー0のカウンタ値を調整してください。
上記のコードは以下の手順で動作します:
セットアップ関数で、内部オシレータを500kHzに設定します。
RC0ピンを出力に設定し、LEDをオフにします。
タイマー0の設定を行い、割り込みを有効にします。
割り込みサービスルーチン(ISR)がタイマー0の割り込みを検出した場合、LEDの状態を切り替えます。
メインループは空ですが、割り込みによってLEDの点滅が制御されているため、何も実行する必要はありません。
このコードは、XC8コンパイラでコンパイルしてマイクロコントローラにプログラムすることができます。
使用するハードウェアに応じて、適切な設定とピンアサインメントを選択してください。 >>685
試しに動作確認したら、コンパイルできなかったので、3回ほどChatGPTで修正した
しかし、コンパイル出来るコードが出力されなかった
仕方がないので、もう一度新規にLチカのコードを出力させる
1回エラーがでたけど、エラーコードを教えたらコンパイル出来るコードが作成された
試しに書き込んだら、無事にRC0でLEDが点滅しました\(^o^)/
1秒あたり約486回・・・(汗)
ChatGPT(GPT-4)が出力したコード
https://codeshare.io/4e0XO3
【ChatGPTに】
Q.動作テストしたところ、1秒あたり約486回点滅しました
A.すみません、割り込みのタイミングが正しく設定されていなかったようです。
LEDが1秒間に約1回点滅するようにタイマー0の設定を調整してみます。
以下のコードで、タイマー0の設定を調整してください。
https://codeshare.io/QnNY1m
【ChatGPTに】
Q.修正しても1秒あたり236回
A.申し訳ありません。16ビットタイマーを使用して、正確な1秒間隔で点滅するように修正しました。
以下のコードを使用してください。
https://codeshare.io/N3rYv4
コンパイルできないコードが出力される・・・(終) >>687
手元にある関係で、PIC12F1572やPIC16F18326などを使用しました
質問例
PIC12F1572で1秒間隔でLチカするXC8コンパイラ用のコードを書いてください
Lチカには割込みを使用してください
何度かコードを出力して試してみましたが、期待通りに動作したものはありませんでした
使用実績の多いPIC16F84を指定した場合は、正常に動作するコードが出力されるかもしれませんが、それについては試したことがありません
そちらはどの型番で試しましたか? >>689
そうでしたか
やはり知名度の高い機種だとうまく出力される可能性が高いですね >>686
やっぱりこういうのってグーグル検索で出てきたのを適当に改変したコードが出てくるのか?
学習データの中に雛形が入ってるんだろ? >>691
ChatGPTの例で考えると自動に近い形でGithubやWebサイトのソースコードの中で
OSSの中でライセンスの種類が明確で利用可能な物を学習してると思う
※ただし、重要度のパラメータは低い値に設定されてると思う
プログラム手段や基本的な事は教科書の様なテキストでライセンスをクリアした物や
ライセンス提供を受けた物を選定して学習してるはず
※このようなデータはWebとかと比べると重要度が高い値に設定して学習してると思う
上記の様な手段で学習したデータをさらに手作業で強化学習することでより正しい回答になる可能性を高めてる
PICの場合、型番が多すぎて情報が収束しないから正しいコードが出る可能性が低い・・・
PIC16F84とかだと情報が多いからマシみたいだけど・・・
ATMEGA328PやArduinoだと正解のコード出力する可能性が高いね mplabじゃなくてArduinoIDEで開発とかできるの? >>694
>>692の最終行について( )内の補完をしたのでは。
「Arduinoだと(話の前提となっているPIC12F1572やPIC16F18326などの)正解のコード出力する可能性が高いね」 秋月で売っててずっと前に買った
「新居浜高専PICマイコン学習キットVer.2」(PIC16F886採用)を持ってるんだけど
水晶発信子だけ変更すればPIC16F18857で動かせるらしい(Ver.3になる)。
それで最近ようやくPICマイコンをやってみようかと思ったんですが
買ったまま放置してたPIC16F18877(40pin)もあるし
ゆくゆくはブレッドボードでもいろいろとやってみようと思ってます。
この状況だと水晶発信子とPIC16F18857を別途購入してまで
部品を変更する意義ってありますか?
PIC博士の方々助言お願いします。 >>696
>この状況だと水晶発信子とPIC16F18857を別途購入してまで
>部品を変更する意義ってありますか?
素の状態(ver.2)でいじり倒してから考えれば良いと思う 趣味の電子工作の「意義」を
他人に聞いても意味ないだろ Ver.3の機能が使いたいんならいいんじゃない
この学習キットはPICの書き込み機能はないんだよね?PICKitとか持ってるのかな?
このキット見てると昔あった4ビットのこんな感じのマイコンのおもちゃを思い出すな
マイコンと言いつつ自分でプログラミングできずにファームの機能でしか遊べないやつ… >>696
Ver.2とVer.3は同じ基板だから出来ることは同じでは? 後閑先生がPIC18FQシリーズの本を出しているようですが、
このシリーズのデータシートがいままでのMicrochipのデータシートと
見栄えが違うんですが、何かあったのでしょうか?
例えば秋月の以下の製品の
ttps://akizukidenshi.com/catalog/g/gI-15941/
のマイコンのデータシートの35ページとか36ページの「→」
今までのでは見たこと無い。 PIC16F152シリーズなどの新しい世代のデバイスに手を出したいんですが
PICKit3は非サポートのようです
デバッグ機能は要らないんですが互換プログラマってあるんでしょうか? PICkit3持ってるならPIKkitminusがサポートしている
PICerFTも最新バージョンでサポートしたようだが
個人的経験として低電圧書き込みでどハマリしたので最近使ってない
どちらも16F152xxでは確認してないので成功したら報告あると嬉しい 見切り発車でMouserで購入したPIC16F15213とPIC16F1523が届きました
純正PICKit3とPIKkitminusを使ってどちらも書き込めました!
参考までにPIC16F1523のDIP版は数が出ていないのかエラッタにすら載っていない初期リビジョン(0x2002)でした
SSOP版は最新でした ちょっとUSBでCDCのシリアル通信(USB関係のMCCがあること)やりたいけどPICKIT3で書き込めるお勧めありますか? 今どきUSB開発を新規でPICでやるのがそもそもお勧めじゃないような…… 16F1454か18F14K50か、MCC対応は知らん、 2年ぐらいまえだけど、PIC16F1459でCDC使った。CDCはMCCが対応してた。 >>711
ありがとうございます。
バスパワーで動作すれば、自社製品のシュミレータ(ダミー)を作ろうと。
ベンダーとプロダクトIDは任意に定義出来ればですが。 >>714
あります。
ルネサスのマイコンを使った産業用装置で持ち歩けないのでダミーでPCに接続画面出して販促と考えてます。 外部にI2CのEEPROM(5ピン)のSCL,SDAを、プルアップしてPICと配線しました。
I2C設定をMCCで設定しようと思って、後閑さんの本を読んで勉強しています。
本には「マスターモードの場合」と「スレーブモードの場合」と分けて書いてあります。
このマスターとスレーブのモードというのは、どのように使い分けるのでしょうか。
どんなときにマスターとして設定すればよいのか、
どんなときにスレーブとして設定すればよいのか、さっぱりわかりません。
また「マスターに設定する」という意味はPICをマスターにするという意味だと思いますが
本の説明文には「次はスレーブ側のCuriocity HPCボードのプログラムをMCCで製作します」
と書かれています。
I2C線で接続されたスレーブ部品をMCCで設定できるのでしょうか?
宜しくお願いします >>716
I2C接続のEEPROMを使用する場合は
EEPROMの大半がスレーブに固定されているはずです(そうでないと都合が悪いです)ので
PIC側は自然にI2Cのマスターモードで動作することになります。
I2Cのスレーブ側は通信が受動的に行われるため
1つのマイコンと複数のセンサーなどがある場合(センサー等の部品の大半はスレーブ固定)
マイコン側が必然的にマスターとして動作し、センサー側がスレーブとなります
本の内容について具体的な理解はありませんが
おそらくその本では2つのマイコンを用いてI2C通信が行われていると推測します
2つのマイコンを使いマイコン間でI2C通信を行う場合
マスター、スレーブの選択は都合の良い方で良いと思います >>717
ありがとうございました。
>おそらくその本では2つのマイコンを用いてI2C通信
なるほど、そういうことですね。納得しました。
さらに、PICはマスターのほからスレーブにもなれるんですね。
そういうことでしたか。なるほど、ありがとうございます。
>2つのマイコンを使いマイコン間でI2C通信を行う場合
>マスター、スレーブの選択は都合の良い方で良いと思います
それでしたら、本の言うこともよく分かりました。
1対1でしたらクロックSCLを出す方がどちらでもよいですね。
ありがとうございます。
あと、もしご存じでしたら教えていただけないでしょうか。
I2Cで1対多((マスター0,スレーブ1,2,3)の場合、
0-1, 0-3などはマスターがクロックを出せば良いと思いますが、
1-2, 3-2 とかマスターが絡まないときでもクロックが必要なので、
自分は情報やりとりに関係ないのに、マスターがクロックを出してあげるのでしょうか。
それとも、親とセンサー1,センサー2,センサー3という関係ばかりで、
子同時が会話することはない、という理解でしょうか。 最新のMCCによるI2Cの作例って、どこかにないですかね?
どの本もどのブログもMCC古くて、画面全然違う。
TRBというのが出てきて、
難しくて頭がついて行かない。 厳しい事言うが、データシート読め、
いくらコード生成もどきでも無知に使える様には出来てない。 >>720
MCCが出力するのI2C用のコードは難解な部類に入ると思う
I2Cの仕組みを理解しててPICのデータシート読めても難解よ
MCCのコードを理解するより正直MCCに頼らないでI2C用のコード書いた方が楽な位よ スピードに拘らなけれはGPIOでI2Cを制御する。
I2Cの勉強になるよ。 >>722
>MCCに頼らないでI2C用のコード書いた方が楽
そうだよね。
・スレーブアドレスを<<=1する
・REAなら ||= 1する
・書き込む
・ACK待つ
・データ1バイト目を書き込む
・STOPコンディション どうせ使わないクロックストレッチを無視すれば簡単になる >>725
クロックストレッチって、MCCソースに出てくるリトライ回数のことでしょうか? >>726
検索すりゃいくらでも解説あるが
要するにスレーブ側でSCLをLに引っ張ってマスター側にビジーを伝える仕組み
ほとんどのデバイスは使ってないけどBQ27532とかは使ってたりする >>721
そのデーターシートとは、マイコンのデーターシート?
それともMCCのデーターシート?
MCCの吐くコードの説明って、ヘッダーファイルの物だけでは? 質問あります。
相手のPICから、UARTで文字データが出力され続けています。
S|||||||PS||||||||PS||||||||PS||||||||PS||||||| と、START bit 後すぐにSTOP bitが来ます。
~~~~S|||||||||P~~~~~~S|||||||||P~~~~~~S||||||||P のような文字間の切れ目がないです。
これを「後から電源onのPIC」で受信したいのですが、PICの受信モジュールで判別できるのでしょうか?
1度文字化けしたら、最後まで合わない様に思うのですが。
まだ試していません。 >>729
スタートビットのHからLになるエッジでサンプリングが始まり中間タイミングで拾うだけだから問題なし。 8ビット1ストップビットパリティなしで0x2Cを連続して送ったら
0001101001000110100100011010010001101001000110100100…
になるけれど、うっかり途中から受信を始めたら0x62の連続になる、みたいな心配?
0010001101001000110100100011010010001101001000110100…
それはありうる話。 調歩同期通信のレシーバはスタートビットで同期を取るのだから
スタートビットが定まらない送信パターンは調歩同期と呼べないのでは? >>729
連続送信の場合、文字列によっては、1度文字化けしたら最後?まで合わない
理由として、正常なスタートビット位置を見失うため
送信側と受信側で対処する必要がある
送信側は一定のブロックを送信したら、1文字分以上の時間を空けて次を送信
※これでスタートビットの位置が正常に検出できる
また、送信する文字列(データ)にも工夫して、受信側で受信が正常にできてるか検出できるようにする >>734
名前の国語辞典的な解釈は横に置いておいて、隙間なしのつめつめの調歩同期送信をするのは、
相手となんらかの手順のやりとりをして(リクエストがあったらレスポンスを返すとか)、
一連のカタマリのデータは詰め詰めでも、カタマリとカタマリのあいだはアイドル期間を設けるとかして、
「うっかり途中から」とか「ずれてしまったら」とかが発生しにくいようにしたり、発生してもリカバリしやすいように工夫するよね。 みなさん、ありがとうございます。
>正常なスタートビット位置を見失うため
ですよね。H→Lの変化は何度となく現れるのですから
1文字分Hが続けば同期が取れるので、その後は脱調するまでOKなことは
容易に想像されます。しかしそれが無い場合は、途中から参加したらわからないと思うです。
余裕という人もあればダメという人もいて、どちらが正解なのかな、と
思いますが、正しく受信できない可能性があることはわかりました。
みなさんありがとうございました。 すみません、
PICのUARTだからダメで、ST32のUARTならOKとか
そういうことは無いですよね? >>739
たぶんそう。調歩同期通信そのものの動作だし。 >>739
そりゃ、UARTの原理的な現象なのだから
ST32(おそらくSTM32)でも同じ
>START bit 後すぐにSTOP bitが来ます。
これ説明としては逆じゃない? stopの直後にstartって事だと思うが
>S|||||||PS||||||||PS||||||||P , ~~~~S|||||||||P~~~~~~S|||||||||P
この手の説明には一応、意味を書いた方が良いよ
S(start bit) , P(stop bit) , |(data bit) , ~(idol) >>735
>使用するマイコンチップのデータシート
そうなんかなあ。
もとの人が知りたいのは、TRB のことなんだと思うけど、それってデータシートに書かれているようなことなんだろうか。
調べてみたら生成コードの中で使われている構造体みたい。
ぼくの環境のMCCでは出てこないキーワードだけど(古いのかな?) >>741なにもしてないときのアイドルは IDLE だ。推しのIDOLじゃないよ。 >>743
ほんとだ、「完璧で究極のIDOL」の方使ってる (*ノωノ)
734さん、推しときます やー。ぼくは、ずっとずっと間違ってきた漢字の間違いを、近所の小学生に指摘されたことがあったんだよな。
お客さんとの打ち合わせでホワイトボードに間違って数十年…。(多分パソコンだと変換に委ねているから間違ってない) >>745
気づいてない間違い怖いよなぁ、最近だと必要に応じて文章を作成した後に
chatGPTで「以下の文章をチェックして、間違いが有れば指摘してください」+「文章本体」
とかでで確認したりする
さっき自分の書き込みもchatGPTで確認したらidolがidleに修正された
>最後の説明における「S(start bit) , P(stop bit) , |(data bit) , ~(idol)」の部分で、「idol」というのは「idle」のタイポではないでしょうか。アイドル状態を指している場合、「idle」と書くのが正しいです。
AIに「タイポ」言われてちょっとワロタw >>738
途中から受信だけでなくノイズなどの理由でストップビットやスタートビットを読み損なった場合
そこから後ろは同期エラーで全滅だな 世の中には、TXさえも75kのプルアップとダイオードで引っ張る構造になっている糞UART ICもあるからなCH340とか 調歩同期はしばらく放っておけばどこかで正常になるよ。
データパターンによってフレーミングエラーが続くようならUARTの受信を
一度止めてから再開するとかすればどこかで正常になる。 >>748
CH340Kのことだろか。目的があってそういう構造になっているってことはないのかな?
糞なんちゃらって話はときどきあるけれど、目的にあってないものを選んでいるケースがある。
メーカーは、それなりの人が協議してすげえ初期投資をしてICを作ってる。
ぼく自身も含め、そのへんの存在でしかない いちユーザーの印象の方が正しい確率はひくいと思ってる。 秋月にあったCH340データシートを読んでみたら
・省電力のために弱いプルアップにしてある
・ハイスピードで通信したい場合は適宜プルアップしろ
みたいなことが書いてあった そもそもドライブする側に直列ダイオードがなければ、外部でプルアップする必要もない。
CH340Kはデータシートをチラ見した限りは、CH340と接続されるマイコンが別電源のときの動作を考慮したものっぽい。
CH340Kに電源が入ってなくて、マイコンだけに電源が入っているとか、その逆とか。
でも、これが成立するためには、CH340KのTXDの直列ダイオードのどちら側にも、
VCCに接続された保護ダイオード、寄生ダイオードが入っていてはいけないことになりそう。
秋月に売ってるんですね。試しに買ってみるか。 PICがなんだSTMがなんだ やれコード生成だ、やれアセンブラだCだと
言ったところでチップのデータシートも見ずに組み込みシステムができるかよ。 MCCが生成したコードの話なのに、MCCで設定するレジスタの話か何かと勘違いした人が、マイコンのデータシートを見ろって言ってたような気がする。 ♂「初めてだから優しくしてね」
♂「僕も初めてだから大丈夫だよ 」 >>758,759
♂ x ♂ (≧∇≦)
経験上、初めて同士より、どちらかに経験者がいた方がスムーズに事が進むと思うの 少し前のUARTの受信の件は、結局うまく受信できないというのが答? >>763
>>729の話?
延々と同じバイトが詰め詰めで送られてきて、何かのアクシデントでずれてしまったような場合は戻らない場合があるよ。
いろいろな値が送られてくるケースなら、いずれ矛盾が生じて、そのうち正常になる可能性がある。 戻らないじゃなくて戻すんだろ
ズレていることすら区別つかないんならそれはもう論外 詳細が書かれていない質問だし、ズレていることを区別できない場合があることは排除できないしね。 中古本で「PICマイコンでつくるインドア・プレーン」が売られているのを発見しました
この本を読めば、PICマイコンでドローンが作れるようになるっという本でしょうか? CQ出版社 PICマイコンでつくるインドア・プレーン
で検索すると、CQ出版社のこの本のページが見つかって、そこに目次やページサンプルが載ってるよ。 >>766
文字間の隙間がないのに、どうやって戻すんですか? >>771
化けた値とストップビットまでのオフセットの関係を予め求めておいて
その時間だけ待てばいい
パソコンなら難しいがそういう泥臭いタイミング制御できるのがマイコンの利点だろ
取りこぼしが多くてもいいなら
脱調検知したら1ビットずらすことでどこかで戻る >>771
>文字間の隙間がないのに、どうやって戻すんですか?
それを>>766のぼくに聞くないで。特定条件だと戻らない、って言ってるんだし。
たとえば、0x20の羅列がずーっと来ているときに、
・それが正しく0x20の羅列なのか
・実はずれて化けて0x02の羅列に見えているのか
を判定できるのは通信仕様の作りようでしかないと思う。
たとえば送信側と受信側で「0x20以外は8バイトを超えて連続しない」という取り決めを作っておいたら
0x02の羅列が続いたら「おかしい」と判断できるから、いったん受信を停止して再開することで修正ができるかもしれない。 受信したビット構成が不正だとオーバーランエラーや
フレーミングエラー、パリティエラーが発生するから
これらを利用しましょう 元質問は、まったく通常の8-n-1の場合な気がするし、事前の取り決めなど無い前提に思える。
>化けた値とストップビットまでのオフセットの関係
と言うけど、化けたことはマイコンにはわからないことでしょ?
期待するデータではないと判断できるのは人間だけ。 だからそれは論外だって言っただろ
良い悪いじゃなくて俎上に載らないの >>778
それはつまり「必ず戻せるわけではない。戻せない条件がある」ということですね。 判別できないんだから戻せないも何もないって話だが?
1ビットずらしていけば必ず戻せるとも言える
でもそんなの意味ないでしょ >>729の質問は「PICの受信モジュールで判別できるのでしょうか? 1度文字化けしたら、最後まで合わない様に思うのですが」だし、
それに対しては「判別できないケースがある。そのケースでは、最後まで合わせようもないことがある」が結論だと思う。
>1ビットずらしていけば必ず戻せるとも言える
合っているかどうかわからないケースで戻せるのかな? 最後まで合わせようもないことがあるが最後まで合わないことは避けられる
何も変なことは言っていないが?
それとも1/2の確率で無益なレスを続けるのと
有益なレスと無益なレスを交互にするのが同じだとでも? 「最後まで合わせようもないことがあるが最後まで合わないことは避けられる」
「で、合っているかどうかわかるのですか」
「神様ならわかります」
そうか、これが変ではない仕事場があるのか。 UARTで確実な通信をするなら、チェックサムやエラー訂正符号をつけるのが確実だよな コマンド&レスポンスみたいな形にするだけでもかなり違うしね。
送受信の手順を自分で決められるなら、一方的な隙間なしの連続送信は避けられるなら避ける方がいい。 UARTでどの程度の対応をするかは、
結局、その通信データがどの程度重要かどうかで決る。
ハード、ソフト共に何重にもエラー対策しても
リトライして最後までエラーになる場合も考慮しないといけないし。
結構めんどうな問題だと思う。 通信エラーの発生が問題になるような状況下ではUARTの連続送信という通信手段自体が不適当じゃね
SPIやI2Cなどのクロック同期式の通信手段の方が適している 調歩同期は長いケーブルを介した機器間通信で使われるものだしね。 ありゃ。へんなこと書いてた。
調歩同期は長いケーブルを介した機器間通信でも使われるものだしね。
でした。 間違ってと不都合な通信ならパリティ付けるなり
ブロックチェック符号付けるよね〜 昔標準的に使われてた8251なんてスタートビットの立ち下がりエッジを
みていなくてレベルだけだったのでエラーになるとなかなか回復しなかった。
PICのUARTが立ち下がりエッジを見ていれば結構回復は早いと思う。
もちろんパターンにも依存するが。
8251が立ち下がりエッジを見ていないのはブレークキャラクタを受信するためなのかな。 皆様方にはUARTについて色々と御不満お有りでしょうがw
信号線1本だけでで複数装置と通信出来る有り難みがあったりします。
(RS485はコンプリメンタリの2本で、信号の種類としては1種)
これからも使われ続けるでしょうね。 >>797
いつの時代の話よ
だいぶ古いやつのことでしょ 私の言ってるPICの送信エラッタってのは
TXREGに2回書くと、TXIFが0になるんだが、
バッファが残っているのにTXIFが1になって、
バッファを上書きし、送信データがおかしくなる現象のことを指してるんだがあってる?
18F26K22とか、古いPICではあった。
TRMTを見て送信が完了してから次のを書けば問題ない。
他にPICのUART関係では、PIC32MXのエラッタが有名だな。
レジスタに書くタイミングと、割り込みのタイミングが一致した場合、
割り込みから帰ってきてもう一度レジスタを叩いてしまうらしい。 ダブルバッファだからバッファが空けばTXIFが1になるのは正常動作なんだけど
TXREGが空の状態で送信が終わってTSRが空く瞬間に書き込むとTSRとTXREG両方に
書き込まれて2回送信してしまうというやつだよね。
普通文字列などを送信するときはTXIFが1になってすぐに書き込むから
そのタイミングにはならず意外と引っかからないね。
中途半端に時間が空いたときは最初の文字を書くときだけTRMTをみればよさそう。 え、そんなのあるの?
私のは
while(..){
while(TXIF == 0);
TXREG = x;
x++;
}
みたいなコードで、バッファがあるのにTXIF==0をすり抜けて
1,2,4,5
みたいな結果を送信してくるんだけど。 なるほど。
>>801が今でもあるUARTの送信バグってことでいいのかな。
できれば現象が起こる型番を教えていただけませんか? エラッタあり PIC16(L)F1574/5/8/9
PIC専用のスレ Part54で報告あり PIC16F1459, PIC16F1454, PIC16F18313
エラッタが存在しないものも同じバグを持っていて、同時期に設計された
ものは共通の可能性が高い。
バグがあってももエラッタ出てないし、修正してもエラッタを改版してるとは
限らないので現状は分からないね。
PIC16(L)F1717/1718/1719 ではRevision A1で修正されてるみたい
4.1 Duplicate Transmission の項目
https://ww1.microchip.com/downloads/aemDocuments/documents/OTH/ProductDocuments/Errata/80000653D.pdf >>804
どうもありがとうございます。
最終的には自分で動かして確かめてみるしかないですね。
確かめるのけっこう大変そうだけど USB HIDのプログラマブルゲームパッドを作りたいので
マイコン
PIC32MX210F016D ttps://akizukidenshi.com/catalog/g/gI-05851/
開発環境
vscode+Rust
デバッグ
シリアルデバッグモニタ
プログラマ
自作4-phase ICSPライタ
ドキュメント
PIC32MX1XX/2XX Family Data Sheet (DS60001168L)
Section 27. “USB On-The-Go (OTG)” (DS60001126F)
PIC32 Flash Programming Specification (DS60001145AA)
PIC32 フラッシュ プログラミング仕様 (DS60001145R_JP)
こんな感じの開発を考えているんだけどマイコン周りで他に読んどけ的な資料とかありますか?
USB周りのデバイスモード関係の解説が少ない気がする。DS60001126FもOTGとあるように
ホストモードが中心に見えるし どう見ても初めてのPICじゃないと思うんだが
どこまで経験があって何が初めてか書かないと >>808
サンキュ。サンプルコード集?があるのか。見てみます
>>809
積極的にPIC系を選ぶこともないし持っているのは秋月のセールで買ったPIC32MX210F016Dだけ
PIC系の開発自体初めて。他社マイコンの開発経験はあります MLAは時期によって入っている物が違うから、旧バージョンもチェックして 開発経験者ならMLAのhid_joystickを雛型として使えば割と簡単だと思う でもRustなんでしょ
まずはCのサンプルが動くことを確認してからの方が無難かと おお、開発環境を見落としてたわ
でもライブラリを使ってるわけでもなし、肝はPICをどう設定するかってことだから
Cからのポーティングもできる人間ならチョチョイなのでは PIC32MX210F016Dは色々と問題があるから苦労するぞ C32でコンパイルしたら最適化が効かなくて016に入らなかったとか MLAのhid_joystickを見ています。USBの割り込みハンドラは一つでその中で割込み要因を判別するタイプか
サスペンドとレジュームは空っぽに見えるけど実装されていないのかな
というかUSBの仕様によればサスペンド時は〜500uAらしいけどこれメインクロック止めないと無理だろ・・・
もっとも無視しても実用上問題ない機能ではあるけど
PIC32MX210F016DへISPで書き込むのに使えそうなアダプタって
・PICkit
・SNAP
・中華のPICkitもどき
・JTAG対応のDAPLink
・JTAGアダプタ(WCH-LinkEは持っている)
・自作ライタ
くらいですかね?
PICkitは流石に単発で使うには高価、SNAPも今や4000円程度とそこそこする
中華のPICkitもどきも3〜4千円程度?と互換品のわりにそこまで安くないし Raspberry PiとかArduinoを持ってれば付加部品少々で書き込めたような デバイスによる違いが大きいことを除けば
PICの省電力モードはそこまで癖が無いと思うけど
アプリケーションにも依るが自分は省電力モードを前提に書いてる Raspberry Pi Picoベースのプログラマがあれば・・・と思ったけど
ttps://github.com/MCJack123/pico-icsp-programmer
こんなのしか見つからなかった
>>818
Arduinoはあまり使わないですし5V系(UNO R4と中華Mega2560もどき)しかありません
Raspberry Piは1B+、4B、ZeroがありますがPCベースの開発では使いにくいそうに思います
>>822
サスペンド時電流〜500uAはコンプライアンステストの項目にあるにもかかわらず
アプリケーションノートなどの具体的な実装情報は多くないように見えます
データシートやマニュアルにサスペンドやレジュームについて、何らかの記載が
あればいい方で、下手すると全く触れられていないとか、バスパワーでの使用は
非推奨というマイコンもあるようです
また根拠不明で2.5mAまでOKみたいな解説も見かけますし(MLA内のサンプルも該当) 車載のマイコンだと、待機時は何mAまで許されるのかな。
海外旅行から帰ってきたらバッテリーがあがってしまったとか、ありそう。
キーレスの受信機は間欠受信だと操作性が悪く感じるので、常時受信でしょうね。 PICごときの電力で車のバッテリーがあがるわけが無い 安物のOBD2の機器でバッテリーがあがることがあるな。 アドバイスがあっても、あれはつかえない、あれはいや、あれはこんなデメリットがある、って言ってる人ってかまってくれるのを楽しんでるね。
すべてを前向きに検討するべき。
ついでにいえば、相手してくださってる人の延べ人件費を考えれば、2万円たらずの正規品なんて安い物。 Pickit4もAtmel Iceもとんでもなく高くなってるのね
ビックリしてる
Pickit5のアナウンスされてるけど販売はまだですか? >>829
円が・・・
マルツの通販だと2種類(どちらもPICKit5)が出てきて
そのうち1方は購入できるみたい
¥17,113.8 ー> ¥18,825.17(税込)
多趣味で家庭がある人は厳しい出費かもね >>830
ホントだマルツにありますね
数年前だとこんな感じでした
↓
MPLAB PICkit4
¥5,700 (税込) 秋月電子通商
MPLAB SNAP
¥1,740 (税込) 秋月電子通商
Atmel-ICE-PCBA 基板のみ
¥5,858 Digi-Key
Atmel-ICE-Basic
以前は7000円くらいだった
¥11,000 (税込) 秋月電子通商
Atmel-ICE Full Kit
¥15,000くらい >>831
この価格は2019年ごろメモったやつです pickit3を未使用で3個まだ持ってますが、まだサポートされますよね? あくまでワシの経験だが、VOlかVOHがスペック外になってしまう。
壊れはしなかった。 スペックって0.6Vとか0.7Vとかでは?
そんなにドロップするの? 保証値と実際の値は違うしね。
それと、実際にやってみて得られた値が、いつもこれからも期待できる値だと思ってはいけない。 しねしね君はいつも分かった風を装って問題解決に貢献しない
タヒねに読み替えた方が精神衛生に良い >>835
AVRのマニュアルに
Exposure to absolute maximum rating
conditions for extended periods may affect
device reliability.
つまり色々な要素(過電圧の程度や時間など)があるので
何ともいえないってことかな。
壊れ方れ方も色々あるでしょうね。
一見壊れていないように見えても、
もしかしたらマージンの低下とか、
時間経過と共に損傷領域が拡大していくとか・・・
昔、CPUの電源ピンに間違えて24V掛けたときは
一瞬でパッケージが割れ、イヤな臭いがしたので
これは壊れたナと迷うこと無く判定できたw >>835
大丈夫です。
半導体は、基本的に電圧と熱です。
電流は熱の要因ですので、半導体が加熱しないうちに収まれば壊れません。 IOピンで直接ドライブする場合SPICEのモデルってどうしてる?
LTSpiceのプリセットにある適当なNMOSとPMOS組み合わせているけど
まあ当てにはならない IOピンで直接ドライブする場合SPICEのモデルってどうしてる?
LTSpiceのプリセットにある適当なNMOSとPMOS組み合わせているけど
まあ当てにはならない メーカーや品種によってはIBISモデルが提供されていることがある
LTspiceでIBISモデルを使用するのは問題が多そうだが LED以外の直接駆動って言ったら
チャージポンプとか圧電スピーカとか? Tiktok LiteでPayPayやAmazonギフトなどに交換可能な4000円分のポイントをプレゼント中!
※既存Tiktokユーザーの方はTiktokアプリからログアウトしてアンインストールすればできる可能性があります。
1.SIMの入ったスマホ・タブレットを用意する
2.以下のTiktok Liteのサイトからアプリをダウンロード(ダウンロードだけでまだ起動しない)
https://tiktok.com/t/ZSNfGFL7M/
3.ダウンロード完了後、もう一度上記アドレスのリンクからアプリへ
4.アプリ内でTiktokで使用してない電話番号かメールアドレスから登禄
5.10日間連続チェックインで合計で4000円分のポイントゲット
ポイントはPayPayやAmazonギフト券に交換できます。
家族・友人に紹介したり、通常タスクをこなせば更にポイントを追加でゲットできます >>850
TikTokから見れば4000円は小銭か プログラム初心者です。質問さしてください。
MPLAB , XC16 で Cを作っています。
外部のスイッチの1,0を8bitのAにセットする書き方で、
A = 0;
A |= (SW7<<7);
A |= (SW6<<6); ・・・ という書き方はできたのですが、
A = { } で1行で代入できないか試しているのですが、エラーが出ます。
たとえば
A = { SW7, SW6, SW5, SW4, 0, SW2, '00' }; のようにです
こういう書き方はできないのでしょうか?
もうひとつすみません。
8bitを2進数で表現するときは、どのように書けば良いでしょうか
16進数の0x12→00010010とかです。
宜しくお願いします コウシャは0b00010010だな
前者は共用体で出来そうかな? 配列や文字列は1行で初期化できるけど1行で全体を代入できないのと同じようにそれを1行では無理じゃね?
関数を作るかC++ならできるかもXC16は使ったことないからわからんが
もしかしてPascalとかやってた?Pascalには集合型があるけどな >>853 854
ありがとうございます。
0b00010010 0bですね。なるほど、ありがとうございます。
1行では書けないみたいですね。
共用体ですか。本には構造体と共用体というのがありました。
勉強してきます。
ありがとうございしまた。 しっかり読んでないが、ビットフィールドで駄目かい? A = SW7|SW6|SW5|SW4|SW2;
ではだめかな #define SW7 0x40 等と定義しておくとAに右辺の論理和である0xf4が入る。組み込みプログラミングの基本。 >>859
bitを落とす時はどのような記述になりますか? MPLAB X IDE 6.15 XC16 PIC24FV32KAで、コンパイルがエラーが出て困っています。
手順は以下の通りです。
新規プロジェクトを作成
MCCでピン設定、クロック設定、タイマー1割込を設定して、Generate します。
そのままBuildすると、以下のfailが出て、エラーで進みません。
nbproject/Makefile-default.mk:207: recipe for target 'dist/default/debug/test.X.debug.elf' failed
nbproject/Makefile-default.mk:85: recipe for target '.build-conf' failed
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
MCCで設定だけしてmainもそのままでBuildしたのに、errorを出します。
「あなたの生成したままで、何も変更してないよ。なぜエラーなの?」と言いたくなります。
何か解決方法はありますでしょうか? >>861
IDEをアップデートしたら、直りました。ありがとうございました。 >>861
そのエラーメッセージって、分かりにくいよね。
ハッキリerrorと出るのはいいけど、レシピが...と言われたって
分からん。ネット探しても触れられていないし。
IDEのコンパイラって不親切だと思う。 switch文のcaseの値に変数って使えないんだね。
初めて知ったよ。 >>860
picでは1ビットならビットフィールドを使うのが普通だが、複数ビットなら
A = A & 0xfc;
とすればビット0と1が落ちる。これは
A &= ~0x03;
と同じ結果になるので
A &= ~( SW1 | SW0 );
とすればよろし。 ていうか>>857のように1行で書くことができるか?という話じゃないの? xc8 2.40 でコンパイルしたものより、xc8 2.46 でコンパイルしたものの方が小さくなる傾向にあるね。 Makefileで何をしようとしてエラーになってるのかを見もしないのか? >>852
ビット単位で読むのでなく、例えばレジスターRAをバイト単位読む方法ではいかんの? >>872
SW入力はRAポートに全部ある訳ではないから。 >>875
MicroPythonが使えるとしたら、PIC32あたりになるだろうけれど、ざっと調べた感じだと
あまりやってる人はいなさそうですよ。
Pythonを使いたいなら実績のあるマイコンを選ぶ方がいいと思います。 今日でもいいらしいんだが
あれくらい若いとコメントするのも彼女いるの?w きへままんろすおすめんせとせゆりてれるやひなひほあそおるせかきるまかかもとろなりるいほそぬたり MPLAB X 6.05を使っています。
開発の途中途中で、自分の意思でバックアップをしたいです。
やり方を教えてください。
フォルダがドンドン増えても良いし、zipが増えても良いです。 >>882
ぼくは今はMPLAB Xを使ってないですが、プロジェクトフォルダをまるまるZIP圧縮して残すのではだめなんですか? 質問なんですが、旧表記のアセンブラで
bsf GPIO, 0 ;LED0を点灯〇
bsf GPIO, 1 ;LED1を点灯〇
goto $
こう書くと、LED0と1が両方つくと思うんですが、〇〇
実際にやると0は一瞬だけひかりそのあと1しか点灯しませんLED0が消えてしまいます ●〇
これで正常な動作なのでしょうか?なにか間違ってるところがあるんでしょうか
MPLAB X IDE v5.35(旧表記アセンブラ)P12f675
書き込みにはPIC K150って奴を使用
ちなみにC言語で
GPIO0 = 1 ;
GPIO1 = 1 ;
こうかくと2つとも点灯します >>884
GPIOというのはポートを読んだ値を使ってリードモディファイライトをする
ポートの状態に影響を受ける
タイミングの問題ならNOPを挟んでポートの値が安定するまで待てば良い
bsf GPIO, 0 ;LED0を点灯〇
nop
bsf GPIO, 1 ;LED1を点灯〇
しかしポートの負荷が重くてH/Lのレベルが保てていなければ結局誤動作する
LATが使える品種なら
bsf LATA,0
bsf LATA,1
のようにやれば良い
LATが無い品種ではRAMに値を保持しておいてRAMの値を変更してから
ポートに書くとか工夫するしかない >>885
わかりやすい解説ありがとうございます、納得しました
マイコンのクセみたいなものでしょうか、コード書く側が注意しないとダメですね
試しにnop入れてみましたがダメでした、10個nopもダメ
call delay_1secみたいなのはさんでもだめ
GPIO4,5をinputにしてたのですが、これをやめてもダメ
PIC16FからはLATってのがつかえるんですね
そういや乾電池4本のモバイルバッテリ5V駆動です >>886
アセンブラがある程度わかるならコンパイル後に出力されるリストファイルを見てみるといい
dist -> default -> production -> xxx.lst あたりか… >>887
サンクスです.lstファイル発見しましたが、ちょっと厳しいです、アセンブラわかんないし
オブジェクトコードを調べろってことでしょか?
C言語で書いたほうも見てみると一旦アセンブラに変換してあるんですね