X



トップページ電気・電子
1002コメント428KB
初めてのPIC 0x12
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001774ワット発電中さん
垢版 |
2018/09/19(水) 16:56:18.51ID:F4lNkPz3
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

では、質問どうぞ〜っ
0874774ワット発電中さん
垢版 |
2019/02/12(火) 12:49:18.52ID:6KSf2Bb1
>>872
雑なアドバイスだが、while ループの中で、
スイッチの操作により、現在の状態を表す変数の値のみを変更する。
現在の状態を表す変数の値によってLED の点灯、消灯、点滅の処理をする。
0875774ワット発電中さん
垢版 |
2019/02/12(火) 12:59:59.87ID:Hv1JKHTB
ふとトランジスタアレイ使った方が良いんじゃね?と思った
0876774ワット発電中さん
垢版 |
2019/02/12(火) 18:02:30.18ID:gt+yUVyZ
>>872
>>859>>873を見ればわかるけど、点滅中でも音が鳴っている。
__delay_msを使わずに割り込みでやらないとそうは出来ない。
点滅の処理を関数に書き、割り込みでその関数を呼ぶようにする。
点滅を止めるときは割り込みを禁止にすれば止まる。
他でよほど重い処理をしない限り勝手に点滅していてくれる。
参考にしたサイトが割り込みを生かし切ってないサンプルだから仕方ないけどね。
0877774ワット発電中さん
垢版 |
2019/02/12(火) 19:29:03.70ID:9eZViAbj
>>876
えー?
割り込みから関数呼ぶの?この程度の要求速度で?
しかもPIC8だよね?あなたほんとにPICで割り込み使ったことあるの?
タイマ割り込みでフラグ立ててメインで処理だろ
0878模型にLED
垢版 |
2019/02/12(火) 19:42:21.07ID:Km5c7o+l
>>874
>>876
>>877
ありがとう
でも初心者なので具体的に何をどうすればいいのかちょっと分らないです

>>875
トランジスタの省スペースになるけど点滅回路にはならない?
0879876
垢版 |
2019/02/12(火) 19:56:50.77ID:vVOVwPuP
>>878
>>840にコードがあるから参考に、PICは違うけど考え方は同じ。
>>874>>877の言うことは私にもよくわからない。
>>875は基板作る段階になったら考えればいいこと。
0880774ワット発電中さん
垢版 |
2019/02/12(火) 20:24:13.51ID:TM5VeqME
>>877
それ、僕もその程度の処理で割込み使うかな〜と思っていた。
deley関数使わずに、timerのオーバーフローフラグで、タイミングを取るのは
よくやるよ。
割込みは、通信処理や、LCDの転送処理などにとっておく。
もちろん、Lチカでも、正確なパルス幅で点灯させたいときは、割込み使う。
0881模型にLED
垢版 |
2019/02/12(火) 20:36:47.54ID:Km5c7o+l
>>879
うーん出来るかな?
トライしてみます
0882774ワット発電中さん
垢版 |
2019/02/12(火) 20:51:39.46ID:HHHE0VDv
割り込みは基本だろ
なにも使わなくたって変数カウントアップさせとけ
その変数のbit取り出すだけで何種類もの矩形波が出来る

1024Hz、512Hz、256Hz、128Hz・・・4Hz、2Hzとかだと
2Hzのbitとon信号とandするだけで点滅信号に早変わりだ
サーボの左右、中立位置だって簡単
0883774ワット発電中さん
垢版 |
2019/02/12(火) 21:01:57.64ID:vVOVwPuP
>>880
いろいろよくわからないです。

>timerのオーバーフローフラグで、タイミングを取るのはよくやる
「timerのオーバーフローフラグ」って具体的に何のことで、
実際にはどういう処理をするんですか?

>割込みは、通信処理や、LCDの転送処理などにとっておく。
模型の電飾で通信処理やLCDですか、またずいぶん盛りましたね。
にしても、5つもあるタイマーを使わずに温存する理由にはなってないですね。

>Lチカでも、正確なパルス幅で点灯させたいときは、割込み使う。
割り込み使わなくても不正確になんて出来ませんよね。
これもどういう意味か具体的に教えてください。
0885774ワット発電中さん
垢版 |
2019/02/12(火) 21:57:22.08ID:mjRvREox
>>884
ありうる。
ここで割り込みの話が出たとたんにあちらでもやり出したしw
0886774ワット発電中さん
垢版 |
2019/02/12(火) 22:06:26.76ID:mPmoDWqh
割込は非同期入力に使うことが多いなぁ
キー入力とかインプットキャプチャとか
0887774ワット発電中さん
垢版 |
2019/02/12(火) 22:20:22.67ID:9eZViAbj
>>883
ハードウェアタイマーが満了になったら、ハードウェアが立てるフラグのこと。
そのフラグを見て、例えば1msが100回で0.5sたったら、LEDを点灯消灯するとか、
mainのif分で作る。
その間はLEDは触らない、というようにすれば、残りのCPUパワーをすべて使えるということ

ハードウェアタイマーのフラグでなく、ハードウェタイマーの割り込み処理でソフトで変数を1にして
戻ってきても同じ事

PICの割り込み処理内で多段に関数をコールするとハードウェアの都合で戻って来れなくなる場合もあるので、
不用意に呼ばないほうが良い。

模型の電飾で通信処理は普通に使う。まぁ使うときになるまで考えなくても良い
通信処理と言っても232cなどだけではない。i2cから赤外線までいろいろ
0888774ワット発電中さん
垢版 |
2019/02/12(火) 22:51:20.75ID:mjRvREox
>>887
1.
>ハードウェアタイマーが満了になったら、ハードウェアが立てるフラグのこと。
データシートでは何て言う名前のフラグですか?
調べるので具体的にお願いします。

2.
あなたの言うフラグをmainで見続けるのと、タイマー割り込みで検知するのとの違いは?
mainで見る方がCPUパワー使いませんか?

3.
この程度の要求速度で、と言ったり(>>877)、多段に関数をコールすると戻って来れなくなる、と言ったり、
話の前提が臨機応変にあなたの都合のいいように変わるのはなぜですか?

3.
PIC16F1827で仮にI2Cを使うとして、タイマー割り込みをそのために温存しておかなければいけない理由は何ですか?
内蔵してないからタイミング用に1つ使うにしてもまだ4つ余る計算ですが。
リモコン流用の赤外線通信にするとしてもベースに使うクロックが1つ余分なだけでまだ3つありますよ。
0890774ワット発電中さん
垢版 |
2019/02/13(水) 02:00:35.53ID:VQ4jYiwm
>>877
>タイマ割り込みでフラグ立ててメインで処理だろ

解は一つではない。
メインは空のループにして、全部タイマー割り込みの中でステートマシンで
やったっていい。
0891774ワット発電中さん
垢版 |
2019/02/13(水) 02:18:11.54ID:UY/02QiW
>>887を読んだ感じでは、この人割り込みとかフラグとかを全く理解してないと思う。
>残りのCPUパワーをすべて使えるということ
と書いてるくせにポーリングでフラグを監視するとかおかしなこと言ってる。
それじゃ割り込みの立場が丸つぶれw
0892774ワット発電中さん
垢版 |
2019/02/13(水) 04:08:15.97ID:jZ78Ef0t
>>890
解は一つではない、に補足。
タイミングが必要な所はフリーランタイマーの適当なビットをポーリングするようにして、
割り込みを全く使わず、全部メインのループ内で処理しても良い。
# 6 pin 米粒 PIC なんぞは割り込み機能がないのでこうやるしかないぞ
0893774ワット発電中さん
垢版 |
2019/02/13(水) 07:27:24.27ID:0AYsq5TP
誰も自分の言ってるやり方を唯一の解決方法だと言ってない
delayなんか使う思考してちゃ、この先必ず行き詰るから
割り込みくらいさっさと覚えとけってことだろ
0894774ワット発電中さん
垢版 |
2019/02/13(水) 08:47:50.11ID:jKniwTF0
>>888
1.なんでそんなことまで教えにゃならん
PICの入門盆やらデータシートやらWebやら、タイマーについて書かれてるのを調べろ

2.状況次第。後々に処理追加したくなったときにやりやすくするだけ。
リソースを他の処理が影響なく使えるか影響範囲の少ないようなやりたい方法でやればよい。
別にCPUでグルグルまわってWaitかけようがどうしようが好きにすれば良い

3.論点や趣旨が全く違うことを話してるのに、お前が都合のいいように取っているだけ。

4.そう思ったら使わなければいいし、使いたかったら使えばいいんじゃね?
I2Cともタイマーいくつとも書いた覚えはないし一般論としてハードウェアリソースの振り分けを書いているだけだけど。
0895774ワット発電中さん
垢版 |
2019/02/13(水) 09:43:38.00ID:YishoMEr
>>887
普通の使い方で8段のスタックを使い切る事はまず無いが、割り込みの中で関数呼ぶと変数が化ける可能性があるからな。
0896774ワット発電中さん
垢版 |
2019/02/13(水) 10:02:57.14ID:KUYGa97G
>>891
ポーリングといっても、待ち合わせするんじゃなくて、
処理ループの中で、フラグ立ったら、分岐する手はよく使うよ、
複数の割り込み要因が使う状況で、多段割込み、優先順位とか細かく設定できるなら
シンプルな構造になるけど、8bitのpicだしね。
ただ、mainが空ループで済むのなら、同じことだから、好きなほうでやればいいと思う。

>>892
どうせ安いんだから、アマは、よりリッチなPIC使って、mcc使ってサクっと作る流れもあるけど、
基本の泥臭い手法だと、6pinのpic使えたりするんだよね。

まぁ、一般論として、割込みは、リソース競合とか、デバッグが面倒になる傾向があるから、
慎重になる。

それでも、今回のような、timerによる定期割込みは、安全な手法なんで、どっちでもいいかな。
0897774ワット発電中さん
垢版 |
2019/02/13(水) 13:46:50.95ID:xeLsn9+0
>フラグをmainで見続ける

もうね、、、delay的思考まんま
何かの入力待ちだけのためにループ回して他の処理止めるとか
ほんと世の中に出回ってる糞な入門書のせい
0898774ワット発電中さん
垢版 |
2019/02/13(水) 14:39:28.47ID:g9rgJBh9
>>894
1.調べろ
2.好きにすれば良い
3.論点や趣旨が全く違うことを話してる
4.そう思ったら使わなければいい
素晴らしい、これ以上はない見事な回答だ。

そもそも>>888は質問じゃなくてあんたの無知を揶揄してるんだと思うが、
それすら気付かず立ち位置が回答者側なのがあっぱれだわ。
0899774ワット発電中さん
垢版 |
2019/02/13(水) 15:34:28.65ID:lQniYt0S
>>897
delayとフラグ分岐待ちの違いがわからないということは状態遷移のwaitedStateやsleepとの違いもわからないということかな?
0901774ワット発電中さん
垢版 |
2019/02/13(水) 15:38:18.13ID:aDP6uZm2
>>881
アドバイスしたいのは山々だけど、MCCどっぷりでデータシート見るのも面倒な体たらくなので。
1つだけ言うと、これ
http://codepad.org/IaxrCenU
は明らかに退化だね、delayに頼りすぎ。
>>825の2つを組み合わせるのが一番シンプルになると思う。

あと、あなたは出現が不定期で、空くときは1週間も空くし、
せっかくアドバイスしてもスルーの時があるし、こっちも追いきれん。
そのせいでだいぶ損してると思う。
0902774ワット発電中さん
垢版 |
2019/02/13(水) 15:43:00.60ID:aDP6uZm2
なあ、屁理屈はいいから具体的なコードで示そうよ。
でも>>769は勘弁してな。
0905774ワット発電中さん
垢版 |
2019/02/13(水) 16:27:52.48ID:SY4PqJJQ
>>903
初心者スレとは思えないよねw

>なんでそんなことまで教えにゃならん
>調べろ
>糞な入門書のせい
>無知を揶揄してる
>違いもわからないということかな?
>明らかに退化だね
0906774ワット発電中さん
垢版 |
2019/02/13(水) 16:41:40.70ID:MBE59XX5
>>897
全く同意。
入門書は読んだことないから知らんけど、染まらずに済んでよかったw

>>899
完全な的外れ、割り込みの意義を学んでから出直せ。

>>905
ほとんどは回答者面の連中同士の言い合いだからいいんじゃね?
http://codepad.org/IaxrCenU
が退化なのは事実で、良い指摘だと思う。
0907774ワット発電中さん
垢版 |
2019/02/13(水) 17:36:40.58ID:vdhCrc+9
>>901
まあごもっともだけど本を見ながらやってる全くの初心者なんだからスルーというより理解出来てないんじゃね?
0908774ワット発電中さん
垢版 |
2019/02/13(水) 18:35:43.79ID:jKniwTF0
>>906
イベントドリブンの意味知らない奴に言われてもな

割り込みってのは、入力に対する高速な応答が必要な場合の処理で、
それ以外の何者でもない

電車のLEDの点滅タイミングの同期が内部タイマーの高速応答が必要な処理であれば
割り込み処理内で行うべきだろう
0911774ワット発電中さん
垢版 |
2019/02/13(水) 20:10:14.50ID:jKniwTF0
>>910
タイマー割り込みは、タイムアップやカウントアップなどのタイマー要因に対する高速な応答のためだと思います
それが必要であれば割り込み内で処理しないと駄目じゃないかな

クロックが数MHzに対して、秒オーダーの動作ならタイマー要因をCPUでms毎に監視してても問題ないけど、
そういう目的でのシステムタイマーみたいなのがあったほうが何かと簡単になるよね

元クロックやら必要な時間間隔やらで16bitなのか8Bitタイマなのか、
他にPWMや通信でどういうタイマをどう使うので、選択や使い方がが変わるんだよ>元ネタ質問者さん
0912774ワット発電中さん
垢版 |
2019/02/13(水) 20:20:39.27ID:6niLFAID
>>ID:jKniwTF0
言いたいことが良くわからんな。
Lチカにタイマー割り込みは使うなってこと?
別にええやん、他に使わんのだし…。
PWMや通信するならよけいLチカなんて単純作業は割り込み任せで放置したいでしょ。
しかも、現状1827では通信しようがPWMしようがまだタイマーは余る。
あんたの論点が見えないのよ。
0913774ワット発電中さん
垢版 |
2019/02/13(水) 20:23:34.56ID:6niLFAID
まさか、タイマーが5つもあるPICなんて使ったこともないとか?
PIC32なんか7つもあるんだぜ、しかも16bitよ。
0914774ワット発電中さん
垢版 |
2019/02/13(水) 20:29:30.61ID:8B8q9AKs
ああ、そういうことか。
俺も、コイツが何を必死に言い張ってんのかよく分からんかったけど、
ジジイが、近頃の若者はぜいたくじゃ、と騒いでるってわけね。
納得した。
0915774ワット発電中さん
垢版 |
2019/02/13(水) 20:33:18.21ID:x+ZBQzeb
最初は割り込みの意味さえろくに分かっていなかったジジイが、
少しは学習したと見えるが、かといっていまさら後へは引けず、
割り込みぜいたく論にすがって立ち位置をキープしようと無駄な努力中。
イベントドリブンには笑ったけどなw
0916774ワット発電中さん
垢版 |
2019/02/13(水) 20:44:42.89ID:MoaszjfB
いや
じじいこそ黎明期のZ80理解してるはずだから
割り込みテクニックもイベントドリブン手法もわかるはずだ
>>ID:jKniwTF0 からはその辺の理解度がまったく感じられない
0918774ワット発電中さん
垢版 |
2019/02/13(水) 21:02:40.66ID:1jkOI+0B
>>917
任せっちゃあ任せだけど、
音を鳴らしたり明るさを変えたりするんだから、
ハザードの点滅よりは手数が必要という意味です。
0919774ワット発電中さん
垢版 |
2019/02/13(水) 21:05:03.03ID:1jkOI+0B
>>916
>じじいこそ黎明期のZ80理解してるはずだから
そんな昔から意識の高いジジイだったらここで無知をさらさないよ。
ジジイに高望みしすぎw
0921774ワット発電中さん
垢版 |
2019/02/13(水) 21:27:12.78ID:aUHNsMOz
上の方にもあったけどmainのwhileの中でゴリゴリやるのが趣味ということなんだろうなあ
俺なんかあれが空だとすごく気分がいいから今回のお題ならスイッチ押下も外部割込みとして処理してえ
それはそれで本末転倒だがw
0923774ワット発電中さん
垢版 |
2019/02/14(木) 01:34:38.75ID:Ki6mojrm
>>920
それはAVRの工作員だよ

脱税で逮捕された「青汁王子」
「広告宣伝費は同業他社について批判的な内容をネットに書き込むよう、
別の会社に依頼して支払ったもので、架空の経費ではない」という趣旨の説明をしていたということです。



やっぱ、AVRの工作員みたいなこと仕事にしてる人がいるんだな
0924774ワット発電中さん
垢版 |
2019/02/14(木) 01:43:53.51ID:lUPfd+nd
>>921
そのやり方が正解だと思う。

main()では、LEDのon/offを変数に書くだけで、
タイマー割り込み中で、
・スイッチのチャタリングフィルタ
・mainからのLEDon/off変数の反映
・on/off時間の管理
・状態遷移の管理
をLEDの数だけ行えば良い
0925774ワット発電中さん
垢版 |
2019/02/14(木) 04:07:53.33ID:X6sYjPrg
>>924
状態遷移って何ですか?
ON/OFFしかないのに何が遷移するんですか?
よくわからないのでコードで教えてください、XC8でお願いします。
0926774ワット発電中さん
垢版 |
2019/02/14(木) 04:28:45.53ID:vsJwDtYo
>>925
16F1前提なんだからLATレジスタに保存されるだろ。
わざわざ変数使ってON/OFFを書く意味ねえよ。
おれもあんたのコードが見てみたいわ。
0928774ワット発電中さん
垢版 |
2019/02/14(木) 07:26:43.67ID:lUPfd+nd
>>926
なんでいきなり上から目線なの?
0929774ワット発電中さん
垢版 |
2019/02/14(木) 07:42:49.39ID:EZ6x0V8m
ON/OFFも立派な状態遷移。
マトリックス表だけ考えてるようなら、顔洗って出直してきて。
0931774ワット発電中さん
垢版 |
2019/02/14(木) 09:33:08.89ID:RCs3tfaE
【企業】ジャパンディスプレイ(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のエンジニア「よく日本は素晴らしい技術を持っていると言われますが、ハッキリ事実を言った方が良いと思います。
知識も技術力も現在取り組んでいることも、日本のほうがレベルは低いと思います。

その理由は単純です。
ソニーやパナソニックが元気だったころ、量産体制を作り上げるために、それまで社内で設計していたのを、台湾や中国といった海外に委託しました。
日本は仕様書を書くぐらいしかしなくなり、重要な設計の部分は外国に流れたわけです。

いま日本人の若手技術者は「ここになぜコンデンサーが必要なのか」を理解せずに、
「このコンデンサーを外してはいけない」ということだけを知っているのです。
しかし、台湾や中国の技術者は「なぜ必要なのか」をきちんと理解しています。
設計する技術力は、いま日本ではなく、台湾や中国にあるのです。


ハードを設計したいなら、日本に機会はありません。台湾など技術の高いところでキャリアを積んでいく必要があります。 」
0932774ワット発電中さん
垢版 |
2019/02/14(木) 11:42:15.59ID:oZ8IHv+7
ホントにPICユーザーは何の進歩も無いな。
たかがモデルカーのLED点灯にどれだけ時間が掛かるんだよ。
プロなら「使えない奴」というレッテルを貼られてしまうぞ。
いつも通りにケンカは始めるし、困ると「AVRの工作員のしわざ」と叫んで逃げるし、
これはもう5歳児に説教して貰う必要があるな。
「ボーッと生きてんじゃねーよ!!」w
0934774ワット発電中さん
垢版 |
2019/02/14(木) 12:29:43.58ID:Sw/5SPcN
眺めてる人間は経験豊富かもしれないけどココに質問に来る人間は全く畑違いのやつかもしれないし全くの素人童貞だろうから一を聞いて十を知れといったところで無理な話
教えたい人は教えてイヤな人は見なきゃいいだけ
0936774ワット発電中さん
垢版 |
2019/02/14(木) 12:46:33.08ID:lNkcmVZE
質問者がレスに対してなにも調べずにもっと詳しく教えろというのがダメ。
少なくと調べた結果と見解を述べて次の質問に進まないと。
あとは、定番の群盲象を評すだな。最たるその一見解が
> 割り込みってのは、入力に対する高速な応答が必要な場合の処理で、
> それ以外の何者でもない
0937774ワット発電中さん
垢版 |
2019/02/14(木) 13:31:42.03ID:ZKUOc+GB
厳しいなあw
みんなPICを何きっかけで初めたの?
仕事?趣味?学校?
初心者の頃苦労しなかった?
他社ユーザーが増えて来てるような状況なんだからせっかくの初心者に厳しくせずに助けてあげようよ
0939774ワット発電中さん
垢版 |
2019/02/14(木) 14:13:07.90ID:BX6UYXGH
>>928
で、質問に対する回答はいついただけます?
ググれば出てくるただの用語はどうでもいいんですが、

ON/OFFしかないのに何が遷移するのか
わざわざ変数使ってON/OFFを書く意味

については私もぜひ知りたいです。
今のところ肝心な質問になると全部お茶を濁してますよね。
0940774ワット発電中さん
垢版 |
2019/02/14(木) 14:22:51.41ID:ulnASeOn
>>932
あなたと違って質問者の理解度に歩調を合わせようとしてるからでしょ。
ほらこれでやれ、で済ますなら5分で済む。
何ならあんたがプロジェクトをPackageしてどっかにアップしてやればいいじゃん。

>>936
それ。
2盲人くらいだと思うけど、お笑いのネタとして面白いにしても初心者は混乱するよね。
その一見解なんかは本気で吹いたわw

>>937
良く見てみ、初心者に厳しくしてないよ。
無知なエセ回答者が叩かれてるだけ。
そいつのクソレスを見てしまう初心者のためでもある。
0941774ワット発電中さん
垢版 |
2019/02/14(木) 15:09:14.97ID:5tr1lLHT
>>939
ON/OFF でも状態遷移だろ。
C で書くなら変数を持つのが普通。

特定のハードに特化ならポートだろうがステータスビットだろうが好きにすればいい。
0942774ワット発電中さん
垢版 |
2019/02/14(木) 15:12:07.99ID:4rx6qwE2
>>939
ほんとに無知なのによくそういう書き方ができるもんだね。スルーしておこうかと思ったけど書いておくね。

出力状態として、LEDがONとOFFがある場合はね
遷移状態は
ON中状態
OFF中状態
ON->OFF変化中状態
OFF->ON変化中状態
の4状態があるの
でないと変化中に入力があると対応できないでしょう?

そういう途中状態をすべて想定して、入力変化の動きを規定しないと、クロスシーケンスが発生したりするの

そんな状態は考えていません考慮してませーんポカーン、というのと、その状態中のこれとこれのイベントは無視します、
というのでは天と地ほどの違いがあるのです

わかった?
0943774ワット発電中さん
垢版 |
2019/02/14(木) 15:21:45.72ID:4rx6qwE2
ポートにスタティックにぶら下がったLEDのONOFFだけならグリッチくらいですむだろうけど
外部から通信でイメージデータ送ってこられて、多ビットのLEDドライバを多段にしてダイナミックに使ったりする場合は、
ちゃんとそれぞれの状態を規定しないと、おかしなバグを作りこむことになりますよ
0944774ワット発電中さん
垢版 |
2019/02/14(木) 15:32:32.57ID:Z6Ke1ESQ
>>941
何が基準の「普通」だか知りませんが、ポートのラッチ・レジスタが持ってるものを
わざわざmain内の変数でも持たせる意味を聞いてます。
両方で持ってても無意味ですよね。
流れ的にPIC16F1827の話してます。

>>942
ああ、予想通りでした。
書いてる内容もあなたの品性も。
>ON->OFF変化中状態
>OFF->ON変化中状態
は、ちょっとウケましたw。
ありがとう。
0945774ワット発電中さん
垢版 |
2019/02/14(木) 15:34:21.92ID:Z6Ke1ESQ
>>943
>ポートにスタティックにぶら下がったLEDのONOFFだけ
なんですよ、まさにね。
勝手に話膨らませて初心者惑わしてまで自己顕示欲見たしたいですか?
スレの流れ見てますか?
0946774ワット発電中さん
垢版 |
2019/02/14(木) 15:42:04.52ID:xa4N+v72
>外部から通信でイメージデータ送ってこられて、多ビットのLEDドライバを多段にしてダイナミックに使ったりする場合は、
ほらほら、後出し盛り盛り真骨頂ですよ。
初心者スレなんてことはお構いなし、流れもお構いなしで、
自分の語りたいことだけを大声で語り続けて自己満足に終始する品性の無い老害。
0948774ワット発電中さん
垢版 |
2019/02/14(木) 15:51:36.46ID:W2+cBiCI
>>942
初心者なんでよくわからないんですが
ON->OFF変化中状態
OFF->ON変化中状態
の変化中というのはどういう状態ですか?
LEDがONからOFFへと変化していく過程をどうプログラムで検知するんですか?
電子レベルの挙動の検知ですか?
0949774ワット発電中さん
垢版 |
2019/02/14(木) 18:28:28.99ID:4rx6qwE2
>>948
プログラムで検知するんじゃなくてプログラムの状態なの
君の頭の中のLEDがONにしたら点灯、OFFにしたら消灯というのしか考えられないだけ
ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ

別に、あなたがそういうプログラムでいいと思っているあいだはそれでいいと思いますよ
推測も観測もできない事象を認識することはできないし、
今後の拡張も展開も初期化も複数化も考えないうちはそれでいいでしょ
0950774ワット発電中さん
垢版 |
2019/02/14(木) 18:47:08.62ID:5tr1lLHT
>>944
ラッチレジスタから読んできた値はどうするの?
変数に入れずに反転して書き戻せるかな?

まあ、反転するだけなら xor すればいいことだけど。
0951774ワット発電中さん
垢版 |
2019/02/14(木) 18:51:04.56ID:xtT/CXwJ
>>949
で、コードはどうした?
また、口先だけかw

>>950
>反転するだけなら xor すればいいことだけど。
ご自分で気づかれたようでなによりです。
0952774ワット発電中さん
垢版 |
2019/02/14(木) 19:13:39.50ID:4rx6qwE2
>>951
ごめんねー。煽っても出ないよー。
ハード仕様もソフト仕様もわからないのにサンプルコード書いて提出するほど馬鹿じゃないんだ。
初心者とか仕事じゃないとか新卒プログラマはそれでいいと思うからがんばって。
0953774ワット発電中さん
垢版 |
2019/02/14(木) 19:18:49.58ID:rkAvJFTp
>>949
こいつ、たかがLチカなのに妄想がどんどん現実離れして行って面白いね。
どんなコード書くのか、はたまた書けずにトンズラなのか、楽しみ。
0955774ワット発電中さん
垢版 |
2019/02/14(木) 19:31:47.68ID:Lazxpz/9
>>952
>ハード仕様もソフト仕様もわからないのに
>初心者とか仕事じゃないとか新卒プログラマは
ね、論理的に追い詰めて行くと最後は決まってこれ。
自分がレスしてる場所がどこなのかさえ考慮できずにただわめいてだけ。
書いてて自分でみじめじゃないのか、これもう品性のなせる業だね。
0956774ワット発電中さん
垢版 |
2019/02/14(木) 19:36:12.28ID:aH491+xo
>>949
>ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
これ興味あります。
実際にLEDの例で数値を挙げて時間の差を教えてください。
ぜひ、よろしくお願いします。
0957774ワット発電中さん
垢版 |
2019/02/14(木) 20:13:13.76ID:X+KbU35s
以前は何で初心者向けのスレでやるのだろうと思っていたが
最近初心者だからこそこういう話題が盛り上がるんだってわかってきた気がする
0958774ワット発電中さん
垢版 |
2019/02/14(木) 21:26:58.73ID:5VFfV8im
>>ID:4rx6qwE2

遷移状態は
ON中状態
OFF中状態
ON->OFF変化中状態
OFF->ON変化中状態
の4状態があるの

ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ

んー、ONの指令を出しても実際にLEDが光り始めるまでには時間があるので、
その間に何か起こった時のために変化中という遷移状態を考慮しなければいけないってことですかね。
模型のLチカの場合、いったい何が起こるんですかね。
ナノ秒レベルのスピードでスイッチを再度押下するとかですかね。
0959774ワット発電中さん
垢版 |
2019/02/14(木) 21:28:32.55ID:oZ8IHv+7
>>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
;
0960774ワット発電中さん
垢版 |
2019/02/14(木) 21:29:46.28ID:oZ8IHv+7
;===== 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
(リスト直書きスマヌ、疲れたからもう寝る)
0961774ワット発電中さん
垢版 |
2019/02/14(木) 21:32:43.64ID:4rx6qwE2
初心者はまず動くコードが欲しいんだよね、それだけ
目の前にぶら下がってるやりたいことができればよい

コードのためには設計も品質も関係なし、初心者にはそんなものいらないと思ってるんだよなぁ
設計をやってないのにコードなんてかけるはずもないのに
仕様もないのに設計が出来るはずもないのに

その先に進むかどうかが初心者からの脱出だと思うんだけど、一生初心者やっててください
ブラック下請け派遣会社の営業くらいにはなれるかもね
0964774ワット発電中さん
垢版 |
2019/02/14(木) 22:00:16.70ID:lNkcmVZE
>>944
> わざわざmain内の変数でも持たせる意味を聞いてます。
押しボタンスイッチを押していたら LED 点灯、離していたら LED 消灯
こういう処理なら変数[*1]を待たせて状態を覚えておく必要がない。
しかし、押しボタンスイッチ A を押して離したら LED A 点灯、もう一度押して離したら離していたら LED A 消灯
Iさらに、押しボタンスイッチ B を押して離したら LED B 点滅、もう一度押して離したら離していたら LED B 消灯
こんなことをやろうとすると、どのスイッチも離している状態で、どの LED を今点灯、点滅、消灯させているのか
を内部的に覚えておかないとやりきれなくなる[*2]。その内部的に覚えておくのが変数。
[*1]:変数:一般的には General Purpose Registers
[*2:]状態の数だけループを作って飛びまくれば変数を使わなくても出来ないわけではなくが、条件が増えると
指数的に複雑なコードになり現実的でなくなってしまうぞ。
0965774ワット発電中さん
垢版 |
2019/02/14(木) 22:02:20.78ID:4rx6qwE2
>>962
使うLEDのccabほか遅延時間書いてあるデータシートと使用する電源と応答と配線インピーダンスとコンダクタンス遅延と
そのLED使ったPICの型式と電圧とコア温度とクロックと、周囲温度条件、PICの電源ピンの電源電流とか
負荷変動による電流変動とかポートの応答速度と配線のインピダンスとコンダクタンス
あたり書いてくだされば、目安はお出しできると思います。
0966774ワット発電中さん
垢版 |
2019/02/14(木) 22:12:04.15ID:4rx6qwE2
>>962
普通にバス設計やるときにやってますし、医療用の残光測定LEDの応答装置とかもやってますから、
こちらの提示した材料を出していただければマジにLEDの遅延状態くらいは計算で出せますよ
なんでしたら光伝送と位相も測定できますが、そちらは会社の機材だけで出来ないので有料で。

念のために、あなたのポートのONOFF時の波形の観測精度とLEDの光源追従波形の観測装置の概要と精度も
教えてくださいね。せっかく計算したものが観測立証できないと残念なので
0967774ワット発電中さん
垢版 |
2019/02/14(木) 22:12:34.17ID:NjVECN3z
>>964
ポートレジスタが保持してるでしょON/OFFを
変数にもわざわざもう一つ覚えさせておく意味ある?
0968774ワット発電中さん
垢版 |
2019/02/14(木) 22:16:00.52ID:aYPId0ex
>>966
あなたが>>949
>ソフトウェアの実行時間に対してIOの動作時間が充分早いと思っているだけ
と書かれている根拠となった条件で例示していただけば結構です。
当然データに基づいてお書きだと思いますので、よろしくお願いします。
0970774ワット発電中さん
垢版 |
2019/02/14(木) 22:22:55.81ID:GvxON37l
>>969
それ、
何かわざわざ変数を使うこだわりがあるの?
って返答されて水掛け論になるだけなのにわかんないの、馬鹿なの?
0971774ワット発電中さん
垢版 |
2019/02/14(木) 22:23:55.47ID:4rx6qwE2
それらの遅延だしたところで、仕様に影響ないとは思いますが、
影響がないかあるかを調べて、動作に反映させる処理を作るのが正しいプログラマかな?

スイッチを押してスイッチ端の論理が真になってから何ns後にLEDが点灯開始、
点灯開始後に何psで光量が規定の何%とか仕様決めてるんでしょ?

ここまで人に要求するからには仕様決めてるんですよね?

自分なら、LEDの最低点灯消灯応答時間を1ms程度に規定してそれ以下なので問題なしとしますが。
0972774ワット発電中さん
垢版 |
2019/02/14(木) 22:31:40.67ID:5tr1lLHT
>>970
いやいや、例えばさ、信号器作るとしてさ、

緑のポートみて、
点いてなかったら、黄色見て、
それも点いてなかったら、赤見て・・・

ってやるんだよね、君のやり方だと。
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況