初めての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
では、質問どうぞ〜っ >>864
多分、点滅しっぱなしなので次は点滅を止めたいですよね。
^= 1 でなく = 1 なら点きっぱなし = 0 なら消えっぱなしにできます。
あとタイマー割り込みを止めるという手もあります。
この行です。
TMR2IE = 1 ; // タイマー2割込みを許可する
いろいろやってみてまた質問してください。 >>866
映像にも書いてますが、MCCP1のPWMでスピーカーを駆動して鳴らしてます。
音データはプログラム・メモリに書き込んであります。
いまクラクションも準備中w >>869
>今回は「電飾しましょっ!2 PIC編」では触れなかったタイマー割り込みという処理をしています。
とあるから、もう本を見ても参考にならないね。
サイトの記事も、whileのポーリングで検知してるだけだから、限りなく素のタイマーに近い使い方。 色んなサイトのプログラムを切り貼りしてなんとか形になりましたがまだやりたい事は達成出来てません
アドバイス頂けたら嬉しいです
http://codepad.org/IaxrCenU
https://i.imgur.com/sraOYrZh.png
出来てない事
・ハザードは時間指定じゃなくてスイッチで点滅維持-停止の切り替えがしたい
・ポジションスイッチを押す度に
消灯 → ポジション → ポジション+ロービーム → ポジション → 消灯
と切り替えたい
・上記が可能になればRB1が空くのでハイビームのパッシングに変更したい >>872
雑なアドバイスだが、while ループの中で、
スイッチの操作により、現在の状態を表す変数の値のみを変更する。
現在の状態を表す変数の値によってLED の点灯、消灯、点滅の処理をする。 ふとトランジスタアレイ使った方が良いんじゃね?と思った >>872
>>859や>>873を見ればわかるけど、点滅中でも音が鳴っている。
__delay_msを使わずに割り込みでやらないとそうは出来ない。
点滅の処理を関数に書き、割り込みでその関数を呼ぶようにする。
点滅を止めるときは割り込みを禁止にすれば止まる。
他でよほど重い処理をしない限り勝手に点滅していてくれる。
参考にしたサイトが割り込みを生かし切ってないサンプルだから仕方ないけどね。 >>876
えー?
割り込みから関数呼ぶの?この程度の要求速度で?
しかもPIC8だよね?あなたほんとにPICで割り込み使ったことあるの?
タイマ割り込みでフラグ立ててメインで処理だろ >>874
>>876
>>877
ありがとう
でも初心者なので具体的に何をどうすればいいのかちょっと分らないです
>>875
トランジスタの省スペースになるけど点滅回路にはならない? >>878
>>840にコードがあるから参考に、PICは違うけど考え方は同じ。
>>874や>>877の言うことは私にもよくわからない。
>>875は基板作る段階になったら考えればいいこと。 >>877
それ、僕もその程度の処理で割込み使うかな〜と思っていた。
deley関数使わずに、timerのオーバーフローフラグで、タイミングを取るのは
よくやるよ。
割込みは、通信処理や、LCDの転送処理などにとっておく。
もちろん、Lチカでも、正確なパルス幅で点灯させたいときは、割込み使う。 割り込みは基本だろ
なにも使わなくたって変数カウントアップさせとけ
その変数のbit取り出すだけで何種類もの矩形波が出来る
1024Hz、512Hz、256Hz、128Hz・・・4Hz、2Hzとかだと
2Hzのbitとon信号とandするだけで点滅信号に早変わりだ
サーボの左右、中立位置だって簡単 >>880
いろいろよくわからないです。
>timerのオーバーフローフラグで、タイミングを取るのはよくやる
「timerのオーバーフローフラグ」って具体的に何のことで、
実際にはどういう処理をするんですか?
>割込みは、通信処理や、LCDの転送処理などにとっておく。
模型の電飾で通信処理やLCDですか、またずいぶん盛りましたね。
にしても、5つもあるタイマーを使わずに温存する理由にはなってないですね。
>Lチカでも、正確なパルス幅で点灯させたいときは、割込み使う。
割り込み使わなくても不正確になんて出来ませんよね。
これもどういう意味か具体的に教えてください。 >>873
音鳴るのいいね。
そのうち模型の電飾屋さんがマネしそうw >>884
ありうる。
ここで割り込みの話が出たとたんにあちらでもやり出したしw 割込は非同期入力に使うことが多いなぁ
キー入力とかインプットキャプチャとか >>883
ハードウェアタイマーが満了になったら、ハードウェアが立てるフラグのこと。
そのフラグを見て、例えば1msが100回で0.5sたったら、LEDを点灯消灯するとか、
mainのif分で作る。
その間はLEDは触らない、というようにすれば、残りのCPUパワーをすべて使えるということ
ハードウェアタイマーのフラグでなく、ハードウェタイマーの割り込み処理でソフトで変数を1にして
戻ってきても同じ事
PICの割り込み処理内で多段に関数をコールするとハードウェアの都合で戻って来れなくなる場合もあるので、
不用意に呼ばないほうが良い。
模型の電飾で通信処理は普通に使う。まぁ使うときになるまで考えなくても良い
通信処理と言っても232cなどだけではない。i2cから赤外線までいろいろ >>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:]状態の数だけループを作って飛びまくれば変数を使わなくても出来ないわけではなくが、条件が増えると
指数的に複雑なコードになり現実的でなくなってしまうぞ。 レス数が950を超えています。1000を超えると書き込みができなくなります。