初めてのPIC 0x0e
■ このスレッドは過去ログ倉庫に格納されています
.
_ _ PICをさわるのは今日が初めて、という超初心者のためのスレです。
(O>――<O) PIC選び、PICを使った回路は、誰でも最初は不安なものです。
/ (・) (・) ヽ 恥ずかしがらずに何でも聞いてください。速攻で教えてくれますよ。
○ /▼\ ○ 質問のしかたは、初心者質問スレの発言1を見てくださいね。
|(ヽ二フ ) |
/  ̄ ̄ ̄ ヽ
f ヽ / | PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。
ヽ \ / ノ ・PIC専用のスレ
| \_ )(_/ ! 本家本元のPICスレです。口の悪い人もいますが、楽しくやってるみたい。
| | ここの話がわかるようになれば、あなたはもう一人前のPICerです。
| | ・マイコンソフト 悩み事相談室
| | ̄ ̄| | マイコンソフトやツールの質問は、こちらでどうぞ。的確な回答があります。
(_ノ ヽ_)
質問する時のコツ
・性格の悪い回答者はスルーしよう(相手すると逆効果)
・素人玄人などと 上から目線の回答者は、無視してください。相手してはいけません。
・そこそこ良い回答が出るまでしばらく再発言しないのもあり(良回答は後に出やすい)
・回答者のアドバイスで後日解決したら、結果報告しよう(とても喜ばれる)
・回答者は、僕たち初心者に優しくしてください。あなたも通ってきた道のはずです。
必要なソフトなど(基本無料)
統合開発環境 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、PIC18F1以降の型番で始めると無理なく始められます。
プログラムの書き込みには書き込み器が必要です。持っていない場合はPICkit3(中華クローンでもまず大丈夫)を使いましょう。
PIC一覧、スペック検索 ttp://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1005
さ、質問どうぞ〜っ
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 >>165
最近の8bitPICの周辺機能は、16bitPIC相当になってきてる UART, SPI
8bitはFIFO無し
16bit, 32bitはFIFO有り 割り込み
8bitはハンドラ共通
16bit, 32bitは要因別ハンドラ スレ民「開発効率や移植性、メンテナンス性が良いC使えや!アセンブラとか使ってる場合かよボケカス!」
スレ民「開発効率や移植性?知るかそんなもん!MPLABバカデカくしやがって!Microchip死ねやボケカス!」
どうしてこうなのか・・・ >>169
PIC18の新しい奴は、割り込み要因別にベクタが有る。 PIC18の羨ましいところは、AVRには無い10進演算補正命令がある事かな。
アセンブラだと<入力→16進変換→16進演算→10進変換→出力>より
早くて簡単な<入力→10進演算→出力>でやりたい場合がある。 10進数演算
昔x86にもあったけど64bitで廃止された
加減算くらいしか使えないし、
10進の入出力は大抵遅くてもいい部分でしか使われないから
世の中のマイコンの性能も上がったし、
普通に気にせずC言語とライブラリでやればいいよ PICはCPUが遅いから色々と気を使う必要が出てきて大変だとは思う
いまだにオールアセンブラとかの人もいるし
時代的に30年前な感じ >10進の入出力は大抵遅くてもいい部分でしか使われないから
昔、秋月で売っていたDDSの8桁の発振周波数をロータリエンコーダで増減し、
(PCとの任意のタイミングのUART通信でも変更、増減できるようにしていた)
液晶にその発振周波数を表示する、というパルスジェネレータを作った。
ロータリエンコーダを最高速度で回しても、操作性(応答性)を良くするために
1クリックの時間内で、液晶表示とDDSの周波数の更新が出来るようにしたかったので、
後から色々と悩むよりも、最初から最高速を目指してアセンブラで作った。
もっとも、あらかじめ厳密に時間計算したわけでは無いので、
Cでも可能だったかもしれない。
ところで10進数演算命令ではなくて、10進数演算「補正」命令で十分。
PIC18では2命令(加算と補正)で済むのに、AVRではフラグの問題もあり、
2桁のBCD加算に21命令もかかる(参考AVR204)、残念っw >>174に書いたx86は10進数演算「補正」
使われなくて消えた命令 >>176
さすがに液晶の表示よりは速いんじゃない?
2進数===>10進数 変換
10進数===>2進数への変換はいずれにしろ必要
ロータリーエンコーダーの処理と
液晶や実際のDDSへの設定は
同じタイミングである必要もないし
ていうか、
1クリックで毎回液晶更新してて間に合うのか?
ロータリーエンコーダーのパルス間隔は
瞬間的に速く回せばミリ秒オーダーになるが >>178
そんなこといいはじめたら最高速でまわすエンコーダーに追従するよりも
最高速で回さなくてもいい自動ステップなどの工夫を入れるべきだ、とか言い出すやつが出始めるぞ ソフト設計がおかしいって言ってるの
いかにも初心者が作った感じ
各要素どれだけの処理遅延が許されるかを考えて
それぞれ適した場所で処理するものだ
UART受信は1msの遅延で取りこぼす
エンコーダーは1ms遅延までは許容する
液晶表示は20ms遅延まで問題ない
DDS設定は50ms遅延まで許容
じゃあUART受信とエンコーダーのカウントは割り込みで処理
他は割り込みじゃない普通の処理で
UART取りこぼしよりはエンコーダー取りこぼしの方が影響が少ないから
割り込み優先順位はUART受信の方が上
とかって決めるもの
アセンブラを使った最適化なんてのはもっとずっと後 >>180
初心者というか、いかにもフローチャートでしか考えられない感じだよね
非同期タイミングなイベント駆動のステートマシンで考えて欲しいところだ
まぁアセンブラで早くぶん回せばなんとかなるだろ的な設計にありがち 言葉を覚えたての初心者?
使いたくてしょうがないんだね
まったくフェーズの違う話題が突然出てくるところが笑える ステートマシンとかフローチャートを使った設計とか
30年前の話題だ
さすがPICスレ 手前に頼んでるわけじゃなし
空きにやればいいと思うよ
無駄な?カリカリチューンも趣味ならでは 失敗った
✖空きに
○好きに
コンパイルしてlstみて気に入らないとasmで書き直して
ほとんどasmになったりするけどw >>176
一桁を1バイトで表せばそんなに長くないだろうに? そもそも、
遅くて良い処理を、
速くやらなきゃならないところでやってるから
問題なわけで >>177
申し訳ありません、私の知識不足でした、調べればすぐに分った事なのに・・・。
Cが一般的な今、10進演算命令は不要だと思われるのは仕方が無いですね。
AVRで採用されなかったのもこれが理由だと思います。
>>180
もちろん各処理の許容時間を十分に検討して作ります。
でなければプログラムは作れません。
さっきこのDDS制御プログラムリストを見返したら、
使用している割込みはエンコーダ・パルス入力、
UARTの受信、タイマ2個の合計4つでした。
誰がどうやろうと、タイマ以外の割込みはこうなるのかな?
私の基本的な設計方針は、
<最速最短の処理プログラムをチャッチャッと書いて終わり、
これで出来ないならソフトでは不可能でハードの追加が必要>
ですw
(一文入魂の作文に疲れたので他の方へのレスは謹んで省略) (どうしてももう1レスだけ)
>>187 一桁を1バイトで表せばそんなに長くないだろうに?
別の理由であまり深く考えなかったけど、今、検討してみたらかなり簡略化できそう。
もしもバージョンアップする機会があれば採用してみたいです。 じゃあ結局>>174の通りで>>176は間違いでしたってことだな 命令数が少なくすんでも
2命令で8クロックだからなあ
PICは遅い >>194
何に使うかだろ?
Z80より速いだろ。 何に使うって
>>176の話だよ
遅いからアセンブラでBCD命令を使ったんだろ
速けりゃそんなもん不要で
なにも気にせず標準ライブラリで済んだわけで
アセンブラじゃ開発期間も移植性も可読性も最悪 質問です。
mplabxide+xc8の環境で、ビルドした際のチェックサムについてです。
ソースを変更した場合、チェックサムも変わるものですが、コードプロテクトをかけてビルドするとソースの内容によらずチェックサムが同じ値になります。
こういうもんなんでしょうか。
プロテクトをかけた時点でチェックサムも計算できなくなると言うことですかね。 君がコードプロテクトと称してるのはconfig ビットの中の事? >>198
レスありがとうございます。
そうです、config内のCONFIG5LからCONFIG7Hまでの設定です。 >コードプロテクトをかけてビルド
ソース中にconfig記述してるの?
結果が仕様なんだろうな
プロテクトしたら実物でもチェックサムに意味は無いのだから
気にしたら負け >>200
ソース内と言うか、
mplab x ideでコンフィグを設定→
吐き出されたコードをコピペしてconfiguration.hとして保存→
main.cでインクルード、とやってます。
コードプロテクトの方法としてもっとオーソドックスなやり方ってあるんでしょうかね。チェックサムの件はあまり気にしないことにしますが、今後のためにご教示いただけるとありがたいです。 >>197
チェックサムはコードが一致してるかの確認用。
プロテクトは外から内容を読み出せない様にするもの。 >>202
mplabでコンフィグ設定すれば、インクルード不要と言うことですか!全然知りませんでした…今の状態でヘッダ無しでどうなるか確認してみます。
コンフィグ結果をテキストとして吐き出せるので、てっきりヘッダやソース内に記述するもんだと思いこんでました。
>>203
ありがとうございます。それは認識しているつもりですが、プロテクトをかけて中身は分からないにしても、チェックサムだけは確認できないものなのかなと思っていました。
皆さんレスありがとうございます。 mplabでコンフィグ設定、ソース内にインクルードせずにビルドしたところ「コンフィグ設定されてないんで初期値を使う」旨のメッセージが出ました。
なので取りあえず今まで通りで進めます。ありがとうございました。 何でヘッダ?
configuration.c だろ >>206
・configuration.hをmain.cの先頭でインクルード
・cofiguration.h内のインクルードガードを削除してconfigration.cとして保存、main.c内先頭のインクルードを削除
のどちらでもビルド出来ました。後者が通常の(正しい)方法なんでしょうか?何せ基本が分かってないため手探り状態なので… ヘッダは普通複数ソースからインクルードしても良い物に使う >>207
インクルードファイルは名を.cにする方が自然かもね。 ヘッダに書いてもソースに書いても動くようですが、複数のソースにインクルードされないのでソースに書いてmain.cの先頭でインクルードすることにします。
皆さんありがとうございました。 スタイルの問題だけど
ふつうは宣言を.hにしないか
.cは記述
includeで.cを取り込むのは何となく気分が…
(一般に、コンパイラによってはソースレベルデバッグで混乱をきたすこともある)
実行コード含まない配列の中身dataを取り込むときとかには使うけど コンフィグレーションビットの設定が何なのか(宣言?定義?それ以外?)と言う話なんでしょうかね。
取りあえず個人用にやってるもので移植する予定が無いのであまり気にしないことにします。 公開不要な宣言や定義をグローバルヘッダに書く初心者が多いよな
迷惑 >>211
.cをincludeするのは気分良くないけど、
.hに実行コードがあるよりマシだと思って使う。 普通にconfiguration.cで何の問題もない #pragma config
は単なるアドレス指定のデータの実体 そもそも複数ファイルにインクルードする必要があるのか?
configuration.cにして単にビルド対象に加えるだけで終わりじゃないの? >>213
データシートをちゃんと読めばそんな疑問は出てこないと思うが ここはデータシート読まなくて大丈夫なスレだから大丈夫だよ 最近のデバイスはconfig word 1 とword 2と設定が増えてるから
xc8の__configにどう記載すれば良いか悩むよね >>225
悩んでもどうせ分からないので検索サイトでサンプルを探してパクるのが早道 MPLABXにconfigのソースを自動生成する機能があるが コンフィグレーションビットはPICに書き込むときにソースの通りに
書き込むかプログラマで指定した値を書き込むかを選択できる性質の
データだからコンパイルに影響するようなものではない。 ど初心者です。アドバイスください。
定期的にRS232Cから文字列(数値を表したもの)出してる機器の信号を取り込んで、アナログ電圧として出力するだけのデバイスを作りたいと思い、PICを初めて触ろうと思います。
開発環境を作ろうと思ったところ、PICkit4なるものが出てるじゃないですか。PICkit3を買うべきか、PICkit4を買うべきか。
デモボードも買うべきか(そもそもデモボードって何ですか)。
よくわからないので、アドバイスください。お願いします。 またエラッタ厨とかの好きそうな奴だな
PICkit3買っとけ。っていうか、この時代になぜPICを選ぶ?
デモボードってのは、安倍辞職とか書いて道路練り歩いてる連中が首からぶら下げてる奴のことだ >>233
PIC以外にどんな選択肢あるですか?
必要なときだけ接続する、可搬デバイスを作りたいのです。
シーケンサはごついです。できるだけ小さなデバイスを作りたいです。
デモボードが飾りなのは理解しました。 はじめまして、開発環境とコンパイラをDLしてみようと思ったのですが
HPにてエラーにたどりついてしまいます。
今は開発環境とコンパイラはダウンロードできないのでしょうか? >>237
返信ありがとうございます。
統合開発環境 MPLAB X ttp://www.microchip.com/mplab/mplab-x-ide
コンパイラ (XC8 XC16 XC32) ttp://www.microchip.com/mplab/compilers
ちなみにPC環境はwindows7 64bitです >>238
すみません自己解決できました。
↓からDLできそうでした。
ありがとうございます
ttp://www.microchip.com/development-tools/downloads-archive >>241
そこは古いのしか置いてないけど古いのでいいの? >>233
なるほど、その手があったか!LED100x200くらいで首から下げてメッセージ流すやつ
作るか。もっとも、できるころには総理大臣2人くらいは変わっていそう。 >>232
arduinoでもつかえば ?
パチモンでよければ基板は数100円からあるし
開発環境無料だし >>232
arduinoにするほうが絶対に良いと思う。先人のサンプルも多いし、ハードも一つ買えば完結する。 ・基板は数100円からある
・開発環境無料
が、なぜ
「100円の基板じゃ無料で開発出来ない」
になるのか?
読解力以前の問題。 数100円で完結するというミスリードだし
初心者にパチモンを勧めるのもアホ
まあそもそも>>232自体いつもの作り話な感じもするが 「開発環境無料」がなぜ「無料で開発出来ない」に変換されるのか? 初心者にパチモンを勧めるのはアホは言い過ぎな気がする。
根拠は何なんだろうね。
・道義的なもの?
Arduinoの互換品はルール的な問題はない。
Pickitの酷似商品よりはマシだと思う。
・問題が発生したときのよりどころの問題?純正なら切り分けができるから?
それだったら、ちょっと前まで初心者がよくやっていたライターを作ることもアホ。
からなずしもそうはならんよね? >>256
>否定だよ
ああ、そうだね。すまん。
なぜそういうズレた否定をするんだろう。
言いたいことは「数100円払っている段階で無料ではない」だろ?
でも元レスは「開発環境が無料」って言っているのであって「無料で開発出来る」って言ってるわけでもない。
それに、基板やチップ自体にお金がかかったとしても、
IDEが無料で使えて、特にライターも要らないのであれば、人口に膾炙した表現として「無料で開発できる」で
通じるだろね。 元の質問が作り話であっても、>>249の>>248へのスカタンなコメントは作り話じゃないと思う。 >>261
ここ、PICスレだから具体名をあげてまでの話はスレチだしやめておく。
知りたければAruduino互換スレで尋ねるか、UNO 互換 で検索すればよかろ。 別に知りたいわけじゃないんだが
そんなもん無いだろアホが
ってこと ■ このスレッドは過去ログ倉庫に格納されています