初めての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 馬鹿なほど知ったかして、得意げに教えたつもりになってるから卯財 >>106
別のA/Dとは?
参考にしたいので教えてください。 >>114
16bit PIC なら、メモリー容量的にSPI モードで十分だしな。 >>109
> 馬鹿なほど知ったかして、得意げに教えたつもりになってるから卯財
教えようとしてるだけエライじゃん
イヤなのは、なんにも教えず説教をたれたいだけのジジイ >>109
お前はバカだ、知ったかだ。と言うなら
どこが間違っていて、正しくはこうだ。
と書かないと、
あなた自身が、馬鹿な知ったか、に見えるよ? 初心者です。教えてください。
2つあります。
MPLAB Xをダウンロードしてインストールして、ふー炉じぇくとを作って、コンパイル(ビルド?)をしました。
画面の下部にあるエラーとかワーニングが出る窓の文字が小さくて、とても使いにくいです。
この文字を大きくするのは、どこをさわればいいでしょうか?
Toolsのoptionsの中にfont設定があるようですが、
outputペインのfont設定までは見つけられませんでした。
今まではMPLAB IDE8.92を使っていたのですが、それに比べるとコンパイルに時間がかかります。
もっさりした感じです。これで正解なのでしょうか?
どうぞよろしくお願いします。 >>119
マウスのホイール押しながらホイール回す。
デフォルトだと、一度に8つ?のファイルを同時にコンパイルしようとするから、非力なマシンだと、かえって遅くなる。 シングルコアCPUマシンならMPLAB 8.92の一択
最近は安くて早いPC充実してるからMPLAB X使うなら買い替え そりゃPCがボロ過ぎる
サクサク条件は64bit4コア8ギガかな
今時中古ノートでも2万もあればそろえられる
ケチって買わないならコンパイルのんびり待ちましょう
待つのは無料だからね JAVAで開発された物って
開発は楽チンなんだろうけど
メモリバカ食いだよな
オイラもXの遅さに耐えられなくなって
去年PC新調した口
ついでにSSD化も
デュアルディスプレイ化もして超快適 >>120さん
どうもありがとうございました。できました。
この設定は、どこかのプロパティを開いて調整できるものではないのでしょうか?
よろしかったら、教えてください。
>>121,122
みなさん、ありがとうございました。
僕のノートPCは、17インチ1920*1200で広いんですが、
コア2ディュオというCPUですので遅いです。もっさり感たっぷりです。
あと、もう一つ教えてくださいませんか。
文字を大きくしたoutput paineですが、エラーの表示はどこを見れば良いのでしょうか。
どうせ僕のプログラムミスなので、
○○行目にsyntax error ; が必要 とか出れば良いのですが、
いろいろと表示されすぎて、わからないです。 英語のNotice Caution、コンパイル時のエラーメッセージなんかは、
同じ単語が結構出てくるので、一冊ノートを作ってわからない単語を書き出してその意味を書いておくといいよ
ノートの単語が増えてこなくなったら、アルファベット順に再編するとかなんかしておく
その頃にはだいたい意味がわかるようになってる。
PCにText文章で作ってもいいけど、書いたほうが覚える感じがする(個人的に みなさん、ありがとうございます。
ご親切にありがとうございました。
なんとか、プログラムが動き出しました。
outputペインの文字サイズは、outputペイン上で右クリックして、settingに行くとありました。
error表示は、英語を頑張って読むことにします。
ただ、makeとか知らない言葉が出てくるので、メモしておくことにします。
Syntax Error in 123 とか、色を変えて出てくれるとありがたいですね。
あと、ビルド成功の文字を、若草色から変えたいのですが、わかりません。
上記の右クリック...の画面で、Build Successの色を青にしたのに、
若草色のままです。
PCは遅いので、関数50行、main 20行くらいでも、1分くらいかかります。
なんだかなって感じです。 >>124
出力タブのウインドウでCtrl+Sで保存して、ここに貼り付けてみるのはどう。 お金も無くて頭も無い半人前だけど
文句だけは一人前
なんだかなって感じです >>127
makeも知らないのか
お前の組のことだよ。覚えとけ >>129
理系はアフォばっかりだから、挑発はやめろ
無視すればいいんだよ コンパイラの途中経過には興味はない。
Cで書いて、コンパイルして .hex が出来て、picに書き込んで動けばオーケーです。
途中のmakeでこけるとかはMPLABの都合なので、僕らには関係ないです。
makeとかリンカーとかを知らなければマイコンが動かせない訳ではないでしょう。 立派な考えなので全部のコードをハンドアセンブルして手打ちでhexファイルまで作って下さい。
ライブラリなんて安直な考えはダメですよ 動かしたいだけなら全部、他人に作ってもらえばいいんじゃないの
仕事ならお金払って、趣味なら駄々こねれば。 C言語で組んで何が悪いのかね〜〜〜
出力されたアセンブラコード見て適正なコードが
出力されるようにCソース変更することでも結構
いい結果得られるし、だめなら直接アセンブラコードで
書けばいい。
ぐだぐだ言うやつはFreeエディション使ってるんだろ〜〜
Proモードでコンパイルすれば何の問題もない ていうか、メイクとかリンカーとか、知らないとpic使えないのか?
Cでソース書いて、コンパイルして、目的のことが出来たなら、それで充分。 今確認したら MPLABX4.15 の javaw.exe で1.4GBも喰ってる
いつの間にこんな馬鹿喰いデブになってまったんだ、、、
あれ?なんか近くにそんな人居る、、、
4GB頭打ちの32bitOSだと修行僧とか忍耐力ある人じゃないと
運用無理じゃないの? >>142
取り敢えずメモリー確保して置くってソフトは多いよ。 >>143
存在するのはわかるけど、やだなあ、それ。 PCを更新したのでPIC環境も最新にと思い、X IDEの3.61から4.15を入れて、XC8は1.45Bを入れた。
しかし、X IDEのツールチェーンに登録されない???
入れたドライブとパスは、D:¥Microchipです。 おれIDE使ってないから、適当なこと言うけど、
javawコマンドは最大メモリ量とか初期メモリ量をオプション指定できるよ。
下記のページ見て-Xmsとか-Xmxとか起動する場所に指定してみたら?
https://docs.oracle.com/javase/jp/1.3/tooldocs/win32/java.html
例えば、-Xmx1G とかやればいいと思うけど、自己責任でどうぞ >>142
Harmonyを立ち上げるとそのくらい使うねえ
まあでもメモリたくさんあるから気にしたことない
それより、MPLABXを複数起動出来るようにして欲しい
他の多くのIDEは出来るのにMPLABXは出来ない mplab_ide.confに書けるらしいぞ
MPLAB メモリ削減でググって2番目くらいに表示される記事参照 >>150
使われなければスワップアウトされるだけだしな。 パフォーマンスや使用リソース量よりも開発効率や移植性を優先したから
つまりMicrochipが悪い >>142
32bitの4GBの限界もそうだが、
32bit Windowsでは通常、32bitアプリは1プロセスで2GB(実際は1.5から1.6GBくらい)までしか使えない
64bit Windowsでは32bitアプリでも
実行ファイルにLargeAddressAwareのフラグが立ってれば4GB(実際は3.5GB程度)まで使える >>156
32bitだから4Gしか使えないなんてのは、Windowsの64bit売るための言い訳仕様に過ぎない
Windowsはメモリ利用効率が何気に悪い
linuxもBSDもハードウェア限界まできちんと使えるし、MPLABもWindowsより多少はマシ。
java環境がマシなだけかもしれないが。 >>157
32bitのx86 Linuxでは1つの32bitプロセスが使えるメモリは3GBまでだよ 今時、32bit Windowsを使うメリットなど無いし今はもう64bit Windowsが主流
NVIDIAなんて32bit Windows用の新しいドライバは作らないと発表してる
LinuxだってUbuntuで18.04から32bitのUbuntu Desktopはサポートされなくなる
スマホもPCも64bitが当たり前の時代だよ ごめん、17.10からUbuntu Desktopは廃止されてたわ
2017年9月28日 Ubuntu,Artful Aardvarkで32ビット版サポートを中止へ
http://gihyo.jp/admin/clip/01/linux_dt/201709/28
2017年12月21日 Canonical,Ubuntu 18.04 Serverでの32ビットデイリーイメージのサポートを中止へ
http://gihyo.jp/admin/clip/01/linux_dt/201712/21 あのーここはPICのスレなんですが
PICも32bitだとMIPSで様相が全然違うけど、
8bitのやつとなにか共通点ってあるの?
名前だけ? 16bitと32bitではペリフェラルの共通点はけっこうあるが、
8bitと32bitはそういうのもあまりない
もっとも、
8bitと32bitで同じペリフェラルだったとしたら、
8bitがよほどリッチか32bitがショボいか、
バランスが悪すぎると思う
開発環境は共通点が多い レジスタの名前とかは同じ名前をつけようとした痕跡があるな(よりリッチになってても) >>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内先頭のインクルードを削除
のどちらでもビルド出来ました。後者が通常の(正しい)方法なんでしょうか?何せ基本が分かってないため手探り状態なので… ヘッダは普通複数ソースからインクルードしても良い物に使う ■ このスレッドは過去ログ倉庫に格納されています