初めてのPIC 0x04 [転載禁止]©2ch.net
1 :
可愛い栗山千明たん :
2015/01/02(金) 22:25:08.44 ID:yvjTuu9J .
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・ピンぼけな代替案が出ても怒らずスルー
・有益と思われる回答があったら礼を言おう。無ければ消える。捨て台詞は書かないで。
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
<重要>
回答者のほとんどは、質問をおかずに「オレすごいんだぜ」と言いたいだけなので、
軽くあしらってればOK
さ、質問どうぞ〜っ
0x03 2014/09/22〜
http://wc2014.2ch.net/test/read.cgi/denki/1411314715 0x02 2014/05/20〜
http://wc2014.2ch.net/test/read.cgi/denki/1400522979 0x01 2013/11/17〜
http://ai.2ch.net/test/read.cgi/denki/1384626558
_ _ _ _
/::::::;ゝ-──- 、._/:::::ヽ /::::::;ゝ-──- 、._/:::::ヽ
ヾ-"´ \:::::::| ヾ-"´ \:::::|
/ _ _ ヾノ / _ _ ヾノ
| /::::::ヽ /::::::ヽ | | /::::::ヽ /::::::ヽ |
l (:::━ノ ▼ ヽ━:::)l l (::::::・ノ ▼ ヽ・::::::) l
` 、 、、、 (_人_) 、、、 / `、 、、、 (_人_) 、、、 /
ノ`ー 、_ / | ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄.| トン
_/((┃))_____i |_ キュッキュッ (,,) (,,)_
/ /ヽ,,⌒) ̄ ̄ ̄ ̄ (,,ノ \ / ?
>>1 乙!! | \
/ /_________ヽ \ / |_________| \
さっそくですが、質問させて下さい。 マイコンの市場で、マイクロチップ(というかPIC)のシェアは多いのでしょうか? それは、何処を見ればわかるのでしょうか?
パソコンのマウスの中身は、たいていPICだ、と聞いたことがある
>>6 データシートを読んでみたらどうだろうか。
I2CのI/Fは、IC我部のプルアップ抵抗を期待している。
1つ目と2つ目は、2つの電源端子に電圧制限があるかもしれない。
それが無ければ、相当品として使えると思う。
データシート見ると、いろいろ書いてあるよ。
>>6 I2C専用のは切り替えないで双方向。オープンドレイン駆動が原則。
しかし、I2Cのレベルコンバータを考えた人はスゴイと思う。 D-S間のダイオードまで使って事を成すとは。初めて見た時感動しました。
>>10 同意。アナログ回路の妙技という感じだよね。
ねがてぃぶろぐさんが書いてたな フィリップスの仕様書にも記載があると結んでいたからそっちが源だと思う
新しい仕様書では削除されてるってヤツね。
なんで?
18 :
9 :2015/01/07(水) 00:29:32.62 ID:JLiOHCAd
19 :
9 :2015/01/07(水) 00:32:07.28 ID:JLiOHCAd
あと、日本語サイトからMPLAB X v2.15をDLしようとしても、英語サイトと同じリダイレクトをしてv2.26をDL使用とします。(2MBで切断されます)
Win8.1/Firefoxで同症状。24MBでダウンロード終了(何故か成功扱い)。
>>9 を読んだ後DLしてみたんだけど
1度めは失敗して2度目でやっと落とせてサイズは382493554バイト
これは11/24にDLしたものと同じサイズなので元が壊れてるんじゃなくて
回線かサーバがご機嫌ナナメなのではないかと思う
今落としてみたけどふつ〜に落ちてきたよ
USB機能付きのピックを使ってセンサーの出力をパソコで読み取りたいんです パソコはWindws7(64bit)です いちよう既にハード、プログラムとも開発は終わっていて、こちらが考えた 通りに動いています。ただ、先にピックをパソコに繋げておいて、後からセンサー をピックに繋ぐとWindwsのデバイス一覧からピック(を使った自作アダプタ)が 消えます。消えた後、暫く経ったらまた出てきますが。 これは「センサーを繋いだ瞬間に何らかの理由でピックがリセットした」か、 「センサーを繋いだ瞬間に何らかの理由でUSBがディスCONNECT状態になった」の どちらかだと思いました 続きます
そこで実験として、センサーモージュールからVccとGNDだけを引っ張ってきて、それを ピックの載ったアダプタに接続してみました。これでもやはりアダプタはデバイス一覧から 消えました この結果だけで考えると、センサーモージュールを繋いだ瞬間にアダプタ全体の電気が低下 してピックがリセットされてしまったのかなぁと思うのですが、これを回避する方法はあります でしょうか? 使っているピックは18F2550です。取説によるとこのピックの動作範囲は2V〜5Vが動作範囲のよう ですが、センサーモージュールを繋いだ瞬間にアダプタ全体の電気が2Vを下回るなんて ありうるでしょうか?ちなみにBORはOFFにしてあります
>>24 センサーの電源にでかいコンデンサが入ってるんじゃないの?
突入電流を押さえる工夫をすればいいんじゃないの。
日本語の文章力は勘弁してやるから、カタカナ単語をなんとかしろ。
27 :
9 :2015/01/07(水) 17:22:31.94 ID:JLiOHCAd
>>20-22 回線っぽいですね ADSLはちゃんと速度は出てるんですが・・・
XX8とかは普通にDLできるんですが、MPLAB Xだけ上手く行かない(´・ω・`)
>>25 いえ、センサーモージュール側はセンサーを制御するマイコン1つと、そのマイコン
用に電解コン(1uと100u)が2個付いてる程度です。
マイコンの電気も取説だと30mA〜マックス100mA程度です。
突入電流を抑える工夫というのは例えばどういうのでしょうか?いちようアダプタ側にも
100uF程度の電解コンをつけて見ましたが変化ありませんでした
29 :
9 :2015/01/07(水) 20:09:40.48 ID:5k1bV7SA
>>9 です。
>>20-22 Linux、ADSLモデムリセット、GoogleDNS、全部ダメでした。
ちゃんと鯖からDLできている人がいるので、鯖の機嫌よりもルートが悪いと考え、
traceroute(tracert)したところ、(時間遅延は少ないが)反応が悪かった。
www.microchip.comに至っては一度アメリカ行ってから日本に戻ってきたみたいでした。
上手い人だったら、インターネットルータの経路を固定してDLできるんでしょうけど、
ヘタクソなのでpingで処理しました。
ドキュメントがあるww1.microchip.comにpingを連射してからDLしたら、
急に356,515,840バイトDLできましたが、
サイズが
>>21 さんと違うので、ping連射のあとDLをし、
3度目で382,493,554バイトDLコンプに成功しました。
pingの連射はDDoS攻撃と誤認されることがあります。 良識と節度を持ってしましょう。
みなさんあろがとうございました。
>>24 ピックを初期化処理の中でLEDを消灯させて、その後任意のタイミングでLEDを点灯
されるようにしたプログラムを書き込んで試してみましたが、センサーモージュール
を繋いだ週間にそれまで付いていたLEDが消えました
ピックの初期化ルーティンでしかLEDを消す処理は入っていないのでやはりセンサー
モージュールが繋いだ瞬間にピックがリセットしているのは間違いないようです
そうですか
34 :
24 :2015/01/08(木) 07:23:32.80 ID:8Zn3iVkB
24です BORリセットが無効になってると思っていたんですが有効になってました。 そこでBORリセットをちゃんと無効にしたらセンサーモージュールを後から 繋いでもリセットしなくなりました これで一見略着のようにも見えるんですが、CONFIGではBORV=3を設定されて いるので、18F2550においてはBORリセットの閾値は2Vです よってリセットを起きるという事は瞬間に電気が2Vを下回ったと言うことに されると思うのですが、このピックの動作範囲が2V〜5Vなのに瞬間に (3マイクロセックの間?)電気が2Vを下回っても動いているのはおかしくないですか?
おかしくねえよそれがBORだろ
>>36 使い古しのブレッドボードに、ひょろひょろ線でずるずる配線と予想
38 :
24 :2015/01/08(木) 13:25:22.87 ID:8Zn3iVkB
>>35 すいません 言ってることがまったく完全に意味不明なんですが
閾値2ボルトのborが機能するような環境でborを無効にしても問題なく
動くのってなんかおかしくないですか?
て言ってるんです
わかりますか?
>>38 そうだね、まずはあなたの頭がおかしいね!
24の日本語も怪しいけど、 >35=39 の頭もそれなりにおかしいな 「閾値2VのBORが発生する状態で、なんでBORをDISABLEにしても動くのか? PICの動作電圧の下限を下回るのでは?」 「それがBORだろ」 俺も回答の意味が分からないんだけど、PICに詳しい>39-40はぜひとも俺に 教えてくれ
>>38 賞味期限って知ってるかい?
過ぎたら突然食べられなくなる?
さて、PICはどうかな。
動作保証範囲外は突然動かなくなると思うかい?
>>42 データシート嫁ではなく、データシートの読み方を嫁、だな
45 :
9 :2015/01/08(木) 19:31:25.53 ID:xiwXhL3j
初心者ながらに思うのですが、 センサーモジュール基板内でショートしてるのでは? ルーペ持ってGo
>>41 これはPICとかBORの問題じゃなくてホットスワップの問題だろ。
2Vまで動くからって急に2Vに下がるような状態でまともに動くと
考える方がおかしい。
そもそも2Vまで下がるってことが推測だから話にならない ストレジでセンサーモジュール接続時に実際に2Vまで下がっているか否かを 確認しない限り今の議論は不毛以外の何ものでもない
>>47 閾値2VのBORが発動してんのに「そもそも2Vまで下がるってことが推測だから」
とか、頭大丈夫?
>>42 >>44 はい出ました!w データシート厨w
答えられないと、とりあえず「データシート嫁」と返しておけばいいよね!w
>>45-46 まともに会話出来ない方は無理して会話に混ざってこなくていいです
というか俺が聞きたいのは、>35=39に >「閾値2VのBORが発生する状態で、なんでBORをDISABLEにしても動くのか? PICの動作電圧の下限を下回るのでは?」 >「それがBORだろ」 の「それがBOR」とはどういう意味で言ってるのか?なんだけど。 >35=39 は消えちゃったの?ぜひ教えて欲しいんだけど
>>49 最大定格と推奨動作条件とか通常特性とかの意味わからないんだろ?
ほんと、質問者も初心者なら回答者も初心者だから手が付けられ
ねーな。あと >51 みたいな自称プロ様wは邪魔だからこのスレから
消えて
>>34 メーカの動作保証電圧範囲が2V-5Vというだけで、2Vを下回ったら
(あるいは5Vを上回ったら)どうなるかと言うのはきっちり決まって
ない。大抵は2Vを下回っても結構動く。
なので答えとしては「電圧が2Vを下回ってもたまたま運よく動いてる
だけ。必ず動くと言う保証はない」
>>42 >
>>41 > データシート嫁としか
データ嫁といわれると初心者はつらいなー。
俺は英語結構できるけど、読んでもよくわからないんだよね。
だが大きな影響は無い
>>55 38の疑問に対する回答が>30をよく読め、って時点でお前がバカって事は
確定的に明らかwww
>>54 きちんとデータシート読まないと、いつまでたってもクレクレ初心者なんですよ。
>>57 ゆとり世代は質問内容を正しく理解出来ない子が多いよ
多分>39もゆとり世代なんじゃないかな
. 先輩のみなさん、雑談なら本スレでやってください。 初心者が質問できるような環境作りに協力してください。 「俺は知ってるぞ、スゴイだろ」という方は、あっち行ってください。 よろしくお願いします。
>>61 初心者だからと言ってなんでも許される訳ではない。
初心者なら余計にデータシート位読むべき。
初心者が「俺様は知らない」と、のたまうのは大抵データシートを読んでない。
電子部品は自分じゃない誰かが設計した物。読んでないんだから知ってる訳無いだろうに、なんでそんなに偉そうなんだ?
>>54 自分で「英語が出来る」とか言ってる奴って、日本語が出来ないんだよな。もっと言うと、理解する能力が劣ってる。
これは、所詮ネイティブと違って、翻訳しながら理解してるレベルの「俺は英語が出来る」だからそうなる。
「読む」と言うのは「眺める」とは全然違う。
>>63 わかりましたから、もう静かにしてください。
>>63 >>61 >初心者だからと言ってなんでも許される訳ではない。
>なんでそんなに偉そうなんだ?
>>61 は別に初心者とも言っていないし、偉そうでもないと思う。
>>63 「データシート読め」くらいしか言えない無能が
上級者面して書き込んで悦に入ってるのは迷惑以外の何物でもないな
一言言っておこう「黙れ」と
データシートの何ページのどのセクションに目を通せ とかならアドバイスと言えるだろうけど >初心者なら余計にデータシート位読むべき だけじゃあねえw バカでも書けるせりふだわなあ
悔しそうだねw
実際にデータシート読むのが面倒だから聞けばいいだろって考えの学生はよく見る
>>70 そりゃデータシートに限らん。
自分で調べるより聞いたほうがいいってのも学生に限らず老若男女にいるが、
都合の悪いことや聞きたくないことは聞かず、自分でフォロー調査もしないから、騙されまくり。
72 :
67 :2015/01/09(金) 16:10:29.07 ID:dVdFd1/w
>>68 別に悔しくはないです。
わたしは初心者ではなくデータシートはくまなく読むたちなので。
「データシート読め」はわざわざ書く必要のない無駄なレスだと言いたいだけです。
>>69 ええ、たいてい目次にはよく目を通します。
>>70 ,
>>71 ああ、なるほど。
「データシート読め」は自らの置かれた環境への不満の捌け口だったんですね。
そういう連中しかまわりに居ないあなたたちが気の毒です。
捨て台詞合戦、がんばれよ 最後に言った奴が勝ちなんだろ?
そうです がんばりましょう
おちんちんがPICPICするんですが、どうすればいいですか?
AVRでも見て抜け。
「データシート読め」はなにげに英語がスラスラ読める自慢が入ってそう。 英語読むだけで上達するならアメリカ人はみなPICの達人ってことか。
78 :
774ワット発電中さん :2015/01/11(日) 09:36:33.25 ID:HHfgRDSW
でも外人はAVR使うよね・・・
79 :
774ワット発電中さん :2015/01/11(日) 10:38:44.28 ID:NlyIytug
でも米人は BASIC Stamp 使うよね・・・
なんでもいいからちゃんとデータシートや規格書を読むことと、 オシロ買うことを初心者は考えるべきだな。
考えるというか、2、3回の失敗で学ぶというべきでは? 日本語化されてるデータシートを読む、これだけで十分得るものはあるし オシロの使い方を学ぶという点でも最近は安いからこれから始めるなら一台ぐらい買ってしまえ、とは思う まあ、PICじゃないが英語のデータシートにしか書かれてない項目があったりして、度肝を抜かれたり 数万もするオシロを文鎮にしてしまうこともあるだろうけど。
>>81 ですね。
動けばオーライで終了なのか、動かない場合の考慮をどこまで設計に盛り込めるかの違いが、
データシートの保証値の理解と、測定器での観測への投資の有無に出てくると思います。
言外の言というのがある。自ずと本人の意図が漏れるものだ。 「初心者に説教して自己満足にひたっている」 かどうかは読む人の意思次第。 そう取られるような書き方をしてしまったとすれば、それは本人の責任。 案外本人自身が気がつかないこともある。 「「おしえるということはおそわるということだ」 と古の人はいっていたが、 正しいことを言えばそれが常に伝わるわけではない。人におしえるのも難しい。
77のような発言した人をまともに相手する人はいないのではなかろうか
>>84 それはどうかわからんが
アンカーも打てないヤツに教える気がしないのだけは確か
オシロって1万くらいするけど、PICKIT2でデジタルオシロしてる人いる?
してるよ。だがメインは中古のアナログオシロ。
PIC初心者です。
http://ioiodesu.web.fc2.com/LessonC/LessonC_10.html で今は古いコンパイラをダウンロードして勉強をしています。
3端子レギュレータを使った自作実験用リニア電源の平滑コンデンサの
作用かと思うのですが電源(100V)を切ってすぐ入れると、動作が不安定になり
LEDが全部ついたり、不規則に点灯したり、同時にプッシュスイッチがきかなく
なったりします。時間がたって電源を入れると普通に動くのですが、
どうしたらこういう現象を避けられるでしょうか。
勉強中のソフトだけでなんとかするなら、例えばwhileの前にdelayをいれて安定してからIO初期化ってのは?
>>88 100vを切ったら5Vがショートするように工夫する。
アドバイスありがとうございます。 delayのサブルーチンのパラメーターをいろいろと変えてやってみたのですが うまくいきません。もういっかい大きくして試してみます。 平滑コンデンサは突入電圧が大きくても怖いので 3300mF(50V)つかってます。リップルは安物オシロの自己ノイズ に埋もれるレベルのようです。
>>90 念のためレギュレーターに放熱器を背負わせた上で、
電源に5.1Kの抵抗を3つパラに入れましたらだいぶ改善されました。
ありがとうございました。
>>88 リセットICで5Vの電源を監視して、その出力をPICのMCLRにつなぐ
4.2Vくらいのやつが調子いい
>>91 >平滑コンデンサは突入電圧が大きくても怖いので
>3300mF(50V)つかってます。
3端子レギュレーター後に3300μFという意味だと思うが、何がどうしてそんなに巨大なイチモツを・・・
電解コンデンサは目安として、mAをuFにしたものを使えばよい。 100mAなら100uFって感じで充分。 容量が大きいと高周波特性も悪くなるので、出力側にでかいの入れてもあまり意味がない。 周辺配線を太く短くすることのほうが大切。 3端子の出力にでかいコンデンサを入れる場合は、出力から入力にダイオードを入れることを忘れないように。
容量を大きくした時には、高周波特性は悪くならない。 3端子レギュレータはそもそも高周波特性が悪いので、それを改善する為にコンデンサを入れる。
>>96 tanθと漏れ電流って容量大きいほうが悪くなかったっけ?
間違って覚えとったかも試練。
>>97 tanθは電解コンデンサの場合は品種による所が大きい。
同じ品種なら大容量の方が小さい傾向にある。
漏れ電流はそもそも高周波特性じゃ無いし。
>>98 たしかにおっしゃるとおりだ。
昔、真空管のアンプ作ったときに、師匠に、大きい電解一つより、容量小さいのをたくさん並べて
容量稼ぎなさいと言われたのはなんだったんだろう。耐圧の問題でもなかったしなぁ。
88です。皆様ありがとうございます。
>>93 リセットICの存在は全く知りませんでした。
探して見ると秋月にLリセットのM51957Bとかがありました。検出電源
検出のための抵抗の組が1:2.36になるものを探して
後学のため入手してみます。ダイオードと抵抗とコンデンサでリセット回路を
作れるとのページも見つけましたのでそちらも試してみます。
>>94 手持ちがそれしかなかったというのとオーディオ用が主な想定でして。
皆様のアドバイスを元に電源を作り直す作業をしています。
といっても家に何個かある未使用のずっしりと重い1Aほどのアダプタ(実測で8V弱)
とLDOで5Vと3.3V用をでっち上げる予定です。
>>95 レギュレーター保護のダイオードは入ってますが、とりあえず
電源を作り直してみます。使えそうな電解コンデンサだけがないので
秋月にリセットICなどと一緒に発注するつもりです。
101 :
774ワット発電中さん :2015/01/12(月) 13:38:15.95 ID:1r5WoEa6
picに付いているtimerという機能が良く分かりません。 プログラム内のvoid mainやwhileの繰り返し処理に関係なく 一定の周期でカウントし続けているという理解でいいんでしょうか? どなたか詳しい方よろしくお願いします。
>>101 おおむねその通り
設定した間隔でpic内部でカウントし、時期が来たら割り込みというのが発生する
この割り込みの発生が約1msだったとして、自分が欲しいタイミングが1secなら
その割り込み処理内でカウントupする処理を書いて1000になったら1secになったよ・・・ということで別の処理で使うみ
たいなものです
使う機能によっては、timer?を専用とする場合があるんでデータシートもみてね
前から思っていたけど、Timerの機能って私てきにはカウンターって感じがする。 タイマーって規定値から減じていってゼロになったらアラーム鳴らすとかのイメージだけど マイコンのTimerって外部からの信号を数えたり、内部クロックを数えたりして カウントアップしていき上限または指定値になったらリセットして割込発生など
最近までハードウェアpwm機能を使うためにtimer2を使ってました これを使うと8MHzのpicでpwm周期≒7.8KHz、分解能10bitにすることが出来ますが、 ソフトウェアでpwmを作ろうと考えたらpwm周期と分解能って最大でどれくらいまで 出来ますか? 調べると割り込み処理を使ってpwmを生成しているものが多いんですが、 割り込みを使用せずに正確なpwmの波を作ることは可能でしょうか?
おっと質問を読み間違っていたようだ。書くのやめちまう。
見ていてはずかしい
>>106 そこまで分かってるなら自分で答を出せると思うけど
固定で出すなら10bitで1.953kHzだね。
可変で何らかの制御や通信が入るとなんとも言えない。
>>108 > データシート読め
> p107から読んでわからないならやめちまえ
言葉使いから勉強し直しだ。直す気がないなら回答するな。
回答したら負けかなと思う今日この頃、いかがお過ごしでしょうか
>>106 >pwm周期と分解能って最大でどれくらいまで出来ますか?
周期なんていくらでも長く出来るだろ?∞
>>106 >最大
周期を長くすればいくらでも分解能は上げられるから、質問に意味が無い。
同じ周波数で比較するなら、最大でハードウェアの1/4まで理論的には可能。
でもそれで0%付近と100%付近まで可変できるプログラムを書くのはめちゃくちゃ大変。
>割り込みを使用せずに
他の作業が必ず決められた時間内に終わるなら可能。
ところでなんでハードウェアや割り込みを使いたがらないのか知りたい。
88です。 秋月から外部リセットICがとどきましたので、DIP化したうえでデータシートのアプリケーションに従い 以前の暴走が頻発した電源環境のままで試してみましたら、嘘のようにトラブルは なくなりました。 みなさま、かさねてありがとうございました。とりわけリセットICの存在をお教え くださった方に感謝です。
PICに別売のマイコンキットを繋ぎたいんです それで、PIC側はRB0-RB7のうち2本を出力、6本を入力として使いますこの8本 をマイコンキットのバスに繋ぎます 各線は10KΩの抵抗でpull-upしています(8本全部) ある日(数日前のことです)、たまたま実験してたときにマイコンキットのVccを どこにも繋がずに宙ぶらりんになってたことがあるのですが、何故かそれでも そのマイコンキットは動いていたんです!つまりGNDと8本のRB0:7しか繋がって いないのに、何故かそれでもそのマイコンキットは動いていたんです! 続きます
普通に(常識的に)考えて、RB0:7から電力が供給されたとしか考えられない のですが、いろいろ調べると回り込みという現象が起きているのでは?と 推測しました そこで質問なのですが ・PICのRB0:1は出力、RB2:7は入力として設定し、RB0:7を別の回路に繋ぐ ・RB0:7は10KΩの抵抗でpull-upされている この条件で、PIC側からマイコンボードに電力を供給しないようにするには どうすればいいんでしょうか!
>>118 PIC側だけで対処するとしたら
信号のスピードがそれほど速くないならRB0,1には0を書いておきTRISB0,1
で制御してオープンドレインとして使う。
マイコンの電源が供給されていてPICの電源がない場合は考慮しなくて
いいのかな?
根本的にはそれぞれ入力側にトレラント機能を持った74VHC/74VHCTみたいな
バッファを入れる。
教えてください。 picでI2C接続のデジタルポテンショメータを使っています。 今は2回路入りでステレオで使用していますので問題ないのですが、 もしこのICを同時に複数のスイープをしたい時はどうしたらいいのでしょうか? やはりI2Cはアドレス指定が必要なので一度に1デバイスしか扱えないのでしょうか? アドレスを敢えて同じにしたデバイスを同じチェーンに繋げばむりやりでも同時操作ができますでしょうか?
少しおうかがいしますが、 入力に設定したピンにつないだ1つの押しボタンを押したとき、 一つの出力は押しボタンを押すたびトグル動作で0と1を繰り返し もう一つの出力は1秒だけ1になりその後0に戻す という動作は割り込みをつかうのでしょうか。
>>119 118じゃないけど
>RB0,1には0を書いておきTRISB0,1で制御してオープンドレインとして使う。
この発想はなかった。これってごく一般的なテクニックなの?
>>122 AN574 Use of the SSP Module in the IIC Multi-Master Environment
で使われてる一般的なテクニックです。
>>119 ありがとうございます!
LATBbits.LATB1 = 1
としているところを単純に
TRISBbits.RB1 = 1
に変えるだけで問題なく動き、かつポートからの電力供給もなくなりました!
(無論出力ポートが外部でpull-upされている事が前提ではありますが)
>>121 その程度はシーケンスで出来る
連枝無料版でやれ
ラダーでオルタネイト回路と
自己保持タイマー回路組め
>>121 割り込みでもできるしループしてる部分の周期が早ければ割り込みなしでもいける
>>120 各スレーブがACKを返すタイミングが完全に一致してれば無理やり同一idで並列に動かすことができそうな気もするけど、試したことはないですw
>>121 なるべく正確に1秒にしたいならば、入力ピンの変化割り込みとタイマー割り込みを使うところだけど、そうでなければループの中でポーリングでもいいと思います。
ただしボタンスイッチの取りこぼしがないように1秒に50回くらいはループを回す必要があるけど。
129 :
121 :2015/01/16(金) 02:12:22.83 ID:mZtTTE2M
>>126 >>127 >>128 連技知りませんでした。早速ダウンロードして使ってみました。
帰りが遅くなりまだ2時間くらいしか試していませんが
PLCのラダー図になれることから始めたいと思います。
一般のコンパイラでも検索しながらと、大きな本屋さんで立ち読みしながら
見よう見まねでやってみます。具体的な壁にぶち当たったらまたヒントを
いただければ、と思います。
ありがとうございました。
>>129 チャタリング対策が簡単だから割り込みがお薦め
毎秒100回くらいの割り込みでピン読んでスイッチの状態を並べて0b00000000が離している状態とすると
0b00000001になったら押されたという処理を始めるってやり方で自分はやってる
節子、それ割り込みやない。定期間隔ボーリングやで。
Xボーリング Oポーリング
ボーリングゆーたら、田町ボウルは今年で閉館やでえ もう20年くらい前かなぁ、あそこのトイレで援交中学生と生中だしハメしたのが 懐かしいで
>>130 自己保持回路組めば
チャタリングなんて関係ないから
>>128 やっぱそこが問題ですかね。
ACKは無視してごりごり送り込む…とエラーがわかんなくて送受でズレが出てきそうですね。
>>135 マスターのクロックに同期してるんだからずれようがないと思うが
コマンドとコマンドの間がある程度の時間あいてれば、趣味レベルでは動くかもしれんが ばらつき含めた保証はできんな
各デバイスがエラーなく確実にACKが帰れば問題はないだろうな
5V動作のPICのADに、VRをつないで電圧を読もうとしています。読んだ電圧は、PWMの周波数設定に使うだけです。 VRは5VとGNDにつないで、切片をADに直結しています。 精度は8bitあれば充分だし、読み込み時間は100ms間隔くらいで読んでいます。 電池で動作させたいのですが、10kのVRを使うと、sleepにしても、VRの両端に0.5mA流れるので、せめて100kにして、0.05mAにしたいです。 PICのADは入力抵抗を10k以下にして使えとよく読むのですが、100kのVRではだめでしょうか? ポートに空きがないのでsleep時にVRにかける電圧を制御するのいうのは無理です。
>>141 50kのVRにしてVRの分圧の出力の所とPICの間に抵抗入れたらどうですか?
>>141 むろん何が起こっても文句は言えないけど、普通に考えたら規定の性能が出ないってだけ。
アクイジション時間が長くなるのと、漏れ電流が無視できなくて精度が低くなるだけじゃないかな。
>>141 データシート見ると10Kオームの理由は0.5uAのリーク電流によるものだから
100KのVRだと直線性が最悪0.5%悪くなる
VRにそんな精度無いから気にしなくていい
>>142 ADとGND間が10k以下なら大丈夫なんでしょうか?
Fusionに基板発注しちゃったので、今回は勘弁してください。
>>143 >>144 精度が10ビットとれないとか変換時間が満足しないってのならいいです。
電池の電圧が落ちたときとか周りの温度変化で、出力がふらつかなければ
直線性の補正や平均などソフトで対応したいのですけどどうでしょうか?
>>115 (´・ω・`)ハードウェアの方はもう別の処理で使ってるからです。
内臓されているハードウェア並のものを作れないか色々試してたんです。
あと割り込み使わずにpwmが作れるのなら無理に使わない方が
高周波数、高分解能の波形を生成できると思ったからです。
まあ結局は割り込み処理を使うのに落ち着いたんですけどねw
それで割り込み処理を使っていて次はタイマーのオーバー
フロー割り込みフラグの確認をするプログラムを書いているんですが
検出がうまくいきません。pic12f683のタイマー1のTMR1IFのフラグを検出するために
#byte PIR1 = 0x0c // TMR1IFのあるレジスタを変数として使用
enable_interrupts(GLOBAL); //グローバル割り込み許可設定
enable_interrupts(INT_TIMER1); //タイマー1割り込み許可設定
setup_timer_1(T1_INTERNAL | T1_DIV_BY_分周値); //内部クロック指定、プリスケーラ設定
set_timer1(16bitまでの数値); //タイマー1レジスタに数値設定
までが組み込み関数の初期設定・・・
でこの後どう取り出すのかよくわかりません。
if((PIR1 & 0x01) == 0x01)
output_high(PIN_A1);
でA1からハイアクティブ信号を取り出そうと思ったんですが何も反応なしです。
どなたか解る方いらっしゃいますか?
>>146 割り込み処理関数を作ると少し幸せになれるかも。
>>146 タイマー1の割り込み処理はどうなってる?
普通は割り込み処理の中で、TMR1IF をクリアするから、
一瞬しか Highにならない。
それとタイマーのパラメータを設定する前に、割り込みイネーブルにすると、 いきなり割り込みかかって帰ってこなくなることもあるから、全部設定してから イネーブルにしたほうがいいんじゃない? 個人的にはグローバル許可は最後かな。
>>145 A/Dから見た信号元インピーダンスだから摺動子がセンターのときが
最大で、100kΩのVRなら25kΩになる。
だから8bit精度なら良いんじゃないかな。
>>145 VRの抵抗値と、PICのアナログ入力抵抗の兼ね合いで、軸の角度と電圧値の直線性が損なわれます。
VRの値 << PICの入力抵抗 なほど、直線性はよくなります。
入力信号の変化が遅くて、測定周期が100msもあるのなら、
PICの入力ピンに0.1uFとかのコンデンサをつければ、100kのVRでも500kのVRでも問題ありません。
なぜなら、PICのサンプル時は、PIC内蔵のホールドコンデンサに電圧をコピーするだけなので、
PICの内蔵コンデンサが1pFに比べて、0.1uF(100nF=100000pF)ととても大きいので、
電圧は正確に変換されます。
0.1uFを付ければ、電圧は正しく変換できますが、
VRの軸と電圧の直線性が落ちるだけです。
測定周期粗くていいのなら、測る時だけVRに電圧かければ消費電流大幅に減らせるよ。
100kと500kのVR買ってきました。 皆さん、いろいろ原理から教えてくださって、よくわかりました。 ありがとうございました。
>>153 結果が出たら、また教えてね。参考にしたいです。
>>154 10k->100kで、実用上は全然変化ありませんでした。
8bit/100msでサンプリングして4個の移動平均を行ってます。
もちろん消費電力は100kなりで、sleep時0.1mAくらいになりました。
sleepからは100msごとに復帰して、ADやポートを調べて変化がなければまたSleepする、
という作りなので、テスターだと表示がばらついて、あまり正確にはわからないですが、
VRのばらつきは最大最小途中数箇所で問題ありませんでした。
どうもありがとうございました。
教えてください dSPICでPLLを使って、80MHzで動かしています。MPLABでX16でCでプログラム書いています。 forのなかで、関数を呼んでポートアクセスの後、 次の行でXC16内蔵の__delay_ms()で待ちをいれています このプログラムで、 delayをいれないと動くのですが、 入れると、初回のポート関数から戻ったところか、delay以降から止まってしまいます。 再度、外すと、ちゃんと動きます 原因が全くわからずに、悩んでいます。 何かヒントがあれば教えてください
157 :
natu :2015/01/18(日) 16:57:03.41 ID:Zw7ht8iD
>>156 ちゃんと80MHzで動いてるかは確認できてます?
発振してなかったり設定間違ってて低速クロックで動いてたり
>>156 たぶん引数の値を小さくしたら動くやつじゃない?それなら桁あふれ
細かいのをloopで呼べばokかも
あとは、delay_msのマクロを手動で修正が必要なパターンのどちらかだと思う。これはググレばでてくと思うよ
原因不明だけど__delayってなんか挙動不審になることがあるんで、timerが余ってたらtimerでカウントしてる
>>157-160 みなさんありがとうございます。
出かけていて、返事が遅れましてすみませんでした。
今日は遅いので、明日確認してご連絡したいと思います。
FCYは、1/2fOSCですので、40000000にしています。
__delay_ms()単体では動作するのですが、あのように使うとフリーズ(?)したようになります。
ちなみに、__delay_ms(200) で、200msを待つようにしました。
どうもありがとうございました。
>>161 ULを付け忘れてない?
#define FCY 40000000UL
横から失礼 #define _XTAL_FREQ 48000000UL //Fosc = 48MHz の状態で #define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0))) となっていた場合で試してみた __delay_ms(17) : コンパイルでエラー(error: (1355) inline delay argument too large) __delay_ms(16) : コンパイルはokだけど関数から返ってこない __delay_ms(15) : 問題なし こんな感じだったXC8 & @PIC18F4553
1msを 200回ぶんまわせ
>>161 です。
みなさん、ありがとうございました。
原因がわかりました。私の確認ミスでした。
オシロを、ノーマルでトリガしていて、
__delay()なしだと高速にに何度も来るので「動いた」と思っていました。
__delay()を入れると、それがゆっくりになるので、「止まってる」と思ってしまったのでした。
どれも正しく動作していたようです。あと、プログラムの記述ミスもあり、
見つけるのに大変時間がかかり、この時間になってしまいました。
ご連絡が遅くなってすみませんでした。今日は学校はお休みです。
> ULを付け忘れてない?
確認したら、ちゃんと付けてありました。
>コンパイルでエラー(error: (1355) inline delay argument too large)
>コンパイルはokだけど関数から返ってこない
>問題なし
そんなことがあるんですね。参考になります。
みなさん、ありがとうございました。
PICに直接は関係ないので申し訳ないのですが、 16F866で、温度センサーの出力をシリアルで読み出すプログラムを作っています。 温度センサーの電圧をADで読んで、constで内蔵EEPROMに置いたテーブルで温度に変換しています。 温度センサーの数と精度を増やすことになり、内蔵EEPOMの容量では間に合わなくなってしまいました。 24C256などのEEPROMをつけて、そちらにテーブルを持とうと思います。外付けで、ポートをソフトでI2C操作します。 温度変化なので、EEPROMへのアクセス時間は問題ないのですが、 1秒間隔くらいで、かなり長時間数日以上数ヶ月とか連続で24C256をリードアクセスすることになります。 このような使い方をして、24C256などは問題ないでしょうか? ライト回数の制限はありますが、読み込みは大丈夫ですか?
心配することは何もなさそうだけど
リードだけならデータシートに書いてある保持期間はokだと思われる
ノイズ等で誤書き込みを気にしてるなら、 WP端子をイネーブル("H")にしておけば良い
>>166 PICのプログラム領域にテーブル置けないの?キャリブレーションしてるのかな
どうもありがとうございます。
今まで外付けのEEPROMは、プログラムスタート時に設定やデータを読んで、途中で必要なときにデータを書く、
という使い方ばかりで、頻繁にアクセスしたことなかったのです。
あまり心配することはなさそうなので、使ってみます。
>>166 constで書いてるのはプログラム領域に書いてるんだと思ってました。
内蔵EEPROMというのは、ROM領域のことで内蔵のEEPROMのことではないです。
書き方が間違えててすみません。
172 :
774ワット発電中さん :2015/01/21(水) 00:03:44.14 ID:QmxRIJWa
>>166 温度測定で高速性は要求されないだろうから、
丸ごとテーブルでなく、いくつかの領域に分けて、
直線補間で良いと思う。
貼ること間違えたごめん
自治厨ってこんなことしかすることないの?
>>172 今そうしていて、その領域ごとの計算テーブルを持っています。
内部のEEPROMに持たせていて、RAMにすべてを変数と計算式のパラメータとしてコピーして使用しています。
しかし配線誤差やセンサごとのばらつきが多くて、あまり直線性もよくないので、領域の数が増えてしまい、
かつセンサーも増やさなければいけないので、テーブルの量が増えてしまうので、外部EEPROMに移行、
EEPROMなら容量に余裕があるので、補間+計算のテーブルでなくて、直接1:1のテーブルとして持った
ほうがいいかな->それだとやたらアクセスが発生するんじゃ、というところで質問しました。
他のセンサを探すという方法はダメかぁ
「男の意地」なんだろう
小さいPICをセンサ毎にくっつけてシリアルで転送ってのは?
センサーごとの誤差ってなんだい? PICがそれらセンサーの校正するわけでもあるまいし センサー入力は誤差も含めて全部そのまま生データ受け取れば? なんで誤差考えて領域の数増やすとかしてんの? 温度変換テーブルは1つでいいんだよ 全てのセンサー値を同じにしたいなら、テーブル通す前の電圧値をシフトしろ
>>179 それ考えて実験しようとしています。
問題は被測定温度がPICの使用温度範囲を超えちゃうんですよね。
>>180 質問してる機器の仕様を変えろって回答は勘弁してください。
提示仕様が理解できないなら回答しないでね。
知的障害者か
おそらく
>>180 うわー、嫌われてやんの。はずかしいー。
自演お疲れさま
耳が痛いなあと思いながらあっちとこっちをしばらくROMってましたが CをちゃんとマスターしてからPICやれってことらしいんですが それだとぜんぜん楽しくなさそうなんだけど お勧めの(もちろん楽しくてPICスレにふさわしい)学び方の手順はどんなのでしょう?
まずはLEDでナイトライダーでしょう。 次に、RS232を開通させて、キーボードからLEDをチカチカさせる。 そして、A/Dコンバータを動かして、値をLEDに表示、PCに送信。 その次は、タイマー割込みを覚えましょう。これで、スイッチ待ち中でも 正確にLEDが点滅できます。 赤外線受光部と、IR LEDをつないで、学習リモコンを作ります。 このテーマにより、ずいぶんプログラム能力が付くはずです。 今度は2行LCDを用意して、超音波センサを使って、距離計を作ります。 20cm以下でも測定できるようになるには、相当の技術力が必要です。 SDカードのI/Fを作り、A/Dのデータをロギングします。もちろんFAT32により、PCでも見えるようにしてください。 今度は、乾電池1本で動く回路を設計してみましょう。 決して苺Linuxの出来合い基板で逃げてはいけません。PIC内蔵のコンパレータ、OP AMpを使って 昇圧回路を作ります。
そこまでできれば、大したもんだけどなあ
で最終的に速度や状況に応じて点滅スピードが変わるナイトライダー作るわけだ。
>>181 180みたいな馬鹿はどこにでも居るから無言でスルーするのが一番いい
Cなんてマスターってほどの言語でないからね。 むしろマスターするならアセンブラのニーモニック。 マイコンの中ではこんな動きをしてるのかってのが、手に取るようにわかるようになる。 PICをマスターするのが目的ならね。 逆に何かものを作るだけが目的ならあれでい〜ので十分。
アセンブラは短い時間つくるのに非常に便利。あとgotoも便利だったな。 でもCが楽でいいな。ハイブリットでできないもんかな。
PICスレって時々湧くよな、アセンブル・ジイ アセンブルジー これ、語感いいよねw
俺様もPICは専らアセンブルだな。。。
じゃあ君はアセンブルジー2号と呼んであげよう
実はオレもアセンブラ
Cが移植も楽だよね、上位のチップに引っ越す時も変更点少なくて完成するし
言語の優劣を議論するスレでは無いハズ
>>199 それなのに、アセンブラ、アセンブラってねえ…
優劣を議論するスレでは無い 意味わからないならしょうがない
XC16なら、Cとアセンブラのソースをプロジェクトに登録しておけばまとめてビルドしてくれるよ。 変数の相互アクセスや引数渡しもできる。 手始めに msleep() とか usleep() をアセンブラで書いてみると意外と簡単。 :指定したミリ秒/マイクロ秒止まるやつね
デューティ50%固定でPFMを簡単にできるモジュールを内蔵したPICってありますか? 10kHz〜200kHz位をカバーしたいです。
ありますよ
アセンブラで書ける人はデータシート見ながらPWMモジュールで簡単にPFMできるけど、 Cしか書けない人は無理なのかな。
PICじゃない
>>206 ありがとうございます。
PIC10Fって書いてあるけどPICじゃないんですか?
メモリが小さい気がするけどちょっとデータシート読んでみます。
>>207 そうなんですか。参考までに触りだけでも教えていただけませんか?
どのデータシート見てもいいけど、PWMの項でパルス幅を求める式があるんで、それを固定値にするだけ。 でもNCOがあるPICの方が楽かもしれないね。
212 :
774ワット発電中さん :2015/01/22(木) 23:29:52.82 ID:EwwlGgxw
>>209 PWMモジュールで周波数を変化させる難しいのと、ので
PIC16F1501 とかのNCO付きのを使うのが楽。
あとは PIC16F1788との高度なPWM付きとか。
あと PIC16F1827とかの モジュレータもうまく使えば
できるかも。
>>211 わざわざありがとうございます。
12F1822は少し触ったことがあるので12F1501で挑戦してみたいと思います。
>>212 ありがとうございます。12F1501で間に合わなくなった時は16F1501移行も視野に入れてやってみます。
今回はデューティ固定なのでNCOは正に求めていた機能でした。
NCOの出力をCWGに突っ込んだらハーフブリッジもできるんですかね?
何日も悩んだのが馬鹿みたいに便利な機能ですね。
>>210 それだとPWM周期を変えるたびにデューティも計算し直して書き換えなきゃいけなくないですかね?
おもちゃの戦車のモーターPWMでやってみたけど、いまいちだね。期待したほどスピードコントロールできない。 てかほとんど無意味だったな。 電気モーターは始発はトルク強いけど、高速になるとギアとか使わないと空回り状態になって電圧あげても高速回転できなくなるらしいね。
まぁぶっちゃけ今はマイコンの容量が大きくなったから よっぽどのことが無い限りアセンブラで組む需要はないわな。 プロテクトで書き込まれるとソース読めんし、ディスアセンブルの需要も無い。 今から始める人、最近始めた人は使いやすい方で始めればいい。それだけだ。 と、いいつつ実際答えは見えちゃってるよな。 開発環境の豊富さ 資源としてのソースコードの管理 考えるまでもないな。
>>216 出力は回転数×トルクだからね
同じ容量なら回転数を上げればトルクは細くなる
>215 はリアルで頭おかしい病人だろ。放置推奨
221 :
203 :2015/01/23(金) 08:55:53.03 ID:/4S4s+4F
>>216 単にモーターの選定ミス
欲しい高速を得たいならそこでの最大負荷で設計するのが先
>>222 980円でかったおもちゃの戦車なんでモーター替えられないんですねー。
ところでLEDをPWMでやってみると明るさを細かく調整できないですね。ほとんどON・OFFスイッチ状態。
ボリュームの角度30度ぐらいしか変化がないですね。
>>224 >ボリュームの角度30度ぐらいしか変化がないですね
釣り針デカ杉。
>>224 LEDに流れる電流を制御=ほぼリニア
LEDの点灯時間を制御=ほぼリニア
LEDにかかる電圧を制御=リニアにならない
>>224 オシロで波形の変化を見るといいよ。原因がどこなのか切り分けすらできずにPWMのせいにしてるでしょ。
>LEDをPWMでやってみると明るさを細かく調整できないですね。 世間では、PWMで微妙な明るさ制御が普通に行われているというのは 常識だけど、>224の頭の中ではそうなっているっていうなら それでいいんじゃない?
待て待て、少ない電力で同じ明るさにできる画期的な発見をしたのかもしれんぞ
同じようにLEDの輝度制御をやってたやつがいて、 周波数が500msくらいでやってて、暗くならずに点滅するだけなんですけど、 と言って悩んでいたのを、まわりは暖かく気がつくまで黙って見守っていたことがある。
100ms前後はてんかん発作に注意な
>周波数が500ms って書いて平気なヤツに見守られる方も不幸w
日本語が理解出来ないのにこんな所に書く奴が時々いるんだよな。 哀れwww
お前が言うなよ
悔しそうだな
俺が悔しそうに見えるのはお前が悔しがってるからさ 日本語の件もね あはは
w
>>224 だけどなんかヒントちょうだいな。これだけ恥じさらして話題提供してるんだから。
Cカーブのボリュームでも使えば?
キミにとってはそうかもしれないね。 オレは小細工しなくても満足に制御できるけどそこは企業ヒミツということにしとくね。 他の人が相手してくれるといいね がんばれ〜
>>239 >>228 ちゃんと読んだ?
もともとついてるモーター使ってるんなら
PWMがちゃんと動いてない以外に理由は思いつかんですよ
そのうえLEDもPWMでうまく駆動できてないんじゃあ
PWMがダメとほぼ断定できる
鉄道模型で「常点灯」と呼ばれているものは、モーターが停止していてもライト(LED)が点灯するけど、 これにはPWMのパワーパックが必要になる。 LEDは3V程度で点灯するけど、抵抗やCRDなどで電流を制限するから、明るさは12Vかけても電球ほどは変わらない。 それはそれとしてPWMを使っても車両の速度制御はちゃんとできるから、制御できてないのはPWMのせいだろう。
247 :
774ワット発電中さん :2015/01/23(金) 23:52:57.30 ID:4Bt7TyX9
>>216 ダイオードは付けた?
あと、普通のモーターだと、PWMで発生トルクは制御できるが、
センサーで回転数検出してフィードバックかけないと、回転数を
直接コントロールする事は出来ない。
>>248 鉄摸じゃ普通。動力と電源分離できないから。
模型の人は電気の知識少ないからねぇ
>>247 > ダイオードは付けた?
逆回転も狙ってるんでダイオードはつけてない。
>>243 > オレは小細工しなくても満足に制御できるけどそこは企業ヒミツということにしとくね。
ホントはできないんじゃないの?
>>253 もうPWMはクソだってことでやめちゃいなよ。
オシロとか買う気ないんでしょ?
やめちゃえよ、そのほうが君のためだよ。
トラブルの原因を正確につかめない人は、違う方式に逃げても成功しないんだな。 そういう奴を何人も見ている。
みなさんに生意気な質問。ボリューム一個、pic、LED、これだけでPWMを使って ボリュームの回転に応じて0%から100%のLEDの明るさを調節できましたか?
>>255 オシロ買わないとだめなのかな。20khzぐらいまでなら音声ソフトで確認できるんだけど。
誰か相手してやってくれ 俺は御免だ。レベル低すぎる。
>>260 すぐそうやって逃げるんだよな。素人を説得できてこそ玄人なんだけどね。それにここは初心者のスレでないんかい?
己の知識の範囲内で、できることをやればいい。 笑われてもいい。できないよりいい。
質問する人は最近なまいきだとかの書き込み時々みるけど、質問する人もつらいんだよ。 なぜって質問すること自体自分の弱点、習得レベルを晒してるわけでけなされても耐えるしかない。 タダで知識を得ようとしている下衆野朗なわけでさ、つらいとこ。 その点回答者は自分のことを一切秘密にして、極端な話が何も知らなくても 「データ読め」、「このサイト読め」 でいいんだもん、ズリーよな。 なーんてな。 マジメな回答者は気分悪いだろうとは思うけど、ゴメン。 いずれにせよ、サッカー負けたし、人質が開放されるかどうか、というときPWMなんて平和ですわな。 寝ます!
電圧計使え
>>266 LEDの電流制限ができないから無理。
VRで電流変えて、自動で明るさ変えればいいか。
あぁ、電源と配線もいるからやっぱ無理だわ
PWMの前にADでバカやってるのでは? ソフトウェアで強制的に0-100を数秒かけて変化させてみれば切り分けできる
本当はちゃんとできてて、目のほうがクリップしてるかもね
>>256 何をもって100%と言うかにのよるが
うまくパーツを選べば可能
制御周期1000μs固定で 点灯時間を1μs〜1000μsで1000段階出来るんじゃねーの?
PIC直結でも壊れないLEDが多いしね
というよりPICのポート駆動力は業界最弱レベルだから壊そうとしてもムリ
最近仕事でマイコン扱うことになったんだけど 入出力ピンの機能でプルアップ抵抗に設定してるのに、基板上でさらにチップ抵抗や抵抗アレイつけたりしてるのはどうしてなん? マイコンの中でプルアップしてるんだったらそれでいいんじゃないの?
>>277 パッと思い付く範囲ではweak pull upが
・信用できないから
・有効になるまで待てないから
・弱すぎるから
あたりじゃね?
電源入った瞬間からプルアップされてなあかんとかの事情があるのでは
>486 : 774ワット発電中さん : sage : 2015/01/24(土) 19:02:38.41 ID:BMxetASV >最近仕事でマイコン扱うことになったんだけど >入出力ピンの機能でプルアップ抵抗に設定してるのに、基板上でさらにチップ抵抗や抵抗アレイつけたりしてるのはどうしてなん? >マイコンの中でプルアップしてるんだったらそれでいいんじゃないの?
282 :
774ワット発電中さん :2015/01/24(土) 20:05:47.46 ID:T5dX4z69
>>276 普通のLEDは1mAも流せば十分光るだろ?
大光量のだったら、昇圧レギュレーターでも組まないと効率悪いし。
16SEGのLED並べてメッセージボード作って、シリアルでパソコンから文字を送れるように したんけど、自作のハードがパソコンと繋がって情報をやり取りしているの言うのは妙な感動が有るなぁW Lチカも良いけど、通信ものが出来るようになると夢も広がりまくりなのです。
USBでPCからHIDデバイスとしてアクセスでしょ
>>276 やっぱりそうだよね…。
後閑氏の「25mAは画期的!!!」って時代遅れの言にすっかり騙されてた…。
適材適所。 馬鹿よりはPICの方が圧倒的に使い道がある。
マイコンの共通グランドに1mAだってできれば流したくはないな
>>287 ン?
GMDどって電気がループしてるものだから「8V→PIC→GMD→8V」ってループしてる
ものだからPICの消費電気分は必ずGMDに電気が流れるでしょ
いや、本質的には >288 の言ってることは正しい
GMD…。
>>286 5V耐圧品も有るしな。
3.3Vだと、白色LED点けるには余裕がない。
8V…
モーター制御向けのPICが用意されてるのに無理とか・・・
>>295 なに、 ブラシレスモーター専用なの?
で、普通のやつはどうしてんだろ。
PWMだよ
>>298 なんか参考になるいいサイトある?おれもしりたい。
どんな制御をしたいかによる。 回転数やトルクならPWMだけだが、位相とか回転角とか言い出すとフィードバックが必要になる。
>>300 なるほど。簡単ではないということだね。
302 :
774ワット発電中さん :2015/01/25(日) 22:43:53.12 ID:rWjpdQcZ
PWMなんかにも使えるレジスタ用意されてんべ(´・ω・`)
横から質問です
>>281 のをやってみたんですが
半固定抵抗の範囲とLEDの光り方の強弱が合ってないというか
強弱は範囲のほんの一部だけになります
これは何に問題があるんでしょう
プログラム?
人の目の見え方?
テスターで電圧計ってみて動作が正しいならそれが人の目の特性 感覚器ってのは対数特性持ってるから大雑把に言うと10分の1の強さになったら半分になったように感じる デジカメの中の人の苦労を少しは知ってください
305 :
774ワット発電中さん :2015/01/26(月) 18:16:23.04 ID:UMqRHOiH
>>303 >>281 のプログラムは見ていないけど、
抵抗値(AD入力値)とLED点灯時間のテーブルを作る、というのはどうだろ。
どんな特性曲線でも追随できる。
LEDなら16段階あるいは32段階もあれば十分だと思う。
307 :
303 :2015/01/26(月) 21:34:02.91 ID:1MSC+QzA
>>281 のリンク先のプログラムがおかしかったようです。
PR2 = 124の設定でTimer2を動かしてるんですが、
CCPR1Lに入れる値がAD変換後のMAXで255となる設定なので、
半固定抵抗を半分回したところでデューティー比が100%になっちゃってました。
プログラムを直したら 半固定抵抗のぐリぐりとLEDの明るさ加減が ほぼ対応するようになりました。
MPLABを始めて間もない初心者ですが、教えて下さい。 MPLABに出てくる「ワークスペース」がわかりません。 少し調べたところだと、 ・プロジェクトとは、 今回のプログラム作成に必要な「物」が関連づけされたファイルだと理解しました。 一般に、アプリによってプロジェクト名でフォルダが作成されるものも、あるようです。 ・ワークスペース これがわかりません。 言葉をそのままに受けると、コンパイルや、処理に必要な領域やフォルダーのように感じます。 しかし、実際には「フォルダー」ではなくて「ファイル」のようです。 中身をテキストエディタで開いても、文字化けするファイルです。 MPLAB IDEの「ファイル」メニューの中には 「最近開いたプロジェクト」と同じレベルで 「最近使ったワークスペース」が選択できるようになっています。 アイコンもプロジェクトと似た図柄になっていて、いかにも「重要そう」です。 ワークスペースというのは、プロジェクトと同じくらい「しょっちゅう触るもの」なのでしょうか? あと、1つ教えて下さい。 プログラム途中で「1区切りだから、バックアップしておこう」というとき、 フォルダー全体を、どこかにcopyしておけば、後で戻れると思います。 しかし、そのたびにWindowsに戻って、ファイル操作でコピーするのも面倒です。 MPLABのメニューで、現在のフォルダ丸ごとバックアップできる機能はありますでしょうか? よろしくお願いします。
2点Qです MSSPx1のPICで、SPIとI2Cを任意のタイミング(同時に通信はしない)で通信したいのですが、 それぞれ規定の手順で初期化→アクセスという流れでやれば問題ないものですか? それぞれ接続するのはセンサなのですが、使わない方のVCCは切っておくような配線をしたほうが いいんですか?
>>310 PiCの方は問題ないだろうけどどうしても共用したいなら問題ないように
考えるしかないでしょ。
センサの電源を切るのは入力保護ダイオードに電流が流れて多分問題がある。
>>310 マスターからしか通信開始出来ないから、PICをマスターにすればいい。
PICは初めてなのですが、PICのアーキテクスチャについて教えてください 4bitのパラレル通信もどきの実装を考えています RB0: D1 RB1: D0 RB2: D3 RB3: D2 RB4: CLK こんな感じで信号はすべて入力です。CLKエッジでDATAの状態を読み取ります DATAはきれいにD0〜D3が並んでいません。これは回避不可な前提条件です 続きます
C言語で普通に実装するなら D0 = PORTBbits.RB1; D1 = PORTBbits.RB0; D2 = PORTBbits.RB3; D3 = PORTBbits.RB2; このように書くだけだと認識していますが、どこかで「PICは1つのポートの状態 を読み込むのに、内部では結局RB0:7を一旦全部読んでいる」というのを見たような 気がしています もしそうなら、前述のように1ポートずつ読み込むのは処理速度面で非常に不利なんでしょうか? あるいはポートの状態を頻繁に読み書きすることを考慮して、1ポートの状態読み込みは実は 1clock(1/4Fosc)で実行できたりするんでしょうか? あるいは、一旦 DATA = PORTB; とかでBポートをBYTE変数に読んだ後に、そのBYTE変数に対して BITの0/1をチェックしたほうが処理速度面では有利なんでしょうか?
ビット操作がリードモディファイライトだから 連続で操作するなって注意書きをどっかで見た希ガス
>>314 >前述のように1ポートずつ読み込むのは処理速度面で非常に不利なんでしょうか?
これはその通りだね
>あるいは、一旦 DATA = PORTB; とかでBポートをBYTE変数に読んだ後に、そのBYTE変数に対して
>BITの0/1をチェックしたほうが処理速度面では有利なんでしょうか?
ビットをチェックするだけなら直接チェックした方が早い
何と比べて「非常に不利」だと思うのかがちとワカラン つうか、速度気にするならCで書かない方がイイよ パラレルのクロックを割り込み線にわりあてて 割り込み処理内で ;TEMP : 狩りに使うどっかのファイルレジスタ ;HOGE : データを組み立てるファイルレジスタ movf PORTB,W movwf TEMP clrf HOGE rrf TEMP,F ; D1がキャリーにセット btfsc STATUS,C bsf HOGE,1 ;D1=1 rrf TEMP,F ; D0がキャリーにセット btfsc STATUS,C bsf HOGE,0 ;D0=1 rrf TEMP,F ; D3がキャリーにセット btfsc STATUS,C bsf HOGE,3 ;D3=1 rrf TEMP,F ; D2がキャリーにセット btfsc STATUS,C bsf HOGE,2 ;D2=1 みたいに読みだせば?
btfsc TEMP,0 bsf HOGE,1 ;D1=1 btfsc TEMP,1 bsf HOGE,0 ;D0=1 以下略 右シフトしなくてもこれでいいんじゃ?
>>314 >前述のように1ポートずつ読み込むのは処理速度面で非常に不利なんでしょうか?
1ポートとは、8bitとか、束になっている状態を言いますので、
この場合は、1bitずつ、とか、RA0ピンとか言います。
速度で有利/不利の前に、1ピンずつ取り込んでいては、途中でデータが変わってしまいませんか?
たぶん、取り込んでからbitの並び替えをするのでしょうから、
毎回Bポート全部を取り込んで、CLKの↑変化時の、データを正とするべきと思います。
unsigned char d0, d1, CLK0, CLK1, Data;
d0 = PORTB; //まずは全bit同時に取り込む
CLK0 = ( (PORTB & 0b00010000) != 0)? 1 : 0; // 今回のclockを切り出して
if( (CLK1==0) && (CLK0==1) ) begin // 今回がclockの↑なら
Data = 0; // 答えを0にして
if(d0 & 0b00000010) != 0){ Data += 1; } // 各bitを評価して、値を足す
if(d0 & 0b00000001) != 0){ Data += 2; }
if(d0 & 0b00001000) != 0){ Data += 4; }
if(d0 & 0b00000100) != 0){ Data += 8; }
}
CLK1 = CLK0; // 次回用に更新
d1 = d0;
4bit程度なら、初めからテープルに登録しても良いと思う。
321 :
310 :2015/01/27(火) 18:22:30.01 ID:JaDENOnu
クロックに同期して読み込めば途中でデータが変わる事なんてありえない。 途中でデータが書き換わるのはタイミング設計出来てないだけの話だし、そんな状況なら 一度に読んだ所で、正しいデータの保証は無い。
わかってないなら口挟むなよ 正しいデータが読める事が保証されている時間内で処理を終えるにはどうすればいい?って話だろ
>>323 >正しいデータが読める事が保証されている時間内で処理を終えるにはどうすればいい?って話だろ
誰wもwそwんwなw話wはwしwてwいwなwいwwwwww
リアル基地外は口と鼻閉じてろよwwwwwww
草生やした時点で負けな件
>>323 >正しいデータが読める事が保証されている時間内で処理を終えるにはどうすればいい?って話だろ
頭大丈夫かw
正しいデータが読めることが保障されてる時間内ならどうやったって正しいデータが読める。
ポートから直接読んだ最短時間と、一度メモリに取り込んで、後で並び替えるのと、どっちが早いか自明だろ。
いちいち余計な事をする後者の方が、当たり前のように速度が遅い。
>>323 ドヤ顔してしゃしゃり出た癖に、もう負けたのwwwwwwwwwwwww
>>326 >ポートから直接読んだ最短時間と、一度メモリに取り込んで、後で並び替えるのと、どっちが早いか自明だろ。
質問者はまさにそれを質問してるわけだが。
説明も無くドヤ顔で自明だろとか言われてもwww
しかも
>いちいち余計な事をする後者の方が、当たり前のように速度が遅い。
はい残念!そんなことはありませんwwww
もちっと勉強して出直してきてねwwww
>>329 ほんとの池沼だったか。
実際にコーディングしてみればわかるよ。
あ゛無理かw
>>319 >1ポートとは、8bitとか、束になっている状態を言いますので、
しったかすんなよ。1ビットでもポートで問題ない。
初心者でも書ける返しで勝ったつもりなんて
326はバスに出力されるデータが、次のCLKのエッジが来る瞬間まで有効になっているユートピアの住人なんだよ。そっとしておけ
見苦しいw
PICの達人はアフォばっかり。PICの勉強する前に人生の勉強すべきだったな。
自分で作った送信側なら、なんでもありだけども、 クロックの↑時点で、一括で取り込むほうが良いと思うけど。
>>336 言いか悪いかは条件による。送信も自分で作るかは本人しかわからないが
いずれにしても速度的には直接読んだ方が早い。
>>333 どうでもいいがアンカーくらいちゃんと打ってくれよ
スクロールすんのめんどくせえんだ
自演がばれない様に涙ぐましい努力をしてるんだよw
超初心者です。質問お願いします。 リセットICをMCLRに配線したPIC回路を、PICKit3を使って書き込みたいです。 リセットICは、マイクロチップのMCP120-300という物で、VFF, /RESET, GND の3本足で 3.0Vが閾値の負論理出力、open drainです。現在は、/RESETをMCLRに直結し、10kでPull-upしています。 ここで問題だと思うのは、プログラム書込時はPICKit3からVppとして+12Vが入ってきますが、 リセットICのVdd(max)が5.5Vなことです。 この5.5Vは、Vdd(max)のことであり、/RESET出力のoff時電圧ではないので、いいのかな? と思うのですが、データシートからも見つかりません。 PICKit3からの+12Vは、マイコン電源の3.3Vには、10kが入っているので問題なく、PIC自体も12Vは問題なく、 あとは、リセットICのopen drainの耐圧だけなのですが。 質問です。 このままの状態でPICKit3を繋いでも良いのでしょうか? 宜しくお願いします。
× VFF, /RESET, GND の3本足で ○ VDD, /RESET, GND の3本足で
>>337 「直接読む」って何言ってんのかよく分からないんだけど。
DATA = PORTB;
で一旦PortBの状態を一括して変数(メモリ)に読み込んだ後、ビット操作を駆使
してRB0〜RB7の状態をチェックする方法に対して
D0 = PORTBbits.RB1;
D1 = PORTBbits.RB0;
D2 = PORTBbits.RB3;
:
こんな感じで実装する方法のほうが早いって言ってる?そういってる?
>>341 >データシートからも見つかりません。
データシートにはっきり書いてあるよ
>All inputs and outputs w.r.t. VSS .....-0.6V to VDD +1.0V
つまりそのままICSPはできないということ。
ジャンパを設けてICSP時は切り離すといった処置が必要。
>ジャンパを設けてICSP時は切り離すといった処置が必要。 世の中の基板はみんなそうしているのだろうか。なんか面倒くさい。 リセットICの出力で2SC1815を駆動すれば、Vce=50Vになると思うがどうだろうか。
346 :
natu :2015/01/29(木) 10:03:28.80 ID:EqouYVzC
>>341 /RESETのPull-upを1Kにして、そこからMCLRまで3.3Kを直列に入れると言うのは、どうだろうか?
>>346 なるほど、頭いいですね。
7Vを3.3kに負担してもらう、ですね。
>>346 なるほど、さすがですね。
/RESETは、5.3Vになる、というわけですね。
349 :
natu :2015/01/29(木) 19:02:08.04 ID:EqouYVzC
プルアップからの分圧になるので抵抗値は、間違ってる orz
350 :
774ワット発電中さん :2015/01/29(木) 19:32:42.03 ID:+QVG9mYN
>>349 >プルアップからの分圧になるので抵抗値は、間違ってる orz
いや、合ってると思う。
3.3V----1k----(/RESET)----3.3k----(MCLR)-----12Vなので、
V(/RESET) = 3.3V + (12-3.3)*(1k/(1k+3.3k)) = 5.32V
>>351 VDD=3.3Vで使っているので4.3V以下にしないといけないですね
>All inputs and outputs w.r.t. VSS .....-0.6V to VDD +1.0V
>>341 余計なことを思いついた
Vpp=+12Vということは古い品種だと思うんだけど、古い品種では
VDD=3.3Vで動作はしてもプログラムの書き込み時はVDD=5Vにしな
いと消去/書き込みできないと思うけどそれは大丈夫なのかな?
354 :
774ワット発電中さん :2015/01/30(金) 15:13:19.70 ID:cE0buzBD
すみません質問させて頂きます。 割り込みルーチンの処理時間がかかる場合、割り込みフラグのクリアは ルーチンの先頭と末尾のどちらに置けばいいのでしょうか? よろしくお願いします。
処理中に発生した割込を無視したければ先頭、処理したければ末尾
356 :
355 :2015/01/30(金) 15:22:03.79 ID:sS2JIDz/
逆だったorz
357 :
354 :2015/01/30(金) 19:08:15.84 ID:vPEkIham
>>356 回答ありがとうございます。
自分でも色々と試してみます。
どうもありがとうございました。
>>354 8bitPICなら、多重割り込み無理だから、どっちでも同じ。
制約はあるが、工夫すれば多重割り込みっぽい処理はできる。 C使う人には無理なのかな。
>>358 先頭でクリアしておくと、処理中に割り込みが来た場合、処理が終わったらすぐ次の割り込みがかかるんじゃね?
最後だと、処理中に来た割り込みを無視する事になるっていう違いがありそうな気がする
割り込み処理時間と要因発生間隔はそれぞれ何nsかをまず書け
362 :
310 :2015/01/31(土) 00:48:06.84 ID:OKRryT9P
><重要> > 回答者のほとんどは、質問をおかずに「オレすごいんだぜ」と言いたいだけなので、 > 軽くあしらってればOK ナイスなテンプレw
質問者の殆どは、データシートも読まずに聞けば教えてくれると思ってるユトリなので 軽くあしらってればOK
確かに良いテンプレだw
>>360 割り込みからのリターン命令実行時に、全体の割り込み禁止が解除される。
後、クリアするのは、割り込みが発生したことを示すフラグに過ぎない。
PLCって何? シーケンサーのことでしょうか?
プログラマブルロジックコントローラ(programmable logic controller、PLC)は、 一般的にシーケンサ(三菱電機の商品名であるが登録商標ではない)とも呼ばれる。
370 :
774ワット発電中さん :2015/01/31(土) 21:44:55.74 ID:GYdwKSBt
うわつまんねー
>>1 ペリフェラル・インターフェイス・コントローラ
(Peripheral Interface Controller、PIC)は、
マイクロチップ・テクノロジー社(Microchip Technology Inc.)が
製造しているマイクロコントローラ(制御用IC)製品群の総称である。
PICもアーキテクチャ無茶苦茶だからPLCが載ったPICが出ればここで良いよ
>>373 古いアーキテクチャだから、信頼性は高い。
人は機械の都合に合せる 昔からそう これからもそう
>>373 CPLDが載ったPICってなかったっけ?
RSラッチに入力できる(セット・リセットと認識される) 最少パルス幅か、入力から出力までの遅れ時間って決まっていないのでしょうか? データーシートにはどうもそれらしい記載がなく。。 ソフト制御で2Toscのパルスを発生するとあるので、 2/動作周波数Max までなら大丈夫、という認識で良いのでしょうか
>>378 過去の話題の継続?
それとも突然の話?
後者だとしたら、話の内容が唐突すぎて、何がなんだか訳がわからない。
あのお方がわからないと仰ってるからには質問者に非があると言わざるを得ませんな
>>378 PICの用語としてはSR LATCHですね
18F26K22は使ってるけどそんな機能もあったな程度の認識ですが
データシートを見るとタイミング的な仕様はまったく記載されて
ないですね。
内部でタイミングを発生させる分には問題ないんだろうけどSRI
から外部入力の場合はで最小100nsということになるのかな。
なにも保証はないけど。
アプリケーションノートもないしあまり力を入れてないのかな。
382 :
774ワット発電中さん :2015/02/05(木) 22:40:23.60 ID:3P32h5Ij
PICKITから焦げ臭い匂いがする
リコールを要求しろ
ピックのリセットについて教えてください ピックが起動した後にRB0に繋がってるボタンを押したらピックを再起動 させたいのですが、その際に初期化処理内でRB1の出力を1にしたいんです。 パワーONリセット時はRB1の出力は0です リセット原因が反映されているコンフィグレジスタを使用せずに、このような ことは可能でしょうか?(WDTは本当にWDTとして使っているので、WDT のカウントオーバーフローを条件にする事は出来ないんです)
>>384 PICの型番は何ですか?
reset命令を持っているものとそれ以外では話が全く変ってくる。
reset命令を持っているものであれば、resetしたらPCONレジスタのRIビットが0なので判断できる
reset命令を持っていないものは、そもそもハードウェアリセットをソフトウェアで引き起こすことができないから
必要な範囲で可能な限りFSRを初期値に戻して0番地へジャンプするぐらいしかできない。
この場合だと、ハードウェアリセットとの何らかの差異を検出できれば良い訳だから、FSRで
何に設定されていても問題ないようなものを初期値から変えておけば良い。
たとえばTRISレジスタはハードリセットされたら全ビット1になってるはず。
BR1を出力に使っているなら、TRISBのBR1を0にセットしてるはずですよね?
だったら、リセット前の初期値に戻す処理で、わざとTRISBを0xFFに戻さないようにしておいて
初期化処理でTRISBをセットする前に読んでみて0xFFになっていればハードリセット
0xFF以外ならソフトウェアでリセットしたものと判断できる。
とある機械の内部ケーブルの熱収縮チューブの中に 本体ほとんど削って7mm角くらいになったPICらしきチップが埋め込まれてました。 おっかねぇなぁこんなの気が付かねぇよ…
>>385 >reset命令を持っていないものは、そもそもハードウェアリセットをソフトウェアで引き起こすことができないから
℃素人乙
>>384 PICってリセットされるとハードでメモリクリアされるんだっけ?
質問お願いします。 センサーの電圧変化を、PICのADコンバーターで読み取りたいのですが、 そのセンサーの電圧変化の幅が、12Vから9V程度しか変化しない場合、直結するのは定格が5VのPICだと無理だと思いますが 抵抗器などを使い、部品が最小限で済む一番簡単な方法を教えてください よろしくお願いします。
>>391 センサー---10k抵抗---PICのAD---4.7k抵抗---GND
5V--4.7k抵抗--Vref- ---4.7k抵抗---GND
ただしセンサーの出力電流による。抵抗値はいい加減なので計算してね。
393 :
391 :2015/02/06(金) 13:35:10.45 ID:698pYCF8
>>392 回答ありがとうございます
是非トライしてみます
>>389 8本
もともと18本のを削り倒して8本にして使ってた
>>390 その熱収縮チューブの中にチップが入っているのと
入っていないやつがあって、
外見からは見分けが全くできない。
100セットぐらい割って4つ出てきた。すべて同じもの。だったよ。
395 :
natu :2015/02/06(金) 16:46:38.43 ID:BLK2LhsY
パチンコ?かな
>>385 回答ありがとうございます!
調べて見たら使う予定のピックにはリセット命令がありました!
最初は外部制御のリセット発生機構システムを取り付けようかと思っていたんですが
リセット命令で対応出来そうなのでリセット命令で対応したいと思います!
調べて見たら使う予定のピックにはリセット命令がありました! ↓ 調べて見たら使う予定のピックはリセット命令を持っていました!
ゴト氏おそろし
>>386 >本体ほとんど削って7mm角くらいになった
ものがPICだとわかるあんたはすごい
モスバーガーみたいなマークが残っていたのかな
>>399 アシ延長してリーダに掛けた。
アサインからPICと判明したのだ。
ちなみにノーマルであるはずの本体に謎PICからの信号が入るとありえない動作を
>>391 オペアンプを利用して、電圧をシフトさせる
404 :
774ワット発電中さん :2015/02/07(土) 23:50:39.51 ID:8TitKw3m
マイコンを始めたばかりの初心者ですが、教えてください。 MPLAB IDE 8.92とXC16でプログラムをしています。 MPLABのProject->BuildOption->main.c->XC16->Generalのページに、 □USE 64bit double というチェックBOXがあります。 現在は、チェックなしで使っていますが、 チェックがしていない時は、doubleは内部は32bitになっているということでしょうか? もう一つ教えてください。 if()や=などで、左辺右辺の型を知りたいとき、 変数の宣言部をいちいち見なければなりません。 マウスポインタを変数名の上に持っていって右クリックすると、 記述した変数が、charか、intか、long intか....など、表示するには、 どのようにすればよいでしょうか? あるいは、一度コンパイルすると、○○ファイルに変数名と型のリストが生成される、 とかありますでしょうか? やはり、地道に変数名にf_aaaとか ul_bbbとか、書くしかないのでしょうか? 宜しくお願いします。
405 :
774ワット発電中さん :2015/02/08(日) 00:36:14.05 ID:S8wjdYqj
連投申し訳ありません。 もう一つ質問させてください。 PIC24FJで、UART送信割り込みを使って、RS232Cの出力を作製しているのですが、 2文字目以降で文字化けが出てしまいました。 寺タームでは正しく文字表示されるのですが、別のRS232C機器では、FEが出てしまいます。 手持ちのオシロで波形を観察したら、stop bitが1bit分より短く0.7bit分くらいしかありませんでした。 UARTの設定で、2 stop bitにしたら、1.0bit分追加されたようで、1.7bit分のstopbit期間になり、 正しく動作するようになりました。 質問ですが、 1. stop bitの時間が1bitより短くなってしまいますが、そういうものなのでしょうか? MIcrochipのバグではないと思いますが、1bit分無くてもよいのでしょうか? 2. stop bit の長さには、1, 1.5, 2 bit などがありますが、 これは、なぜ設けられたのでしょうか? 受信側の機器にバッファが無くて、次の文字を受けるまでに時間がかかるため、 送り側で文字間を空けて送ってやる、という経緯でしょうか? 入門者の変な質問ですみません。宜しくお願いいたします。
406 :
774ワット発電中さん :2015/02/08(日) 00:53:07.92 ID:S8wjdYqj
>>391 センサーの出力電流が多少流せて、OP AMPより精度が少し悪くても良いなら、
ツェナーダイオードによる引き算が使えるよ。
・センサー出力---------(A)ツェナ(K)-----(1)-----PIC A/D入力ピン
・(1)-----抵抗-----GND
8Vツェナを使うと8V引き算されて、[12V〜9V] → [4V〜1V]となる。
抵抗は、だいたい1mA〜5mA程度流れるような値を使う。
8Vツェナーなら、8V/4mA=2.2kΩくらいを使う。
>>405 8倍か16倍のクロックから作っているので0.7bitということはな
いと思う。
ボーレートはどれくらいですか。ドライバがスピードに追い付い
てないということはないかな。
ストップビットが1.5とか2というのは受信側が機械式だった頃の
名残じゃないかな。
>>405 > stop bit の長さには、1, 1.5, 2 bit などがありますが
1, 1.5, 2以外には無いと思ってるんだけど。
ストップビット長が1bit時間の場合、クロックのずれでストップビットを読む時点で0.5bit時間ずれてると、
次のスタートビットを読むまでの猶予がゼロになる。
だからちょっと余裕をもたせようってので+0.5、切りが悪いから+1。
だと理解している。
409 :
774ワット発電中さん :2015/02/08(日) 02:41:40.41 ID:S8wjdYqj
>>407-408 さっそくのご指導、ありがとうございました。
内蔵のUARTは、仰るとおり16倍のclockで動作していると思います。
なので変だなぁと思っていました。
でも、最近のUART(受信側)は、エッジで判定しているとしたら、0.2bitもあれば良いのかな、
とも思って質問しました。
実際の波形を添付します。通信速度は、57600です。
stop bitの長短は、U1MODEbits.STSELの1/0にて行いました。
短いstop bit
http://img.wazamono.jp/pc/src/1423329873391.png 長いstop bit
http://img.wazamono.jp/pc/src/1423329893187.png ちょうどトリガー点から4div(160us)のところがstop bitの立ち上がりの点です。
0.7bitは言い過ぎで、0.76bit程度でした。
printf()で、50文字くらい連続で送っているのですが、
PIC24Fの場合、UARTの送信待機Bufferが3byteあり、UARTの判断で
次々と送信してしまうので、stop bitの隙間を、ソフトで調整することができませんでしたので、
stop bit設定で、2stop bitにしました。
もっとも、送信シフトレジスタと送信bufferから全部無くなる時間+1bit分まつような
プログラムを書けば良いと思うのですが、何せ初めてやるので、わかりません。
というか、タイマーやA/Dなどの割り込みブログラムの作製が忙しくて、できないのです。
>>409 まずUARTは1ストップビットで連続送信しても問題ないシステムなので
そこは考えなくていいでしょう。
フレーミングエラーがでるのはストップビットの中心と考えられる位置
がスペースになっているからです。
UARTの受信はスタートビットの立ち下がりから0.5ビット後をビットの
中心とみなし、以降1ビットずつタイミングをずらしてサンプリングし
ます。だから約0.5ビット近く(47%)波形が歪んでも受信できることに
なります。
エラーの原因としてはドライバレシーバによる波形歪みとスピード偏差
が考えられます。波形歪みが47%に対して、スピード偏差はスタートビ
ットの立ち下がりからストップビットの中心まで9.5ビットあるため
9.5倍で効いてくるので5%くらい。受信側にも偏差を許せば2.5%以内
にすべきです。
1枚目の波形を見ると1バイト目のストップビットの立ち上がりまで160us
ということだと156.25usに対して2.34%の誤差で56250bpsということに
なりますが、2バイト目までの時間を計ると合っているようにも見えて
はっきりしないです。
クロックは内部発振器なのか水晶なのか、計算上のボーレート誤差は
いくつでしょうか。
波形の歪みはドライバの入力と出力を2現象で見ればはっきりすると
思います。
>>410 わけがわかっていない私にも、親切にありがとうございます。
>クロックは内部発振器なのか水晶なのか、計算上のボーレート誤差は
原振は、16MHzの水晶をHCU04で発振、もう1段U04でbufferして、入力しています。
内部PLLで5逓倍して80MHz, FCYですので、40MHzです。
BRGH=1ですので、40_000_000 / ( 4 * 57600 ) - 1 = 172.6 → 173、 +0.23%です。
PIC出力ピン-------(点a)--> ADM3202 -------(点b)--> 相手機器 という構成で、
昨日の波形は、(b)の点ですので、明日a,bの波形を同時に観測してみます。
懸念しているのは、ADM3202---->相手機器の間が、多芯ケーブル1m程度とは言え
容量になるので、ADMの出力インピーダンスが対象でないと、パルスの幅が変化してしまうかも? です。
波形の歪みはドライバの入力と出力を2現象で見ればはっきりすると
思います。
412 :
774ワット発電中さん :2015/02/09(月) 11:56:08.72 ID:PzB29FJK
>>412 強制するつもりはないんですが2ストップビットにするのは根本的な
解決にはなっていないので当面正常に動いてるように見えても、問題
を放置すると後からトラブルの原因になるかも知れません。
ボーレートとドライバの波形歪に問題ないようですね。
PICのUARTのバグとは考えにくいので、やはり使い方の問題と
考えるべきでしょう。
1つ気になったのは1バイト送る毎にUARTを初期設定してるような
動作に見えることです。
UARTは1度初期設定したら割り込みを使わない場合、UTXBFビット
を見て0ならひたすらTXREGに書き込むだけでいいのですが、なに
か余計なことをしてませんか。
具体的にはTRMTビットが1になるのを待ってUTXENを0にするとか
ですけど。
質問させてください。 PIC24FJ64GB002でSPIモジュールをマスターで使い、EEPROMの25LC640を使いたいのですが、 SPIモジュールを初めて使うので使い方が良くわかりません。 質問1 EEPROMへのアクセスは、 MOSI : 8bitコマンド → 16bitアドレス MISO : 8bitデータ にしたいです。 PICのSPIモジュールの設定に、16bitモードか8bitモードかの設定があります。 この16bitとか8bitというのは、何の事を言っているのでしょうか? 質問2 今回の場合は、16と8のどちらの設定にするのでしょうか? 質問3 SS信号(チップセレクト)出力の設定が、スレーブのときしかないのですが、 マスターのときは、どのようにセットするのでしょうか?
>>414 >質問3
>マスターのときは、どのようにセットするのでしょうか?
たぶん、
交信前に自分でSS=Lにして、交信後自分でSS=Hにする、ではないかと思う。
416 :
310 :2015/02/10(火) 16:55:22.58 ID:WJg7Itz2
コンパイラが何かしらんけど、XCのライブラリに25LC256用のコードがあったからサンプルにしてみては
PICがマスターならSSは未接続でいいはず。
>>415 が言ってるのはCSのことかと
PICのデータシートをにらめっこしたらわかるけど、SS=Slave Selectだからデバイス側のデータシートのCS(CSB)とは
別もんやで
初めてSPI接続のSCP1000を使った時に悩んだ記憶があるw
>>415-416 >>414 です。どうもありがとうございます。
マイクロチップのホームページから、25LC256のサンプルをダウンロードしました。
ほぼそのまま動くソースで、大変助かりました。どうもありがとうございます。
25LCのCSピンを下げてから通信し、終わったら上げるのも、このサンプルに書いてありました。
やはり、
>>415 のお話の通り自分でポートを上げ下げしていました。
EEPROM( 0x1234, 0x12 ); とかやると、SPIモジュールがCS↓から全部やってくれる
と思っていましたら、違うようでした。もっとソースを読み込もうと思います。
ありがとうございました。
>>417 /SS はスレーブ動作の時にだけ使う。
設定すると、Lowの時だけクロックを受け付ける。PICを含め、デバイスが並列に接続されてる時に必要。
マスターの時には、接続するデバイスの数だけ、CSが必要になるのて、特にきまったピンは無い。
12F1822で可変周波数のパルスを出したいのですが、 AN0から読み込んだ値に応じてDuty50%で周波数のみ変更したいと言った場合にCCPを使ってPR2レジスタのみ変更したらDutyも自動的に変わってしまいますよね? この場合、PR2の値を2で割ってCCPR1Lにセットするなどするのでしょうが、50%固定と言うことで分解能は1bitで充分な筈です。またこれだと余計に計算が必要になってしまいます。 それならばソフトでRA0をパタパタしても負荷としては大して変わらない気がしますが、内蔵モジュールの利点はなんでしょう? 使用周波数は30kHz〜250kHzくらいで精度はそこまで求められる用途ではなく内部クロックで使用します。
レジスタの値をセットするだけか、PWMのキャリア周波数でGPIOを その都度H/Lするのとではそれなりに違うと思いますが
>>419 PWMの汎用性が必要だから
NCO搭載チップ使ったほうが幸せかと
>>419 その用途ならNCOを持った品種を選ぶべきでしょう。
NCOは原理的にジッタがあるので用途によっては使えない場合もあるけど。
423 :
774ワット発電中さん :2015/02/11(水) 12:55:43.91 ID:VwcwtWBy
コンフィギュレーションビットとレジスタの違いってなんですか?
>>419 PWMモジュールはPWMをするときに便利なのが利点。
周波数を変えたいときには便利でない。
425 :
774ワット発電中さん :2015/02/11(水) 16:32:50.40 ID:MIsLuavL
>周波数を変えたいときには便利でない。 そうでもない。目的次第。
外にF/Fを1個つけてDuty50%にする
質問あります。 MPLAB XではなくてMPLAB IDEで、 タイトルバーに表示されるファイル名をフルパス表示にするには、 どのようにすればよいでしょうか?
Xにしなさい
MPLAB IDEではフルパスはダメなのか?
交流の電流計をつくりたいんですが、どうゆうふうに作ったらいいんでしょうか、アドバイスお願いします。 電圧が高いんで面倒そうなんですが。 とりあえずは10bitのアナログ変換で7seg表示の温度計はつくったことがあります。
>>430 はかりたい電圧と電流、周波数はドレくらい?
6000vとか100Aとか5GHzとか幅2nsのパルスとかは
別スレでね。
>>431 AC100ボルト5Aから0.1A程度までです。
周波数は家庭電源です。
スレチ
AD変換とか必要だからここでいいと思うけど。
>>432 CTカレントトランスというものを使う。
くぐらせた線に流れる交流電流を図ることができる。
漏電ブレーカーの中などにも入っているが、10mA程度で数V出てくるので使いにくい。
ただどれは無付加時電圧なので、適当な抵抗をつないで電圧を下げればよい。
気を付けないと、数Aで数千V出てくるやつもあるので、抵抗は必ずつける。
あとは、その終端抵抗をADで読んで換算するだけでok。整流も忘れずに。
>>436 回答ありがとうございます。思った以上に面倒なんですね。自作は無理なのかな。
>>437 回路自体は部品数も少なく簡単で、探せば専用パーツもあるかもだし、パッチンコアで自作もできるかもしれない。気を付けるとこは付加抵抗の値と、整流素子の位置くらいのもので、あとはホゴダイオードでもいれて、PICのAD直でもなんとかなるだろ。
でもCTの動きを理解していないと無付加時の数千V数mAをくらうことになるかもね。基本的には1ターン対数十から数線ターンのトランスなんだけどね。
>>437 ワットチェッカーはもっと単純な仕組みで測ってるよ
直列に小さい抵抗入れればいいけど絶縁の仕方を理解できていないならやらない方がいい
>>439 ワットチェッカーはかなり複雑な回路が入ってるよ
他の市販の簡易チェッカーは電圧100V固定で仮定して計れるのは皮相電力オンリーってのもあるけどさ
PICのピンの図のSDAとかSDOとかCKとかありますよね? それの意味が一覧になって載ってるサイトとかありませんか?
443 :
前スレの674 :2015/02/15(日) 18:05:16.54 ID:TDK7azpC
>>443 書き込めてないね
ちゃんと書き込み時にPICに電源くわえてるぅ??
もうさ、いっそのこと >443 を救済するためのはんだづけカフェOFFでもやったら いいんじゃね? >443 も秋葉なら近いっぽいし
>>443 左側の縦列のボタンの上から2つめ、「POWER」を押した先の画面の下のほうに
"ICSP Options" ってのがあるだろ
そこの下側の
□ Power Target Circuit from Tool
にチェック入れるといいかもね(ただし、別途外部電源から電源を供給するような
回路になってるならチェック入れちゃだめ)
>>443 汎用的な知識だけど、海外製のツールを使用する場合はパス内に漢字がないほうがトラブルに遭遇しない
>>441 意味はのってないけど、PIC18F/LF1XK50の日本語データシートに、機能ごとに使うピンの一覧なら
ある。(P.5参照)
俺はこれを元に自分の使うPIC ごとにexcelでまとめてる
ぶっちゃけピンの説明なんか必要な時に調べりゃいいだけなんで、それよりもこのピンは何の機能で
使うのかがまとまってたほうがいいんで
>>447 デスクトップは片仮名なので、これもダメなのでしょうか?
>>449 外人さんがひらがなカタカナ漢字を知っててソフト的にも対応してくれてるんなら問題ないでしょ
でも漢字使いたいです フォルダ名なら良いでしょうか?
好きにしろよ
arduinoの5V出力でPICとLCDを動かしてたんですが、最近xbeeを購入してPICで動かそうと繋いだらPICもLCDも動作しなくなりました。xbeeを外すと普通に動きます。 電流不足でしょうか?
>>450 ていうかそんなことを気にしなくてすむためのUNICODEなのに
未だに対応していないソフトもどうなのかというキモする。
>>455 英語圏には何も利点がないどころか欠点の多いUnicodeをあえて使いたがる人は
少ないぞ
>>456 多言語化しやすいというメリットがある。
英語が母国語である自国内だけで使いたいのならメリットではないけどね。
外部オシレータを使うと単純に処理速度が上がると考えていいんでしょうか?
広義にはより自由なクロック設定が可能になるということでしょう
>>458 ・正確な周波数にできる(時計とか、周波数カウンタとか)
・動作周波数の上限に設定できる(物の寄っては内蔵clockでも可)
質問お願いします。 マイクロチップのPICマイコンの種類は、すごくたくさんあります。 { いろいろな周辺モジュールの有無 } × { メモリーの多い/少ない } × { 形状のいろいろ }などです。 なんでこんなにたくさんの種類を作っているのでしょうか? 全部盛りのメモリーたくさん × { 形状いろいろ } を作れば、少ない種類で、製造も管理も楽で 単価も抑えられるのではないでしょうか? それとも、某A社に作ったPICを型番を付けて一般に売り出しているとか。でしょうか
>>461 万単位で量産するなら、10円でも安い方が良い。
価格はパッケージサイズとチップ面積で決まるから、何でもかんでも入れると、高くなる。
メーカーの人間でもないのに回答不可能でしょw
でもRSとかchip1とかだと、メモリ倍増版のほうが安かったりする罠 というかPICに関してはメモリ半減版が全然安くないから積極的に選ぶ意味が無い
>>463 そんなこたあ分った上で質問してるとは思わないのか
思うけどあえて揚げ足取ってるのか
どっちにしてもアレだな
>>461 たしかに種類がおおすぎる。せめて業務用と趣味用とわけてほしい。10円安いだけってめんどうなだけ。
全部入りのPICを1種類だけにして、パッケージをいろいろにして、 種類の少ない大量生産をすれば、今よりコストが下がると思う。 何よりソースのひな形が1つで済むのは、メリット絶大。 ネットでの検索でも類似ソースより、ズバリソースがいっぱいになりそう。
(´・ω・`)そっかー
コストだけで収益が決まるわけじゃないでしょ 企業なんだから付加価値付けて稼がないといけないんだよ
この場合の付加価値って、何ですか?
周辺モジュールもメモリ容量も、客が余計に金を払うところは付加価値でしょう 全部入り一品種にしたとしよう あなただったらそれに幾らの値を付ける? 現ラインナップの高値に合わせると、そんな高機能は要らない客は逃げて安い他社品を買うでしょう 安値に合わせると利益がカツカツか赤字になってしまうでしょう 高機能品でも原価は大きく変わらないはず 客は物の原価ではなく機能に金を払っているのです
まあ、メモリ16KWORD版と32KWORD版は実は全く完全に同じラインで作られてて 16KWORD版はメモリ半分を殺してあるだけ、とかだろうし
dsPICのチップを内蔵して、DIP18pinで作って、PIC32F84とかで売ればいいと思う。
>470 なんでそれをMicrochipがやる必要があるわけ? それって既存のPICを一つだけ残して、他は全てディスコンにするってことだろ 今まで積み上げた信用も実績も全て失う愚かな行為だよ 大体そんな事で成功するなら、新興メーカーが新規にマイコン作って参入しても 大成功できるだろうね。 それと、一つ聞きたいんだけど 新しい機能を追加する場合はどうするの? a)毎回、既存品をディスコンにして機能追加した新製品のみ生産。 b)既存品はそのまま生産を続け機能追加した新製品も生産。 c)機能の追加はしない
>>477 まあ半導体の常套手段だよね。
それをしないと歩留まりが悪すぎて採算取れない
企業活動とか、メーカーのイロハについてあまり詳しくないようなので 学生さんなのかなと思う コストへの着眼は悪くないとは思うけど 上に皆さんが書いているように色んな事情があるので 今のようなラインナップになっているんですな
なんで秋月でこんなに多くの種類を置いているかだな。10円安いとかの業務用なら直で買うと思うんだな。 あとなんで低電圧で動くやつおいてないのか。あと、なぜ古いPICはバカ高いのか。
経済学を学ぼう
>>482 >あとなんで低電圧で動くやつおいてないのか。あと、なぜ古いPICはバカ高いのか。
買う人が少ないから。少量発注になるので仕入れも高いのでは
あと、ディスコンになったら需給の関係でプレミアが付くこともあるかもね
話の発端だった種類が多いってのには同意するんだけど、
機能とか容量とか型番に規則性とか法則ってあるのかな?
>>482 とりあえず早く社会人になって社会の仕組みを知ったほうがいいと思う
まあ秋月の価格は置いといても、PICの種類の多さは尋常じゃないね。 もっと整理整頓して、高機能チップを形状変えて売った方が、 製造も管理も楽になり、コスト削減になりますよね。
>>486 上にできない理由が書いてあるのに、振り出しに戻すなよ
>468 Microchipは16F84以降ディスコンをしない方針を貫いているんじゃないのかな 個人ユーザーにはあまり関係ないけど、企業なら多少値段があがっても10年後にも 入手できるってのは採用する際に重要な項目になる。 2,3年でディスコンになり、用意された後継品種ではソフトの修正要、電気特性変化あり じゃ、多くの追加試験をしなきゃならず無駄にコストがかさみ話にならない。 管理や製造コストを削減しても売れなきゃ意味が無いんだよ。
んでもまあ、Microchipの方針は兎も角、秋月が取り扱い品種を整理して絞るって のは今後ありうるかもね。ぶっかけ、18F2550と18F2553の両方を扱う意味がない。 まあ2550は既に在庫のみで終わるのかもしれんけど
ぶっかけ!?
そう、ぶっかけ。
>>489 > 個人ユーザーにはあまり関係ないけど、企業なら多少値段があがっても10年後にも
> 入手できるってのは採用する際に重要な項目になる。
それなんかで読んだな。古い兵器の部品がなくて中国製のコピー部品で間に合わしているって。
ちょっと違うが、残存者利益ってやつだな。
5VPICは5VIOが欲しい人(おいら)のためになんとか残して欲しい
>>495 5V版も密かに拡充されてる。
(自動車向け?)
俺の仕事には12Vのマイコンがあると便利なのにっていつも思う。
498 :
774ワット発電中さん :2015/02/19(木) 23:04:03.71 ID:RPrOOEOm
>>497 12Vのマイコンデバイスなんて13.8ー16Vで壊れるし、12vを普通の3端子で作るには15Vいるし
使いにくいだけ。
基本電圧が12Vの装置なら関係ないだろ
5Vのマイコンデバイスなんて7ー9Vで壊れるし、5vを普通の3端子で作るには8Vいるし 使いにくいだけ。
502 :
774ワット発電中さん :2015/02/20(金) 12:07:51.24 ID:QA8mPWKw
>>497 私はI/OエキスパンダMCP23シリーズの絶縁タイプみたいなデバイスが欲しいな。
機械制御系で使う時は絶縁必須なので。
>>500 なかなかいいね!これでPWMがあれば…
今度使ってみるよありがとう!
>>502 なるほどねー。確かに絶縁されてたらフォトカプラ省略できるし便利かもしれない。
>>497 8080 でも使うしかないな。
±5V も必要だけど。
>>503 PIC12F615
PIC16F616
507 :
495 :2015/02/20(金) 20:52:47.27 ID:ZGY5Vhws
>>500 >>502 便利なのがあるなー 初めてスレに常駐しててよかった
IO増やすのに便利(秋月で売ってないけど)
>>496 このPIC16HVシリーズとか、32MZ-ECシリーズのことかしら
秋月だと2553と14K50くらいで打ち止めかな
>>505 12HV615なんてのもあんのか!
って思ってDigikey調べてたら12HV752見つけた
こ、これこそ俺の求めていたマイコンじゃないか…
と言うかHVシリーズって知らなかったよ
非常に助かりましたありがとう
PICはだいたい5.5Vまでとなってます。 電池4本つけると6Vになるので整流用ダイオードをつけて0.5V電圧低下させ5.5Vで使ってますけど ダイオードは単に電圧低下させてるだけなんでしょうか?抵抗的な役割をしているなら消費電流無駄にして いることになるかなーとも思うんですが。そのへんどうなんでしょう。
>>510 ダイオードに限らず、電圧下げるデバイスはトランスやスイッチング回路を除けば
全部抵抗的な役割
ダイオード挟んで-0.5Vも、抵抗挟んで-0.5Vも同じ電流を無駄にしてる
>>511 ありがとうございます。
ということは電池3本の4.5Vでもたいしてかわらないということなんですね。
???
センサーによっては5Vキッチリ流さないと誤差でボロボロになったりするぞw
言わないね 電圧は流すって言わないね
517 :
774ワット発電中さん :2015/02/21(土) 06:48:29.67 ID:iYd106mg
電圧をかける、電圧がかかる、とか 電流を流す、は「頭が頭痛で痛い」みたい
テレビではイノシシよけの柵に高圧電流という表現が普通だ
低電圧高電流のほうが怖そうな感じがするよな、 0.5ボルトで2万アンペアとか体に流し込まれたら どんなになるのか興味が有る。 バリバリじゃなくてモモモモなんだろうか?
人体にはその電圧でその電流はぜったい流れないから
一般的に24V未満の電圧では人間が濡れた手で触ってもまず死ぬことはない。 24V未満なら人体の持つ抵抗値による電流が心臓に流れても一応安全だということになってる。 だから24V以上の電位が露出してるところには必ず安全カバーを付けなければならない。
522 :
774ワット発電中さん :2015/02/21(土) 12:15:36.61 ID:qAZQTYdg
オームの法則から勉強しなおしの件
>>521 豆知識
心臓を貫通するような位置で胸と背中に電極をつけて、家庭用の100Vを流せば
さっくり死ねる。薬は入手性の問題もあるし、身近なもので遂行出来る方法の
中で出来るだけ綺麗な状態で遺体を残したい場合はこれ。
そんな豆知識いらんわw
526 :
774ワット発電中さん :2015/02/21(土) 14:06:46.49 ID:OswYNJ8M
. みなさん、雑談は「本家」のスレでお願いします。 みなさんが雑談していると、僕たち初心者が質問しにくいです。 あちらのスレ、最近、空いて(すいて)ますよ。 どうぞ宜しくお願いします。
最初に無があった 無から有が生まれた これが全ての真理
ちょっとおうかがいしますが、 ±100キロパスカルの圧力計(ゲージ圧)がフルスケール±1Vの直流電圧 の測定出力を出すのですが、これを4桁(整数部2桁、小数部2桁固定99.99まで)の LEDセグメント(10進表示)で表示し2時間くらいのログをPCでとりたいのですが MCP3421を使う(目標4SPSくらい)としてPICは何を選択すればいいものでしょうか。
>>526 ここに居る人たちはね
初心者をいびるためにたむろしてカモを待ち受けてるだけなのよ
専用スレで知識を披露できるほどのスキルは無いの
531 :
774ワット発電中さん :2015/02/21(土) 17:27:13.96 ID:OswYNJ8M
>>528 初心者ですが回答させてください。
データはPCのターミナルで取ると思いますので、
PICは、MCPの初期設定、時間管理とI2Cのやりとり、RS232Cの送信(受信も不要?)
ができれば良いと思います。
回路は、
MCP3421のデータシート、図6-5の回路になると思いますので、
・I2Cができること
(I2CをIOピンでやることもできるけど、I2Cモジュールを内蔵していればプログラムが楽)
・RS232Cが出せること(=UARTがあること)
(RS232をIOピンでやることもできるけど、UARTを内蔵していればプログラムが楽)
・タイマー割り込みがあること
を満足すれば、どのPICでも良いと思います。
MCP3421がSOT23-6ですので、同じように小型にしたいのなら、
PIC12FxxのSOPで、内蔵発振器を使えば、小型にできると思います。
>>528 7セグはダイナミックでつけるだろうけど、結構足の数いるので、
余裕を見て大きめのパッケージにしておくとよいよ。
533 :
前スレの674 :2015/02/22(日) 00:44:18.82 ID:flzPEoZB
前スレの674です
遅くなってしまいすみません
回答ありがとうございます
>>444 >>446 書き込めてませんでしたか
きちんとチェックを入れたつもりだったのですがチェック入ってなかったのですね。
今週は諸事情で忙しいので来週の日曜日ぐらいにまたやってみます。
>>445 関東地方のどこかに住んでいます
はんだづけカフェなんてあるんですね!
でも親に許可して貰ってないので、今のところ、はいともいいえとも言えません。
>>447 今まで全く気にしてませんでした。
次から気をつけてみます。
528です。
>>531 >>532 ありがとうございます。
今回はDIPタイプで、と考えています。市販の適当な電圧パネルメータと
スケーリングのためのOPアンプか多回転のトリマーを使えばいいんじゃないかと
安直に考えていましたら、LEDタイプの製品の奥行きが大きすぎたり価格が高すぎたり
LEDセグメントが小さすぎたりで使えないことがわかりまして。
MCP3421はPICとはどんなものかを探るために本にあった精密電圧電流計を組み立てたときに
5個組でしか購入できなかったものの余りがたまたま手元にありこれも安直に決めたものです。
8bitベースのPICで考えるなら十分な数のIOとUARTとI2Cマスターの機能あれば何でも良いということになる
のでしょうか。ほかにも高級言語を使うのか、とすればコンパイラや開発環境は何を選ぶべきのか、
コンパイラは買うべきなのか、この世界に着手する上でいろいろ迷っております。
http://www.eleki-jack.com/mycom2/2013/08/pic16f1783_12.html#more あたりを参考に基板を起こして部品を集めてとりあえず始めてみようかと思っています。
DPの移動と通信規格の変換さえ行えばこれですむ話なのかなとも思えますがね。
PIC18F4585でLCDのキャラクタディスプレイの制御をしてます。 PORTCにデータラインとRS、Enableを指定した時は問題なく動くのですが、PORTDやPORTAに変えると一切動かなくなります。 PORTAとPORTDどちらもADCもパラレル通信も切っており、普通にI/Oとして動いていることはLEDを繋いで確認済みです。 sbitで指定を変えているだけなのでプログラム的に間違っているところもないと思うのですが、何が原因なのでしょうか? コンパイラはmikroC Proで、初期化、書き込みは付属のライブラリを使っています。
536 :
774ワット発電中さん :2015/02/25(水) 02:06:18.73 ID:RwtGUUhG
>>535 >PORTDやPORTAに変えると一切動かなくなります。
そのときの波形をオシロで見てみれば、答が出ると思いますが どうでしょうか?
>>536 回答ありがとうごさいます。
実は電子工作を始めたばかりでオシロを持っていないのです。
なので今LEDを繋いで色々試してみたところ、RSピンがPORTCの時は待機時highなのに対し、PORTDやAの時は待機時lowでした。
それでも文字を書き込もうとするとLEDがチラつくので何かしら処理をしていることはわかるのですが…
>536 みたいなアホってなんでわいて来るんだろうな いつも不思議だ
>>537 >待機時highなのに対し、PORTDやAの時は待機時lowでした。
ていうか、どんな時でも、I/OポートのH / Lは、プログラマーの責任だよ。
Cポートのときは最初にHにする、とか初期化をしているだろうに、
Dポートのときには実施していないの?
>>539 初期化も出力もmikroC ProのLCDライブラリに任せています。さらにsbitで定義していたピンを変更しただけなので条件としてはどのポートも変わらないはずなのに挙動が変化しているので、その理由が分からず困っています。
ピンが完全に沈黙しているのであれば諦めもつくのですが、動きがあるので不思議です。
>>538 だな。
オシロじゃなくてロジアナだよな。
>>540 sbitの記述してる部分だけでもいいからソースコード見せてみてくれますか?
Direction指定でうっかりタイプミスとかしてたりするかもしれないし。
俺なら、まずはオシロだな。信号の異常がないか確認してから、ロジアナ。 多くの場合オシロだけで済むけどね
だな 波形の崩れとか、アナログ信号的に十分マージンがあるか確認した上でのロジアナ
>>542 sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D4 at RD4_bit;
sbit LCD_D5 at RD5_bit;
sbit LCD_D6 at RD6_bit;
sbit LCD_D7 at RD7_bit;
sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D4_Direction at TRISD4_bit;
sbit LCD_D5_Direction at TRISD5_bit;
sbit LCD_D6_Direction at TRISD6_bit;
sbit LCD_D7_Direction at TRISD7_bit;
これをRC0とかTRISC_bitとかに変えると普通に動きます。
ソフト的に問題がないなら、PICとLCDを配線する際のうっかり勘違いミスはどう? RS = D0 ... 19pin RS = A0 ... 2pin あとはConfig設定でポートが別の用途につかわれているとか ※mikroCだとProjectプロパティで設定がなんとかかんとかってグーグル先生が言ってる
>>546 配線ミスはないはずなんです。何回繋ぎ直してもやっぱりPORTCのみでしか動作しません。
PORTDやAが標準のI/Oピンとして動いているのはLEDを繋いで確認済みです。
>>547 ADやコンパレータの設定してる?
出力だとアナログ設定でもデジタルでうごくからLed繋いでもわからんよ
違う石で試す!
550 :
natu :2015/02/25(水) 21:39:42.65 ID:KRhJiWDv
>>547 PORTDやPORTAには、LCD以外のハードを接続してる?
オシロを買う
>>551 オシロはどの程度のものがいいんでしょうか。
電子工作を始めたばかりならオシロ買えよ 「LEDで繋いで」とか「挙動が」とか「何回繋ぎ直しても」だとか ここで晒したアホな疑問は全部解消するぞ
しかしオシロ買えと言いつつ1ch薦めるのはどうなんだ 不良在庫処分なのか
「この程度がお似合い」ってとこがミソ
557 :
774ワット発電中さん :2015/02/26(木) 02:06:48.54 ID:+6g9bzr5
今買うなら、カラーで4chが必須。
主観の強要は嫌われる
おちのはArduinoオシロだよ… 入力に数種類のオペアンプ切り替えでいろんな波形は読めるようにしてある…つもり
オシロなんて何に使うの? マイコン関係なんて基本は全部矩形波なんだし意味なくね? ロジアナ買うならまだわかるけど。
ハード・ソフト設計にミスが無く、ケーブルの分布容量や反射などの影響も無く、 ノイズなどの環境の問題も無ければ、オシロは不用かもしれない。 逆に言えばオシロが不用なら幸せ者だな。
>>560 秋月で買えるおもちゃのオシロやロジアナを持っていると、幸せになりますか?w
>>560 ちゃんと矩形波になってるかロジアナでは分からない。
初心者スレゆえに、尼のレビューも読んでから検討のこと
>>563 これの前の型?のPDS5022使ってるけどpicのio見て使うくらいなら必要充分ですよ。
初心者の入門で良し悪しは別の話。
>>560 マイコンなんてシミュレータ使えば、オシロモ何も要らないよ
そういえばあのシミュレータ、使いこなせてない・・・
オモシロいのはほしい
>>571 これも持ってるけどプロトコル解析便利だよね、SDメモリとI2Cによく使った。
最近はもう使わなくてもある程度分かることが多いのでオシロで見てる
みなさん、ここは迷える初心者が質問をするところです。 皆さんのような技術力も経験もある人の雑談は、本スレでお願いします。 あちらのスレ、陽当たりも立地も良いですよ。
575 :
774ワット発電中さん :2015/02/27(金) 11:40:06.62 ID:ZbMbAbeK
. 始めたばかりの初心者質問お願いします。 ICSPのピンの処理について教えてください。 ICSPのピン(PGEDとPGEC)を使ってプログラムの書き込み、動作は出来ているのですが、 ICSPのピンの入出力設定とプルアップ、プルアップダウンをどうすれば良いかわかりません。 ICSPピンを、TRISで出力に設定してしまうと、PICの出力電流でPICKit3が壊れないかと心配ですし、 入力に設定してしまうと、通常使用のときにオープンになってしまってPICが壊れそうで心配です。 両方ともTRISは入力にして、1kの抵抗でプルアップしておけば良いでしょうか? あと、ICSPピンではない普通のピンで、 入力に設定したピンのLATビットは、どのようにすべきでしょうか? ・入力に設定して、一生出力されないのだから、LATは放っておいて何もしなくて良い ・いや、LATもきちっと0にクリアすべきだ どちらが正しい処置でしょうか? 最後にもう一つ教えてください。本を読んでも書いてありませんでした。 リセットICを付けたいと思いますが、3.3V電源のPICには、何VのリセットICを使えば良いでしょうか? 3.3Vに対して、3.0Vでは、余裕が0.3Vしかありませんので、2Vくらいの検出電圧の物を選べば良いでしょうか? リセットICの電圧の選び方を教えて欲しいです。 変な質問だったらすみません。
アセンブリ言語とc言語の使い分けとかしてますか? また、どういう時に使い分けをしていますか?
577 :
774ワット発電中さん :2015/02/27(金) 15:47:49.24 ID:ZbMbAbeK
>>576 全部Cで書いています。
今時は、アセンブラ書かなくてもPICは使えますし、それが主流です。
>>576 よっぽどシビアなタイミングでなければcが主流ですよ、移植も修正も早いです。
アセンブリ言語使うのはタイミングや処理時間がよほどカツカツか特殊な処理かアセンブリ言語が好きな趣味な人
>>575 pickit3のマニュアル 18ページからと、68ページ参照。
> ・入力に設定して、一生出力されないのだから、LATは放っておいて何もしなくて良い
これでOK
> リセットICの電圧の選び方を教えて欲しいです。
PICだけでなく周りの回路も含めてが正常動作できる電圧
を考慮して選定すれば?
>>575 最近のは、内部は1.8V位で動くから、低めでもOK
582 :
前スレの674 :2015/02/27(金) 21:38:57.27 ID:FXrGL5Jc
>>576 アセンブラ派からも一言。
Cの方が生産性が高いからおすすめ。(使ったことないけど)
アセンブラはPICの変態アーキテクチャを楽しむためのもの。
オレはアセンブラで変態を楽しんでる とても小さく書けるしな
基本的にCで書いて、どうしてもアセンブラが必要な時があれば Cの中にアセンブラで書けば最強。
お仕事用のソースでも高速性が特に要求される部分だけはアセンブラで記述してるのをよく見る 他機種に移植するときにはCでも色々修正しにゃならんので、仕事の範囲内で見る市場に出回ってるメカの ソースはCになってるね 俺も仕事で覚えさせられた16bitの68000しかアセンブラ理解できないし・・・
68k世代か、z80世代なら応用が利いたのに残念だね。
>>582 書き込むものが指定されてない。
ていうか、表示されてるメッセージ読めば?
私は「誰よりも小さく早いプログラムを書く」を目標にしているのでアセンブラで書く。 趣味なので時間は関係無い。 でもPICのアセンブラはイライラしてストレスが溜まる。
>>589 FPGAなら、ソフトウェアコードサイズは0で作れるぜ?
実行時間も4クロックもあれば大抵のことはできる。
お前の全敗。
初心者ですが、教えてください。 PICで、交流電圧を測るにはどのようにしたら良いでしょうか? 交流の信号は、2Vp-p(上に1V、下に1V)程度のサイン波で、周波数は50kHzくらいまでです。 信号---->測定専用のIC---->PICという方法ではなくて、 信号---->抵抗とかコンデンサとかトランジスタとか汎用のOP AMP IC程度---->PIC A/D入力という感じで できないでしょうか?
生産性ならラダーが最強 演算部はアセンブラに近いがアセンブラより使いやすい
594 :
774ワット発電中さん :2015/02/28(土) 10:42:07.54 ID:yPKgQI4A
簡単な仕事ならラダーでもOK 少し複雑な事をしようとするとラダーは使い物にならない。 アセンブラで生産性を上げられないのは使ってる奴の能力不足でしか無い。
アセンブラとCでどっちかしか覚えないなんて選択肢はない! 趣味であれ仕事であれ長く続ける気が始めからあるのなら、どっちも覚えろ。 やりたくないなんて怠け者、この業界にいらぬ! Cしかできない奴は多いが、アセンブラだけしか使えない奴は少ない。 Cは生産性が高いなどというが、ハードと引っ付いているファームでは むしろ足枷にすらなりかねない。 Cのメリットは、自分で書いたソースをCしかわからない他人にまるなげ できちゃうところ。必殺の「Cならわかるんでしょ」というセリフとともに。 こうすることで俺が新規プロジェクトにとりかかれるので、 別の意味で生産性が向上する。
596 :
774ワット発電中さん :2015/02/28(土) 10:51:57.04 ID:yPKgQI4A
ま、Cしか出来ない奴が居るから、暇つぶしにイビれるんだけどなw
アセンブラが有用になる時もあるんですね、絶滅したんじゃないかと思ってました アセンブラにも興味があったので使ってみようと思います
>>595 老害おつですw
20万から30万前後の開発ツールを揃えられないや、定期的なメンテナンスできないなら、アセンブラで頑張るしかないよなw
それに毎回コピペでニーモニックを貼り付ける作業だけなら、効率的なプログラミングとか関係ないのはよく分かります。
>>594 複雑な産業用シーケンサはほとんどラダー
プラントで使われてる専用シーケンサーもね
>>592 答え出てるじゃないですか
1MspsのADC内蔵のPICもあるからいける
>>600 だめでしょう?
50kHzのピークを取るのに、1Mspsでいいはずないでしょう?
1000KHz/50kHz=20点/波 これでピークが取れるとでも?
602 :
774ワット発電中さん :2015/02/28(土) 13:05:35.93 ID:yPKgQI4A
>>599 >プラントで使われてる専用シーケンサーもね
知ったかすんなよw
まともなプラントならDCS使う。ラダーなんて使わないよ。
シーケンサでさえ今時ラダー無でも組める。某底辺盤屋が言うには
ラダーにしておかないと、後々メンテで仕事にありつけないからラダーにしてるとかほざいてたぞwww
603 :
774ワット発電中さん :2015/02/28(土) 13:07:14.08 ID:yPKgQI4A
>>603 その訳は何?
ピーク値を知りたいんだよ? 取れるの?
606 :
774ワット発電中さん :2015/02/28(土) 13:35:05.37 ID:yPKgQI4A
Cしか出来ない奴って、サンプリング定理とかFFTが理解不能な土方なんだな。 AVRスレに帰ればいいのにW
じゃあ20点が200点になったとしてピークが取れるんかね
608 :
774ワット発電中さん :2015/02/28(土) 13:43:31.16 ID:yPKgQI4A
20ポイントで十分なのになんで増やす必要が?
>>606 老害は統合失調症か?w
脳内で自動変換される的なw
大笑い\(^o^)/
611 :
774ワット発電中さん :2015/02/28(土) 13:51:14.53 ID:yPKgQI4A
ゆとりって勉強する意欲も無いんだよなw
アセンブラも覚えさせられたけど、会社の受注の関係でVB,C,C#,javaじゃないと仕事できないんで ほとんど忘れてしまったという現実 いつまでもアセンブラだけで飯を食えてる人は勤務先の会社が特化技術を大切にしてくれてるとい うことで、感謝しろよな
613 :
774ワット発電中さん :2015/02/28(土) 14:01:44.37 ID:yPKgQI4A
覚えさせられたんじゃ忘れるだろうし、碌なレベルにはならないだろうな。 好きでやってる奴にかなうはずが無い。
何かあるとすぐゆとり認定する妄想癖のある人って…
615 :
774ワット発電中さん :2015/02/28(土) 14:08:03.39 ID:yPKgQI4A
「ゆとり」って言葉を発すると、顔を真っ赤にして否定する奴が多くて面白い。
>>602 DCSって言語でもなんでもないが?
記述はラダーが主流
>>613 そりゃそうだろw
仕事で毎日使う言語の熟練度が増すのは当たり前だよ
こんなこと書かせんなよ、恥ずかしい
>>615 ちゃんとお薬は飲んでいますか。
勝手にやめたり、量を減らしたらダメですからね。
もし頭の中で声が聞こえたり、悪口を言われていたりするなら、ちゃんと先生に伝えてくださいね。
統合失調症は完全寛解はしないですが、薬で症状を抑える事ができます。
けして諦めないで、お薬は飲み続けてくださいね。
620 :
774ワット発電中さん :2015/02/28(土) 14:21:22.08 ID:yPKgQI4A
ゆとりがいっぱいwww
621 :
774ワット発電中さん :2015/02/28(土) 14:23:47.78 ID:yPKgQI4A
>>616 DCSはラダーなんて使わない。UNIXベースのソフトでサクサクかける。
使ったこと無いだろw
始めてのPICスレでデカイ態度しても無意味
>>ID:yPKgQI4A [11/11] もうおわり? なんだ、つまんね
>>621 UNIXベースのなんていうソフト?プゲラ
626 :
natu :2015/02/28(土) 19:52:03.22 ID:sYQENMhS
>>592 50KHzまでの「サイン波」なら100K/s以上必要なので500K/sが出来るdsPICかPIC24H辺りを選択しとけばOKでしょう。
汎用OPAMPにも色々有るけど、それなりの物でA/Dピンをドライブしとけば何とかなる。
「サイン波」なら平均値から電圧計算すればいいんだけど、上記のPICなら実効値ぐらいは、普通に演算出来るんじゃないかな。出力頻度によるけれどルートが厳しいかも…
測定結果の電圧値は、どう使う予定でしょうかね
627 :
774ワット発電中さん :2015/02/28(土) 19:58:05.56 ID:yPKgQI4A
>>625 DCS知らなかった癖に、何しったかしてんのw
滑稽過ぎるwww
システムと言語をごっちゃにするアホ
629 :
774ワット発電中さん :2015/02/28(土) 20:32:02.63 ID:yPKgQI4A
ラダーしか知らない癖に知ったかする基地外w
しゅごーいって言ってほしいのかな 愛に飢えてるならいい人見つけろ
631 :
774ワット発電中さん :2015/02/28(土) 21:25:50.65 ID:yPKgQI4A
彼女なら居るけど、それじゃダメかね。
>>631 おう、いいんじゃないか?
じゃあ、もっと心の余裕持とうぜ
無理無理
>>633 おう、いいんじゃないか?
じゃあ、もっと心の余裕持とうぜ
636 :
774ワット発電中さん :2015/02/28(土) 23:03:36.38 ID:xyyCcL/e
>>626 サンプリング定義からいけば、折り返しが起きない「2倍」でいいんだけど、
ピークを知りたいと言っているのに、そんなにのんびりのサンプリングでいいの?
例えば、50kHzのsin波を、100ksps1でサンプルして、
ピーク点に出会うのに、何秒かかりますか?
地道に高速サンプルで、min, maxを数値的に取り出して、
それを何度も実行して、初めて「max-min」でピークtoピークが出るものだと思っていたけど。
然るべきデジタルフィルタで補完すればサンプリング定理を満たしていれば可能
638 :
774ワット発電中さん :2015/02/28(土) 23:10:54.18 ID:yPKgQI4A
>>585 > Cの中にアセンブラで書けば最強。
いろいろやってみtけど全然うまくいかない。できたらコツおしえてほしい。
>>637 >然るべきデジタルフィルタで補完すればサンプリング定理を満たしていれば可能
波形の補完復元という意味ではわかるけど、ピークを求める方法を示して欲しい。
ピークtoピークだよ。
XC用のライブラリにインラインアセンブラが使われてるのがあるよん 少なくともSPIのflameworkで見た
>>640 「然るべき…れば…れば可能」
察してやれよw
643 :
774ワット発電中さん :2015/03/01(日) 04:48:21.32 ID:KuAJ7gzm
土方w
>>640 サンプリング定理を勉強しなよ
あんたの主張だとそれこそ無限に高いFsでないとピークがとれないことになってしまう
なぜ、ナイキスト周波数以上でサンプリングされた離散値から元波形が復元できるかわかってる?
>>642 日本語がおかしかったな
ところで、バカにしてるあんたはわかってんのか?
>>640 あー、もうめんどくさくなってきた
オーバーサンプリングでググって考えてくれ
>>645 ありがとうございます。
>>644 >なぜ、ナイキスト周波数以上でサンプリングされた離散値から元波形が復元できるかわかってる?
すみません、わかっていません。
離散値なので、ADの補足値を紙の上にプロットしていくと、源波形を「想像」することはできると思います。
ということは、採取した点と点の間を、プログラムで想像してピークを求めるということでしょうか?
つまり、
A/D取り込む→その値は真実→何回か取り込んで、ピークを見る→ピーク値に決定 ではなくて、
A/D取り込む→その前後情報からマイコン内部で計算、点と点の間を予想→ピーク値が得られる、
ということでしょうか?
>>646 それ以上はもうPICとは全然関係なく単にデジタル信号処理の基本の話だから
ここじゃなくて別の場所でやって
>>646 そういうこと
ついでにsinc関数も一緒にググるといいんじゃないかな
>>646 一応補足しとくと、予測ではなく、理論的に計算されるが正しい
まあ、スレチのようなのでこの辺で
突っ込まれて困るよりここで終了という作戦ですね
交流電圧を測定するならピークから計算するんなんて方法じゃなくて 平均値から換算するかRMSを直接計算だろうな
歪み波形でなければそれが簡単だね
歪み波形ならなおさらだろ
ああ、ごめん勘違い やたら、ピーク値に言及されてたから、目的を勘違いしてた 実効値を測定したいのね
656 :
774ワット発電中さん :2015/03/01(日) 14:56:30.68 ID:renCgkvE
質問おねがいします 2メートルのUSBケーブルからPICの5v電源を取りたいのですが、 それだけケーブルが長いと、ノイズ防止にはどのようなコンデンサをつければいいですか? よろしくおねがいします
不要輻射の抑制か外来ノイズ耐性か そこが問題だったりするかな
USBの規格上では何μまでOKだったっけ?
659 :
774ワット発電中さん :2015/03/01(日) 15:34:46.27 ID:yTJy/OV3
ありがとうございます!
>>656 10uFの電解コンデンサ
USBの仕様上、これより大きいコンデンサを直接つけちゃダメ
Cで書くときグローバル変数を多用するとなんかデメリットありますか?
>>661 変数名を間違えて、原因不明?のバグ出やすい。
自称℃玄人から馬鹿にされる、というデメリットがある。
メモリに直接パッチをあててデバッグするような環境下はglobal変数のほうがよかったりするけど個人的には なるべく使わないようにしてる それとは関係ないけど、例えば使うマイコンが8bitなら可能な限りbyteサイズの変数を使うようにして無駄コード が生成されないように腐心したほうがいいかと
>>661 というよりもピックの場合はグローバル変数を多用した方が良いです
ローカル変数はスタックエリアに確保されるけど、ピックのスタックエリアは
ハードウェアでサイズが決まってる上にとても小さく、スタックエリアに収さまり
きらない場合のローカル変数格納処理はものすごいオーバーヘッドが発生します
パーフォーマンスを考えれば出切るだけグローバル変数で宣言してください
>ローカル変数はスタックエリアに確保されるけど まじで? (いや、H8とかは 仰る通りだけどさ) PICってハーバードアーキテクチャやでぇ… ていうか、スタックにどうやってアクセスすんのん?
>>665 え?そうなの
始めた時に調べて速度的に違いがないと思ってたからそうしてたんだけど、
スタックサイズって気にしないといけないほど小さかったのか・・・
----ローカル------
1002 ;main.c: 34: BYTE aaaa = 1;
1003
1004 ;incstack = 0
1005 002E04 0E01 movlw 1
1006 002E06 0100 movlb 0 ; () banked
1007 002E08 6FB4 movwf main@aaaa& (0+255),b
----global------
1007 ;main.c: 36: aaaa = 1;
1008
1009 ;incstack = 0
1010 002E04 0E01 movlw 1
1011 002E06 0100 movlb 0 ; () banked
1012 002E08 6FE2 movwf _aaaa& (0+255),b
>>666 PIC16F1***以上なら、スタックへのアクセス可能。
だが、PIC18でも32段しかないから、変数を置くのは無理に近い。
XC8でスタックと呼んでるのは、RAM上に作った仮想的なスタック。(再帰呼び出し有効にしないと使われないと思う)
16bit以上は普通にRAMに取られる。
pickit2をロジアナにする方法教えてください Microchip探したけど迷ってダメでした
スタック段数って聞いたことがない(意識したりとかPG上で先輩に言われたことがない)んで存在を始めて知ったよ そういうことを気にしなくていい環境で来たんだな・・・、1つ賢くなった
dspic30f2012で10khzでサンプリングしようとしてるのだけど_ADCInterruptが掛からなくて詰んでいます。ADCON1のSSRCは010にしてタイマー3もカウントしています。サンプルなどありましたらお願いします。助けて
>>669 MicrochipのサイトのProducts->MPLAB X IDE
でMPLAB Xのページに行って、Downloads Archiveの下のほうにある
PICkit 2 Software for Windows v2.61
をDL。使い方はPickit2 ロジアナでググる。
674 :
natu :2015/03/03(火) 10:23:43.09 ID:22RJw6JC
初PICでADC使おうとしたら何故か出力が不安定で2日ほどデータシートを熟読してたんだけど、 秋月で買ったボリュームが最初から壊れてたのが原因だった 糞!俺の時間返せよ!
676 :
774ワット発電中さん :2015/03/03(火) 16:46:02.07 ID:VtAGXP2g
>糞!俺の時間返せよ! 2日ほどデータシートを熟読して、知識が向上した、とは考えないの?
日記にコメントは不要です
どうせ自分で壊したくせに。
トラ技のブートローダ使うとAIVTじゃないと割り込み掛からないのかよ。ハマったわ。本買えってか
ボリュームなんて大した損害じゃないだろ。ebayで部品買うとIOの一部のが死んでて発見するまで大変な苦労をする事になる
>>679 同意。
近頃の部品で、初めからNGって、まず無いと思う。
さらに、変換値不安定って言っても、テスターやオシロで、
VRが原因だと 簡単に辿り着けると思う。
確かに 下半身が青で回転部が白の秋月のVRで、
502と言いながら4kしかないのは、遭遇したけど。
コンフィギュレーションビットのC言語表記はどこを見れば良いのでしょうか?
Window->PIC Memory Views->Configuration Bits でgenerate
PICの1つの出力ポートで、トランジスタアレイ(TD62083)の入力を2つまとめて制御ってできますか? 抵抗とか必要ですか?
690 :
688 :2015/03/05(木) 19:08:29.17 ID:Je48DrYi
>>689 ありがとうございます。
とりあえず試してみます。
最近またレス番が飛ぶようになったな
PICとPICの間の無線通信モジュールでお勧めのものを教えてください。 出来ればなるべくお安いもので。
>>692 NRF24L01pが安いし通信は全てやってくれるから良いよ。250kbpsならwifi並に飛ぶし
>>692 車の無線キーに使うやつで送信機500円ってのをみたな。