初めてのPIC 0x12
レス数が950を超えています。1000を超えると書き込みができなくなります。
PICを触り始めて比較的日が浅いという初心者のためのスレです。
もちろん、日は経っているが自分はまだ初心者という方も大歓迎です。
PIC選びやPICを使った回路設計は誰でも最初は不安なものです。
恥ずかしがらずに何でも尋ねてみましょう。
なお、PIC関係のスレにはもう1つ「PIC専用のスレ」があります。
質問・回答する際は…
必ずPICの型番と開発環境を明記しましょう。
プログラムはレス内に直接書き込まず以下を利用しましょう。
http://codepad.org/
その際心がけることは…
品格に劣る回答者はスルー(相手すると逆効果)
素人玄人などと上から目線の回答者は無視
良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
回答者のアドバイスで後日解決したら結果報告
回答者は初心者に優しく
Atmel買収以降アンチによる荒らしも横行してるので見かけても無視
(特にスレ立て当初はこぞって荒らしに来るのでスルー)
必要なソフトなど(基本無料)
統合開発環境 MPLAB X ttp://www.microchip.com/mplab/mplab-x-ide
コンパイラ(XC8 XC16 XC32) ttp://www.microchip.com/mplab/compilers(高機能版のみ有料)
コード生成プラグイン(MCC) ttp://www.microchip.com/mplab/mplab-code-configurator
マイクロチップ・ライブラリ(MLA) ttp://www.microchip.com/mplab/microchip-libraries-for-applications
必要なハードなど
初心者はPIC16F1以降の型番で始めると無理なく始められます。
最初からPIC32で始めるのもあり。
MCCの利用でハードルはむしろ低いです。
http://akizukidenshi.com/catalog/g/gI-11902/
プログラムの書き込みには書き込み器が必要です。
持っていない場合はPICkit4などを購入しましょう。
なお、eBayやAliExpressで買えるPICkit3の中華クローンも十分な性能が報告されています。
PIC一覧、スペック検索
ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
ttp://www.microchip.com/maps/microcontroller.aspx
過去スレ
0x11 2018/08/05〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1533446166/
0x10 2018/06/29〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1530265723/
0x0F 2018/05/01〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1525183933/
0x0E 2018/02/13〜 ttps://rio2016.5ch.net/test/read.cgi/denki/1518524799/
0x0D 2017/10/25〜 ttp://rio2016.5ch.net/test/read.cgi/denki/1508935254/
0x0C 2017/07/27〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1501157324/
0x0B 2017/05/08〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1494235320/
0x0A 2017/01/04〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1483498857/
0x09 2016/09/07〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1473238791/
0x08 2016/04/30〜 ttp://rio2016.2ch.net/test/read.cgi/denki/1461994030/
0x07 2016/02/05〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1454648249/
0x06 2015/07/18〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1437151298/
0x05 2015/04/07〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1428391368
0x04 2015/01/02〜 ttp://wc2014.2ch.net/test/read.cgi/denki/1420205108
では、質問どうぞ〜っ >>887
1.
>ハードウェアタイマーが満了になったら、ハードウェアが立てるフラグのこと。
データシートでは何て言う名前のフラグですか?
調べるので具体的にお願いします。
2.
あなたの言うフラグをmainで見続けるのと、タイマー割り込みで検知するのとの違いは?
mainで見る方がCPUパワー使いませんか?
3.
この程度の要求速度で、と言ったり(>>877)、多段に関数をコールすると戻って来れなくなる、と言ったり、
話の前提が臨機応変にあなたの都合のいいように変わるのはなぜですか?
3.
PIC16F1827で仮にI2Cを使うとして、タイマー割り込みをそのために温存しておかなければいけない理由は何ですか?
内蔵してないからタイミング用に1つ使うにしてもまだ4つ余る計算ですが。
リモコン流用の赤外線通信にするとしてもベースに使うクロックが1つ余分なだけでまだ3つありますよ。 >>877
>タイマ割り込みでフラグ立ててメインで処理だろ
解は一つではない。
メインは空のループにして、全部タイマー割り込みの中でステートマシンで
やったっていい。 >>887を読んだ感じでは、この人割り込みとかフラグとかを全く理解してないと思う。
>残りのCPUパワーをすべて使えるということ
と書いてるくせにポーリングでフラグを監視するとかおかしなこと言ってる。
それじゃ割り込みの立場が丸つぶれw >>890
解は一つではない、に補足。
タイミングが必要な所はフリーランタイマーの適当なビットをポーリングするようにして、
割り込みを全く使わず、全部メインのループ内で処理しても良い。
# 6 pin 米粒 PIC なんぞは割り込み機能がないのでこうやるしかないぞ 誰も自分の言ってるやり方を唯一の解決方法だと言ってない
delayなんか使う思考してちゃ、この先必ず行き詰るから
割り込みくらいさっさと覚えとけってことだろ >>888
1.なんでそんなことまで教えにゃならん
PICの入門盆やらデータシートやらWebやら、タイマーについて書かれてるのを調べろ
2.状況次第。後々に処理追加したくなったときにやりやすくするだけ。
リソースを他の処理が影響なく使えるか影響範囲の少ないようなやりたい方法でやればよい。
別にCPUでグルグルまわってWaitかけようがどうしようが好きにすれば良い
3.論点や趣旨が全く違うことを話してるのに、お前が都合のいいように取っているだけ。
4.そう思ったら使わなければいいし、使いたかったら使えばいいんじゃね?
I2Cともタイマーいくつとも書いた覚えはないし一般論としてハードウェアリソースの振り分けを書いているだけだけど。 >>887
普通の使い方で8段のスタックを使い切る事はまず無いが、割り込みの中で関数呼ぶと変数が化ける可能性があるからな。 >>891
ポーリングといっても、待ち合わせするんじゃなくて、
処理ループの中で、フラグ立ったら、分岐する手はよく使うよ、
複数の割り込み要因が使う状況で、多段割込み、優先順位とか細かく設定できるなら
シンプルな構造になるけど、8bitのpicだしね。
ただ、mainが空ループで済むのなら、同じことだから、好きなほうでやればいいと思う。
>>892
どうせ安いんだから、アマは、よりリッチなPIC使って、mcc使ってサクっと作る流れもあるけど、
基本の泥臭い手法だと、6pinのpic使えたりするんだよね。
まぁ、一般論として、割込みは、リソース競合とか、デバッグが面倒になる傾向があるから、
慎重になる。
それでも、今回のような、timerによる定期割込みは、安全な手法なんで、どっちでもいいかな。 >フラグをmainで見続ける
もうね、、、delay的思考まんま
何かの入力待ちだけのためにループ回して他の処理止めるとか
ほんと世の中に出回ってる糞な入門書のせい >>894
1.調べろ
2.好きにすれば良い
3.論点や趣旨が全く違うことを話してる
4.そう思ったら使わなければいい
素晴らしい、これ以上はない見事な回答だ。
そもそも>>888は質問じゃなくてあんたの無知を揶揄してるんだと思うが、
それすら気付かず立ち位置が回答者側なのがあっぱれだわ。 >>897
delayとフラグ分岐待ちの違いがわからないということは状態遷移のwaitedStateやsleepとの違いもわからないということかな? >>898
またいつものここのパターンですね。ガンバってね >>881
アドバイスしたいのは山々だけど、MCCどっぷりでデータシート見るのも面倒な体たらくなので。
1つだけ言うと、これ
http://codepad.org/IaxrCenU
は明らかに退化だね、delayに頼りすぎ。
>>825の2つを組み合わせるのが一番シンプルになると思う。
あと、あなたは出現が不定期で、空くときは1週間も空くし、
せっかくアドバイスしてもスルーの時があるし、こっちも追いきれん。
そのせいでだいぶ損してると思う。 なあ、屁理屈はいいから具体的なコードで示そうよ。
でも>>769は勘弁してな。 >>903
お前みたいに空へ向かって吠えるだけの奴が登場すると悪くなるよな。 >>903
初心者スレとは思えないよねw
>なんでそんなことまで教えにゃならん
>調べろ
>糞な入門書のせい
>無知を揶揄してる
>違いもわからないということかな?
>明らかに退化だね >>897
全く同意。
入門書は読んだことないから知らんけど、染まらずに済んでよかったw
>>899
完全な的外れ、割り込みの意義を学んでから出直せ。
>>905
ほとんどは回答者面の連中同士の言い合いだからいいんじゃね?
http://codepad.org/IaxrCenU
が退化なのは事実で、良い指摘だと思う。 >>901
まあごもっともだけど本を見ながらやってる全くの初心者なんだからスルーというより理解出来てないんじゃね? >>906
イベントドリブンの意味知らない奴に言われてもな
割り込みってのは、入力に対する高速な応答が必要な場合の処理で、
それ以外の何者でもない
電車のLEDの点滅タイミングの同期が内部タイマーの高速応答が必要な処理であれば
割り込み処理内で行うべきだろう >>908
初心者が、割込み不用意に使うと、割込み内で、msec単位のdelay使ったりしますからね。
今回のお題では、副作用はないけど。。。
https://www.uquest.co.jp/embedded/learning/lecture02.html >>908
タイマー割り込みは高速な応答が必要なわけでもないんじゃね? >>910
タイマー割り込みは、タイムアップやカウントアップなどのタイマー要因に対する高速な応答のためだと思います
それが必要であれば割り込み内で処理しないと駄目じゃないかな
クロックが数MHzに対して、秒オーダーの動作ならタイマー要因をCPUでms毎に監視してても問題ないけど、
そういう目的でのシステムタイマーみたいなのがあったほうが何かと簡単になるよね
元クロックやら必要な時間間隔やらで16bitなのか8Bitタイマなのか、
他にPWMや通信でどういうタイマをどう使うので、選択や使い方がが変わるんだよ>元ネタ質問者さん >>ID:jKniwTF0
言いたいことが良くわからんな。
Lチカにタイマー割り込みは使うなってこと?
別にええやん、他に使わんのだし…。
PWMや通信するならよけいLチカなんて単純作業は割り込み任せで放置したいでしょ。
しかも、現状1827では通信しようがPWMしようがまだタイマーは余る。
あんたの論点が見えないのよ。 まさか、タイマーが5つもあるPICなんて使ったこともないとか?
PIC32なんか7つもあるんだぜ、しかも16bitよ。 ああ、そういうことか。
俺も、コイツが何を必死に言い張ってんのかよく分からんかったけど、
ジジイが、近頃の若者はぜいたくじゃ、と騒いでるってわけね。
納得した。 最初は割り込みの意味さえろくに分かっていなかったジジイが、
少しは学習したと見えるが、かといっていまさら後へは引けず、
割り込みぜいたく論にすがって立ち位置をキープしようと無駄な努力中。
イベントドリブンには笑ったけどなw いや
じじいこそ黎明期のZ80理解してるはずだから
割り込みテクニックもイベントドリブン手法もわかるはずだ
>>ID:jKniwTF0 からはその辺の理解度がまったく感じられない >>917
任せっちゃあ任せだけど、
音を鳴らしたり明るさを変えたりするんだから、
ハザードの点滅よりは手数が必要という意味です。 >>916
>じじいこそ黎明期のZ80理解してるはずだから
そんな昔から意識の高いジジイだったらここで無知をさらさないよ。
ジジイに高望みしすぎw >>919
だからそんなじじいではない、ただのアホだろうっつってんじゃんw 上の方にもあったけどmainのwhileの中でゴリゴリやるのが趣味ということなんだろうなあ
俺なんかあれが空だとすごく気分がいいから今回のお題ならスイッチ押下も外部割込みとして処理してえ
それはそれで本末転倒だがw >>873
音データには元ネタがありますの?
そのクリック音が欲しいです。 >>920
それはAVRの工作員だよ
脱税で逮捕された「青汁王子」
「広告宣伝費は同業他社について批判的な内容をネットに書き込むよう、
別の会社に依頼して支払ったもので、架空の経費ではない」という趣旨の説明をしていたということです。
やっぱ、AVRの工作員みたいなこと仕事にしてる人がいるんだな >>921
そのやり方が正解だと思う。
main()では、LEDのon/offを変数に書くだけで、
タイマー割り込み中で、
・スイッチのチャタリングフィルタ
・mainからのLEDon/off変数の反映
・on/off時間の管理
・状態遷移の管理
をLEDの数だけ行えば良い >>924
状態遷移って何ですか?
ON/OFFしかないのに何が遷移するんですか?
よくわからないのでコードで教えてください、XC8でお願いします。 >>925
16F1前提なんだからLATレジスタに保存されるだろ。
わざわざ変数使ってON/OFFを書く意味ねえよ。
おれもあんたのコードが見てみたいわ。 ON/OFFも立派な状態遷移。
マトリックス表だけ考えてるようなら、顔洗って出直してきて。 【企業】ジャパンディスプレイ(JDI)の筆頭株主が中国台湾連合に、中国政府の補助金で有機EL工場を浙江省に建設へ★2
https://asahi.5ch.net/test/read.cgi/newsplus/1549900814/249
249 名前:名無しさん@1周年[sage] 投稿日:2019/02/14(木) 08:31:09.88 ID:ESjpYfhA0
>>248
Appleのエンジニア「よく日本は素晴らしい技術を持っていると言われますが、ハッキリ事実を言った方が良いと思います。
知識も技術力も現在取り組んでいることも、日本のほうがレベルは低いと思います。
その理由は単純です。
ソニーやパナソニックが元気だったころ、量産体制を作り上げるために、それまで社内で設計していたのを、台湾や中国といった海外に委託しました。
日本は仕様書を書くぐらいしかしなくなり、重要な設計の部分は外国に流れたわけです。
いま日本人の若手技術者は「ここになぜコンデンサーが必要なのか」を理解せずに、
「このコンデンサーを外してはいけない」ということだけを知っているのです。
しかし、台湾や中国の技術者は「なぜ必要なのか」をきちんと理解しています。
設計する技術力は、いま日本ではなく、台湾や中国にあるのです。
ハードを設計したいなら、日本に機会はありません。台湾など技術の高いところでキャリアを積んでいく必要があります。 」 ホントにPICユーザーは何の進歩も無いな。
たかがモデルカーのLED点灯にどれだけ時間が掛かるんだよ。
プロなら「使えない奴」というレッテルを貼られてしまうぞ。
いつも通りにケンカは始めるし、困ると「AVRの工作員のしわざ」と叫んで逃げるし、
これはもう5歳児に説教して貰う必要があるな。
「ボーッと生きてんじゃねーよ!!」w 眺めてる人間は経験豊富かもしれないけどココに質問に来る人間は全く畑違いのやつかもしれないし全くの素人童貞だろうから一を聞いて十を知れといったところで無理な話
教えたい人は教えてイヤな人は見なきゃいいだけ 質問者がレスに対してなにも調べずにもっと詳しく教えろというのがダメ。
少なくと調べた結果と見解を述べて次の質問に進まないと。
あとは、定番の群盲象を評すだな。最たるその一見解が
> 割り込みってのは、入力に対する高速な応答が必要な場合の処理で、
> それ以外の何者でもない 厳しいなあw
みんなPICを何きっかけで初めたの?
仕事?趣味?学校?
初心者の頃苦労しなかった?
他社ユーザーが増えて来てるような状況なんだからせっかくの初心者に厳しくせずに助けてあげようよ >>928
で、質問に対する回答はいついただけます?
ググれば出てくるただの用語はどうでもいいんですが、
ON/OFFしかないのに何が遷移するのか
わざわざ変数使ってON/OFFを書く意味
については私もぜひ知りたいです。
今のところ肝心な質問になると全部お茶を濁してますよね。 >>932
あなたと違って質問者の理解度に歩調を合わせようとしてるからでしょ。
ほらこれでやれ、で済ますなら5分で済む。
何ならあんたがプロジェクトをPackageしてどっかにアップしてやればいいじゃん。
>>936
それ。
2盲人くらいだと思うけど、お笑いのネタとして面白いにしても初心者は混乱するよね。
その一見解なんかは本気で吹いたわw
>>937
良く見てみ、初心者に厳しくしてないよ。
無知なエセ回答者が叩かれてるだけ。
そいつのクソレスを見てしまう初心者のためでもある。 >>939
ON/OFF でも状態遷移だろ。
C で書くなら変数を持つのが普通。
特定のハードに特化ならポートだろうがステータスビットだろうが好きにすればいい。 >>939
ほんとに無知なのによくそういう書き方ができるもんだね。スルーしておこうかと思ったけど書いておくね。
出力状態として、LEDがONとOFFがある場合はね
遷移状態は
ON中状態
OFF中状態
ON->OFF変化中状態
OFF->ON変化中状態
の4状態があるの
でないと変化中に入力があると対応できないでしょう?
そういう途中状態をすべて想定して、入力変化の動きを規定しないと、クロスシーケンスが発生したりするの
そんな状態は考えていません考慮してませーんポカーン、というのと、その状態中のこれとこれのイベントは無視します、
というのでは天と地ほどの違いがあるのです
わかった? ポートにスタティックにぶら下がったLEDのONOFFだけならグリッチくらいですむだろうけど
外部から通信でイメージデータ送ってこられて、多ビットのLEDドライバを多段にしてダイナミックに使ったりする場合は、
ちゃんとそれぞれの状態を規定しないと、おかしなバグを作りこむことになりますよ >>941
何が基準の「普通」だか知りませんが、ポートのラッチ・レジスタが持ってるものを
わざわざmain内の変数でも持たせる意味を聞いてます。
両方で持ってても無意味ですよね。
流れ的にPIC16F1827の話してます。
>>942
ああ、予想通りでした。
書いてる内容もあなたの品性も。
>ON->OFF変化中状態
>OFF->ON変化中状態
は、ちょっとウケましたw。
ありがとう。 >>943
>ポートにスタティックにぶら下がったLEDのONOFFだけ
なんですよ、まさにね。
勝手に話膨らませて初心者惑わしてまで自己顕示欲見たしたいですか?
スレの流れ見てますか? >外部から通信でイメージデータ送ってこられて、多ビットのLEDドライバを多段にしてダイナミックに使ったりする場合は、
ほらほら、後出し盛り盛り真骨頂ですよ。
初心者スレなんてことはお構いなし、流れもお構いなしで、
自分の語りたいことだけを大声で語り続けて自己満足に終始する品性の無い老害。 >>942
初心者なんでよくわからないんですが
ON->OFF変化中状態
OFF->ON変化中状態
の変化中というのはどういう状態ですか?
LEDがONからOFFへと変化していく過程をどうプログラムで検知するんですか?
電子レベルの挙動の検知ですか? >>948
プログラムで検知するんじゃなくてプログラムの状態なの
君の頭の中のLEDがONにしたら点灯、OFFにしたら消灯というのしか考えられないだけ
ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
別に、あなたがそういうプログラムでいいと思っているあいだはそれでいいと思いますよ
推測も観測もできない事象を認識することはできないし、
今後の拡張も展開も初期化も複数化も考えないうちはそれでいいでしょ >>944
ラッチレジスタから読んできた値はどうするの?
変数に入れずに反転して書き戻せるかな?
まあ、反転するだけなら xor すればいいことだけど。 >>949
で、コードはどうした?
また、口先だけかw
>>950
>反転するだけなら xor すればいいことだけど。
ご自分で気づかれたようでなによりです。 >>951
ごめんねー。煽っても出ないよー。
ハード仕様もソフト仕様もわからないのにサンプルコード書いて提出するほど馬鹿じゃないんだ。
初心者とか仕事じゃないとか新卒プログラマはそれでいいと思うからがんばって。 >>949
こいつ、たかがLチカなのに妄想がどんどん現実離れして行って面白いね。
どんなコード書くのか、はたまた書けずにトンズラなのか、楽しみ。 >>952
>ハード仕様もソフト仕様もわからないのに
>初心者とか仕事じゃないとか新卒プログラマは
ね、論理的に追い詰めて行くと最後は決まってこれ。
自分がレスしてる場所がどこなのかさえ考慮できずにただわめいてだけ。
書いてて自分でみじめじゃないのか、これもう品性のなせる業だね。 >>949
>ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
これ興味あります。
実際にLEDの例で数値を挙げて時間の差を教えてください。
ぜひ、よろしくお願いします。 以前は何で初心者向けのスレでやるのだろうと思っていたが
最近初心者だからこそこういう話題が盛り上がるんだってわかってきた気がする >>ID:4rx6qwE2
遷移状態は
ON中状態
OFF中状態
ON->OFF変化中状態
OFF->ON変化中状態
の4状態があるの
ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
んー、ONの指令を出しても実際にLEDが光り始めるまでには時間があるので、
その間に何か起こった時のために変化中という遷移状態を考慮しなければいけないってことですかね。
模型のLチカの場合、いったい何が起こるんですかね。
ナノ秒レベルのスピードでスイッチを再度押下するとかですかね。 >>935
帰宅してから始めて3時間ほど掛かってしまったが、tiny2313でプロトタイプを作った。
これから色々とブラッシュアップしていけば、動作はそれなりの見栄えになると思う。
SW8個ごとにタスクを割り当てて、タイマ0のCTCで1mSごとにラウンドロビンで切り替え、
ソフトディスパッチは無し。
リストはディスパッチャと各タスク(ただしタスク4〜8は未完)で、
セットアップ部分は省略した。
;===== timer0_CompA:1mS for dispatch ==
; execute time typ. 2.5uS at 8MHz system clock
IRQ13:
; save YH,ZL,ZH & SREG to currrent stack
push YH
push ZL
push ZH
in ZL,SREG
push ZL
;
; exchange SP with next task
in ZL,SPL ;save current SPL to buffer
st X+,ZL
andi XL,7 ;pointer limited 0-7
ld ZL,X ;load next SPL from buffer
out SPL,ZL
;
; restore YH,ZL,ZH & SREG from next stack
pop ZL
out SREG,ZL
pop ZH
pop ZL
pop YH
reti
; ;===== main loop ======================
;SW1を押すとLED1が点灯〜離すと消灯
Task1:
sbis PinB,_SW1 ;SW ON ?
cbi PortB,_LED1 ;Yes, then LED ON
sbic PinB,_SW1 ;SW OFF ?
sbi PortB,_LED1 ;Yes, then LED OFF
rjmp Task1
;
;SW2を押すとLED2が点灯〜(離す)〜押すと消灯〜(離す)
Task2:
sbic PinB,_SW2 ;SW OFF ?
rjmp Task2 ;Yes, then wait
sbi PinB,_LED2 ;No, then toggle ON/OFF
rcall Delay_05S ;delay 0.5Sec for chatter
rjmp Task2
;
;SW3を押すとLED3点滅〜(離す)〜押すと消灯〜(離す)
Task3:
sbic PinB,_SW3
rjmp Task3
Task31:
sbi PinB,_LED3
rcall Delay_05S
sbic PinB,_SW3
rjmp Task31
sbi PortB,_LED3
rcall Delay_05S
rjmp Task3
;
;ハザードやじわっと点灯などこれから
Task4:
rjmp Task4
;
Task5:
rjmp Task5
;
Task6:
rjmp Task6
;
Task7:
rjmp Task7
;
Task8:
rjmp Task8
;
;===== delay by internal_CR_OSC 8MHz
Delay_05S: ;delay 0.5Sec
ldi YH,5
;
Delay_01S: ;delay 0.1Sec
ldi ZL,Low(25000)
ldi ZH,High(25000)
Delay_01S1:
sbiw ZL,1
brne Delay_01S1
dec YH
brne Delay_01S
ret
(リスト直書きスマヌ、疲れたからもう寝る) 初心者はまず動くコードが欲しいんだよね、それだけ
目の前にぶら下がってるやりたいことができればよい
コードのためには設計も品質も関係なし、初心者にはそんなものいらないと思ってるんだよなぁ
設計をやってないのにコードなんてかけるはずもないのに
仕様もないのに設計が出来るはずもないのに
その先に進むかどうかが初心者からの脱出だと思うんだけど、一生初心者やっててください
ブラック下請け派遣会社の営業くらいにはなれるかもね >>961
妄想はいいから>>956の質問に答えてやれよ。 >>960
>>873みたいに音も鳴らさなきゃダメじゃん。 >>944
> わざわざmain内の変数でも持たせる意味を聞いてます。
押しボタンスイッチを押していたら LED 点灯、離していたら LED 消灯
こういう処理なら変数[*1]を待たせて状態を覚えておく必要がない。
しかし、押しボタンスイッチ A を押して離したら LED A 点灯、もう一度押して離したら離していたら LED A 消灯
Iさらに、押しボタンスイッチ B を押して離したら LED B 点滅、もう一度押して離したら離していたら LED B 消灯
こんなことをやろうとすると、どのスイッチも離している状態で、どの LED を今点灯、点滅、消灯させているのか
を内部的に覚えておかないとやりきれなくなる[*2]。その内部的に覚えておくのが変数。
[*1]:変数:一般的には General Purpose Registers
[*2:]状態の数だけループを作って飛びまくれば変数を使わなくても出来ないわけではなくが、条件が増えると
指数的に複雑なコードになり現実的でなくなってしまうぞ。 >>962
使うLEDのccabほか遅延時間書いてあるデータシートと使用する電源と応答と配線インピーダンスとコンダクタンス遅延と
そのLED使ったPICの型式と電圧とコア温度とクロックと、周囲温度条件、PICの電源ピンの電源電流とか
負荷変動による電流変動とかポートの応答速度と配線のインピダンスとコンダクタンス
あたり書いてくだされば、目安はお出しできると思います。 >>962
普通にバス設計やるときにやってますし、医療用の残光測定LEDの応答装置とかもやってますから、
こちらの提示した材料を出していただければマジにLEDの遅延状態くらいは計算で出せますよ
なんでしたら光伝送と位相も測定できますが、そちらは会社の機材だけで出来ないので有料で。
念のために、あなたのポートのONOFF時の波形の観測精度とLEDの光源追従波形の観測装置の概要と精度も
教えてくださいね。せっかく計算したものが観測立証できないと残念なので >>964
ポートレジスタが保持してるでしょON/OFFを
変数にもわざわざもう一つ覚えさせておく意味ある? >>966
あなたが>>949で
>ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
と書かれている根拠となった条件で例示していただけば結構です。
当然データに基づいてお書きだと思いますので、よろしくお願いします。 >>969
それ、
何かわざわざ変数を使うこだわりがあるの?
って返答されて水掛け論になるだけなのにわかんないの、馬鹿なの? それらの遅延だしたところで、仕様に影響ないとは思いますが、
影響がないかあるかを調べて、動作に反映させる処理を作るのが正しいプログラマかな?
スイッチを押してスイッチ端の論理が真になってから何ns後にLEDが点灯開始、
点灯開始後に何psで光量が規定の何%とか仕様決めてるんでしょ?
ここまで人に要求するからには仕様決めてるんですよね?
自分なら、LEDの最低点灯消灯応答時間を1ms程度に規定してそれ以下なので問題なしとしますが。 >>970
いやいや、例えばさ、信号器作るとしてさ、
緑のポートみて、
点いてなかったら、黄色見て、
それも点いてなかったら、赤見て・・・
ってやるんだよね、君のやり方だと。 >>968
一般的なLEDで、25℃30mAのときに駆動立ち上がり時間が50ns以下の遮断時間(応答性-3dBまで)のときの
応答速度は20ns程度ですね
PICのF1だと20MHzくらいで、電流30mAで、他のポートに電流流してない状態でのポートのOFF-ONの速度は
どれくらいだったかな、0.5uSくらいだと思ったのですが。
PICで、LEDをONOFFを最速で点滅させたときには、点灯が点灯と認識されない消灯しきれない状態に
なると思いますので、確実に点灯消灯させるためには数u待ちを入れたほうがいいですよ
LED一個だけならいいですが、別ポートのLEDを同時に点灯させたい場合、その同時が何us以内として
いるかはわかりませんが、最低でも数クロック分のソフトが動くわけですから、複数のLEDを同時駆動
するときにはちょっとだけは気をつけましょうね高速で移動するLED群などがあるとちらつきが肉眼で
見えてしまう可能性もありえます。 >>972
でも、緑つけて緑消して黄色漬けて黄色消して、ってやったときに
ハイスピードカメラで見ると、緑と黄色が同時についていますが?とかあってね
実際の信号で電球の昔は普通にありえて大問題
PLCみたいにウェイト入れながらラダーでドロドロまわして、応答が遅い電球だったりするといろいろとね
電球は消えてても消してないしな まぁ、人間がみてついてればいい、
いくつかのLEDを点滅消灯すると、ものによって消灯する時間が少し間延びするとか、
まぁそのあたりはどうでもいいです、という程度だろうから、いいんじゃね
どうせ小学生程度が作るプラレールに毛が生えた程度のジオラマだろ
酒がまわって眠くなってきたので寝るわ、おやすみー >>967
LATxレジスタがあれば、不要だと思うけど、少し昔のPICや、他のMCUも使っているプログラマであれば、
作法として、I/Oもしくは、それに準ずるレジスタとは別に、メモリ(変数)領域で on/offを管理しておくのが常套手段。
ただ、メモリ不足、性能の問題で、最適化した場合には、あなたの納得のいくようなプログラムになるかもしれませんね。
いろんな、マイコンを使う人は、多少冗長でも、同様のプログラムを書きたいので、無駄に見えるかもしれないです。
それは、経験に基づく習慣だったりするので、今回のような条件では場違いかもしれないです。 ID:4rx6qwE2
>ハイスピードカメラで見ると、
>どうせ小学生程度が作るプラレールに毛が生えた程度のジオラマだろ
ホラ話吹き倒した挙句、問い詰められて窮すると、人のやってること小馬鹿にして終了。
品性の欠片もないみじめなヤツ。 不要だと思うけど
作法として
常套手段
多少冗長でも
書きたいので
無駄に見えるかも
経験に基づく習慣
場違いかもしれない
初心者スレでそれを振りかざして押し付ける連中
>>973に言わせると宗教なんだそうだ、どっちがだよ
自分の無知、不勉強を棚に上げて、実にくだらん 老害さんはタイマーが1つしかないような化石PICの頃のカビが生えた知識で上から語る。
MMCだのPIC32だの出てきたひにゃ避けて通ってそっと目を閉じてる感さえある。
質問者がPIC16F1827だ言うとんのにデータシートすら読まずに昔のつもりで回答してる。
ま、俺の勝手な想像だけどね。 >>967
LEDに限らず、外部機器のon/offは、慎重にやるんですよ。
LATに直接書いてももちろんon/offできますが、
その出力をon/off操作する箇所が、プログラム全体で見て複数箇所出てくることはよくあります。
その複数箇所で、それぞれが好き勝手に LAT...=1 とか LAT...=0 とかやると、
いったんonし、プログラムの別の箇所ですぐにoffになったり、
LEDならチラチラするだけで済みますが、シリンダーバルブとかの駆動だと
最悪、人が死んだりするんです。
そこで、お利口な方法として、
On/Offするのは、プログラム一巡のうちの、特定の1カ所だけで出力するようにします。
プログラム各箇所のon/offの要求は、変数に書くようにして、
みんなで書き込んだ結果を、考えて最終的にポート出力するんです。
また、LEDのon/offの状態遷移とは何のことか・・・と言ってる人がいますが、
文章を良く読みましょう。2値=on/offで出力する限りLEDに中間はありません。
「on→offの変化途中」というのは、最終的な判断としてoffにするのだけど、
offするまでに条件を取り込むような期間や状態のことです。
on中 → offへの移行中 → off中 → onへの移行中 →... という
管理上の状態変化のことを言っているのです。
コードを書け書けと言っている人がいますが、たぶん書かないと思いますよ。
書け書けと言っている人は、知らないから手本を見せてくれという観点ではなく、
書ける門なら書いてみろ。こてんぱんにしてやる、というのが見え見えです。
あなたが重箱の隅をつつくように質問攻めにすることは容易に想像できますし、
書くのにも時間が掛かる出、めんどくさいのです。
あなたは、答えはわかっているくせに、知らないふりをして聞く。意地が悪いです。 誤記訂正
>書ける門なら書いてみろ。こてんぱんにしてやる、というのが見え見えです。
書けるもんなら
>書くのにも時間が掛かる出、めんどくさいのです。
書くのにも時間が掛かかるし、めんどくさいのです。 連騰すみません
>>959
難しい言葉や用語、横文字を並べていますが、
「おれば詳しいんだぞ、スゴイだろ」って言いたいんですよね?
でもね、本当にスゴイ人は、そんな ひけらかすようなことは、しません。
誰も頼んでいないのにアセンブリ言語で書いて、CPUも違うし。
間違いがあっても 誰もわかんねーだろ、と思って、得意げに書いているかもしれませんが、
いくつか間違っているようです。注意しましょう。
周囲から スゴイねって言われる人は、間違いなく もっと謙虚なんですよ。 >>967
ポートレジスタを変数とみなせるだけの処理だけならそれでも良い。
同じ LED をウィンカーとして点滅させているのかハザードとして点滅
しているのか、ドアロック解除で点滅させたのか、はたまたソフトウェ
ア PWM で明るさを調整している最中なのかなど、ポートレジスタに
のみ覚えさせておくとだんだん厄介になるもんだ。場合によっては
条件が足りなくなって破綻する場合もある。
なので、「今、こうしたい」という状態を変数に作っておくと処理が分か
り易くなる場合が多い。ポートレジスタだけでいこじになってソフトを
作ればある程度までは作れるとは思う。 マイコン固定で機能拡張なんて考えない
変数使うのはやだ
ってなら勝手にやればいいんじゃん。
否定されても我が道を進め。
ただ、後から助けを呼ぶなよ。 レス数が950を超えています。1000を超えると書き込みができなくなります。