1 :
16C84 :
2013/11/17(日) 03:29:18.64 ID:sx5nieGV PICをさわるのは今日が初めて、という超初心者のためのスレです。 誰でも最初は不安なものです。恥ずかしがらずに何でも聞いてみてください。 速攻でレスがあるハズです。(深夜〜早朝を除く) PIC関係のスレは、レベルに合わせて以下のスレもありますので、活用しましょう。 PIC専用のスレ 本家本元のPICスレです。PICを知り尽くしたエキスパートがたくさんいます。 毎日活発な意見を交わしています。 このスレの話がわかるようになれば、あなたはもう一人前のPICerです。 pic初心者専用のスレ タイトルのPICが全角で書かれていることからもわかるように、初級〜中級のスレです。 PICの扱いに慣れてきて、ハードゥエアも自作して見たい人や、使い方のコツが知りたい人が 気軽に質問できます。
2 :
774ワット発電中さん :2013/11/17(日) 03:35:58.15 ID:8dlKoh8N
電子工学者との初めてのエッチはレモン飴の味がした
PICやってみたいです。
4 :
774ワット発電中さん :2013/11/18(月) 17:04:17.10 ID:jGM3P8mH
電子工学者とやってみたいです。
5 :
774ワット発電中さん :2013/11/22(金) 22:41:32.44 ID:z6kc4Cjw
6 :
774ワット発電中さん :2013/11/23(土) 20:46:40.26 ID:34RaMVWc
ひとりでPICしてます。
7 :
774ワット発電中さん :2013/11/24(日) 03:16:43.03 ID:d4gxwBg6
まずは、LED点滅から。
必要なものは、 ・PIC ・電池 ・抵抗 ・LED ・0.1uF パスコン
なんでこのスレたてたんだろ。二つあるから十分だとおもうけどな。 質問者がからかわれるのがいやだったから「初めての」とつけて ハードルさらに下げたのかな。
>「初めての」とつけてハードルさらに下げたのかな。 そうでしょ。 初めてやる人は、何が何だか、訳がわからないので、 あっちのスレで質問すらできないからでしょう。
>>1 回答者は初心者でなくておk
と書いとけ。
回答者が現れないぞ。
PIC24FJシリーズの、日本語データブックは無いでしょうか?
はい
USB付きのPICをホストとして使いたいです。 USB I/Fのプログラムを書かないといけないと思うのですが、 みなさん、USBの規格の本を読んで設計するのでしょうか? それとも、どこかに出来合いのUSB I/F部分があるのでしょうか?
オフィシャルサイトにサンプルがあるからそれを改変が一番楽だと思うよ。
>>16 ありがとうございました。
早速見てみましたが、結構 ムツカシソウ デスネ.....
18 :
774ワット発電中さん :2013/12/01(日) 07:18:58.79 ID:16zHPqqD
MPLAB SIM走らせてたんですが、bsf, bcfが意図通りの設定されないです。 以下のコードでDSTが2にならないのは何故なんでしょう? LIST P=PIC16F84A INCLUDE P16F84A.INC __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF DST equ H'0C' LOC equ H'0D' ORG 0 INIT clrf DST movlw H'01' movwf LOC bsf DST,LOC end
19 :
18 :2013/12/01(日) 07:40:03.79 ID:16zHPqqD
解決しました。余りにアホでした。
20 :
774ワット発電中さん :2013/12/01(日) 11:10:04.09 ID:Z+DIiSgx
このスレは そういうスレなんで大丈夫。 頑張って
bsf bcfは定数しか受け付けないぞ
予想外のところで勘違いしてる可能性もあるわけだ 人に教えるときは気をつけないとな
23 :
774ワット発電中さん :2013/12/14(土) 05:39:41.13 ID:o/43UWWy
PICの開発環境、MPラボX の使い方を書いた本はありますか?
こんばんは PIC24FJ64GB002を使ってUSBの機器を作りたいです。 PICの足で、VBUSというピンがありますが、このピンの役目がわかれません。 USBのコネクタの電源に綱いでいるようですが、内部の3.3Vではいけないのでしょうか?
USBバスパワーは5Vだからと勝手に思ってる。 俺も同じチップをちょいと、前にRSで買ったよ。
27 :
774ワット発電中さん :2013/12/23(月) 18:09:42.40 ID:GUxyiZef
PICの中で、 低速でもいいので 12,14,16bitなどのD/Aコンバータが 入っているシリーズはありませんでしょうか? そんなD/Aが入っているなら、44ピンとかのQFPでもいいです。
Microchip Advanced Part Selector によると10の次は16しかないな…。 次は自分で調べような。
29 :
774ワット発電中さん :2013/12/23(月) 22:25:09.77 ID:GUxyiZef
>>28 ありがとうございます。
>によると10の次は16しかないな…。
そのページで探すと、D/Aにbit数の選択は無いみたいです。
ch数が4まで選択できるだけみたいですが、
(Vref+ - Vref- 間)を32段階に分割するしか無いのでしょうか。
>>29 あ、自分で調べてほしいからって削りすぎてたな…。
D/Aの項目のカテゴリの左上に小さく展開できるマークがあるでしょ?
そこ開いてみ?
細かく見たい項目はこうやって探すみたい。
ありがとうございます。 小さな+で、気がつきませんでした。 早速調べて見ます。どうもありがとうございました。
俺も以前はあの表示に気がつかなかった。 そうでなくてもたくさんの項目が表示されているので、 これで全部だろう、と勝手に思ってしまった。 PICのバリエーションは、AVRの比ではないな。 DSPの積和モジュール UART, SPI, I2Cなどの通信モジュール USB、TCP/IPなどのモジュール ADコンバータ14bit DAコンバータ16bit プログラマブルRESET IC RAM, ROM, EEPROM ここまで入ったてんこ盛りPICを埋め込んで、あとはピンに出すか出さないかでも たくさんのバリエーション展開できそう
すいませが質問させて下さい 12F1822でtmr0をフリーランさせてtmr0割り込み許可のままADCしようとするとtmr0が止まってしまうんですがそういうものなんでしょうか リビジョンはa4でした。 Adc入るまではデバッグでtmr0動作は確認済みです。adc系さわると止まるみたいなんですが tmr0が止まってもADCはちゃんと動いてるみたいです。何か知っておられたらアドバイスお願いします。
34 :
774ワット発電中さん :2013/12/25(水) 10:42:59.96 ID:CRviunrJ
ソースを見せてくれませんか?
INTCON壊してるとかじゃね? 割込中に値を変えるレジスタを 割り込み外で操作するときに、割り込み禁止してるけ?
ソース貼るとパタッとレスが止まったりするから無駄無駄 AD変換が終わんないバグあり品で変換待ち中にWDTリセットとかかな ていうか1822にA4なんてリビジョンあっけ
返答ありがとうございます。 最初の宣言が間違っていました。 徹夜なっちゃって今起きてソース確認したら、、、 Org 0x00 Goto ini Org 0x04 Goto _int ;------------- _int clrf bsr bcf intron,gie て続くとこが Org 0x00 Goto ini Bra 0x04 Goto _ini になってました。 この後に割り込みの処理書いてるんで中途半端に割り込みが動いてみたいです。 お騒がせしてすいませんでした。 あとリビジョンは確かにa6でした。ご指摘通りです。
38 :
774ワット発電中さん :2013/12/25(水) 18:34:16.43 ID:3d1zITb2
>>37 レベル高いね。話の内容がサッパリわからん。
>38 割り込み時に4番地に飛ぶ仕様の筈だから 三番地のclrf bsrが無視された動作をしてたってことでそ
>>39 番地がビックエンディアンに
なるはずなくね?
新手のギャクか?
0x00番地 Goto ini;Org 0x00 宣言の直後だから 0x01番地 bra 0x04 0x02番地 Goto _ini 0x03番地 clrf bsr; <--- ここのラベルが_int 0x04番地 bcf intcon,GIE; <--- ここに割り込み時飛ぶ なぜこうなるかというと、picは、あれで何気にハーバードアーキテクチャーだから H8とかとはちがって命令用のメモリ空間は14bit長で ファイルレグなどとは独立して保持してあるんですおっ おっ (^ω^ )
ファイルレグ って、何?
>>41 bra 0x04
が
org 0x04
にパッとみで見えたw
>42 ファイルレジスターのことそう呼ばない? おいらの誤読かも(蒼白
>>44 ファイルレジスタじゃなくて、レジスタファイルじゃない?
しかも、そんな省略した言い方しないよ。
レグって何、言うなら、レジだと思うけど。
47 :
774ワット発電中さん :2013/12/27(金) 01:58:29.87 ID:y2hLEqin
あけまして おめでとうございます。 本年も、初めてのPICスレを 宜しくお願いします。
モンスターズインシとかハーバードユニビとか言っちゃって コミュニケーション障害起こしてそうな人だな
元の母音を復元しろという主張のようだから それを言うならモンスターズインコとかハーバードユニヴァじゃね? いや、俺はそう読まないけどw
会社の英語表記に出てくる、xxx Co, Ltd って、 意味は株式会社だと思うのですが、 ・何と読めば良いのでしょう? コーリテッドという人もいますが。 ・フルスペルは何でしょうか?
52 :
774ワット発電中さん :2014/01/02(木) 14:52:18.14 ID:tPBqCjX/
カンパニーリミテッド カンパニー=100円出すから稼いで1000円よこせという欲深いものの集まり リミテッド=会社の稼いだ利益は俺たちのもの でも会社がなんか社会にやらかしても 俺たちの責任は俺たちが出した金がちゃらになるだけであとはしらん 必要なら 税金使ってくれ の意味 ってPICとあまり関係ないな
53 :
774ワット発電中さん :2014/01/02(木) 15:46:19.29 ID:YGzdvIcB
分かりやすい説明だね
全くの素人がパクリ元無しでCaptureいじろうなんて甘かった・・・ とりあえず割込み使わずに作り直そう
割り込みって、とても便利な機能なんだけど、ソフトの1つのハードルだよね。 マスターすると、マイコンの機能を十二分に使うことができる。 ただ、多重割り込みは、さらに1つ上のハードル。 難しいテクニックの1つ。
>>55 マルチタスクなら、すごい難しいが、
シングルタスクならたいしたこと無い。
>シングルタスクならたいしたこと無い。 なるほど、マルチタスクは難しそうですね。 シングルタスクで、タイマー割り込みとRS232C受信割り込みの同時発生のとき 悩んだ記憶があります。
58 :
54 :2014/01/03(金) 22:05:38.33 ID:XVL7/Eqz
ほぼ1日かかって対処完了 割込み無しで組んで一応動く→数値が時々暴れる (ここで今朝から頭を抱える) 夕飯後、問題点は放置して機能追加のつもりでTimer1オーバーフロー割込み処理に挑む →今度は無事成功、しかも放置したはずの問題点まで消えてる! 結局、割込み処理出来ないとだめだったんだな・・・
>>57 UARTはPIC16でも1文字分のバッファあるから、次の1文字を
受信し終わるまでに、タイマー割り込み処理終わらせれば問題なし。
60 :
774ワット発電中さん :2014/01/04(土) 02:46:40.03 ID:dxa9VH95
でもタイマー割り込みの中で、時間計算や7セグメントの表示処理を行うと、 間に合いません。 タイマー割り込みでは、最下層の++とフラグonたけにするのでしょうか?
>>60 割り込み処理の中では、最低限の処理だけをするのが基本。
それでも間に合わなければ、クロック周波数上げれるだけ上げて、
UARTの通信速度を必要最低限まで落とす。
62 :
774ワット発電中さん :2014/01/05(日) 13:00:25.20 ID:np3+oTts
>>61 ありがとうございます。
>クロック周波数上げれるだけ上げて、
>UARTの通信速度を必要最低限まで落とす。
クロックはすでに20MHzで上限で、通信レートは相手機器の制限で下限にありました。
まさかとは思うけど, その時間計算って 定間隔割り込み用の時定数を 割り込み中に算術ルーチンで 計算していたりはしないよね^^;
7セグ用パターンに変換する処理の事なら パターンはPCLに加算するジャンプテーブルに RETLWで規定定数を返すルーチンで数ステップだから 割り込みないでもOKと思われ。 タイマーICのデータを表示用数値に変換する処理は 割り込み外のメインループのアイドルループ内で常に 最新の値に更新させておけば?
65 :
774ワット発電中さん :2014/01/10(金) 09:54:51.32 ID:LTN661GV
はじめてpicをやりたいのですが、8ビットと16ビットの、どちらが良いでしょうか? 8ビットで255以上の数値は
Hレグと Lレグにわけて扱います。 算術ルーチンはマイクロチップの公式サイトからダウンロードできますお
67 :
774ワット発電中さん :2014/01/10(金) 11:09:41.67 ID:LTN661GV
レグって何でしょうか?
ファイルレジスタの事です。 FileRegとも略されるのでこのスレではレグと呼んでいますお ちなみにハイバイト、ローバイト用にどのレグを割り当てるかはルーチン次第です。 算術ルーチンはソース形式で公開されていますので定義部を書き直せば (悪影響のない範囲なら)好きな位置に配置できますお
>>68 >>45 にもあるように、レジスターなのになぜレグなん?
あと、語尾に「お」付けるのやめたら? 賢い人なのに、バカに見える。
そりゃ英語でREGと略してるからだな。 レジと呼びたきゃ日本語でレジと略すことだ。
えー、と思ったけどグーグル翻訳さんもファイルレグと読んでくれるな・・・
>>69 かっこいいと思ってるんだから、ほっといてやれよ
モンスターズインシ
74 :
774ワット発電中さん :2014/01/12(日) 11:33:41.52 ID:FEw8iF/H
PICとUSBをつなぎたいのですが、線でつなげばいいと思います。
75 :
774ワット発電中さん :2014/01/12(日) 14:14:28.26 ID:U/jKka69
>73 いや、インクでしょ。 元発音くんの場合ならモンスターズインコでしょうけど
78 :
774ワット発電中さん :2014/01/13(月) 02:35:21.26 ID:1jMnFyLP
質問です。 ソフトウェア、ハードウェアは理解できるのですが、 ファームウェアの立ち位置がわかりません。 ソフトウェアと何が違うのでしょうか?
ソフトウェアの中のファームウェアじゃね
本来はマイクロプログラミングのコードを指す言葉の筈なんだけど 最近はユーザーが明示的にロード指示をせずに 自動的に読み込まれる類のものが、そう呼ばれている気がする。
81 :
774ワット発電中さん :2014/01/13(月) 16:48:22.85 ID:0HYBzY4v
firmwareのことだお
語尾に お 付けるの、やめようよ。
firmwareのことだし (^ω^)
おおお。 なぁにむしろ耐性が付くんだお。
86 :
774ワット発電中さん :2014/01/24(金) 03:36:04.80 ID:x6FPWCNk
語尾に お 付けるの、やめようよ。 面白がって、わざとやってるの?
おおきなおせわだお
firmwareのことだってばよ
にょ とか りゅん よりは
firmwareのことだギョギョギョ☆
91 :
774ワット発電中さん :2014/01/25(土) 03:52:25.79 ID:v7tbO863
このスレ、頭悪そうな人がいるね。 普通に話せないのかしら
スルーするのがいちばん たいした内容でもないし 論戦じゃなく、変なの出現すると過疎るのが技術系スレの宿命
93 :
774ワット発電中さん :2014/01/25(土) 14:34:37.97 ID:+gJmDrna
結局、ファームウェアとは、ソフトではないのでしょうか?
ハード密着型ソフトだお 頭悪い人は何も答えてないんだお
firmは「硬い」の意味だけど、ニュアンスとしてはHardの方がより硬い。 鉛筆でもH → F → B だし。 というわけで、Hardwareと、Softwareの間にあるのが Firmware。
>>91 英国に行けば英語で話す人と
英国でも日本語を話し続ける人は
どちらの頭がよいのでしょうか?
(2ちゃんで2ちゃん語を話す人と
2ちゃん語の発話者に粘着し続ける人とでは
どちらの頭がよいのでしょうか?)
バカにも解るように教えやがってくだしあ!!(^p^)
>>96 >
>>91 > 英国に行けば英語で話す人と
> 英国でも日本語を話し続ける人は
どうゆう状況なの?
誰に日本語で話すの?
英国にいって現地にいる毛唐どもに向かって話しかける状況とお考え下しあ。 (わざわざ2chでミクシーゆーざーに向かって呼びかける人はいないと思います)
当然通じないわけだが、それでなにがわかるの? たとえばタイじゃだめなの?英国じゃなくて。
言い直しまス。英国に赴き英語で現地人に話しかける人に向かって、 「そんな毛等の汚い言葉をつかわずに、美しい日本語で話せ!」と わめく人はどれほど頭がよろしいのかお教えやがって下しあ!(^ρ^)
日本に来てゴザルとかおじゃるとか誰も使ってないような古語を使ってる外国人がいたらすごくバカそうに見えると思う
説得するだけムダにゅ。 耳元で「真夏のあきはばらぁ〜」を72時間歌い続けてあげれば 彼も改心するかもしれないにゅ。
かなりどうでもいい
>>100 なるほど
「そんな毛等の汚い言葉をつかわずに、美しい日本語で話せ!」
と言われたわけだな?
でもホントそれ。そんな人いるの。
初心者スレでケンカ売ってる奴なんか無視しろよ 奴にかまうな
106 :
774ワット発電中さん :2014/01/26(日) 02:59:34.27 ID:VML5t0LH
他の板でどんな語尾を使っているか知らないけど、 郷に入れば郷に従えと言いたいなら、 電電板に入ったなら、電電板の言葉遣いをして欲しい。 電電板では、標準語を使用します。
/\___/ヽ //~ ~\:::::\ . | r=- r=ァ .:| | ,,ノ(、_, )ヽ、,, .::::| はいはいそうですね . | `-=ニ=- ' .:::::::| \ `ニニ´ .:::::/ /`ー‐--‐‐―´\
>105 それ俺じゃないですしお寿司
XC8 PIC18シリーズ C言語での割り込みプログラムの記述について教えていただきたく思います 優先順位のない複数の割り込み処理の記述では、割り込み要因ごとに void interrupt ****(void) で宣言する必要があるのか、それとも一つにまとめて if(TMR0IE && TMR0IF){ } if(INT0IE && INT0IF){ } という風に記述するべきか分かりません 記述してありませんが、割り込みが入ると同時に割り込み禁止 処理終了後に割り込み許可ビットを操作します
>>110 割り込みベクターが低と高の2つしかないので、
それぞれでまとめる必要がある。
基本は、
if(***IF){
:
}
で良いが、UART-TXのように送信終了後のように、
フラグが立ちっぱなしになる場合は
if(***IE && ***IF){
*
}
のようにする必要ある。
112 :
774ワット発電中さん :2014/01/31(金) 03:41:15.88 ID:NNBf1x05
オンボード書き込みで教えてください。 PICのオンボード書き込みをするために、PGCK, PGDT, /MCLRを、I/O機能と兼用にするとき、 そのピンが出力の場合、書き込み時に、外部機器が動いたりしないでしょうか? そのピンが入力の場合、書き込み時に、外部機器またはPIC手前のバッファからの駆動信号により、 HかLに固定されないでしょうか? つまり書き込み器の信号が強度的に負けないでしょうか?
共用のペリフェラルをスリーステートバッファで区切ってないの? 電源投入時はハイZ状態にしておけば悪さしないと思われ。
115 :
774ワット発電中さん :2014/01/31(金) 09:58:49.16 ID:9LeC4gR0
>>113 114
ありがとうございます。
直接に接続してはいけないんですね。
抵抗入れてorすれば・・・・考えてみます。
ありがとうございます。
なんと、抵抗だけでいいんだ・・・シッタカでサーッセン><;
>>112 確かに、
>>114 のpdfの接続でいいけど、
PICの出力に繋がっている機器が動いてしまうので、要注意。
ランプ程度なら光るだけだから問題無いけど、
エアの電磁弁に繋がっていて、エアシリンダーが動いてしまい、
人が挟まれて救急車、ということもあるので注意。
1. 無理をせずに多ピンのPICに変更し、ICSPピンはICSP専用にして共用しない。
2. ICSPの信号線は、書込中に「バタバタ」するものとして考える。
3. 共用するなら、安全なI/Oと共用する。
4.
>>113 のスリーステートはやり過ぎかもしれないけど、
I/Oを安全サイドになるようにプルアップ、プルダウンを対策し、
ジャンパピンなどで縁を切ってから書込をするようにしたい。
5. ICSPの信号線は、長くパターンしない。ノイズ乗りやすくなる。
ICSPは使い方に注意が必要なので、ワケワカラン人は、上記「1.」を
オススメします。
>>117 [1]がお勧めですね。デバッグする時にも便利だし。
119 :
774ワット発電中さん :2014/02/02(日) 03:07:03.90 ID:06PTsiQr
そうだね。分かり易くていい。
このスレの主旨(超初心者用)からすると、やっぱ「1」だよな
121 :
774ワット発電中さん :2014/02/02(日) 11:18:25.51 ID:GBZIb8Lk
仕事で使ってるけど、なるべく1で使ってるよ。
1k で LED 出力にしておくと、書いてるときのバタバタも 目視確認できるので、私的には「3」のLED出力に1票。
123 :
774ワット発電中さん :2014/02/02(日) 16:39:22.07 ID:06PTsiQr
おぉ、それは賢いな。使わせて貰う。
124 :
774ワット発電中さん :2014/02/10(月) 04:39:44.36 ID:JehFNR5W
おしえてください PICで、USBができて、EEPROM(64byte程度以上)の載っているチップはないでしょうか? 果敢に探しましたが見つかりません。 DIPで、3.3v, 5V両用電源だと嬉しいです。
どのシリーズが使いたいのか使えるのかその辺りよくわからないけど作品例が多いので18F2550とか18F14K50じゃダメ?
ネットを見ていたら、 以下のような記述がありました。 if (__NVIC_USED & (1 << 0)) { // Vector Table Offset Register (略) } このif分の括弧の中は、どのように読めば良いのでしょうか? __NVIC_USED と (1を0回左シフトしたもの?)でandを取るのでしょうか? (1を0回左シフトしたもの)の部分がわからないです。
0bit目のみをゼロチェックしたいときそう書く。 1を0回左シフトしたものはすなわち1だけど、 Nbit目を見るときhoge&(1<<N)と書くとわかりやすいのでそれと統一するため。
128 :
774ワット発電中さん :2014/02/11(火) 08:59:31.15 ID:GqEeWXzN
なるほど、わかりました。 0001 0010 0100 1000 と言う感じですね。ありがとうございます。 すると、シフトの分、処理時間が変わるということですね。
>>128 定数どうしの演算は、コンパイル時に処理される。
131 :
774ワット発電中さん :2014/02/12(水) 01:30:11.15 ID:FV8gY3oR
教えてください 例えば for ( i=0; i<3; i++ ){ x = x + i; } というのと、 x = x + 0; x = x + 1; x = x + 2; とでは、どちらが効率的でしょうか?
132 :
774ワット発電中さん :2014/02/12(水) 01:36:39.47 ID:FV8gY3oR
連投すみません。教えてください。 PICの開発環境を揃えることになりました。 MPLAB環境と、CCS-Cの環境は、どちらが優れているのでしょうか? もちろん費用は無視でいいです。
小学校の卒業祝いでお爺ちゃんにPICKIT3を買ってもらいました。 パソコンとかあまり詳しくないです(wordやexcelでVBAが少し使えるくらい)なので 中学生になったらいっぱい勉強したいです。
picで遊んで、VBAもつかえるなら、木下先生のEasyCommが超オヌヌメだお。 ↑先生は反応が無いことにご立腹で公開をやめちゃったんだけど 落とせるところがあるかもしれないから見つかるなら落としておくとええお。
135 :
774ワット発電中さん :2014/02/12(水) 12:17:52.16 ID:cIg2e3WD
語尾に お を付けるの、止めてくれませんか?
お気を害した様ですみませんでし><;
なぁにむしろ耐性がつく お
小学生の中で主流なプログラム言語って何だろうか? 知りたくなってしまった。
みんな大好きperlちゃん!
懐かしいなぁ
>>131 メモリ容量的に効率良いのは前者
速度的に効率良いのは後者
コンパイラが賢ければ最適化オプションの指定によって、前者に統一されたり後者に統一されたりするから、差はない
って感じじゃね?
142 :
133 :2014/02/13(木) 07:41:35.15 ID:GGhhSw9w
>>134 ありがとうございます。調べてみます。
>>138 プログラムとか全然わかりません。
VBAは先生が教えてくれました。
電子工作もはじめたばかりで555でLEDチカチカしか作れません。
わたしも早くみなさんみたいにスゴイの作ってみたいです。
>141 異議ありッ(AA略 ×メモリ △ROM ループ内処理がもっと長ければROM的には仰る通りだと思います…この内容なら ROM的にも後者の方が節約になって、RAM的には長さに関わらず後者の方が効率がよろしいかと・・・
144 :
774ワット発電中さん :2014/02/13(木) 13:02:18.46 ID:Q7I6KMZD
PICKit3のデバッガって、そんなに便利なのでしょうか? 使い出すと、プログラムを組む能力が進化しないと聞いた事があります。
>>131 PICだと笑えるくらい差があるはず
...たと思ったけど、間接アドレッシングが有るときだったかも
for ( i=0; i<3; i++ ){
x += y[i];
}
と
x += y[0];
x += y[1];
x += y[2];
みたいに。
>>144 プログラム能力とデバッカがどう関係するのか
サッパリワカラナイけれど
作ったプログラムのバグ出しをより効率よく行いたいなら、あると便利
作ったプログラムのバグ出しを苦難を乗り越え行いたいなら、必要なし
プログラミングを手段とするか目的とするか
いや〜ボク、プログラムするの趣味なんすよ
モータ動かす?は?
モータとかLEDとか全然興味ないっすよ
だから趣味はプログラミングなんですよ
と言う人なら全く必要ない
printfあればデバッガなしで何とかなる事案は多いので 組込み系だとどうやって表示させるかが問題 通電監視とかいって1個LEDをGPIOにぶら下げておくこと みんなやるよね?ランプ1個でも大助かり キャラクタLCDつけられたら無敵 PSoC楽でいいよPS(結局ステマ) プロ設計はシリアルつけとくのかな
TP
149 :
774ワット発電中さん :2014/02/14(金) 21:34:14.87 ID:37RBHdZV
16×2のLCDの、関数はどこかにないでしょうか? あと、I2CのEEPROMの関数と、RS232の、リングバッファの送受信。 欲しい
このスレではggrksは禁句ですか?
ccscなら、後閑さんの所にlcdのがあったはず
153 :
774ワット発電中さん :2014/02/16(日) 15:21:28.58 ID:vOwuUofD
初めてPICを使うので、PIC24FJ64のデータシートを読んでいます。 そこで質問があります。 データーシートを調べましたが、わかりませんでした。 このPICは、I2Cを2組持っています。SDA1,SCK1とSCL2,SDA2です。 が、ピン配の図を見ると、さらに別のピンにASDA1,ASCK1という割り付けもあります。 このASDA1,ASCK1の働きがわかりません。 英文データシートには、ASDA1,ASCK1には(2)としてNoteがあり、 Alternative multiplexing for SDA1 and SCL1 when the I2C1SEL bit is set. と書かれています。この英文の意味を考えると、 I2C1SEL bitがset(=1)されているとき、SDA1とSCL1を入れ替える、と読めます。 SDA1とSCL1を入れ替える理由がわかりません。 パターンミスしたときに、ハード修正無しに送受信を入れ替えするとしても、 ASDA1,ASCK1には何の関係もないですし。 あるいは、SDA1とSCK1の入替ではなくて、ASDA1,ASCK1とSDA1,SCK1を入れ替えるのかと思いましたが、 I2Cバスにつながる周辺ICは、パターか配線で固定なので、I2Cバスを切り替える必要はないと思います。 これは、どのように考えたらよいでしょうか? 宜しくお願いします。
>あるいは、SDA1とSCK1の入替ではなくて、ASDA1,ASCK1とSDA1,SCK1を入れ替えるのかと思いましたが、
英語どう読んでもこっちでしょ
ASDA1 ASCL1でググるだけでいっぱいでてくるけど…
1個だけあげとく
ttp://mycom1.cocolog-nifty.com/blog/cat40608993/ >I2Cバスにつながる周辺ICは、パターか配線で固定なので、I2Cバスを切り替える必要はないと思います
アドレスが当たっちゃうI2Cデバイスを排他的につなぎたいとか
いろいろ便利そうだけど
SDA1,SCK1のあるピンを別の機能に使いたい時にA〜に避難させられるって意味だと思う
>>153 16.1 Peripheral Remapping Options
157 :
774ワット発電中さん :2014/02/16(日) 17:19:09.21 ID:vOwuUofD
さっそくのご回答、ありがとうございます。
>>154 ありがとうございます。
>アドレスが当たっちゃうI2Cデバイスを排他的につなぎたいとか
なるほど、そういう時に使うんですね。
I2Cデバイス自身にも、2bit程度のAddressが
半田付けで決められるようになっていると思いますが、
それでも重複するときに使う。ということですね。
ありがとうございます。
>>155 ありがとうございます。
>別の機能に使いたい時にA〜に避難させられるって意味だと思う
なるほど、これも納得です。
そうすると、ICSPの接続ピンPGEC,PGEDが3組もある理由も、これでしょうか。
納得出来ました。
>>154 のご指導でググってみたら、後閑さんの記事で、こんなチップも出てきました。
A〜の、二組の振り替えI2Cを持っているのに、オリジナルのSCL,SDAが無いという。
↓
http://img.wazamono.jp/pc/src/1392536955308.png どうもありがとうございました。
すみません、もう1つ教えてください。
同じく24FJ64GB002 DIP28pin のピン配を見ていて、疑問に思いました。
通常のデジタルI/O(GPIO)ピンが、
RAポートで・・・・・10 9 8 7・・4 3 2 1 0
RBポートで15 14 13・11 10 9 8 7・5 4 3 2 1 0 と、飛び飛びの出力しかありません。
どれをとっても、8bit連続していないようです。
8bitで計算した結果を、そのままポートに出力するとき、16F88のようにRB7〜RB0まであるなら
b_port = A;
でできますが、24FJ64G002だと8bit変数のAを切り出して、
a_port[[8:7] = A[7:6];
a_port[[5:0] = A[5:0];
という2手順で行うのでしょうか? (上記の[ : ]は、bit番号です)
常時、構造体で束ねて使うのでしょうか。
何度もすみません、宜しくお願いします。
158 :
774ワット発電中さん :2014/02/16(日) 19:09:53.69 ID:vOwuUofD
連投、すみません。 最後に、もう一つ教えてください。 ピン機能に、「CN0〜CN30」の機能名があります。 これについて、以下のように理解しましたが、正しいでしょうか? ・CN = Change Notificationの略 ・入力ピンチェンジ割り込み機能のこと。 ・CNEN1, CNEN2のセットリセットで、検出したい入力ピンを設定する。 ・入力は全てorされていて、どれか1つでも変化すれば、割り込み起動 ・CNPU1, CNPU2で、内部pull-uppをon/offできる。 ・Sleep中、SecondaryClock=停止中でも、割り込み検知できる。 宜しくお願いします。
159 :
774ワット発電中さん :2014/02/16(日) 19:30:20.94 ID:B2qVCna7
まさか英文データシートを、頭から読んでるんじゃないだろうな?
連続したビットで扱いたいなら並んでる石つかえばええやん・・・ むりやりそれでやるってなら、 #define trans_port(arg) (((arg&0xc0)<<1) | (arg&0x3f)) とかマクロ定義しといて、 a_port=trans_port(A) とかできねえっすかね・・・自分じゃPICではCを使ってないのでできなかったらスマン
MicrochipのCコンパイラーで教えてください。 今日初めてMPLABとcコンパイラーをインストールして、動かしています。 今までCCS-Cで作ったソフトがあるので、LED点滅から勉強しているのですが、 エラーばかり出て、一向に動きません。 CCS-Cでは、a_port = 0b00001101; と書くと、aポートのLEDが3個点灯するのですが、 MPLABだとその行でエラーになります。 コンパイラーの取説にあったソース例を見て、PORTA=0x0d;とやったら、点灯しました。 a_portは、MPLABではサポートされていないのでしょうか? それとも、どこかに自分で追加登録すれば、a_portが使えるでしょうか? それと、 0b00001101もMPLABでは使えないのですが、どこかに設定はありますか? #fuses hs, nowdt, noprotect, nobrownout, put, nolvp、bit_test()やbit_set()など、 エラーばかり出ます。 どのような単語が使えるのか知りたいですが、コンパイラーの取説を見ていますが 見つかりません。
コンパイラにHitech Cを選択してない?
>>161 Project Properties > Compiler Toolchains
でコンパイラーを確認してください。
CCS C Compilerになってないんでは?
PICのデータシートに PORTAとは書いてあるけどa_portは無いところをみると CCS-Cの記述が独特なんでは?
165 :
774ワット発電中さん :2014/02/18(火) 13:09:51.96 ID:0ONMtZCi
>>162-164 どうもありがとうございます。
コンパイラーの設定は、CX8というMicro chipの8bit PIC用のコンパイラーです。
CCS-Cは古いバージョーンのしかないので、最近のPICが使えません。
なので、この際MPLABを使ってみようと考えています。
>PORTAとは書いてあるけどa_portは無いところをみると
>CCS-Cの記述が独特なんでは?
どうも、これのようです。CX8コンパイラーのユーザーガイドを
読みたいと思います。
昔あったN88-BASICの説明書のように、
1ページ毎にキーワード(GOTOとかIFとか)の説明と、その使用例が書いてあるような
本があると便利だと思いました。
CCS→XC8は苦労するかもね・・・ 組み込み関数は当然に使えないわけで
>>166 ありがとうございます。
>組み込み関数は当然に使えないわけで
そうですね。
CCSの便利さがよくわかりました。
結局、CCSのPCWHDというソフトを買うことにしました。
デバッガーは、ICD64です。
MOLAB X IDEとXC8を無料で使ってるんですが 有料版を買うメリットがよくわかりません 時々メモリーが足りなくて起こられたりはしますが そういうのが解消されるんでしょうか そういうメリットもよくわからんのなら無料ので十分 って解釈でいいんでしょうか
コンパイルする時に最適化されて、メモリの節約にはなるけど、個人で製作するレベルなら無料ので十分だと思う
170 :
774ワット発電中さん :2014/02/19(水) 23:15:37.24 ID:z+5G9Ba4
>>169 有料の上にライセンスの有効期間が1年だからな。
しかもスタンダードでも4万円位する。
171 :
168 :2014/02/20(木) 06:50:36.37 ID:eT8BthNd
ありがとうございます。 遊びにしてはちょっと高いですね。 このままでいくことにします。
バージョンアップ期間じゃなくて、使える期間が1年なの?
173 :
774ワット発電中さん :2014/02/21(金) 03:38:54.71 ID:Q1r+uOUB
175 :
natu :2014/02/21(金) 09:56:05.18 ID:CF2DyNwr
普通に使う分には、バージョンアップだけ出来れば良いと割り切れれば、HPA不要でしょうね。 でも$495は、高いよね。
スタンダードの値段だからなぁ
>つまり初期投資に5枚、以後1年ごとに1枚必要 ・新しいデバイスが使えない ・ソフトのVer UPができない というだけで、それまでの機能は維持、実行できると読めるけど。 上記をやりたいなら、$99/年払え、と読める
>>177 そうだよな
High Priority Accessって単語の意味考えると
単純に質問したときのサポート優先度か?
Low Priority Accessっていうのもあるのだろうか
って事ならバージョンアップには費用は不要なんじゃないのかとも思えてくる
結局High Priority Accessって何? ってことになりますね
180 :
natu :2014/02/21(金) 16:26:09.62 ID:CF2DyNwr
私は、偶然にHPAの権利を使ったことが有ります。1回だけですが 1.コンパイラのバグを見つけたので、それが再現出来るソースファイルを送った(当時はHI-TECH) 2.「再現したので、ちょっと待ってね」とメールが来た。 ...しばらくすると 3.バグを除いた実行ファイル"cgpic.exe"が送付されてきた。<--- HPAが有る時 HPAが期限切れの時は、「次のバージョンアップで解決しておくね」 の連絡だけになりました。
ぱっと見で、値段的にはmikroCが良さげですが、 XC8からの乗り換えって面倒でしょうか?
>>180 まさに文字通りのHigh Priorityですね
で、バージョンアップは期限無しなのかな? そうなら純正扱いで$495ならそう高くはないな
>>181 CONFIGの書き方が違うのとI/Oの構造体定義が違うくらい
1<<8の値も違ってたな
185 :
natu :2014/02/21(金) 18:05:58.56 ID:CF2DyNwr
186 :
natu :2014/02/21(金) 18:13:55.87 ID:CF2DyNwr
書込み押してしまった orz リビジョンってバージョンと同じですかね?
バージョンは、大幅改版 Ver10.3 の、10 リビジョンは、ちょっとだけ改版 Ver10.3 の、3 だと思う。
188 :
774ワット発電中さん :2014/02/22(土) 11:21:42.05 ID:OoLqCvON
PICの型番ってとても多いですが、なぜこんなに多いのでしょうか? bit数×フラッシュROM容量×RAM容量×形状×ピン数×機能 各3としても、481…
ルネみたいにただひたすら上位互換ばかり作ってないから。 USBやイーサを1チップに二つ積んだPICとか出ないかな…。
>>188 なぜ各3なのか意味不明
特に「機能」は
PIC to PICのワイヤレスな通信で 参考になりそうなサイトのお勧めを紹介してください。
近距離でいいなら赤外線LEDと受信モジュール使ったリモコンの作例とか探してみれば?
4倍固定のPLLを内蔵したPIC18Fで、 外付け水晶に16MHzを接続した場合、内部Clockは、 64MHzで動くのでしょうか? それとも、1/2の32MHzで動くのでしょうか? PICの、PLLを駆動させる入力周波数の上限が、16MHzになっている場合、 16MHzの水晶(上限ギリギリ)は、まずいでしょうか? それとも、18MHzの実力があるが、スペック上は16MHzを謳っているのでしょうか? 宜しくお願いします。
俺の知ってるPIC18はPLLのON・OFFをプログラムで設定できたけど君が使おうとしてるものは知らない その仕様であればONにすれば64MHzになるしOFFで使えば16MHzとなる データシートの内部ブロック図で確認してね 16MHzに多少誤差があっても動くから心配すんなし
>>194 >その仕様であればONにすれば64MHzになるしOFFで使えば16MHzとなる
PIC18K46K22です。同じように、内部設定でPLLを通すか、直接か切替できます。
>16MHzに多少誤差があっても動くから心配すんなし
ありがとうございました。安心しました。
196 :
774ワット発電中さん :2014/02/24(月) 03:04:51.69 ID:pI/hy9nr
教えてください。 初心者過ぎで、PICの開発環境がよくわかっていません。 PIC16F、18Fを、C言語でプログラムを作成し、 USBコネクタ経由でフラッシュに書込、デバッグがしたいです。 何を揃えれば良いのでしょうか? 名前がわからないのです。 MPLAB 統合開発環境のこと XC8 XC16 Cコンパイラー ??? デバッガー PIKkit2/3 ダウンロードケーブル ICD ??? デバッガーは、コンパイラーと同じで、MPLABからキックされるものと思いますが、 アプリの名前がわかりません。 ICDは、インサーキットデバッガーの略だと思います。これもデバッガーなのでしょうか?
>>196 まずUSBを使いこなすことはあきらめたほうがいいよ。
XC8、pikkit3、16Fシリーズ、でLedを点滅させるとこから出発。
デバッガというのは、ソフトウェアですよね? デバッガというハードウェアは要らないのですよね? pickitというのは、ダウンロードケーブルであって、デバッガではないですよね? その辺がわかりません
組込の世界は初めてかな?
デバッガを別ソフトウェアだと認識してるという事は、Javaの人かな?
この世界ではデバッガって言うと、どちらかというとデバッグ用のハードウェアの事を指す方が多いよ
PICkit3もProgrammer/Debuggerだし
マイコンにファームを書込む(Programする)には通常とは異なる方法で外部からマイコンに
アクセスするための仕組みが必要なんだけど、
この仕組みをファーム書込だけじゃなくてデバッグにも使えるようにしてるって事
PICなら要る物は
>>198 が全て。これだけあれば業務も出来る
他に必要な物はキミのやる気と理解力だけ
>>199 PICデバッガの構成
PICに内蔵されているデバッグ機能でCPUをコントロール
(たいていのPICにデバッグ機能が入っている)
↑↓ (デバッグ命令をデバッグPINで通信)
pickitやICD等(PIC内蔵のデバッグ機能との通信ハードウェア
↑↓(ブレークやメモリーの読み出し等)
MPLAB等のデバッグ機能は、PICにプログラム書き込みやソースとマシン語の対応付けた画面UI
pickitやICD等のハードウェアと通信
全部でデバッグ環境
デバッグする人の頭がよくて、ブレークポイントが一つとか二つで 済むのならICDでおkッス。問題の切り分けが難しくて (複雑な処理で)もっと多いブレークポイントが必要になってくると 十数万円出してICE(ハードウェア)買わなきゃいけなくなりますです…
みなさん、ありがとうございました。 機能と現物とを対比して説明してもらって、よくわかりました。 電電のみなさんが、こんなに親切だと思いませんでした。 理解したことの確認の意味で、以下にメモします。間違いがあれば、ぜひ指摘をお願いします。 1. デバッガー機能は、ソフトウェアとハードウェアの連携で実現されている。 2. PICの中には、デバッガー用のハードウェアが、初めから入っている。 3. MPLABで、ブレークポイントやウオッチ登録を設定した後にコンパイルすることで 通常のリリース版とは異なる「デバッガ機能を含んだHEXファイル」が生成される。 4. MPLABのソフトは、人間とのUIにより、デバッガ機能を含んだHEXファイルを生成する のが仕事。 5. それをMPLABにより、PICに書き込んでRUNさせるが、 ブレークポイントで停止するなどの機能を直接行っているのはPIC内部のハードゥエア。 6. MPLABソフト側は、PICマイコンから「ブレークポイントで止まったよ」という連絡が 来るまで、待っているだけ。PICから連絡を受けたMPLABは、PICと通信をして、 必要な値などを取込み、値や現在の実行行を人間に表示してくれるだけ。 7. PicKit3などのダウンロードケーブルは、上記のやりとりの通信をする経路であって、 デバッガの機能には参加していない。 8. PicKItとICDの違いは、製造販売が、MicroChipか、MALかの違いであり、やることは一緒。 なぜかと言うと、デバッガの機能は、PIC内部のハードの機能で決まるから。 9. PicKit2と3の違いは、3の方が新型であり、上位互換バージョン。
ブレークポイントの位置換えてもリビルドはしなかったと思う。
>>204 ありがとうございます。
そうですね。
予想するに、停止する位置を、MPLABがPICに指示するのではないでしょうか?
あるいは、デバッグ用のHEXとは、MPLABとPICとの通信やりとりの部分だけ
だったりして。
206 :
774ワット発電中さん :2014/02/24(月) 15:26:26.05 ID:aqg4NlXq
訂正 × あるいは、デバッグ用のHEXとは、MPLABとPICとの通信やりとりの部分だけ だったりして。 Φ あるいは、デバッグ用のHEXとは、MPLABとPICとの通信やりとりの部分を追加しただけ だったりして。
ICDって純正ICD3じゃなくて、MALのサイトで売ってるヤツの事か 非純正品は専用ソフト(デバッガソフト)でないと使えなかったりするから注意ね MALのICDがどうかは知らんが、MPLABから使えない物もある 個人的には、PICkit3があればこの辺のサードパーティ品に存在価値無い気がするんだけど ICD2しかなかった頃の遺品か?
>>207 ありがとうございます。
>ICDって純正ICD3じゃなくて、MALのサイトで売ってるヤツの事か
すみません、MALのページにも「ICD3はマイクロチップ社製」と、書いてありました。
つまり、ICD2, ICD3は、Microchip純正ということですね。
ありがとうございます。
すると、ICDの系列と、PicKitの系列は、何がちがうのでしょう。
当初はICDだったけど、後継機としてPicKitが発売された、とかでしょうか?
あと、PicKit3の6番ピン(LVP)の線を使う用例が、ネットであまり見かけませんが、
みなさん使わないのでしょうか?
「PicKit3の中に昇圧回路があって、約9Vの電圧作っているから、
PicKit3を使う以上、LVPの線は使わないよ」とかでしょうか?
ICD3高すぎじゃね?
>>209 わざわざ表まで、ありがとうございます。
MALのページを見ると、
・ICDが先行で出ていて、PicKitは後発で「書込器」の位置づけ。
その後デバッガ機能が追加になった。
・ICDオススメ、PicKitオススメしない 的に書いてあります。
・金額も違いがあり、ICDは、PicKitが6-7個買えるみたいです。
212 :
774ワット発電中さん :2014/02/24(月) 21:08:43.51 ID:r2RiO1ps
pickkitでとりあえず遊べばいいんじゃね? ICD使ってる人ってどれ位居るのだろう?
ノ ICD->ICD2->ICD3と変遷ちう。Pickit使ったことないっす。
ICDは便利でしょうか? 使い心地はどうですか? 一度は使ってみたいと思う。
昔はPICSTARTplus(書き込み機)で何度も焼きなおしながら LED点灯タイミングなどをヒントにデバッグしてた時期もありますが ICDを使い始めてからはICD一本です、便利ですお。 ただ、Pickitを使ったことが無いのでPickitとICDとで利用時に 有意の差があるのか?は、私にはわかりません。 ポケットマネーで買うならpickitにするかもです(^^;)
>>214 ICDとpickitの差は>209でわかると思う。
使い勝手は、ほとんど同じです。
ICD2,Pickit3と持ってます。
もうICD2使ってない。
価格差を考えて、pickit3をおすすめする。
使ってみると分かるけど、ICDはあの電話線が嫌 そんなに特性良いのか? PICkit3で全然問題ナシ
Pickit3とICD3の差のまとめ ・デバッグ用プログラム領域の有無 (Pickitは512kB必要、ICD3では不要) ・Complex ブレークポイントの利用可否 (Pickitでは不可能、ICD3では可能?) ・量産時書込み(Production programmer)の可否 (Pickitでは不可能、ICD3では可能)…公的にはICD3の方が書き込み時間が短いらしいが、異存の声も^^; ・値段 pickit3:実売8k円程度? ICD3:実売20k円程度?
>>218 いいですね。保存しておきました。
>・デバッグ用プログラム領域の有無(Pickitは512kB必要、ICD3では不要)
この領域とは、どこに必要なのでしょうか?
PICのROMに? PicKitの中? PCに?
>・量産時書込み(Production programmer)の可否 (Pickitでは不可能、ICD3では可能)
量産時の書き込みは何か異なるのでしょうか?
PicKitで ひたすら書き込みすれば、いくつでもかけると思うのですが。
>pickit3:実売8k円程度?
秋月だと4300円ですが、これは何か違いでもあるのでしょうか?
確かに電話線はいやですね。線が堅いしコネクタも特殊だし。バラ線6本には負けると思う
>どこに必要なのでしょうか?
デバッグ対象のターゲット基板のPIC(のプログラム空間)。
ICDも昔(1の頃)は特定のレジスタとかがリザーブされてますた。
デバッグしないなら自由に使えるんだけど、デバッグするときはそこを
明けとかないといけなかったです。
>何が異なる
一個当たりの書き込み時間、それもたぶんMPLAB IPEを
使った時の話だと思われ。当方Pickit持ってないので比較できず。
参考 P.177:
http://ww1.microchip.com/downloads/jp/DeviceDoc/52027A_JP.pdf 8k円はデジキーでの話ですた。 電話線は自分で変換ケーブルつくればおkっす。
512kB?
\8,000もそうだけど、良く知らんのに余計な事すると恥をかく例だな Digi-Keyの\8,000はデバッグ基板付きだろう 単体なら\4,500-くらいであるはず
512kBのソースは
>>209 の画像の「Program Image」だろうが
これはProgrammer-to-Goで使える容量の事で、デバッグ時にデバッガで消費する容量ではない
デバッグ時に消費される容量はPICkit3とICD3ではほぼ同じでフラッシュの末尾576B
そもそも同じ仕組みでデバッグ出来るようにしてるんだから変わるはずがない
ブレークポイントの違いは差別化のためで、技術的にはPICkit3でもできるはずだと思う
できてから言って どうぞ
あれ?そうなのか・・・そりゃスマンカッタ・・><;>223
226 :
774ワット発電中さん :2014/02/26(水) 19:46:53.69 ID:Dng7zbb8
ということは、安くて小型なpickit3のほうが、メリットが高いということですか。
12Fシリーズや16Fシリーズで遊ぶ分にはPICkit2でも十分なの?
>>209 の画像以外の部分でPICkit2とPICkit3に差異ってあるのだろうか?ソフトのほうとか。
あと、PICkit2を選ぶなら、秋月のAKI−PIC2プログラマボード(PICkit2互換)も有りですか?
ピン数少ないPICだとICSP用に回路組むの面倒な時もあるしかえって便利?
少ピンPICの開発をするときは、 多ピンのPIC+PicKit3で開発、デバッグして、 ソースレベルで少ピンPICのほうに持って行くのはどうでしょう? 自分の中で、定番PICを決めて使うと楽だよね。 僕はPIC16F88と16F877A 最近のPICは使ったことない。 config設定が多すぎて、怖い感じがする。
>>228 16F88は16F690にのりかえたほうがいいよ。安いしね。
あと電源がPICの左側によってて、16F680,12F675,と同じブレッドボードで
書き込みできるのが便利。
88→690はピン数も違っちゃうからケースバイケースだと思うけど 877Aは887でいいんじゃね、ピン数もおなじだし。
どこかに、PICの家系図はないのだろうか?
>>228 や
>>229 のよう「毎日がお得値」みたいな話が知りたい
PIC専用のスレのテンプレに秋月で取り扱ってるPICの価格と性能の簡易比較表がある
ありがとう 確かに価格について分かりやすく書いてあるね。 世代変遷みたいなのは本家のページに行けばあるんだろうか。 例えば、 PIC○○は、PIC△△の後継機で、ピンコンパチで置き換えできるように開発した。 のような。
234 :
774ワット発電中さん :2014/02/27(木) 10:39:52.78 ID:cWKV6o6Z
PICって何の略?
Peripheral Interface Controller その辺のマイコンと同じとは思わない方が良いと思う
>>229 ICEまで揃えていると、乗り換えるのに安いものでも
数万円(ほぼ10万円)程度のコストがかかる・・・
237 :
774ワット発電中さん :2014/02/27(木) 21:03:37.32 ID:P+5zFj5k
PICのCCSってあまり話題に上らないのは値段が高いからかね? ぱっと見ライブラリがじゅーじゅつしててarduinoなみにコーディングが簡単に見えるけど
>>233 そういう変遷とか知りたいけど無いんだよね
時代遅れの機種(Microchip語で「mature」)のページにはお勧めの代替品が書いてあるけど
>>238 matureですか。なるほど、わかる気がします。
ちなみに、そのページはどこにありますか?
Microchipのwebページを調べましたが、全然引っかかりません。
>>240 ありがとうございます。
前回、そのページにはたどり着いたのですが、matureの文字もありませんでした。
再度今行って、recommendで検索しても見つかりませんでした。
すみません、どこに書いてあるのでしょうか?
Product Status 右側の+をクリックしてみな
ありがとうございます。 matureのチェックボックスが出て来ました。 出て来たので、チェックしても、何も変化しません。 PIC○○ mature PIC▽▽ とか表示されるのかと思っているのですが、 何も表示されないのですが。 よくわかりません。
>>237 あいつ下位互換どころか上位互換もないから……。
と使った者の話、
ソフトウェアUARTが楽に構築できるのはいいんだけど、設定行とか一行入れ替えただけでエラー吐くし。
USBやらLCDは使ったことがないのでサンプルやライブラリが使えるかどうかは不明。
個人的には秋月でも取り上げ始めたDHT11の上手く動くサンプルがほしい。
どうしても1回目か2回目の起動チェックで引っかかる…入出力の入れ替えにそんなに時間が掛かるとは思えないんだけど。
>>243 ここが初心者向けスレであることは確かだけど、もっと自分でなんとかなんね?
おれは>240見てすぐに辿り着けたぜ?
Family:ALL、Prefix:PIC16F、8-bitにチェック、Matureにチェック(CurrentとFutureは外す)で、
>ちなみに上に出てた PIC16F877A については、
>PIC16F887 is recommended と書いてある。
が確認できるから
>>245 ,246
ありがとうございます。
>>246 の画像で「recommended」の表示位置がわかりました。どうもありがとうございます。
僕も同じ画面にしようと思い、チェックをはずして行くんですが、
なぜかチェックをはずしても、ちょっとすると勝手にチェックが戻ってしまいます。
これは正常なのでしょうか?
デジキーの部品検索のように、条件選んで、条件選んで、条件選んで、
「検索ボタン」とするのではないんでしょうか?
結果の見方としては、matureをチェックして、検索すると、
matureな品種のPICだけが右半分の一番上のリストに出るので、
その中から、自分の知りたい品種を選択して(黒くして)、その右にある「Reset Search」ボタンを押すと、
>>246 の画像の赤枠のところにrecommendedなPICの品番が出る、
で良いのですよね?
microchipのサイトの使いづらさは天下一品だとはいえ、 チェックを1つ付けるたびに再読み込みしてることくらい気づいてほしい
ありがとうございます。
わかりました。確かにカラーホイールがぐるぐるします。失礼しました。
RSと同じ方式ですね。ありがとうございます。
しかし、
>>246 の画面にできないです。チェックが勝手につけられてしまう。
matureのチェックは付きますが、Current, Futureなど、消しても付けられてしまいます。
もう少し自分でさわってみます。
>その右にある「Reset Search」ボタンを押すと そんなの押しちゃだめ 設定がリセットされちゃうよ
プログラムやろうとすると入り口でまずつまずくんだよなー。 javaやろうとしてPATHが通らなくて断念したことがある。 なんでみんな初心者に厳しいんだろ。
252 :
774ワット発電中さん :2014/03/01(土) 19:50:25.04 ID:ljUihyvs
海外のエロ動画検索する時 mature と入れると熟女さんが沢山出てくる。 豆知識な。
>>251 それは皆様からのガンバレという「愛のムチ」です。
なお、お好みにより「愛のロウソク」、「愛の亀甲縛り」などもございます。
外付けSRAMの回路で74HC4040を使ってるのを見かけますが ピン数の多いPICを使う場合と比べて両方の長所短所を解説してください。 よろしくお願いします。
74HC4040で、SRAMに何をするの? 関係がよくわからない。
256 :
774ワット発電中さん :2014/03/03(月) 10:36:20.66 ID:X/QN63De
4040って、カウンターだっけ?
SRAMのアドレスバスにカウンターをつなぐ よくある手ですわ
PICのピン数を節約するためにSRAMのアドレス指定にカウンターを使う。 ランダムに指定するわけじゃなくて順番にアドレスの指定値を増やしていけばいいから。 ということだと思うんですが、 カウンター使うのとPICのピン出力で直接指定するのとで速度的にはどうなんでしょう?
そんな使い方があるんですね。初めて知った。 ランダムアクセスせずに、シーケンシャルアクセスばっかりで使うのかな? それとも、ランダムアクセスの時は、4040リセットして、カウンター回す。 目的の番地になったらRead/Write、を繰り返すのかな。 スゴイ使い方だ。
そういやむかし職業訓練校の先生が、ROMのデータバスを ラダー抵抗の簡易D/Aにスピーカつなげて、音声再生基板にしてたなぁ。 (それを半田付け体験の来場者プレゼントに使ってらっしゃった。 組み立て後に、PCのレコーダを使って音声をサンプリングしてROMに焼いてあげてた) 俺も一枚欲しかったけど余らなかったじぇ…ギギギ><; ↑シーケンシャルアクセスの一例
EEPROMの初期化で使われるマクロ __EEPROM_DATA(P1,P2・・・,P8)についてだけど この処理はいつ行われるの? 例えばEEPROMのデータを書きかえてから電源を切って再び電源を入れたときこのマクロが実行されると 電源を切る前の保存内容が変わってしまうよね
262 :
774ワット発電中さん :2014/03/03(月) 23:00:51.87 ID:l3ySw5pW
>>261 PIC書き込み時にEEPROM領域に書き込まれる。
>>259 PICじゃなくてAVRでインベーダ基板補修用の2708ライター作るときに4040使ったよ
基板がコンパクトになってなかなかよろし
スタートスイッチと4040のリセットとモニタLEDを兼用したり参照ROMのOEと4040のクロックを兼用したり
ピンの節約がまた楽しい
>>261 ようするにプログラム書き込むときに一緒に書き込む
>>263 メモリアドレスを、4040でまかなえるほど低速か、シーケンシャル動作だったの?
4040で、まかなえる速度ならI2CのSRAMのほうがシンプルだと思う 大容量RAMが必要ならH8とかの外部バスの有るチップを使ったほうがソフトも楽だよね
267 :
natu :2014/03/04(火) 12:36:47.18 ID:O6mthcg5
>>261 もしもPIC16でXC8だったらですけれど...
char __eeprom saveData;
saveData = 0x55;
y = saveData;
EEPROMアドレスをコンパイラに任せた方が楽ですよ。配列も使えるし
教えてください。 MPLABとXC8コンパイラーを使って、PICの勉強をしています。 RB5とGND間にLED+抵抗を接続し、RB5 = 1で点灯することを確認しました。 次に、5V電源とRA2間にスイッチ、RA2とGND間に1kの抵抗を接続し、 RA2ピンに、スイッチを押すと5V、離すと0Vになることをオシロで確認しました。 その上で、プログラムを作って動かしたのですが、SWを押してもLEDが点灯しません。 何が間違っているでしょうか? #define on 1 #define off 0 main(){ TRISA = 0b00000100; // PORTAの入出力設定 TRISB = 0x00; // PORTBの入出力設定 while(1){ // 以下の5種類を試しましたが、RB5のLEDが点灯しません。 RB5 = RA2; RB5 = (RA2 == on)? on : off; RB5 = (PORTAbits.RA2 == on)? on : off; if (PORTAbits.RA2 == on){ RB5 = on; } else { RB5 = off; } if ((PORTA & 0b00000100) != 0){ RB5 = on; } else { RB5 = off; } } } 何がいけないのでしょうか?
昔のはRAで読めた気がするけど 最近の石はポートの読み込みに使うレジスタ名が違った希ガス なんて石をつかってるん?
すみません、PICは、16F877です。 現行の18Fなどは、出力レジスタとして「LATCH....」とやるみたいですが、 16F877は、同じ変数名かな?と思っています。 ちなみに、XC8の、16F877.hのRAポートの構造体記述は、 このようになっています。 // Register: PORTA extern volatile unsigned char PORTA @ 0x005; #ifndef _LIB_BUILD asm("PORTA equ 05h"); #endif // bitfield definitions typedef union { struct { unsigned RA0 :1; unsigned RA1 :1; unsigned RA2 :1; unsigned RA3 :1; unsigned RA4 :1; unsigned RA5 :1; }; } PORTAbits_t;
すみません、動きました。 a_portは、DefaultでAnalog入力でした。 ADCON1 = 0b00000110; の追加で、取り込めました。 どうもありがとうございました。 でも、なんで、Defaultがアナログなんだろう。
じゃあデフォルトは何であるべきかな まあデジタル出力のHIでいい気がするけど。
274 :
774ワット発電中さん :2014/03/05(水) 03:55:37.24 ID:o5gBwXxI
デジタル入力で良いと思う。外部にプルダウン抵抗付けてね。 出力にするのは怖い
遅蒔きながら74HC4040のデータシートを見てみたんですが CP to Q0 : 14ns Qn to Qn+1 : 8ns と書いてあって、これは12ビットで1回カウント値を変更するのに 14 + 12 * 8 = 110ns 必要ってことでいいんでしょうか? メモリのアドレスは実際は16ビット必要なんで、さらに 14 + 4 * 8 = 46ns 結局、合計で145nsは、周波数では数MHz程度ってことで、 速いんだか遅いんだか…。
MPLABとXC8コンパイラーを使って、PICの勉強をしています。 昨日より、順調に動作をするようになりました。 ここで質問があります。 1. Configration bitとレジスタ設定 Configration bit と ADやUARTのレジスタ設定の処置として、 必要なものだけをセットして、他の設定は放置(Reset後の値を信じる) というのは、いけないことでしょうか? 明示的に書き込んでやるのが「正しい」のでしょうか? デバイスによっては、すごくたくさんの設定数があり、記述が大変だからです。 2. _xxx の記述について xc8のincludeファイルを見ると、PORTA や RAなどの表記もありますが、 _xxxのように、先頭にアンダーバー(あんだースコア?)のついたものがあります。 _の意味は何なのでしょうか? 何か特殊な機能のために付けるのでしょうか? 他の変数とは、何か別の扱いがしたいから、わざと_を付けているようにも感じられます。 中には__と2つ続けているものもあったりします。 あるいは、マイクロチップだけの作法なのでしょうか? unsigned char _kaisuu のように私も変数として使っても良いのでしょうか? 宜しくお願いします。
>>276 1,すごくたくさんあって見逃してましたテヘってのが通用するならリセット後の設定とかデフォルト設定を信用してもいいかと。
自分の読み間違いやその他の要因を気にしなきゃ書かなくてもいいんじゃない?
ただバージョンが変わったとき動きも変わるかもって気がするけど
「正しい」かどうかじゃなくて、プログラムコード全部に自分が責任を取れる様になるというような感じ?
2,そうしていいコンパイラもあればそうしちゃいけないコンパイラもある
マイコン自体(というかそのマイコンに対応しているコンパイラすべてが)その記述に対応していない場合もある
頭に数字はダメとか、?マークはダメとか色々あるからマイコンに合わせて使ってください
1. Configuration Bitsはクリックして選んでコピペするだけだから全部書いてる。 SFRは必要な機能と関連したレジスタだけはは一応全部のビットを眺める。 2. よくわからない。 コンパイラが叱ってくれるから気にしなくていいんじゃ?
>>277-278 どうもありがとうございます。
CONFIGは、8bitくらいの短いものなので、毎回書いても苦にはならないんですが、
特殊レジスタ(SFR)の初期設定は、関係するものだけ、ですよね。
データシートにリセット時は0になる、と書いてあるんですし。
_xxxの件、ありがとうございます。今度使ってみようと思います。
アンダーバーの数で、何通りにも使えて便利な気がします。
_delay_ms
__delay_ms
___delay_ms という感じ。
>「正しい」かどうかじゃなくて、プログラムコード全部に自分が責任を取れる様になるというような感じ?
たしかにそうですね。ただ、僕らは趣味だし、結果オーライという部分がありますが、
仕事でPICを製品に組み込んでいるようなプログラマーの人なんかは、
全数書いているんでしょうか、気になるところです。
>叱ってくれる mjd? 予約語と偶然に一致していたら どんな警告をしてくれるというの? 自分で命名する場合には避けとくのが無難だと思うよ…>アンダースコァから始まる変数名 >初期化 アセンブラのなら標準インスコ時には C:\Program Files\Microchip\MPLABX\mpasmx\templates\Code にテンプレがあるとおもうからそれ使えばいいんでね? この案の場合、XC8内にアセンブラ書く方法は自分でしらべてちょんまげ ansi準拠ならasm{ }で囲めばよかったような気がするけど XC8がそうなのかは俺しらねぇYO
MPLAB Xのエディタでは予約語やコメントなどの色が自動的に変わります。
283 :
774ワット発電中さん :2014/03/07(金) 03:19:24.63 ID:Wian589i
>>282 いや、変じゃないよ。合ってると思う。
それもそうだけど、MPLABは漢字が使えるから嬉しい。
でも等幅フォントにいいのがなくて、スペースで送った時とTABで送った時で、
位置がずれるのが困る。
複数の入力を静電容量式センシング(CPSピン(CSM方式)とかANピン(CVD方式))で監視する場合 その入力に変化があった時だけスリープモードから復帰して装置を動かしたいのですが このような入力方式の場合スリープモードから復帰する方法はありますか?
これからPIC始めようと思うのですが、 このスレでもあまり話題を見かけませんが MikroCってメジャーじゃないのでしょうか?
>>285 メジャーと言うほど紹介されてない、が正しいかな。
安いし、それなりのライブラリがあるはずだけどユーザー数が少ないのかねぇ…。
>>285 独自のライブラリが充実していてその範囲なら使いやすいというイメージ
自分がPICをやりはじめたとき
やりたいことに対応するmikroCのライブラリが無かった
ので、MPLAB系を使うようになった
一度使い始めちゃうとmikroCのソースをみかけても素通りするようになって…
おれ使ってる、むかしライブラリの充実ぶりを気に入って使い始めたけど いまの純正もライブラリすごく出来上がってるとかどっかでみた、そんなん?
質問があります。教えてください。 XC8のCコンパイラーで、16F877の割り込みの勉強をしています。 webで検索してきたLEDチカチカのソースでは、割り込みの書き方が、 void interrupt isrTMR0(){ T0IF = 0; TMR0 = CNT_DATA; (処理を書く) } と書いてありました。確かに動作しました。 ところが、XC8のユーザーマニャアルの書き方の例では void interrupt tc_int(void){ if (TMR0IE && TMR0IF) { TMR0IF=0; timer0の割り込み処理 } else if( xxxIE && xxxIF ){ この要因用の処理 } else if( xxxIE && xxxIF ){ この要因用の処理 処理 } return; } のように書いてありました。質問は以下のことです。 1. 割り込み関数の書き方は、void interrupt XXXXX(){ですが、 XXXXXの部分はユーザーの任意の名前で良いように思います。 しかし、割り込みの要因によって、名前が決まっているのではないのでしょうか? それなのに、自分の好きな名前で書けるのはなぜなのでしょうか? 2. XC8のユーザーマニュアルの書き方は、 if()により、IEビットがセットされていて、かつ、IFフラグがonなら、 この処理をする、のように書いてあります。 前の例でif()が無い理由は、そのLEDチカチカの例では、 割り込みはtimer0だけであり、他の割り込みが発生するはずがないので、 if()無しで、time0の処理を書いている、という理解で良いでしょうか? よろしくお願いします。
>>290 任意の名前のものが1つ許されるって理解してます。
なので、その中で複数の割り込みに対応する必要があり、
マニュアルの例のような処理が必要になります。
逆に、もし割り込みの種類ごとに別々に出来るなら、
例のように条件分岐させる必要も無いはずです。
>>290 発生する可能性のある割り込みがひとつなら、
もちろん条件文は不要です。
>>290 たぶん、他のマイコンを使ったことがあるから疑問なのだと思うけど、
PIC16Fには、割り込みの種類で飛び先が違うという方式ではないのです。
全ての割り込みIFがORになって1本になっている。
その割り込み関数は1個だけなので、その中で「どれかな?」って判定します。
割り込みの優先順位も、その書き方の順番でコントロールします。
294 :
774ワット発電中さん :2014/03/08(土) 09:28:41.69 ID:vHGRVeBq
>>290 割り込みは関数として書くので名前は必要だが、名前は任意でよい。
8bitPICは 割り込みベクタが 16F1xxx 以下は1つ、PIC18は2つしかない。
基本は if(xxxIF){}のように、要因毎に処理を書いていくが、
割り込み許可してるのが1つだけの時は決め打ちでよい。
通常は if(xxxIF){}のように割り込み発生フラグ(xxIF)だげ見れば良いが、
UART-TX等のように、送信可能状態の時にフラグが立ちぱなしに
なる物があるので、許可フラグ(xxIE)も &&をとると確実。
>>289 電池駆動なので待機中の無駄な消費を減らすためです
無印MPLABならPICKIT3を認識するのに、MPLAB Xに変えると認識できなくなるのは何故でしょうか?
>>297 書き込みしようとすると
Connection Failed.とだけ表示されます。
>>297 すみません、違うところを見てました
エラーメッセージは
The programmer could not be started:
Could not connect to tool hardware: PICkit3PlatformTool, com.microchip.mplab.mdbcore.PICKit3Tool.PICkit3DbgToolManager
初心者です、教えてください。 PICを使って、1ms(1kHz)の正確な矩形波を出したいと考えています。 方法は、水晶発振のPICクロックを、タイマー割り込みで1ms周期を 作り出す考えです。 タイマー割り込みについて、以下のように理解しています。 1. タイマーカウンターが0xffffになると、割り込みフラグが立つ 2. 次のタイマーカウンター加算が来ると、割り込みに飛ぶ準備をする 3. 割り込みルーチンの最初で、フラグクリアとタイマーカウンターの初期値を再セットする。 4. 続けて割り込みルーチン内で、ポート出力を反転させる。 5. 割り込み終わり 上記のように理解していますが、0xffffになる瞬間と次の0xffffの瞬間は 1.00msだと思いますが、割り込みルーチンに飛んでポートを反転するまでの クロック数は、いつもピッタリ同じなのでしょうか? 他の処理の都合で、1クロック遅れるとか、そういうことはないのでしょうか? 少し前のこの会議室の話で、割り込みの順番は、割り込み判定の順番でコントロールするとありました。 もし、タイマー割り込みよりも前にRS232C受信とか外部割り込み(RB0)とかが行われると、 その後の1ms処理に遅れが出ると思うのです。 もう一つ質問があります タイマー割り込みルーチンの中で、対マーチを再セットしますが、 再セットを行うと、そこからのカウント起算になると思います。 すると、タイマー割り込みルーチンの先頭で行うのと、最後で行うのとでは、 時間遅れが起きそうな気がしますが、正しい考えでしょうか?
石(なんというMPUなのか)や、 タイマの番号ごとに全然違うから、もっと具体的にどぞー (16F877ではTMR0とTMR1とTMR2では構成がまるで違う) 877のTMR1ではオーバーフロー割り込みなのでFFFF⇒0のタイミングで 割り込みフラグが立ち、TMR1割り込みが許可されてて、かつ、GIEが1なら 割り込み処理発生で4番に飛ぶ。 (3.)では「一旦TMRを止めてから」初期値設定、そのあと再びタイマをONじゃね? インストラクションサイクルは4分周なので1000Hzの水晶なら Fosc/4=250Hzになって、タイマの入力は4m秒パルスだと思われ。 後段のご質問に関しては、仰る通り、シリアル通信処理や外部割込みの処理内容が分岐していると 初期設定されるまでの間隔が変わりえるので、 割り込み処理の先頭でタイマ処理するが吉
ごめん × 4番に飛ぶ ◯ アドレス4番地(Cなら interrupt修飾のある関数)に飛ぶ。
303 :
natu :2014/03/10(月) 16:49:09.41 ID:hbkck56m
水晶の周波数によるけれどにCCPを使うのが楽です。 (E)CCPが付いて無いデバイスですか
>>301 ,303
ありがとうございます。PIC16F877I/PというDIPのやつです。
タイマーは、TMR1です。
>(3.)では「一旦TMRを止めてから」初期値設定、そのあと再びタイマをONじゃね?
そうなんですか?
TMR1IFをクリアして、TMR1=0xXXXを実行するだけかと思っていました。
>インストラクションサイクルは4分周なので1000Hzの水晶なら
>Fosc/4=250Hzになって、タイマの入力は4m秒パルスだと思われ。
いえ、ポートの出力として1000Hzが欲しいので、水晶振動子は、16MHzとか20MHzとか、
分周に切りの良い水晶を使います。
>割り込み処理の先頭でタイマ処理するが吉
ありがとうございます。やっぱりそうですよね。
すると、RB0↑外部割り込みの最速補足と、正確な1kHzとなると、
1個のマイコンでは厳しいですね。
>>303 の仰るように、CCPを使えばいいですね。一度データシート見てみます。
ありがとうございました。
プルアップしてんの? それともプルダウン?
えっと、何にもつながってません。 ハンディー・オシロスコープへの線だけがつながってます。
あ、いえ、抵抗、LEDの先はGNDです。 プルダウン?
>>305 LEDの点滅を、もっともっと速くして波形観察するとどうですか?
>>305 元々オーディオ用だから直流に近いゆっくりした信号は崩れてもしょうがない
311 :
774ワット発電中さん :2014/03/10(月) 22:54:43.31 ID:JQ44+BtZ
>>300 TIMER2とかで、インターバルタイマー作ったほうが良い。
PR2セットしとけば、勝手に一定周期で割り込みかかる。
>>305 信号をマイク端子から入力するソフトですよね
その端子の入力部にコンデンサ(直列)が入っているはずだからその影響では?
>>313 それは非同期の割り込みの場合。
PIC内蔵のタイマーはCPUクロックと同期してるからずれない。
8ビットで最大ピン数って40ピンでしょうか?
DIPならそう、かな?
AVRのmega164/644用(40ピン)のパラレルライタを作っていた時の話だけど、 配線終了後にチェックしたら、ICソケットのピンとの配線が 1ピンずつずれている部分があった。 「おかしいなぁ? 何度もピン番号を数えながら配線したのに」 と思ってよくよく見たら、なんとICソケットが42ピンだった! 1番ピンから数えたり、21番ピン(実際は22番ピン)から数えたりしたのがズレタ原因。 大昔に買った未使用品がそのまま残っていたのだが、 何用に使う予定だったかも完全に忘れてしまった。
ICを、上から見た図を、下から配線して焦った。 しょうがないから、ICの足を全部反対に曲げた。 当然、ICの型番は見えなくなる。
頭いいね。その発想はなかったわ。
それセラDIPでやって泣きを見たわ。
素直に半田面に実装すりゃええのでゎ?
>>322 ダイソーのカッティングマットか。俺も持ってる。
すごいなぁ おれなら絶対足もげた
ていうか、地震があったね。
>>332 getuploader.comだとじゃねで直接見れない(´・ω・`)
初めてのPICは、16C84で、LED8個のナイトライダーでした。 その次に、学習赤外線リモコンをアセンブラで挑戦しましたが、挫折しました。
16C84なんだ おらは16F84 まずPICライタを自作するところで挫折 リモコンで挫折 充電器で挫折 あと何で挫折したかしら(´・ω・`)
僕は人生で挫折。どん底を知っている男。
>>328 そうだよね。独学は挫折するよね。
みんなどうやって習得してるんだろ。やっぱ学校いかないとだめなのかね。
332 :
774ワット発電中さん :2014/03/15(土) 09:38:29.58 ID:ssACmP+D
>>328 アセンブラーは難しいからね。
俺はCしかできない
コードが長くなるのと、少しだけ処理が遅くなるけど、
Cは万能だと思う。
うーん、生活がかかると誰でもマスター出来るんだけどねぇ。 趣味の電子工作なら熱中度が足りないのかな? デートよりもデバッグの方を優先するなら見込みがあると思う。
http://uni.2ch.net/test/read.cgi/denki/1387880298/673 673 774ワット発電中さん [sage] 2014/03/15(土) 12:19:23.44 ID:qx6Kld9s Be:
みなさんに質問なんですが
はたして独学だけでみなさんの領域まで到達できるもんでしょうか。
わたしは独学でPICを5年ほど学んできましたが、最近壁にぶちあたって先にすすめません。
ろくな教則本も売ってないし、ネットで検索してもいい答えがみつかりません。
もし先生がいたらなあと思うことしきりです。
やっぱり本格的にやるには学校に入らないといけないんでしょうか?
みなさんはどうやって学ばれたんでしょうか。よろしかったらおしえてください。
壁と言うのは、やりたいことが出来ないってこと?
スランプに陥ったら全く関係ないことをやる PICとか忘れて最新のフレームワークを使ったアプリを作ってみるとか
大学でC言語習ったけど、3年はかかるよね
Cはポインタが壁です・・・・ 俺レベルのPICいじりだとポインタ使わないから再勉強してない
黄色い背表紙のエキスパートCプログラミングっていう解説本がわかりやすいですお
ASM時代にポインタ相当の使い方したことあるけどCでそんなコード書いたことない 頭の固いおっさんだからバグったとき(多分バグる)結局書き直すことになるから みんなはPICでポインタ使わなければならないほど大量のデータ使うの? それともジャンプ先をポインタで変更とか?(他にあるかな)
24以下のPICでポインタって使いにくいだろ。 データじゃなくてコードや関数のポインタならなおさら。 他のマイコンならガシガシ使うけどな。
壁は出きる人にしか来ないそうだ だからもがけ 俺にはまだ来ないや
343 :
774ワット発電中さん :2014/03/15(土) 23:41:35.96 ID:p+FTuNZj
>>338 LCDとかUARTに文字列表示しようとしたら、ポインタの使用は必須。
>>343 素直に配列とindexにしとけ
その方がアドレス計算の最適化の可能性も高い
345 :
774ワット発電中さん :2014/03/16(日) 09:00:29.31 ID:4pyXfkVt
>>344 printf("Hello world \n");
とかを使うなって事?
めんどくさいだろ?
>>345 ポインタを触るのと使うのの区別ついてない人だったか。
教えてください。 C言語で putchar( 'A' ); putchar( 'B' ); putchar( 'C' ); などと、1文字を送信する記述で、 「'」を書きたいときは、どのようにするのでしょうか? putchar( ''' );と書いたら、エラーで叱られました。 16進数で書くのは知っていますが、上記のような書き方では、どうなるのかな、 と思いました。
putchar( '&'+1 );
みなさん、ありがとうございました。 putc('\''); で、動作を確認できました。どうもありがとうございます。 \自身を出力するときは、\\というのに感激しました。 ありがとうございます。
エスケープシーケンスってやつだ
353 :
774ワット発電中さん :2014/03/16(日) 23:35:13.81 ID:ag+tPyDy
>>346 printf ってポインタ操作の塊だろ?
>>346 言いたいことは分からないでもないがそれを「触る」と「使う」で言い分けるのには無理があるだろ
PIC初心者ですが質問があります。 先日、割り込みの話が出ていましたが、 PICの場合は、どの割り込みでも一定の番地に飛んで、そこでどの割り込みかを 調べて処理するように書く、とのことでした。 ここで、質問があります。 割り込みルーチン内で、優先度の低い割り込みを処理中に、 優先度の高い割り込みが発生した場合、どのようになるのでしょうか? 優先度の低い割り込みは放っておいてでも、優先度の高い割り込みを処理したい と願っても、どのような動きになってしまうのでしょうか? 1) 優先度の低い処理は中断されずに、最後まで行われる。 それが終了した後に、優先度の高い割り込みのフラグは残っているので、 再び割り込みがかかり優先度の高い割り込みが、やっと実行される。 2) 優先度の低い処理は中断され、優先度の高い割り込みが実行される。 それが終了した後に、優先度の低い割り込み処理に戻りって処理を続行 割り込みの飛び先が1つしかないので、このような問題が起こるような気がします。 割り込み毎に飛び先が違っていれば、3の割り込み処理中に、 5の割り込み処理を割り込ませることができ、終わり次第、3の割り込み処理に戻って続行 できるのではないかと思います。 こういう場合、PICではどのようにするのでしょうか?
5-3
>>355 どのクラスのPICを想定してるのか分からないけど割り込みベクターが1つ
ということはミッドレンジ以下かな。
PICに限らず割り込みが発生すると割り込み禁止状態で割り込みサービス
ルーチンに飛んでいきます。優先度の高い割り込みを受け付けたかったら
サービスルーチンのなかで割り込み許可をすることになります。
だから割り込み優先度を持っているCPUでもサービスルーチン内で割り込み
を許可しなければ1)の動作になるし、サービスルーチン内で割り込みを許可
すれば2)の動作になります。それを使い分ければいいだけです。
割り込みベクターが1つしかないこととは関係ないです。
割り込みベクターが1つしか無くてスタックも無いようなチップで多重割り
込みを使うメリットがあるとは思えないけど。
>サービスルーチンのなかで割り込み許可を ・・・たしかに過去ログではそんなこと言ってたひとがいるけど そんな処理をして堅牢なコードを書けるとは 到 底 思 え な い。 ・PIC{のミドルクラス以下?}はスタックがおっそろしく貧弱。八個ぐらいだっけ? ⇒非割り込み処理中のサブルーチン呼び出しでもスタックを消費してしまうのだから それで多重割り込みなんて極めて限定的な仕様でもないかぎりスタックオーバーフローの危険ありまくり ・どうやってGIEをイネーブルするつもりか知らないが、仮に bsfでビット操作するとしても内部ではリード・モディファイ・ライトになるだろうから、偶然にその タイミングで設定される他のフラグを壊す危険性があるのではないか(という気がする、が、ごめん、証拠はない)。 こういうデメリットのなかで多重割り込み使うのは、異常動作しても構わない用途に限定されると思う… 単に試して遊んでみるというだけなら挑戦する価値はあるかもしれないけれど^^;
スタックが無いからレジスタを保存する場所も割り込み要因ごとに用意しなきゃならん 大して速くならんけど全部アセンブラで書けるならどうぞご自由に
初心者のうちは割り込み処理があたかも魔法のように感じてしまうかもしれないが、 実際はオーバーヘッドの大きい処理で、 リターンアドレスを保存して 割り込みを禁止にして ステータスとレジスタ を保存して やっと開始される鈍重なシステムでしかないのだ。
361 :
774ワット発電中さん :2014/03/20(木) 23:01:50.40 ID:BNr74vmT
>>358 8bit PICにそんな複雑な処理させる方が間違えてるよな。
362 :
774ワット発電中さん :2014/03/22(土) 12:39:54.97 ID:a2tRpJHo
TEST
363 :
774ワット発電中さん :2014/03/22(土) 14:49:54.51 ID:rXRAdIWe
初心者ですが教えてください。 MPLAB IDE、XC8で、 #define SW RA0 として、 if( SW==1 ){ 処理 } だと、エラーが出ます。 if( RA0==1 ){ 処理 } だと、通ります。 defineで置き換えた「SW」では使えないのでしょうか?
よくわかんないけど、ひとつ気になったのは、1==SW みたいに数字を左側に 文字定数やら変数類は右側に書く癖を はやめにつけておいたほうが無難だヨ。
>>365 ヨーダ記法は賛否両論あるから、利点欠点を説明せずに勧めるのはあまり感心しない
367 :
774ワット発電中さん :2014/03/22(土) 18:40:05.47 ID:t13xRqGw
MikroCの配列ですが、 int a[10]; などと宣言してプログラム中で[ ]の中って変数は使えるのでしょうか?
>>366 ==と書いたつもりで、乃至はコードを眺めている際に
誤操作で片方を削除してしまい代入にしてしまう場合が
生じたときにデバッグする際に無駄に悩むことが生じえる。
ヨーダ記法って言うのか、その呼び名は初めて聞いたわ。
賛否があるとの話でググってみたが、
webでは(定数に限らず)最近のコンパイラでは過去の記法だと
豪語している人もいるようですね・・・
でも、RA0ビットに1を出力したいのか
RA0ビットが1かどうか判定したいのに間違えたのか
コンパイラが判定する術が 最近のものにはあるとは思えないなぁ。。。
>368 定数への代入なら昔のでもコンパイラがエラーはいたと思いますお
SWがすでになにかに使われてるとか
>>363 エラーがでるのはおかしいね。別に理由があるぞ。0とOの間違いとか。
そもそもエラーメッセージを出し惜しみしてるし
373 :
774ワット発電中さん :2014/03/23(日) 00:50:35.53 ID:qhFSRHUy
>>367 配列を宣言する時は変数使えない。
(コンパイル・リンク時に領域が決定されてしまうので)
宣言後の代入や参照時は使える。
(というか使えなかったら配列の意味無い)
>>372 わかる。だがエラーメッセージの意味もわかってないんだと思うからいじめんなや。
375 :
774ワット発電中さん :2014/03/23(日) 11:24:06.77 ID:nqWy/e4t
はじめてPICだからね。 とんでもない勘違いしてるんでしょう
PICの電源としてお手軽で安いので、携帯充電用のUSB規格のACアダプターを使っている。 これってどうなんだろ?やっぱまずいのかね。 いまのとこたいしたもの作ってないから不具合はないけど。
>>376 あまり電気食わない仕事させるならいいんじゃない?
厳密に言えば電圧の安定度とか問題あるだろうけど最近の石はガッツあるし
ただ謎の作動不良が出るかもは頭のすみにおいた方がいいかも
378 :
774ワット発電中さん :2014/03/23(日) 16:26:22.90 ID:yAOJUdSS
WindowsXPでMPLABと無料のコンパイラで勉強して、違った、遊んできたのですが かすかな春風の噂によるとXPもそろそろ終わりとか。S478の時代のシングルコア のPCで動く無料のLINUXやubunntuなどのOS上でソースコードの互換性や操作性が ある程度維持されたもので、私のような貧乏人に対して愛のあふれる開発環境は 世の中にないのでしょうか。
>>377 不可が小さすぎて電圧高くならないか心配(元が5.2Vだけに)
最近のは5.5V以上でも動くの?
>>378 現行のHDDをイメージ化してVirtualPCで動かす方法ってないものかしら
Win7でもMPLAB 8うごきますがな
>>376 某携帯充電器メーカーの試験機はPICで動いてるのを知ってる人です。
リップルもノイズも多いしよく壊れて賠償問題起こすけど、秋月の5Vアダプタなみには
使って使えないことないですよ。
382 :
378 :2014/03/24(月) 01:42:14.80 ID:qfam28eT
皆様、ありがとうございました。
>>379 オラクルかどこかに仮想マシンのソフトがあったようですが…
>>380 Windows7は1万円ちょっとします。開発環境を維持するためだけに
それだけの出費はちょっと無理でして…
XPを完全スタンドアロンで使い続けるしかないようですね
Linux上で動く仮想PCならVirtualBoxかなー…って思ったらそれがOracleのか あとはWineで直接Windowsソフトを動かせないか まああれだ、金が無いなら手を動かして、 それで得た知見を是非還元してほしい
>>383 VirtualBOXとかの仮想PCで、ちゃんとUSBでデバッグってできます?
昔は挫折したのですが。
ぎゃーぎゃーさわぐならMPLAB XとXC使っとけ
386 :
774ワット発電中さん :2014/03/25(火) 02:51:15.23 ID:TkVdp91W
教えてください。 MPLAB + XC8 + PicKit3 + PIC16F877 で勉強しています。 基板は自分で作りました。1日ではできずに大変でした。 MPLABのテキストエディタとデバッガーの使い方で質問があります。 MPLABのテキストエディタで、複数のファイルをタブで切り替える表示にしています。 多くの操作はキーボードショートカットでできるみたいですが、 テキストエディタのタブ切替は、ショートカットでできないのでしょうか? いちいちマウスに持ち替えてタブをクリックするのが面倒に感じます。 よくありがちなのは、Windowsのソフト切替のように「CTRL+TAB」だと 思います。やってみましたが、できませんでした。 デバッガーの使い方で質問があります。 変数の内容を表示するのに、ウオッチウインドウ(時計ウインドウ?)を表示して 見たい変数を登録して、見ています。 この内容を、Logに取ることは出来ないでしょうか? 時間と共に変化していく値を 過去のものから記録に取りたいことが多いです。状態遷移の変数とかRS232で受けた文字とかです。 いつもは、printf()でハイパーターミナルに表示して、過去の値を見るようにしているのですが、 RS232Cのピンが1組しかない、I/Oの数が少ない、などで、困っています。 宜しくお願いします
MPLABXだとCtrl+0 でエディタ領域にフォーカスが移り、 エディタ領域にフォーカスが効いている間ではCtrl+Tabでどのファイルかを選ぶポップアップメニューが表示されマんもス
MPLAB IDEだと、CTRL+TABでTextWindowのタブが移動できるけど、 最後(右端)のタブまで行くと、次はウインドウの移動になってしまう、変態仕様。
SHIFT+CTRL+TABでもどれ
MPLAB IDE + XC8で、PICを勉強しています。 C言語で使用できる言葉(PORTA)とかで、PICの品種によって、 LATなんとか、と書く物もあれば、PORTAでOKの物もあります。 この「言葉使い」は、何を見れば書いてあるのでしょうか? データシートに出て来る言葉をそのまま使えばよいのでしょうか? 以前16F8xで作ったCソースを、18Fで使うと、エラーの嵐です。 こんなに、言葉使いが変わってしまうのでしょうか?
石ごとに定義されてるヘッダファイルがあるんじゃないの?
こうゆうのありですかね。全然うまくいかないけど。 for(i=0;i<3000;i++){ __delay_ms(1); if(SW1==0){i=3000;} } 3秒という時間つくっている間に、SW1が「押されたらさらに3秒追加。
>>392 >SW1が「押されたらさらに3秒追加。
なら、
if(SW1==0){i=0;}
じゃね?
クソワロタ
395 :
774ワット発電中さん :2014/03/29(土) 11:18:27.83 ID:wL0xGt8p
さらに追加なら、数値が増えないといけないと思う。 数値が最初に戻るだけではだめでは?
こうかな? int i, j; for(i=0, j = 3000;i<j;i++){ __delay_ms(1); if(SW1==0) { if(i > 3000) i -= 3000; else j +=3000; }
おーそうか。すげー勘違い。これで二日悩んでた。 みなさんどうもありがとう。
なんでわざわざi>3000で分けてるのか分からん 常にi-=3000でも同じ事だろ ちなみに押し続けてる間何回も3秒追加されるからこれは駄目
delay_ms(1); の()の中って変数使えないのですか? MPLAB IDE の場合とMikroCの場合ですが。
使えません
教えてください。 PIC18F46K22のconfigで、P2Bというのが出てきますが、これが何だかさっぱりわかりません。 データシートのpdf中で検索しても、P2Bを説明しているところがないです。
>>401 多分PxBで表記されてる。
PWMxのBch
>>402 どうもありがとうございました。検索で大量に引っかかるようになりました。
とてもよくわかりました。ありがとうございました。
丸が無ければ、bit3が1 かつ bit2が0 かつ bit1が0 です。この場合、 丸があるので、論理式を展開すると(たしかド・モルガンの定理とかいうやつで) 「bit3が1以外」または「bit2が0以外」または「bit1が0以外」 の意味になります。
>>405 ありがとうございます。
>丸があるので、論理式を展開すると(たしかド・モルガンの定理とかいうやつで)
>「bit3が1以外」または「bit2が0以外」または「bit1が0以外」
>の意味になります。
私の書き方が悪くてすみませんでした。
>~(FOSC<3:0>の4bitが、1000または1001) と読めます。
と、()の前に~(チルダ)を付けてありますので、それで正しいのですね。
ありがとうございました。
連続した質問ですみませんが、もう一つ教えてください。
PICの水晶発振子として16MHzを付けて、PLLをONにして、システムクロック64MHzで動かしています。
確認のために、main()で、RA0=~RA0;とやって、オシロで見ても、8MHzしか出ません。
64MHzは出ないにしても
32MHzとか、16MHz以上でon/offしても良いと思うのですが、なぜか8MHzです。
PLLがonになっていないのでしょうか、それとも私はPICを壊してしまった可能性があるでしょうか?
…チルダ(補数演算子)だと、011Xの場合「だけ」にならない? 011xは 0xxxと x1xxと xx1xの和集合のなかの一部分だけど、全体と一致はしないんじゃないかな… (例:0100とか0000とか1111とか0010とか) >RA0=~RA0; TRISAとANCON0の設定は?
>>406 指摘、ありがとうございます。そうですね。
~() ではなくて、!= ()でした。
>RA0=~RA0;
>TRISAとANCON0の設定は?
以下のように、defineで定義しています。
#define RA0 PORTAbits.RA0
>>408 PIC18の命令実行サイクルは FOSC/4です。
64MHz/4=16MHz
>RA0=~RA0;
のの処理に2命令かかってる計算です。
ポートの入出力方向の設定をTRISレジスタでおこないます。 また、AD入力のピンを兼ねているのでI/Oポートに使うのか アナログ入力に用いるのか?の設定をPORT-AはANCON0で行います。 アナログ入力設定になっていると、RA0に何を書いても出力されません・・・
ごめん、8MHzは出てるんだからTRISは問題ないっすね、 ぶっちゃけ>409さんが正解みたいですね。しつれいしますた
PICのプログラムの勉強中なのですが、一つ質問があります。
ランダムな間隔でLEDの点灯を行い(結果的に不定期点滅)たいと思っています。
>>339 さんの質問でもあったdelay_ms(1);のカッコ内が変数OKならランダムを得て、
点灯の命令、消灯の命令と組み合わせてループで万事OKなのですが、
それは出来ないのは自分でも実験して解りました。
そこで、 forループを使ってループ内にdelayを入れて、繰り返し回数をランダムにと考えました。
xがランダムとすると
for (i = 0; i < x; i++)
と言う感じです。
しかし、これも、変数は使えないようなので、他によい方法を探しています。
使っている環境はMikroCです。
もしかして、MPLAB IDE なら出来たりするのでしょうか?
無理なら、こういう場合どの様な書き方がよいのでしょうか?
先輩方のアドバイスをお願いします。
>>412 変数でdelayしたいなら、
void DelayMs(int val)
{
for (;val;val--) {
_delay_ms(1);
}
}
の関数を作成して、呼ぶのはだめなの?
>>413 そういう方法があるのですね。
for (;val;val--)のところですが、
自分の理解ではfor (式1;式2;式3)で
式1 1度だけ読まれる(初期値)
式2 終了条件(真の間繰り返される)
式3 再初期化(加算や減算で初期値から終了条件までの動きを制御)
と思っているのですが、
for (;val;val--)の場合、初期値はどうなるのでしょうか?
また、終了条件と同じ数だけ減算で再初期化すると言う事でしょうか?
415 :
774ワット発電中さん :2014/03/31(月) 23:18:54.83 ID:LDQFSQAi
valが0でループを抜けるからこれでOK void DelayMs(int val) { int i; for (i = 0; i < val; i++) delay_ms(1); } ってやってもいいけど それは無駄だよねー っていうコード
>>409 どうもありがとうございました。
なるほど、納得です。すでに64MHzになっていたんですね。
>RA0=~RA0;
は、
L→Hするのに1clock必要、
H→Lするのに1clock必要。都合半分のトグル周波数になるのですね。ありがとうございます。
ただ、せっかくPLLで4倍の64MHzにしたのに、1/4になって16MHzですか。
なんで1/4になるんでしょう。もったいない感じがします。
ありがとうございました。
>>414 >自分の理解ではfor (式1;式2;式3)で
>式1 1度だけ読まれる(初期値)
>式2 終了条件(真の間繰り返される)
>式3 再初期化(加算や減算で初期値から終了条件までの動きを制御)
>と思っているのですが、
それが正しいと思います。
for (;val;val--)という書き方もできる、と覚えて置く程度で良く、真似をする必要は全く無いと思います。
通常のif()文にしても、
if(a)
b=5;
とも書けますが、
if(a != 0){
b=5;
}
と書いた方が、勘違いが無くて良いと思います。
特に、{ }を省略する書き方は、2行以上の処理になると、{ }を付けなくてはならないので、
1行だろうが、2行だろうが、常に{ }を付けるようにすれば、間違いはなくなり、
結局楽ちんだと思いまする
1命令に4クロックかかるのがPICの仕様だから仕方がない。 別に周波数を1/4にして使っているわけではない。 これでもPICが出た当時は早い方だったっぽい。
>>416 1命令1クロックにしようすると、ゲート規模
でかくなってコストがあがる。
>>418 ,419
>これでもPICが出た当時は早い方だったっぽい。
そうなんですか。ありがとうございます。
すると、H8などはシステムクロック=原振周波数なので、かなり速いんですね。25MHzとか平気でありますし。
なんでPICは1命令4クロックもかかるのでしょうね。ハーバードアーキテクチャのせい? RISCのせい?でしょうか。
これほど品種が多くて、ツールもIPも無料なのに、とても残念です。
今主流のPIC24Fxxxxでは、どうなのか、今度調べてみます。
遅いといってもメモリから読み出してメモリに書き戻す処理をやっているんだから レジスタ間演算がメインのマイコンと比べちゃダメ
>>420 32MXからはMIPSアーキテクチャ使用になって
命令パイプラインが深くなってるから
一クロック1命令じゃね?
厳密にいうと違うけど・・・
>>420 それと最近のは外付けのクリスタルつけないでも内部PLL(逓倍器)つかえば
内部CR発振回路でも40MHz以上は出るんじゃね?
アフォの子を寝かしつけるのは苦労するからな。 どのH8かと思ったが25MHzとか言ってるってことは・・・。 メモリアクセスとか周辺モジュールアクセスとかアドレッシングモードとか。 理解してからじゃなきゃ無理か・・・。
425 :
774ワット発電中さん :2014/04/01(火) 22:23:29.76 ID:2ak7YLJx
>>421 レジスタがたくさんあると、割り込み処理でレジスタ退避に
時間がとられる。
>>424 はいはい勿体つけマンはねんねしようねー
MCLRはふつう物理的なスイッチで使うようですが、 RC3=0; というふうにプログラム上でMCLRをONできないんでしょうか。
428 :
774ワット発電中さん :2014/04/01(火) 23:27:54.01 ID:2ak7YLJx
>>427 MCLRをポートに使える奴も、入力しか出来ない。
ありがとうございます。
ボートのI/Oするときに、変数が構造体てのために、長い名前の変数です。例えば LATAbits.RA0 = PORTA.bits.RA1; とかです。 みなさん、このように長い名前のまま使っているのでしょうか? RA0 = RA1; と書くと、エラーが出ます。
俺も全く同じ事思ってる。 でも、やり方わかんないので長いまま書いてる。 短くする方法があるなら知りたい
>>431 #define LED LATAbits.LATA0
#deifne SW PORTAbits.RA1
LED = SW;
とか?
433 :
774ワット発電中さん :2014/04/02(水) 10:51:07.85 ID:JvBre5TD
それって、やってもいいのか?
タイプ量を減らす。 タイプミスを減らす。 あ、仕事だと減ると困るのかw
なんで、LATAbits.LATA0 とか、Aポートであることを2回も書く必要があるのか。 LATAbits.LATB0 とか、間違いの元だと思う。 MicrochipのXC8の構造体の名前を考えた人のセンスを疑う。 LATA.b0でいいと思う。 みなさんどう思いますか?
それだけですか。 じゃ、あとで分かりやすいように LATAbits.RA0 式の方がいいですね。
>>437 LATAbits.
まで入力すると
LATA0
はエディタが出してくれるんで
どっちでもいいです
440 :
774ワット発電中さん :2014/04/02(水) 23:33:56.34 ID:vpFbXnvw
>>437 たしか、前身のHI-TECH Cからこの様な名前だったと思う。
441 :
774ワット発電中さん :2014/04/03(木) 10:30:01.32 ID:E3FK5jjX
>>439 入力の時より、修正の時に間違える。
同じことを二箇所修正するのを忘れる。
エラーで上がってくるとはいうものの。
>>441 確実にエラーになるから間違えようが無いよね。
つまり
>LATA.b0でいいと思う。
有意な理由は存在しない。
443 :
774ワット発電中さん :2014/04/04(金) 10:23:47.61 ID:LGljf3b3
しかし、全くの無意味でもない ・タイプ数が少なくて済む。 ・ポート変更時の修正ミスが削減できる。 ・イライラしなくて済む
・タイプ数が少なくて済む。---IDEが自動で吐くからタイプしなくて済む ・ポート変更時の修正ミスが削減できる。---IDEの置換機能で一括書き換するから間違えない ・イライラしなくて済む---以上からそもそもイライラしない
基本、長い変数名は見にくいし、ソース中に出てくると、読みにくい。
446 :
774ワット発電中さん :2014/04/04(金) 19:06:01.55 ID:DzOl70V2
ヘッダファイルの #ifdef #else ってどんなときにつかうん? #define で定義する文を自分で書き換えて多目的に使うってことなの?
構造体と共有体で 自分でつくればいいだけなのに 文句言う人
活発な意見が出ているところ、すみません。教えてください。 MPLAB XC8 で、PIC18F46Kを勉強しています。 printf()を使いたいのですが、RS232Cが2chあるので、どちらのUARTに対するprintf()か、 どのように区別するのでしょうか? fprintf(UART1, "xxxx") などと使えればよいのですが
>>446 PICじゃない例だけど
#ifdef _MSC_VER
#define _USE_MATH_DEFINES
#endif
#include <math.h>
円周率を定義したマクロ M_PIってやつがmath.hに
定義されてるんだが どういうわけだか Microsoft の C
では _USE_MATH_DEFINES を defineしないと有効に
ならんのよ Windowsでもlinuxでも動くコード書きたい
ときとかによく使う
>>449 XC8をインストールすると Compiler Manualもいっしょに
インストールされる そこの3.5.7節を読むべし
You can get printf to send to one of several destinations by using a global variable
to indicate your choice. Have the putch function send the byte to one of several destinations
based on the contents of this variable.
printfが呼ぶ1文字出力関数putchは自分で書かないといけないが
そこの中で大域変数を使うなどして出力先を切り替えなさい と
452 :
774ワット発電中さん :2014/04/05(土) 10:17:33.47 ID:uEYH3ojl
同時に2ch開設したいときはどうするの?
453 :
774ワット発電中さん :2014/04/05(土) 12:10:49.27 ID:5LX7I+sc
>>450 それインクルードガードとかいうやつが上段に入ってるんじゃないの?
>>452 まめまめ切り替えるんだと思いますよ
どうせシングルタスクでしょ
void putch_ch1(char data) { ... }
void putch_ch2(char data) { ... }
...
char output_ch; // select output channnel
void putch(char data) {
switch(output_ch) {
case 1: putch_ch1(data); break;
case 2: putch_ch2(data); break;
}
}
とかやって
output_ch = 1; printf("hoge");
output_ch = 2; printf("tara");
とか
以下はVCではとおるな XC8ではどうかしらん
char output_ch;
#define PRINTFCH1 output_ch=1; printf
#define PRINTFCH2 output_ch=2; printf
void main(void) {
PRINTFCH1("%d\n", output_ch);
PRINTFCH2("%d\n", output_ch);
}
PICはアセンブラしか使ってないからPICのCは、ようしらんけど threadやプロセスの並列処理なんて関係あるん? シリアルに送りたいならマルチタヌキでもfputcで 標準入出力じゃなくて出力ストリームを指定するんとちゃうの?
VCには #pragma once があるけど、みんな
ふつう(
>>456 )のインクルードガードと併用してるから
何の役にも立ってないw
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
>>455 関係ないんでこんなラフな方法でもOKということ
そうでなきゃしっかりミューテックスだのセマフォだの
資源管理せにゃならんですばい
出力ストリームなんてものもあるわけなし
PIO直でたたくか せいぜいAPIが用意されていて
それぞれのポートごとに違う関数を呼ぶぐらいでせう
XC8の場合 usart.hにputc1USARTとかputc2USART
とかあるようですからこれを使うのかな
#ifdef DEBUG デバッグ用の main() を書く #else 通常動作用の main() を書く #endif なんてしません?
>>459 ヘッダでしか使わないからわからんのだけど
ライブラリ用のファイル作ったほうがわかりやすくないの?
デバッガなどといふ近代兵器が使へない環境では #ifdef DEBUG fprint(stderr, "hogetara\n"); #endif でデバッグしとったのう(遠い目) マイコンでもLED1個つけとけば #ifdef DEBUG LED_ON(); // or LED_OFF(); #endif とかやってどこまでうまく動いているかみたりできる
463 :
774ワット発電中さん :2014/04/07(月) 00:05:28.91 ID:gsreOvni
PIC初めてです。教えてください。 C言語で、8bitの中の特定ビットが1か0か調べる方法は、 if( ( a & 0b10000000 ) != 0 ){ ... という記述しか無いでしょうか? と言いますか、もっと高速に判断できる方法はないでしょうか? というのは、SPIの部分を作っていて、シリアル出力をもっと早くしたいのです。 例えば8bitのMSBから順番にデータ線に乗せて、クロックを↑↓するのですが、 以下の用に書いています。 if( ( a & 0b10000000 ) != 0 ){ dat = 1; } else { dat = 0; } a <<= 1; 同上を8回行い clk = 1; clk = 0; という感じに書いています。 a <<= 1; のシフトも、もっと速く動く記述方法はありますでしょうか?
C言語使ったことないけど、レジスタ内の特定のbitを指す書き方無かったっけ。 まあa&0b10000000!=0でもコンパイラが頭よければ同じ結果になりそうだけど。 あとdatをセットする時は dat=0; if(〜){ dat=1; } にするとちょっと速いかも。
>463 普通そういう感じじゃないでしょうか?でも式の値が 0 なら偽でそれ以外が正なんだから こういう感じにはできるでしょう。 for(i = 0; i < 8; i++) { if(a & 0x80) clk = 1; // or clk(1);? else clk = 0; // or clk(0);? a <<= 1; }
I2Cなら使ってるからわかるけど まあ似たようなプロトコルだからおそらくだけど SPIXCON使ったほうがいいんじゃね? バッファとか通信シーケンス用のレジスタが入ってるから 融通きくし、いいとおもう(´・ω・`)
467 :
466 :2014/04/07(月) 01:12:09.50 ID:mCMVq88h
>>463 おそらく通信速度もレジスタで自由自在に簡単に変えられるからSPIXCONつかって
そんで関数組んでライブラリにしてここでオープンソースにして俺に使わせてたもれw
(´・ω・`)
468 :
774ワット発電中さん :2014/04/07(月) 01:48:30.76 ID:gsreOvni
みなさん、ありがとうございます。
>>464 >あとdatをセットする時は
>dat=0;
>にするとちょっと速いかも。
ありがとうございます。そうですね。確率の高い方をセットすることにします。
>>465 >if(a & 0x80)
>clk = 1; // or clk(1);?
>else
>clk = 0; // or clk(0);?
>a <<= 1;
ありがとうございます。
でもその書き方だと、送信dataが1のときしかclkを打たないので、マズイと思います。
>>466 >SPIXCON使ったほうがいいんじゃね?
なるほど、ハードウェアにやってもらうのはいいですね。忘れていました、というか
使ったこと無いのでした。ありがとうございます。
おっと、待ってください。24bit連続させたいのですが、できましたっけ? 8bit専用とか。
考えているのは、
・forなどの繰り返しを使わない。(繰り返しと判定で、遅くなるから)
・if()より、= ( a & 0b10000000 )? 1 : 0;の方が速い(?)かも、なので、
dat = ( a & 0b10000000 )? 1 : 0; clk↑↓
dat = ( a & 0b01000000 )? 1 : 0; clk↑↓
dat = ( a & 0b00100000 )? 1 : 0; clk↑↓ と、全bitを繰り返す。これを3回やって24bit。
・a<<=1;など、シフトは予想外に遅い。
・clkの↑↓を、以下に速くやるかを考える。
clk=1; clk=0; より、clk=~clk; clk=~clk;の方が速い?
MPLABでアセンブラ結果が見えれば、クロック数が数えられるのですが、.asmが生成されないようで。
さらにPICだと、水晶発振の1/4になってしまうので、マイコンを変えるのも手かもしれませんね。
SPI方式のシリアルD/Aコンバータの駆動です。
ありがとうございました。
469 :
466 :2014/04/07(月) 02:04:35.45 ID:mCMVq88h
>>468 I2CXCONでできたからできるんじゃないかな?
ただDAコンバータなら
4ビットでいいならcvrefをピン出力すればでるんじゃね?
>>469 8ビットを三回送ると言っているから、
たぶん24bitのDAではないかな
471 :
774ワット発電中さん :2014/04/07(月) 12:29:44.77 ID:e7xWgPwm
シリアルを使ったADやDAって、配線には利点があるけど、 転送に時間がかかるので、迷う所だね。 FPGAだとMHzオーダーでガンガンI/Oできるけど、マイコンでは辛いと思う。 16bitD/Aでも、ゲインとかchセットとかがあって、24bit送る必要があったりして。 44.1kHz × 10点/波 × 24bit/点 = 10.584MHzで繰り出す必要がある。 SPIのハードコアを内蔵していても、8bitだろうから、1/8に短縮されても 1.3MHzのスピードで割込の手当しないといけない。 マイコンでこのスピードは辛いと思うけど、どうでしょうか?
USB用にPLLと高速レジスタが内蔵されてるんだから 速度求めるなら そっちじゃね?
転送速度もあれだがそんな大量のデータを演算する余裕はあるのかね
通信の速度がものすっごく大きくても だからといって通信が発生する頻度も必ずしも大きいとは限らないんでね?
475 :
774ワット発電中さん :2014/04/07(月) 17:17:27.85 ID:e7xWgPwm
ちなみに、PICでシステムclockの一番速いのって、何だろうか。 PLLで64MHzに逓倍しても1/4しない品種があったかなぁ?
実際のところ、何Mくらいで動作させたいの? 必要とするサンプリング周波数はいくつ? ADの有効桁数とか演算処理はどうなのか? とかの検討が要るんじゃないかな。 演算もそうだけど、ビット出力でクロックとデータ生成するんならそっちだって ビット演算が1ステートでできるわけでもないように思うので、トータルで考えないと いけないんじゃね? そういうことやってくと、案外サンプリングの速度とか遅くせざるをえなかったりすると思うが。 というか、実際問題としてFPGAを使うという選択は普通にある。
最近秋月で扱い始めた12F1501ってどうなの?
>>475 PIC32MZ
でぐぐってみ(´・ω・`)
479 :
774ワット発電中さん :2014/04/07(月) 22:00:46.22 ID:Z3Ne6dfQ
480 :
774ワット発電中さん :2014/04/07(月) 22:44:57.67 ID:BCXrPkQw
12ビットくらいのDA内蔵のPIC出ないかしら
SSPを使って複数バイトを早く送ろうと思ってもSSPxIFが立つのが1バイト 送り終わってからだから、どうしても間隔ができちゃうんだよな。 UARTみたいにダブルバッファになっていれば連続して送れるんだけど。 もっともSPIの場合は送信と受信がワンセットになってるから密に送ると いうのは想定していないんだろうけど。D/Aにデータを送るとかDDSの周波 数をセットするとか送信だけを使う場合が結構多いので、そういうモード も用意して欲しいな。
483 :
774ワット発電中さん :2014/04/07(月) 23:47:50.32 ID:BCXrPkQw
>>482 たしか、PIC24やPIC32には 8段位のバッファ付いてたはず。
18F4550でSDカードのSPIモードの読み書きした時は、
>>468 のようなコード書いてみたけど
ハードに任せたほうが速かった。
どんくらいの差だったか忘れたけども
485 :
774ワット発電中さん :2014/04/08(火) 00:52:50.14 ID:IpCyp2Xj
スレの趣旨通り、みなさんは超ハイレベルな初心者なんですねw
なんでここに書き込むんだろ。あっちに書けばいいのに。 これも荒らしの一種なのか。
あっちが初心者スレというかネタスレになってるな
自治嵐怖いよ
489 :
774ワット発電中さん :2014/04/08(火) 08:50:41.51 ID:+PQVqRmZ
このスレ、結構内容がいいので、よく見てる。 質問者の素朴な疑問が、いい。
>>474 SPIは送る側がクロック決めるんだからのんびりでいいなら
通信の速度ものんびりでいいんだよ。
>>482 自力でクロックを数えてタイミングよく書けばいいんじゃないかな
492 :
774ワット発電中さん :2014/04/11(金) 03:24:50.76 ID:WEaMSgkk
質問させてください。 PicKit3というアダプターを使ってプログラムをPICに転送していますが、 そのUSBコードを、USBハブ経由で挿すと、PCがアダプターを認識しません。 直接PCに挿せば、認識します。 何をしたらUSBハブでも認識するようになるでしょうか? アダプターは赤色です。(黒色ではありません) よろしくおねがいします
USBの電源供給能力が足りないとだめ
>>492 ww1.microchip.com/downloads/jp/DeviceDoc/51795B_JP.pdf
p43 7.2-4
PICの開発環境って MSDOS期時代のような無意味な排他性価値観があるし、それも機能不全がかなり残ってる
排他性価値観って何?初めて聞く言葉だ
なにいってんだかぜんぜんわかんねーよなww
498 :
774ワット発電中さん :2014/04/11(金) 14:03:05.61 ID:a8/vytT/
>>492 493の言うとおり、基板が電源を供給してもらっているかも知れない。
Pickit3の電源供給機能をoffに設定すれば良いと思う。
>>496 排他的経済水域、排他的既得権とかふつう使うよ。
普通と思えるなら、多分お前は、日本人じゃない。 日本語の不自由な韓国人とかじゃね?
俺様こそ日本標準 そういう考えは捨てたほうがいい
排他的PIC専用のスレ、なんちゃって。
吐いた
盛り上がっているところ、すみません。教えて欲しいことがあります。 XC8でC言語でプログラミンをしています。 変数の中の特定ビットの1,0を知るのに、 if( (a & 0x08) != 0 ){ ..... とか b = ((a & 0x08) != 0)? 1 : 0; とかを使っていますが、 構造体という方法で書くと楽ちんなのを知りました。 if( PORTA.bits.B0 == 1 ){ ....とか b = ( PORTA.bits.B0 != 0)? 1 : 0; とか です。 構造体は、特定bitを簡単に表記できますが、 結局は、8bit読み込んで、0x01 をやって、書き戻しているのでしょうか?
盛り上がっているところ、すみません。教えて欲しいことがあります。 XC8でC言語でプログラミンをしています。 変数の中の特定ビットの1,0を知るのに、 if( (a & 0x08) != 0 ){ ..... とか b = ((a & 0x08) != 0)? 1 : 0; とかを使っていますが、 構造体という方法で書くと楽ちんなのを知りました。 if( PORTA.bits.B0 == 1 ){ ....とか b = ( PORTA.bits.B0 != 0)? 1 : 0; とか です。 構造体は、特定bitを簡単に表記できますが、 結局は、8bit読み込んで、0x01 をやって、書き戻しているのでしょうか? だとすると、どの方法でも処理速度は同じになるでしょうか?
>>506 どうなんかな?
とりあえずアセンブラ命令みてみると
bit処理命令っていうのがあって
BTFSSとかBTFSCっていうのがあるよ(´・ω・`)
MIPSアーキテクチャは多分違うけど・・・
コンパイラがどんな風に書きかえるかによってちょーぴいと多少違うんじゃない?
コンパイラを自作で作って勉強してみるのも手じゃね?(´・ω・`)
>>506 構造体とやらの方しか知らんかった。
おいらが変なのかな。
>>501 では、このスレ住人00人でも、身近な100人いいが、そのうち、日常会話で
「排他性価値観」
とか言ってる奴が何人居るか、考えてみ?
511 :
774ワット発電中さん :2014/04/12(土) 11:57:08.47 ID:DpIH6dUa
XC8の作るファイルで、 アセンブラのファイルの拡張子は、何になりますか? xxx.asmを探したのですが、見つかりません。
.lst ファイルなら作られるけど 自分で書く場合は.asmファイルを自分で作る
>>510 おいおい日本語がおかしいぞ。それに100人に聞いてみろ、なんて発想がこども。
>>513 日本語読めないのかw
身近にいる100人を想像してみろと言ってる。
あ‘ニートだったか、すまん。
>>514 だから、自分の文章よく見てみろ
「スレ住人00人でも、身近な100人いいが」
って日本語おかしいだろ。まずはそこからだ。
別に
>>516 別に、ってなに?こどもじゃないんだからさ。
>>510 > スレ住人00人
ってどうゆうこと?
>>517 516の「別に」は、
>>515 の「て日本語おかしいだろ」に対する返答だ。
これで理解出来たか?
ちなみに俺は子供。
>>510 > 身近な100人いいが
これどうゆう意味?
>>519 なるほど
「別に俺の日本語おかしくない」
っていう意味?
>>518 >>520 すまん。タイプミスだわ。
でも、説明するの、めんどくさいから適当に理解してくれ。別に理解しなくても良いが。
PICの話題なら、ある程度まじめに書く気も起きるかもだが、あまりにも時間が無駄と感じる。
タイプミスはよくあるよね。そこは忘れよう。 で、おれの意見はスレ住人100人に入るのかい?
あ、意味とりちがえた。 全部わすれてね。 --オワリ--
>>506 XC8だとちゃんとビット演算使ってるね
PSoC1だとM8はビット演算なくてGPIOのアクセスは8bit単位
だから誤書き換えに気を使う
>>506 そこまで考えだすくらいなら(インライン)アセンブラ使った方が幸せになれるんじゃないかなあ
C言語はそんなCPUごとの違いまで考えなきゃ分からないようなことをするためのものではない
>>512 ありがとうございました。フォルダー内をよく探したら、
.asというファイルがありました。Cの文章の下に、アセンブラーが書かれていました。
これでクロック数を計算するのでしょうか。もう少し勉強します。
あと、質問いいでしょうか?
RS232の送信バッファーを作っています。
・配列変数を30個宣言して、
・書込数、読出数の変数を置き、
・書込数 != 読出数のとき、TXREGレジスタに8ビット書込ます。
・読み出し数を++して、
・%= 30 で、数字が超えたら小さくする
という方法ですが、質問は、
1) %= で、読込数の超えを、毎回チェック市内といけないでしょうか?
%= を使うと、処理がとても時間がかかり、書込に追いつかれてしまいます。
if()にすると、少しは早くなりますが、チェックなしで実現できないでしょうか
2) 送信配列を256個取れば、1)のチェックなしで、常に++すれば良いと思うのですが、
その方法は、いけないことでしょうか?
3) 256個も取るとメモリーが無くなってしまうので、16個(4ビット分)とか 32個(5ビット分)とかにしたいですが、
それだと++だけでは済まず、if()が必要になると思います。
やっぱり、そういうものでしょうか? 5ビットの変数とかは作れないでしょうか?
>>529 32とか2のべき乗にして0x1fでマスクすれば少しは早くなるかな。
書き込みに追い付かれるというのはデータの発生量に対して送信スピード
が遅いのでは?
>>529 %=30だとmod関数呼ぶけど%=32って書けばコンパイラは0x1fとのANDにしてくれるよ
532 :
774ワット発電中さん :2014/04/12(土) 19:48:19.53 ID:DpIH6dUa
>>530 ありがとうございます。
なるほど、&=で済ませて、判定なしなら速いですね。
>送信スピードが遅いのでは?
はい、ご指摘の通り遅かったので、通信ボーを921.6kに上げました。
2倍の速さで取り出せるようになりました。ありがとうございます。
>>531 ありがとうございました。
なるほど、そういうことですね。
試しに以下のソースで、RA1のon-off時間を実際に計ってみました。
RA1=1;
D[p++] = '0'; p %= 0x0c; // 12で%= ← 170us
RA1=0;
RA1=1;
D[p++] = '1'; p %= 0x0f; // 15で%= ← 137us
RA1=0;
RA1=1;
D[p++] = '2'; if(p >= 16){ p = 0; } // if()の方式 ← 4us
RA1=0;
2のn乗の%=は、使えそうです。
どうもありがとうございました。
>このスレ住人00人でも、身近な100人いいが、 こいつは何をあわててるんだ?
世界が百人の村だったら・・・ ってやつ?(ちがう)
>>532 ちっっがーーーーう!!
0x0Fで%とってどうする、0x10だよp%=0x10;
あとアセンブラ的にはbcfで4bitめをクリアするのが最速なんだけど
C言語でどう書いたら出せるかな。p&=0b11101111でいける?
536 :
774ワット発電中さん :2014/04/13(日) 07:25:51.91 ID:yMSCFo29
問題 排他性価値観、および排他的経済水域や排他的既得権を日常的に使うか? 俺(1/100)の答え 排他的経済水域、排他的既得権はたまにニュースで聞く。自分では使わない。 排他性価値観は知らない。 ところで、 俺の取引先の社長W氏は簡単な事を難しく言う天才だ。 おかげで会議の終わり頃には参加者はグッタリしている。
日常的に使わなければ2chで使ってはいけないとか 日常会話で使ってはいけないという俺様ルールの方が異常
またお前か
539 :
774ワット発電中さん :2014/04/13(日) 10:02:48.37 ID:Io+2KS4+
>>535 どちらでもおけ コンパイラ賢いなあ
268 ;main.c: 70: c &= 0b11101111;
269 00013C 9821 bcf main@c,4,c
270
271 ;main.c: 71: LATDbits.LATD4 = 0;
272 00013E 988C bcf 3980,4,c ;volatile
>>533 >>537 まだやってんのかよ。基地外。
会話ってのは、相手と意思疎通を図るためにするもんだ。
だれも知らないような単語を意味不明な文章に散りばめても成立しないんだよ。
>>539 あ、LATDbitsみたいな書き方があったのか
そしてコンパイラ賢いなあ
排他的でいいものを厨二的にかこつけて 価値観をつけちゃったのが失敗w
という排他的価値観全開の巣窟
「排他的価値観」とはうまいこという。 俺はpic初心者だけど。ここで質問するときが一番緊張するわ。 なるほど、排他的価値観全開の巣窟だもんな。
入れてと言えない で検索すると、症例が沢山出てくるから、参考にしたまへ
>会話ってのは、相手と意思疎通を図るためにするもんだ。 そのとおり! そして意思疎通なんてだれとでも成立できるわけはないんだ、 だから皆さん!「基地外」なんていう単語を見た瞬間に、発言者をNGしませう☆
conversation
http://ejje.weblio.jp/content/conversation conversation
音節con・ver・sa・tion 発音記号/kὰnvɚséɪʃən|k`ɔnvə‐/音声を聞く
【名詞】
1 【不可算名詞】 [具体的には 【可算名詞】] 会話,談話,対話,座談 〔with〕.
用例
conversation in English 英(語)会話.
2 【可算名詞】 (政府・政党などの代表者による)非公式会談.
【語源】
ラテン語「(頻繁な)つき合い」の意 (CON‐+versārī 「従事する」); 【形容詞】 conversational
学校行け
549 :
774ワット発電中さん :2014/04/13(日) 16:09:04.62 ID:yMSCFo29
>>545 俺は「入れたい」とはなかなか言えない。
何しろ排他的嫁だからな。決して俺が排他的弱気だからじゃないぞ(大笑
550 :
774ワット発電中さん :2014/04/13(日) 18:20:27.75 ID:G1s+TGcd
>>549 俺は「入れたい」と言われるがなかなか実現しない。
何故か血流が排他的に流れているようだ。
なんだ 排他的って言葉を初めて知ったようなガキどもか
理系の人は国語・社会が弱いって聞くけど、どうやら本当みたいね。 この程度の文章でつまずいていたら社会科学系の本とか読めないんだろうな。
電気、電子板で社会科学とかw
簡単に言うと歴史の本とか経済とか。
はい、よめません! 草書体の史料とか全くムリゲです!!
>>556 いやいや、草書体の史料とか俺も読めないから。
ところで一つだけ質問があるんだが
よくデータ読め、って言われるけど、これってどう思う?
データってたまには日本語もあるけど、基本英語だよね。俺はとっても無理なんだけど。
>>558 ほとんど日本語に翻訳されてるから英語読む必要はない。学生レベルはね。
データじゃなくてデータシートだぬ。 たまに読まなきゃどうにもならない事態にも晒されるけど、 短文は専門用語はたいてい共通だからなんとなく読めるもんだし、 長文については機械翻訳先生に依存してるお。 つうか社会科学ってどんな教科書よむん? 今でも空科とかチンカリとか読んでるん?
下手に日本語になってるのを探すより、そのまま英語で読み下した方が手っとり早い。 ただ英語を読むのは気合いを入れないとだめだから疲れるんだよなぁ。
>>560 へー、機械翻訳先生なんて使ってるんだ。
おれなんか電気の知識がないからさっぱりだけどね。
授業で使う教科書的な本は大きな本屋さんでもあまりおいてないんじゃないかな。
大学の生協の書店なんかいってみれば一目でわかるよ。
>>561 そうだよね。おれも英語は30分が限度。ぜんぜん進まない。
英語は勘弁してほしいよ。それこそ排他性データ。
教えてください。 Pickit3を使っています。 調子が良いときはいいんですが、一旦調子が悪くなると、なかなかPICと接続できません。 PC----Pickit3はだいたい認識するんですが、Pickit3----PICがダメで、 Device IDが00000だ、と言ってみたり、4 byte....とか、赤色の文字で表示されます。 USB抜いて挿して、とか、Programmerを一旦noneにして、再度Pickit3にしたり、 MPLAB再起動、PC再起動など、いろいろやってしのいでいます。 そこで質問ですが、 1) みなさん、Pickit3の接続認識は、調子いいですか? 2) Pickit3自身が壊れる事って、ありますか? 3) Pickit2の方がいいと言う人もいるようですが、どうなのでしょうか。 (現に秋月で、まだ売ってるし) 壊れやすいのだったら、予備としてもう1台買おうと思います。 夜中に壊れたら大変ですし。
シーケンサーを買って筐体バラして使うのがベスト
それでは排他的価値観とはどのような意味なのかご高説願いましょうか。
>>564 最新版のMPLABX(たしかbar2.05)にすると認識しなくなるから
アーカイブスにある古いバージョン(1.85)使って安定させてる(´・ω・`)
>>564 1.いい
2.使い方によるよね
3.おいらは3、2はEEPROMに書き込めるらしい
PICkit3<--->PICはどうやってつないでる?
>>567 2.05だけど問題無いよ
569 :
567 :2014/04/14(月) 05:44:53.01 ID:zwXCMRy5
>>568 なんかファームウエア書き込みでバグってステータスの赤ランプが消えなくなるから
1.85使ってる(´・ω・`)
PICkit3の型版とか関係あんのかな?
俺の場合 1.PC本体のUSBポートで使う限りは問題なし 外付けUSBハブ経由だと不調なことがあった (外部給電型ハブでもだめな場合がある?) 2.? 3.AKI-PIC Ver.4→PICkit3の移行なんで、2は使ったことがない PICkit3<--->PIC 秋月ICSP書き込みアダプターキット(改) MPLAB X IDE v2.00
571 :
774ワット発電中さん :2014/04/14(月) 09:56:29.13 ID:q2z/557y
MPLABの Xなし を使ってるけど、
>>564 と全く同じ症状になる。
MPLAB Xって、使いやすいですか?
XなしからXへの移行って、簡単でしょうか?
簡単なら移行しようかな
>>571 どうせ無料なんだから使ってみるのが吉。
使い辛いけど。
書き込みもMPLABからやってるってことかなあ。 おいらはMPLAB X 2.05だけど書き込みはPICkit 3 Programmerでやってる。 全く問題ないよ。
574 :
774ワット発電中さん :2014/04/14(月) 22:05:45.76 ID:aNwvriy0
MPLABから書き込むと、コンパイル成功後、自動的に書き込みしてくれるから便利。
PICkit 2 ProgrammerにもHEXファイルが更新されると自動的に書き込む機能 はあるよ。アセンブラでも自動的に書き込んでくれる。
>>573 MPLAB X 2.05から書き込みやるとどうなるかやってみて(´・ω・`)
MPLAB X 2.05とPickit3の相性まだ悪いのか
>>576 うん、気になったのでやってみたけど
特に問題なかったよ
>>579 じゃあOSにもよるのかな?(´・ω・`)
環境も書かずに言い合ってても無意味かもね。 うちは Windows 7 PRO 64BIT MPLAB X IDE 2.05 PICkit3のバージョンとかは調べ方がわからない ちなみにPICkit 3 Programmerは3.01 言われたので久しぶりにやってみたら問題なかったってだけで IDEでの書き込みを常用してないので再現性は不明だね 普段はPICkit 3 Programmer 3.01でHEXを指定して書き込んでるよ この方法ではもうずっと問題なし
>>581 ついこないだやったらMPLABX bar2.05でRunやって書き込もうとしたら
PICKIT3のステータス赤ランプが切れなくなって書き込めなかった(´・ω・`)
だから1.85つかって HEXから書き込むときはMPLAB IPEつかってる。
そういえば プログラマーTOーGO 機能いまはじめて使ったんだけど
書き込みにパソコンいらないんだね
電池でも書き込みできてびびったw
583 :
582 :2014/04/15(火) 15:42:40.18 ID:7wW44FwQ
584 :
582 :2014/04/15(火) 15:45:08.27 ID:7wW44FwQ
Windows8.1 64BIT MPLAB X IDE 2.05 RUNでの書き込みができなかった(´・ω・`) HEXファイルが生成されてたかは見てなかったからわかんないけど とにかくRUNで32MXが書き込めなかった。
んじゃあWindows 8.1との相性が悪いって事じゃ? Microchipのフォーラムで話題になってたような気がする うちは7なんでスルーしたけど
PICマイコン PIC12F1501−I/Pって最近秋月で扱い始めたけどどんな感じ? 12F863から乗り換えに便利?
589 :
774ワット発電中さん :2014/04/16(水) 00:36:25.67 ID:TRW33t4h
>>588 UARTが入っていないのが残念。
上位の1508/1509だと、入ってる
PIC16Fxxxや18Fxxxは、水晶発振周波数の1/4で動きますが、 24Fxxxは、1倍で、しかもPLLで高速に動いてくれるでしょうか? ・やはり16bitがいい ・クロックも高速に、PLLでさらに高速で動かしたい。 ・USBを直接接続したい ・メモリは、分割されていなくて、一直線のアドレス。 ・割込ベクターがあり、割込判定不要で ・UARTにパリティチェックはハードでやってくれて、 ・10bitくらいのD/Aを積んでいて、 そんなPICは、24Fxxxということでよいでしょうか?
591 :
774ワット発電中さん :2014/04/16(水) 04:44:09.71 ID:rinsHkPf
つデータシート
>>589 15xxって、入出力端子は昔の8ピンの様にGPでなく16Fシリーズの様にRAとか書くんだよね?
なんか使いづらいなー。1822もそれで使ってないけど、慣れたらいいことある?
>>593 名前なんて再定義すれば良いだけ。
以前は675とかよく使ってたけど、今は1822。速度も速いし使いやすい。
1823とプログラムが共用出来るし、若いなら使ってみるべき。
8ピンで言えば3桁の物と4桁の新しい物だと、俺も3桁派だわ。 便利な事はあるんだろうが、困っていない。 こういう人多いからメーカーも移行仕切れないんだろうなと思ったりする。
Microchipは古くなっても廃番にしないらしいよ
今までは8ピンはPIC12Fだったけど、次の5桁型番からは 8ピンでも16F始まりなんだね、PIC16F18313
>>596 どこかの半導体メーカさんもディスコンにはならないけど、
納期を問い合わせると「6ヶ月」とか平気で言ったりする
上位交換ならそんなに困らないんだけど、調べないとわっかんねーの多い
>>597 なんで今さら変えるんだろう
というかまず5桁になることに驚いた
MOLEXのコネクタじゃないんだから、5桁の品番って・・・
602 :
774ワット発電中さん :2014/04/19(土) 06:55:02.17 ID:OHCxAszX
PICは千代に八千代に続くものであり型番が不足せぬようあらかじめ余裕を見ておるのでは と推測いたしまする それでは皆様方御唱和をお願いします PIC 万歳! マイクロチップ・テク ノロジー 万歳!
603 :
774ワット発電中さん :2014/04/19(土) 09:29:00.89 ID:+oOY/Ouo
テストテスト
>>602 PICに変なイメージつけんな!
それよりヘーパイストスの息子が
パーン な件
について
どぅーおもう?(´・ω・`)
>600 新型から型名をファミリー別に整理するってことでしょ。 PIC18/24/32はBIT数できちんと分かれているのに PIC10/12/16はピン数の違いってのは表記上分かり難い。 PIC16F18313だと 5桁の先頭"1"は Enhanced Mid-range "83"がファミリーかな "1"がピン数っぽい 1→8p , 2→14p , 3?→18p , 4→20p 最後の"3"はFLASHサイズかな 256Wx2^3 = 2kW
どうしてもワードじゃなくてワットに見えてしまう
>>605 なるほど、そういうシステマチックな名前になるってのは便利ではあるな
「なんで今さら」感はぬぐえないが…
とりあえずそういうことなら5桁は納得だ
そういやそれで思い出したが、12Fがベースラインで16Fがミッドレンジだと
思ってるっぽい記述をたまに見かけるんだがあれ何なんだろ
12Fの大半がベースラインで16Fの大半がミッドレンジだった時期でもあるのかな
608 :
774ワット発電中さん :2014/04/21(月) 18:35:16.54 ID:FX5rpyYL
PIC16F877Aで、行き詰まっています。 RS232 I/Fの設定の部分に、CRENというのがあります。データシートには、 非同期モード 1 = 連続受信はイネーブル 0 = 連続受信はディセーブル 同期モード 1 = イネーブルビットCREN がクリアされるまでは連続受信可能 (CREN はSREN をオーバーライドする) 0 = 連続受信はディセーブル と書かれています。 別の機能として、フレーミングエラーやOverRunエラーがあったときに、 CREN=0; CREN1;を実行すると、それらをクリアすることもできるようです。 私の予想ですが、Continues Receiving ENableの略ではないかと思います。 質問ですが、 この「連続受信」の意味がわかりません。 RS232Cで、連続に受けないことって、あるのでしょうか? 対になる「単発受信??」でもあれば、想像できそうな感じがしますが。 それよりも、UARTリセット信号のような気がします。 受信ブロック図を見ても、CRENはRSRレジスタの四角に矢印が行っているだけですし、 RSRの受信データは、2段のFIFOに接続されているので、 CRENに関係なく転送されると思います。 よろしくお願いします。
>>609 ありがとうございます。
>受信禁止にする用法だってしたってええやん。
はい、もちろんいいと思います。
すると使い方は、以下の感じでしょうか?
1) 一旦CREN=1にして、続いてCREN=0にする (UARTクリアのイメージ)
2) 1文字受信する (RCIF=1になる)
3) ポーリングか割込でRCREGを取り出す (RCIF=0になる)
4) 1)に戻る
3)をする前に、次の受信が来たら、
それは無視(=RSR不変)ということでしょうか、あるいはOERR=1でしょうか。
どうも、そのような使い方をする局面が想像できないのです。
611 :
774ワット発電中さん :2014/04/21(月) 20:51:41.77 ID:GzmB69ID
たとえば、TCP/IPでいうとことのブロードキャスト送信は パケットが欠けても構わず後続情報を垂れ流すやん? そういうテケトーな情報の扱い方も有効な場合もあるだろうけど、それとは 逆に、一バイトたりとも欠けてもらっては困る><; っていう情報の 扱い方だってあるやん。 SIOの場合、ハードウェアフローを使うとRTSとかCTS線で、 相手が「まだ受け取れないよ!」とか「もう受け取れるよ!」ってのを 知ることができるから、一バイトずつ着実に通信する必要がある場合 (たとえば通信内容によってその後の通信の内容が豹変する場合などは) バラバラと先行して通信しておくのはまずいことも生じえます。 (たとえば先行して貯めてしまうと、三個前に送った信号へのACKを 最新の通信へのACKだと混同してしまいかねませんデス><;)
非同期シリアル通信というと1対1のRS−232Cが有名ではあるが、 マルチプロセッサ通信ののRS−485なんてのもあって
614 :
774ワット発電中さん :2014/04/21(月) 21:31:37.64 ID:FX5rpyYL
>>611 半二重通信にしても、1フレームにある程度のbyte数は送るのではないかな。
1byteごとにやりとりしてたら、スループットが落ちると思うし。
>>612 なるほど、そういうこともあるんですね。
これを機に調べてみたいと思います。
ありがとうございました。
>>612 RTS,CTSってモデムとのフロー制御であって受信側の都合は聞いてないというか接続できる規格じゃない
原則として受信は待ったなし
ごめん、DataTerminalReadyのDTRだったかな^^;
Dsub9ピンとかDsub25ピンとかの典型的なシリアルケーブルには TXDとかRXDピンは当然として、RTSやCTSピンも含まれていて、 昔ながらの16550みたいな通信ICには接続ピンが用意されてるんだけど datasheetみるとPIC16F877にはCTSとかのピンは、 ないみたいですね・・・さーせん><;
618 :
774ワット発電中さん :2014/04/21(月) 22:49:21.77 ID:tLiHOW1M
>>617 マイコンなんだから、空きポート使って、自分でなんとかすればいい。
RS232Cって1969年制定でしょ メモリがくそ高かったことを 考えると 1文字分だけのバッファを用意して 1文字受信→ テレタイプのハンマーを動かす をコンピュータなしで (電子回路のみで)やろうとするなら 連続通信禁止の フラグは当然ついてないといけないだろうと
CTS使って相手が止められるならむしろ連続受信可能にしておいても問題
ないと思うな。俺も
>>610 同様使う場面が想像できないな。
>SREN: Single Receive Enable bit
>Asynchronous mode:
>Don’t care.
ということなんだから、CRENは単に受信イネーブルなんだろう。
CREN: Continuous Receive Enable bit
Asynchronous mode:
1 = Enables continuous receive
0 = Disables continuous receive
実際16F690のデータシートを見るとcontinuousなんてどこにも書いてない。
>CREN: Continuous Receive Enable bit
>Asynchronous mode:
>1 = Enables receive
>0 = Disables receive
621 :
774ワット発電中さん :2014/04/22(火) 01:43:40.16 ID:rg6JGucj
>>619 >1文字受信→テレタイプのハンマーを動かす をコンピュータなしで
>(電子回路のみで)やろうとするなら 連続通信禁止のフラグは当然ついて
ありがとうございます。とても納得できました。
そうですね、機械動作を混ぜ込むと、1文字毎に止めたいですね。
なるほど、そういう時代もありましたか。大変勉強になりました。
ありがとうございました。
>>620 ありがとうございます。
>実際16F690のデータシートを見るとcontinuousなんてどこにも書いてない。
調べていただいて、ありがとうございました。
納得です。現在の実情には合わない、つまり、
>>619 の言う時代のころの
機能のためなのですね。
どうもありがとうございました。
質問してよかったです。みなさん、ありがとうございました。
>>621 >現在の実情には合わない、つまり、
>>619 の言う時代のころの
>機能のためなのですね。
そうじゃなくて、そもそも非同期で1文字ずつ受信なんてないということ。
すると、堂々巡りだが、連続とは何のことを言うのか、って事になるな
PIC16F877Aのデータシートが誤記というか分かりづらいということじゃないの? SRENが無効なんだから連続しかない。
>>622 日頃非同期しか使わんから同期式をようしらんけど
信号の区切りを示すクロック線も通信ケーブルを
走らせる(つまりもう一本クロック線が必要になる)のが
同期式じゃないのけ?
非同期だと一バイトずつに受信する用法があり得ないと本気で思うのけ?
「非同期で1文字ずつ受信なんてない」と考える根拠についてkwsk
>>619 ボーレートを落とせばいいだけ。35から75bps程度なら機械式でも充分。
ラジオテレタイプなんて、いまでもそれで普通にやってる。
>>625 言葉が足りなかったかも知れないけど、用途の話じゃなくてUSARTが非同期
モードのときは1文字受信して終わるようなモードを持ってないという意味。
CRENがディセーブルなら受信しないし、イネーブルなら連続受信になる。
628 :
774ワット発電中さん :2014/04/22(火) 10:57:13.50 ID:CRp9ahpM
>627-628 いやいや、16F877Aは、ハードウェアではリングバッファとかを 持ってないんだから、さういふバッファやらフロー制御信号は XON/XOFFをソフトウェア的に実装するか、 CTS/RTSをIOポートから制御するかたちで うーざーが工夫して用意するってだけでそ。 念のために【電子工作のためのPIC活用ガイドブック】のUSARTの章を 開いてみたら、CTS/RTSは、PC側のをそのままループバックしてるや…orz
>>629 日本語が変ですが、言ってる内容も論点がずれているように思います。
CRENの「連続」の意味を考えているのであって、
フロー制御の話ではないです。
877AはFIFOをもっているわけだが
USARTの受信データの格納レジスタは 二バイトサイズだけど一応FIFOだぬ。
たしかにマニュアルにはFIFOってあるなー ふつうに二重バッファーだよな 俺的にはFIFOっていうと8レベルだとか16レベルだとかいうイメージ・・・orz
635 :
774ワット発電中さん :2014/04/23(水) 00:23:07.39 ID:WYf0GcFv
>>634 OS積んでたら、16レベル位ないと取りこぼし起きるが、
8bit PICレベルでそんなに重たい処理させないしな。
RCIFは、FIFOに1つでもデータがあると1になるの? それとも、受信レジスタに1byte入った段階で1になるの?
>>636 データが存在してれば、フラグが立つ。
TXIFは送信完了(空)なら立つ。
そりゃもちろん 7bit通信なら7bit 8bit通信なら8bit 9bit通信なら9bit ワンフレーム(っていえばいいのか?)揃ったらフラグが立つのだと思われ。 頭の1bitだけで立たれたら困る><;
640 :
774ワット発電中さん :2014/04/23(水) 18:30:40.42 ID:rMDutY5+
>>683 でも、受信レジスタの他に2byteのFIFOがあり、
RC7□-------RCREG------FIFO1------FIFO2-----内部バス という構成だから、
RCREGに整った時にRCIFが立っても、バスにデータが乗るまでに2つのレジスタを
くぐらないといけないですよね?
それなのに、RCREGに入った段階で、RCIFが立つのでしょうか?
FIFO2に入った段階でRCIFが立っては、遅れが出ますしね。
マニュアルにFIFOとは確かに有る 四角い枠も2つ有る しかしてFIFO1/FIFO2とは書いてない 本当に2段有るのか??? 俺のマニュアルが古い?? 古式のSIOと対比して 受信シフトレジスタ←→RSRレジスタ 読み出しバッファ←→RCREGレジスタ←←←←コレをFIFOと書いてあるだけ?? にすると考えやすいが・・・ 本当にFIFOが2段有るのか????
>640
16F877Aのデータシート見ると(P117)
ttp://ww1.microchip.com/downloads/en/DeviceDoc/39582C.pdf >RC7□-------RCREG------FIFO1------FIFO2-----内部バス
じゃなくて
RC7□-------RSRreg-----RCreg(0?)
内部専用? RCreg(1?)----内部バス
となっていて、RCregからRCIFに繋がっている。
ワンフレーム分のデータを受け取って、RSRreg→RCRreg
この時点でRCIF立っても、RCregはバスに繋がってるから
遅れとかも問題ないはず。
図ではRCreg(0?)がRCRreg 、 RCreg(1?)が内部バスに繋がってる様に
見えるが、同じ枠なので2バイトのリングバッファになってるかと。
>It is possible for two bytes of data to be received and
>transferred to the RCREG FIFO and a third byte to
>begin shifting to the RSR register. On the detection of
>the Stop bit of the third byte, if the RCREG register is
>still full, the Overrun Error bit, OERR (RCSTA<1>), will
>be set.
2バイト受け取って、3バイト目をRSRregで受信できる
3バイト目のSTOPビットでオーバーランエラー
とのことなのでバッファは2段でしょう。
その10-4の図は、何度見てもわかりにくい図だよね。
>>642 の説明も、わからないでもないけど、
>RCregからRCIFに繋がっている。
そうだけど、RCIFの接続先は、RX9Dなのか、RCREGのどれかのbitなのか? わからない。
>RCregはバスに繋がってるから遅れとかも問題ないはず。
しかし、その図ではRCREGが2つ書いてあり、バスに近い方と遠い方があるので、
RSR→FIFO1→FIFO2の経路でシフトされると予想される。
すると、
1) RSR - → FIFO1 - → FIFO2 - → data bus
2) RSR A → FIFO1 - → FIFO2 - → data bus RCIF=1でもdataなし
3) RSR B → FIFO1 A → FIFO2 - → data bus RCIF=1でもdataなし
4) RSR C → FIFO1 B → FIFO2 A → data bus RCIF=1ならAが読み出せる
となってしまう。
マニュアルを読むと、PICって、パリティジェネレータが無いのね。 自分で計算せぇ、ってか? 重荷だね。
>>644 パリティって余り使う事無いからな。
1bitの誤りを検出する事しか出来ないし。
誤りが2bit以上あったら、検出出来ない場合あるし。
>643 二つのRCregはわざわざ押し出して移動しなくても、交互に読み出せばいいだけでしょ RSRからの持ってくるときも交互に書き込めばいいだけだし。2バイトでリングバッファ っていうのも気が引けるがまあそんなもの 2個のRCregにそれぞれデータ有無フラグ(RSRから来たら1、読み出されたら0)用意して ORすればRCIFになる。 あくまでも概略図なのだから、リングバッファ用のカウンタ、データ有無BITは省略してる だけでしょ。
647 :
774ワット発電中さん :2014/04/24(木) 07:07:09.54 ID:RnamUigu
通信の相手側も自分で作るならBCCやCRCなどで好きに対処できるけど、 世の中には垂直パリティ単独で、あるいは他のエラー検出と組み合わせて 使っている機器も多いよ。 やはりパリティジェネレータは有ったほうがいいな。
>>642 それだと単なるシフトレジスタだよね。
FIFOと言うからには入り口から入ったデータが即出力に見えてると考えないと。
違うチップだけど16F1938のマニュアルが解り良い RCREGが2重になっている模様 タイミングはFIGURE25-2で解る DS40001574C-page294
>>646 >2個のRCregにそれぞれデータ有無フラグ(RSRから来たら1、読み出されたら0)用意して
>ORすればRCIFになる。
ORだとおかしくない?
RCIFは、「来たぞ!」フラグでしょう?
だとすると、Bufferに1byte残っていると、RCIFは立ちっぱなしになりそう。
>650
>>649 さんの示された294ページチャートが答えになってる。
(つまり、残っていれば読むまで立ちっぱなし)
652 :
774ワット発電中さん :2014/04/24(木) 11:57:56.72 ID:RnamUigu
つまり、2回連続して受信割り込みがかかることがある、 それでも構わないだろうけど、避けたいなら 割り込みの中でリクエストフラグをチェックした方がいいって事かな?
>(つまり、残っていれば読むまで立ちっぱなし) ということは、 RCIFは「在庫あり」のフラグという感じですね。
連投、すみません。教えてください。 PICKit3の押しボタンSWで書き込む方法についてです。 試したことがないのですが、 この機能は、 ・書き込みたいhexファイルを、PICKit3の中に記憶させて、 ・PICKit3の押しボタンSWを押すだけで書込が出来る ・また、それはUSBの5V電源さえあれば、PCとの接続なしで書込が出来る つまり、初回はPCで書き込んで、その後PICKIt3をPCから取り外して、 USB_5V出力のエネループ電池を電源として、現場で、複数台に書込する、 という使い方が出来るのでしょうか? あるいは、やっぱりPCはいつも必要なのでしょうか?
655 :
774ワット発電中さん :2014/04/24(木) 16:53:49.10 ID:i4O1Oatn
>>654 モバイルバッテリーでOK
Programmer-To-Go でググれば日本語ユーザーズガイドが見つかると思うよ
>643 なんかFIFOのバッファをところてん方式で、後ろから押し出されないと 読めないと勘違いしていない? バッファに溜まっている分は、(あふれない限り)プログラム側の好きな タイミングで好きなだけ読めなければ意味が無い。 そうでないと 結局1バイト来るたびに割込発生してしまう。 まあMidrangeのPICだとバッファが2バイトしかなく、実際1バイト毎に 割込がかかるので、バッファは割込のオーバーヘッド分の保証の為にしか なってないけど。 PIC24やdsPICのUARTだとだとバッファが4バイトになっていて 割込を発生させるタイミングも指定できる 1)RSRからバッファへ送られ、4バイト全部埋まった時 2)RSRからバッファへ送られ、3バイト埋まった時 3)RSRからバッファへ送られたt時 当然1,2は1回の割込処理内でバッファが空になるまで取り込む 結果割込回数を1/3〜1/4に減らせる。まあ最後の端数データの 取り込みとか考えなきゃいけないけど
>>654 ,655
すごいな、そんなことができるのか、PICは。
ルネサスとかでもE8とかE10で、同じ事ができるの?
PICの初期不良品の確率どのくらいなの?先日買った16F688の内部クロックが40%もずれてて、あせった。
mjd? 校正用パラメータ消したりしてない?
まぬあるP.26の 3.5.2.1 OSCTUNE Register に変な値を書いちゃってない?ってハナシ
言い訳: 昔別のPIC使ったときはFLASHの特定番地に較正値が格納されてて プログラムオプションを間違えて底を消しちゃうと内部発振がずれちゃう トラブルを経験したんだけど、その石のマヌアル読んでみると該当する記述が 見当たらなかった。
>>661 OSCTUNE Register は使ってないです。
>>662 それ知ってる。12F675には書いてあった。
>>663 では使ってないからずれてんじゃないの?
さっき斜めに読んだときは、8Mの方は1%以内に較正されてて 31k(でしたっけ?)の方は較正されてないような・・・ でも後者だとしても40%はデカいっすね^^;
40%ってのが1/4の誤記ならそれで会ってますよ〜 データシートに書いてないですがOSCOUTの出力は1/4になるみたいです
>データシートに書いてない P.6にCLKOUTはCMOS出力で FOSC/4 outputだって表に書いてありますし P.21にもINTOSCに設定するとInternal oscillatorで OSC2とOSC1/CLKINに FOSC/4 outputを伴うって明記されてますし P.25にもIn INTOSC mode, OSC1/CLKIN is available for general purpose I/O. OSC2/CLKOUT outputs the selected internal oscillator frequency divided by 4. つまり4で割った周波数で出力されるって書いてありますお。
REGISTER 11-2: CALIB ? CALIBRATION WORD (ADDRESS: 2008h)
670 :
774ワット発電中さん :2014/04/26(土) 00:56:02.68 ID:EBOi2dUU
OSCTUNEは微調整用だから、使わなくても1%以内に較正済み OSCCALがある機種だと、正しく補正値を書いて初めて1%以内になる 31kHzの方なら40%ずれは不思議じゃないと思う 31kHzオシレータのデータは見つからなかったが、同様に較正なしのWDTは PIC10F200のデータシート見ると全温度・電圧範囲で11ms〜47msにばらついてる
671 :
774ワット発電中さん :2014/04/26(土) 03:01:41.28 ID:31GVspE3
672 :
774ワット発電中さん :2014/04/26(土) 05:11:19.07 ID:XdRO73x3
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。 ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。 ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。 ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。 ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。 ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
673 :
774ワット発電中さん :2014/04/26(土) 10:54:48.19 ID:HV+In6yS
>>665 Base Line は起動時にOSCTUNE設定する必要あるが、
Mid range以上は、特に設定する必要ない。
---
Base LineはリセットベクターがFlashの最終番地になっている。
最終番地に、工場でWレジスタに校正値を入れる命令が書き込まれる。
にんがら目ってなに
すみませんが、ここは、はじめてPICをさわるような初心者のスレです。 みなさんの知識自慢や、高度な話題は、上級スレでお願いします。 初心者の僕たちが質問書き込みしにくいです。 宜しくお願いします。
>>675 まず初心者として質問をぶつけてみてから言えよ
677 :
774ワット発電中さん :2014/04/26(土) 16:02:12.06 ID:EBOi2dUU
>>673 いや、ミッドレンジにもOSCCALがあるやつあるよ
そしてOSCTUNEじゃなくOSCCALね
ところでOSCTUNEとOSCCALもそうだし、
最近はCLKOUTとCLKRが意味的に逆な気がして分かりづらい
チューンよりキャリブレーションの方が細かく合わせそうな気がするし
OUTならそのままの周波数を出せそうでリファレンスなら1/4でもいいかなみたいな
>>676 相変わらず、偉そうな上から目線な態度ですね。
そりゃ怒玄人サンは目玉が上に5mぐらい飛び出た 個性的な風貌をお持ちの奇特な人士(火星人?)なので 視点は人より高い位置にくるのは当然だけど・・・ 上から目線だなんていう身体的特徴で文句いうのはやめようよ・・・ それ、ぶっちゃけ人種差別だお! ><;
すみません教えてください。 MPLAB IDEとPICKit3とPIC16F627Aで、PICの勉強をしています。 PICKit3が、MPLAB IDEでは正しく書き込み出来ていました。 昨日、PICKit3でをPICKit3 Programmerという書き込み?ソフトで使用しました。 ちゃんと書けました。そこで、 今日、もう一度MPLAB IDEで書き込もうと接続したのですが、PICKit3を認識てくれません。 念のためPICKit3 Programmerでやると、ちゃんと書けます。 MPLABで使えるように戻したいのですが、どのようにしたら良いでしょうか?
>>676 > まず初心者として質問をぶつけてみてから言えよ
PIC専用のスレ、閑古鳥が鳴いてますよ。ベテラン同士の質の高いやり取り見せてくださいよ。
>>681 僕も初心者ですが、同じ事で填まりました。
以下↓のところが参考になると思います。
http://okwave.jp/qa/q8255027.html 結局のところ、PICKit3の内蔵PICのプログラムを書き替えるらしいです。
なんでこんな面倒な仕様にしたのか、ちょっと疑ってしまいます。
MPLAB X だと、どちらでもできるようでもあります。
参考にしてください。
>>681 あと、PICKIt3関連で、僕が間違えて焦ったことでは、
Programmerで、PICを自動で見つけてくれない、というのがありました。
いろいろと半日もかかって調べたら、PICのグループを「手動で」設定しないと、
見つけてくれないみたい。
そのグループ設定がしてないと、手動のデバイス設定の表にも目的のPIC型番が出てこない。
自動でPIC調べてくれるなら、全シリーズを調べてくれればいいと思うんだけど、
ユーザーにグループを設定させるという、変な仕様のソフトだと思いました。
ご参考まで。
>>683 ,684
ありがとうございました。やっぱり皆さんも経験していねんですね。
ちょっと安心しました。明日一度やってみます。
質問して良かったです。どうもありがとうございました。
現在は、ゼロプレッシャーを使ってPICに書き込みしてるけど、 何か楽しそうなので、PICKitを買おうと思うです。 PICKitは、秋月に 2 も 3 も売ってるけど、何が違うんでしょうか?
2は古くて3は新しい
PICKIt3を買えば、全部を包含しているので、2を買う必要はありません。 逆にPICKit2は、新しいデバイスに対応していないので、使いにくいです。
ゼロプレッシャーとなにを組み合わせて書き込んでたのがわからんが、 2と3はIDEの対応状況やPICの対応状況、書き込み以外の機能が違う。 特筆すべきは書き込み以外の機能で3>2ではないところだ。
書込以外の機能なんて、誰か使ってるの? 誰も使わないからなくなったんだと思ってたけど ちなみに現行のMPLAB-Xでは2は使えないよ
692 :
774ワット発電中さん :2014/04/29(火) 17:23:58.81 ID:9XnvCnnV
書き込み以外だと、デバッガーとしてブレークして変数を見るとか。
>>687 もし、PICKit2で満足してるなら秋月のAKI−PIC2プログラマボード(PICkit2互換)買えば、
ゼロプレッシャーソケットも使えるし、横についてる白いコネクタでICSPも使えるので便利だよ。
PICkit2よりお高いんですのね
皆さんいろいろありがとうございます。 秋月で、PICKit3を、注文しました。ありがとうございました
先日客先で、マイコン何使ってるの?って聞かれたので 「PICです」と言ったら、「PICか〜、趣味のマイコンだな」って言われました。 ちょっとムッとしました。 そこで質問です ・PICを仕事で使う人はいない、というか PICでは仕事にならないんでしょうか? ・PICは、他のマイコンに比べて、機能的に何か劣るところがあるんでしょうか?
仕事に使い物にならないマイコンでデバイスの会社が成り立つほど趣味の市場は広くないと普通は思うけどね。
医療、鉄道、航空、宇宙機器向けであれば、確かにPICマイコンは不向きだと思う。 機能的にはまったく問題ないけど、製造品質、長期供給保証、不具合発生時の 解析体制とか考えると厳しいかな。 そういったクライアントであれば、まだATMELの方が受け入れられやすいはず。
え?
>>697 お客様は神様だからムッとしちゃあきまへんお。
趣味でも使えるくらいの敷居の低さはPICの長所だし
イニシャルコストの抑制に大きく貢献してくれるけれど、それは
逆に言えばハッキングというかクラックされ易さでもあるお。
福島の事故直後にPICは、放射線には他のマイコンと比して
比較的つおいとか話題になってましたお(理屈は忘れたけど)。
ちなみに、おいらも同窓会でPIC(も)使ってるっつったら
あからさまにバカにされたお!(^ω^#)ピキピキ!!
ARM9系のカスタムプロセッサのアプリケーション開発! とか書いておけばNitendoDSのソフト開発とは気づかれまい! 俺はやってないけど。
703 :
774ワット発電中さん :2014/04/30(水) 16:00:23.73 ID:gNUTEsec
>>699 >機能的にはまったく問題ないけど、製造品質、長期供給保証、不具合発生時の
>解析体制とか考えると厳しいかな。
なるほど、そういう見方もあるんですね。だったら、そう言われてもしょうがないですかね。しくしく(泣)
製造品質、長期供給保証、不具合発生時の解析体制とかが良いメーカーって、
自動的に日本国内のメーカー、しかもルネサスということになりますよね。
三菱・・・・M32、今でもやってるのかな
富士通・・・FMC、今でもやってるのかな
今なら、ARMが旬なんでしょうか
>製造品質、長期供給保証、解析体制 …PICで異常品がどうこうという噂は、今のところ記憶に、な…いや、あった、あったな。 初期ロットのバグが改訂されて云々ってのは騒いでたのはあったな^^; でも他は、CPUほどじゃなくて基礎的な部品(1815やTLP123とか)ですら メーカーが一方的な都合でディスコン指定してくるわけで ルネサスさんだって(特に旧日電系のは?)どうなることやら…って感じだし 万一、不具合おきたとしてもいちいち解析要求するクレーマーが プロだというならおれぁずっとアマチュアれべるでイイって感じだし パソコンのマッキントッシュとかエプソンのプリンタ(などで PICが使われていたという報告がwebに転がってるけど そういったメーカーすら趣味レベルと断ぜる)ハイクオリティーなお仕事って どんな産業なのだろう・・・ 防衛畑のお話なのかな・・・
>>697 うちは、組込では、ARMから東芝4bitまでやってるけど、8bit小ロットでいけるのはPIC使ってるよ。
今のところ、PICは三菱の74ファミリと同じくらいノイズ耐性や過負荷に強い。
両者とも他のCPUがころっと暴走する過酷なノイズ環境でも平気で動いてくれるので捨てられない。
CPUの機能や能力はバカでもデータシートや風評でわかるが、そういう要素はわかってる人にしか
なかなかわからないみたいだよ。
>>697 そういう時は
「ロットが小さいと手間が掛かるだけでマスク版のCPU使う意味が無いんですよねー。初期2万個、年間10万個以上の発注下さいよ」
と言ってみ?
707 :
774ワット発電中さん :2014/04/30(水) 19:16:32.20 ID:gNUTEsec
>>705 >今のところ、PICは三菱の74ファミリと同じくらいノイズ耐性や過負荷に強い。
ぼくも、そういう印象があります。
PICについて言えば、内蔵発振器の性能がいいです。誤差も音特もいいし、
内蔵発振器が停止したことまでわかるようになってるし、
日本のメーカーでそれほどのところって無いような。
マイコンに限らず、3端子レギュレーター、EEPROM、デジタルポテンショメーター、など
価格も安いのに、性能はいいし、Microvhip好きなんですけどね。
供給が悪いでしょうか? 16F84がなくなっても、それをカバーしうる製品がたくさんあるし、
前品種を考慮した代替品が多いのは、いいことだと思います。
>>706 いや、ルネにしてもマスクではなくて、Flashに書いて納品ですので、
Microchipと同じです。
単に食わず嫌いのイメージだけでしょうか。
>>707 ルネはいつなくなるか分からないので新規採用しにくいのだが(´・ω・`)
>>701 >福島の事故直後にPICは、放射線には他のマイコンと比して
>比較的つおいとか話題になってましたお(理屈は忘れたけど)。
プロセスルール的に有利じゃなかった?
特にベースラインやミッドレンジが。
突然失礼します。 PICで初めて目的が出来、書籍、Web両方探している最中です。 デモボードでLEDチカチカまでは独力でたどり着きました。 が Hitec-Cの古漬けのとか、CCなんとかやら 巫女なんとかの情報が多く、自分が使いたいMPLAB-Xv2.1+XC8v1.31で使えば #include<xc.h>以外は全部の文に「〜」「!」マークが付く状態、 そんな私を助けてくれるサイトやPDFなどはありますか?
>699 長期供給保証って Microchipはディスコンせずに供給を維持している イメージがあるけど。直販でPIC16F84を今でも入手できる @$4.55 Atmel の 90Sシリーズはディスコンで入手不可じゃないか? Microchipは日本法人もあるし(アトメルジャパンは撤退?) 悪くないポジションだと思うけどね。 ルネサス品なんか会社の状況考えるといつディスコンになったって おかしくないし
>>710 >Hitec-Cの古漬けのとか、CCなんとかやら
>巫女なんとかの情報が多く、自分が使いたいMPLAB-Xv2.1+XC8v1.31で使えば
>#include<xc.h>以外は全部の文に「〜」「!」マークが付く状態、
>そんな私を助けてくれるサイトやPDFなどはありますか?
遠回しに言わずに、普通に直接言えない? 何いってるのかサッパリわからないよ。
>>711 ルネサスの代理店、ある時から急に対応が悪くなったので、使わない。
>>710 とりあえずはサイトを検索して落ちてるプログラムをかたっぱしから実行してみれば。
PICってあまりいい本とか売ってないしね。なんでも中途半端。
どうやらみなさん学校で習ってるみたいだし。
そりゃコンパイラが違えばライブラリや関数名も違うでしょうから ソースがそのまま使えないってのは当然でそ・・(^ω^;)
>>710 言葉の意味を教えてくれ、頼む。
>Hitec-Cの古漬けの →
>CCなんとか →
>巫女なんとか →
>全部の文に「〜」「!」マークが付く状態 →
>>710 コンパイラがどれを使うプログラムか解ってるなら、コンパイラのほうをそれに合わせればいいんじゃね?
>>715 想像するに、
Hitec-cの旧バージョン
ccs-c
mikro-c
じゃないかな。
まぁこういう日本語使って喜んでるやつには何も教えたくない。
見てると苛つくな。
>全部の文に「〜」「!」マークが付く状態 → は、何を表しているんだろうか。 ~は、bit反転 !は、論理反転
>>710 あんたが使いたいMPLAB-Xv2.1+XC8v1.31で検索すりゃあいいじゃねえかよ
なぜ他のコンパイラで検索したのをぶち込もうとすんの
しかもXC8のソースだって探せば十分な質と量があるぜ
確かに、コンパイラー毎に「親切表現」は、わかりにくいね。 CCSはbit操作が楽ちんにできるけど、それに慣れてしまうと、 普通のコンパイラーのソースが読めなくなる。
723 :
710 :2014/05/02(金) 23:10:27.08 ID:j06yPQTW
色々失礼しました。2chとはいえ適当すぎました。 MPLAB+XC8の比較的新しいバージョンを、Cで使いたい、けど、 WEBで探すプログラム例や構文、ライブラリは古すぎ、使おうとすると改変を受け続けた コンパイラがほぼすべての文に対し、〜や!のエラーマークを貼り付けてくる。 それ以前にコンパイラの種類やバージョンでコマンドが違うので、片っ端から探して貼り付けても 泥沼化するだけの状態です。 (__config が最新版は使えないと知らず悩む、など。) 一覧は無理ですが、何とかまとまった良い情報ないですか? PIC16、PIC16F1系列の本は買いましたが、大半アセンブラの話してるみたいです。 手持ちのPICは16F88 16F1827 16F887 Pickit3付属の18F45K20デモボード、 現状、探して手に入る開発環境がMPLABX+XC8。書籍も凡例も一番多い旧バージョンの HitecCはダウンロード出来る場所が見つからず。本家は古いからXC8使えと・・・。 どこまで使えるようになるのか未知数な状態でMikroC、CCS、高額な教育キット を買うだけの勇気は、手持ち金の関係もあり出せず。 当面の目標は、1602系列のLCDに簡単な計算結果を出すことです。 >721 ”言われた通り”に検索かけてみたら>721さんの文章が出てきて終了でしたよ。
MPLAB X IDE の最新は v2.05 で、確か v2.1 はまだ出てない。 そんな基本すらろくに確認もしないでふざけた書き様で質問するから 自分で検索してみろよという意味で書かれたんだよ。 最も好ましい検索ワードは MPLAB X XC8 HD44780 と思われるが、 英語のサイトが多く、結局、日本語は上の書き込みのサイトがトップに出てくる。
>>723 >>710 のイラつく文章とは別人のような文章で、気持ち良く読めました。最初から、その書き方なら・・・
さて、本をご紹介します。この2月に初めてMPLAB IDE, XC8 で、18F26K22などを使ったのですが、
以下の本が、大変参考になりました。
http://www.7netshopping.jp/books/detail/-/accd/11029475 どうもMicrochipは、Hitec Cを買ったみたいで(?)、XC8 = HitecC だと思います。
私も以前はCCSを使っていて、その「CCS方言」が身に染みていて、XC8が最初は億劫でした。
しかし、以下のことに気づいてから、スラスラとできるようになりました。
1. PICマイコンのデータシートのレジスタ名称が、そのまま使える。
2. ウィザードを使ってプロジェクトを作成すれば、デバイス毎のヘッダは不要
3. intは16bit
↓こんな感じ
(つづき) #include <xc.h> #define _XTAL_FREQ 16000000 // 16.000MHz #pragma config BOREN = 1 #pragma config CPD = 0 #pragma config DEBUG = 0 #pragma config WRT = 0 #pragma config FOSC = HS #pragma config WDTE = 0 #pragma config CP = 0 #pragma config LVP = 0 #pragma config PWRTE = 1 #define TMR1_set_data 65535-495 void interrupt interrupt_routine(){ if(TMR1IE && TMR1IF ){ // Timer1 TMR1IF = 0; TMR1 = TMR1_set_data; } else if(xxxx && xxxx ){ } } void main(){ unsigned char aaaa = 0; TRISA = 0b00010000; PORTA = 0b00000000; ADCON1 = 0b00000110; TXSTA = 0b01100000; RCSTA = 0b11010000; SPBRG = 12; T1CON = 0b00110101; TMR1 = TMR1_set_data; TMR1IE = 1; PEIE = 1; RCIE = 0; GIE = 1; while(1){ if( aaaa == 1 ){ RA3 = 1; // bit単位でのon/off } else if( RA0 == 1 ){ RA3 = 0; // bit単位でのon/off } else { PORTA = 0x5c; // ポート単位での置数 } } }
#pragma config は、1行でたくさん書く方法があったはずだけど
>>725 >MPLAB X IDE の最新は v2.05 で、確か v2.1 はまだ出てない。
v2.1出てますよ。
ダウンロードページの表示はv2.05なんだけど、実際にダウンロードされるのはv2.10
730 :
710 :2014/05/03(土) 07:28:20.73 ID:ELnDEyKr
色々ありがとうございます! とりあえず仕事ですので、あとでやってみますね。
上司は大変だなと心底思う。
そうやってスレを過疎らせるような書き込みして 何が楽しいのかと心底思う
MPLAB IDEを使ってるけど、MPLAB X が、なかなか使えない。 IDEのほうで不満がないし。
Windows7に乗り換えたときにMPLAB IDEが未対応だという話で Xに乗り換えたけどなんでおまえらんとこの7だと使えるんだっ ><;
すまんが名称を整理してくれないか。 現行の正式名称は「MPLAB X IDE」では? 「MPLAB X」とか「MPLAB IDE」とかはどういうもの?
すみません。 X無しをIDEと言っていました。
それマジで言ってんの?
739 :
710 :2014/05/03(土) 23:00:58.00 ID:ELnDEyKr
>731 仕事と言っても電機屋ではないですよ。 あくまで趣味です。本業でも役に立つ所はないでしょうね。
数字が全角なところからすると、技術屋さんでもないみたいね。
741 :
710 :2014/05/04(日) 06:21:05.13 ID:SSdzjkfJ
過疎ってる煽りスレに質問しといてなんだけど、まあ、5年ぶりくらいに2chやりますんで、作法なんか全部忘れてます。
技術屋というと作業服のポッケに計算尺差しててやたら気難しいヒトというイメージ(^ω^ )
作業服の上着の上腕部に、 150oの金属製定規(シンワ製)が、定番
それ、現場作業員
>>741 2chに作法らしい作法なんて無いですよ。強いて言うとすれば、
・英数は半角で書かないと、嫌われる
・いろいろな所に同じ質問を投げる「マルチポスト」は嫌われる
・自分あるいはローカルな人たちの間で使われている言葉を平気で書き込んで
悦に浸っている書き込みは、嫌われる
・後出し上家なの質問は、嫌われます。
・説明の下手な質問には、まともな回答は付きません。
・回答者は、初心者の気持ちをわかってやり、質問の真意をうまく引き出すこと。
くらいかなぁ。
>>745 >・後出し上家なの質問は、嫌われます。
誰か翻訳してくれ。
俺も全角で書いててボロクソに罵られたけど こちとら、其処を改める気など更々無いし、どちらかというと 2chなんてIDのある板で、IDを工作しないままに 同一IDで 堂々と自作自演できるようになって初めて一人前、と思っているのだが 近頃の若者は同調圧力に闇雲に呑まれ安すぎて困る、と思われ(^ω^)
>・英数は半角で書かないと、嫌われる これは、嫌われるじゃ無くて、馬鹿が騒ぐの間違い。 荒れるだけで実害は無し。
まぁ、センスは感じられないけどね
全角、そこにしか突っ込むセンスがないんだもんな
たった5年でローカルルールや作法忘れるのはネットどころか実生活でもちょっと問題あり。
3.14 とか書いてあるといやだな。 せめて 3.14 にしてほしい。 ま、基本2桁以上なら半角でって学生のとき言われたけど。
>>750 >全角、そこにしか突っ込むセンスがないんだもんな
全然違うと思う。
最低限のそんなことすら出来ない人に、技術があるのか? ということです。
だいたい理工系で全角数字なんか使い物になる訳ない CADやエクセルだって全角数字は通らんし。 せいぜいタイトルやファイル名には使えるかもだ。
ローマ字入力の弊害だね。
エクセルはExcelじゃなくてもいいのか?
2chの書き込みをCADやExcelにこぴぺすんの?ww
758 :
774ワット発電中さん :2014/05/05(月) 14:22:09.11 ID:4fPIA0Q2
全角/半角以前に、そもそも日本語はコンピュータ向きではない。 と私は思います。
エクセルに全角で数値入れても、半角として取り込んでくれるけどね。 全角数値でも認識できるのに、多少読みづらいからってケチを付ける この程度のことも許容できない人はさぞかし生きづらいでしょうね。
全角文字列も変数名として扱える処理系において 2=3 とやると2が3になります。
or2=3 ; おもいっきり屁をこく
or2=3 の方がいいと思われ
ぼるじょあ「(・3・)アルェー」 ↑ 厨「コイツ全角だ! ゆるせん!!! ヽ(`д´#)ノ」
>>759 >全角数値でも認識できるのに、多少読みづらいからってケチを付ける
そういう考えも認める。
しかし一方で、全角を半角に解釈するExcelが良くない。
「世の中全角でOKやんけ」という意識を定着させてしまう。
全角数字は全角文字として拒否すれば良いのに。
余談だが、JTBの申し込み画面は、電話番号は半角だけど、
住所番地の数字は全角を要求する。半角を認めない。
今まで全角数字を使ったことが無かったので、
全角数字の入力方法がわからず、JTBに電話したことがある。
webページ制作者の怠慢。
>>764 クレーマー乙www
PCの入力切替が判らないのは自分のスキルが低いだけだろうに
相手のせいにするとは、何処の韓国人だw
全角数字を入力できないって、相当基地外レベルだな。
>>764 見たいなのがこの問題の難しいところだよな。
電話番号とか郵便番号は数字として意味を持つ。
顧客データベースの画面の764レコードの
電話番号フィールドをクリックすると764の家に電話を
システムが掛けてくれるなんていうことができる。
郵便番号の場合、コレをキーとしてソートや集計を
すると顧客の住所順にしたり出来る。
ところが住所の番地は、印刷して郵便物の宛先に使ったり
画面でオペレーターが読んだりすることには使うが、
システム内に数字として保管される意義が薄い。
住所フィールドに漢字(2バイト)と数字(1バイト)が混在するのは
気持ち悪いから数字も2バイト文字というのは分からないでもない。
このレスは1バイト文字と2バイト文字を混在させて書いてみた。
アンカーは数字として意味を持つので1バイト。
本文は原則として2バイトで統一。
ただし“(”、“)”はMSPゴシックで表示されたときの間抜けさを回避する
ためだけの理由で1バイト。
メールやブログなどでも多用される引用の“> ”だが、2チャンネルでは
なんとなく2バイトの“> ”を使うのが流儀だと思ってた。
でもこのスレは“>”が多いね。最近はそうなのかな。
>>766 >住所フィールドに漢字(2バイト)と数字(1バイト)が混在するのは
>気持ち悪いから数字も2バイト文字というのは分からないでもない。
気持ち悪いとかそういう話じゃ無いだろ。セキュリティの問題。
文章やコメントで半角に拘る奴って、「半角で書く俺カックイイ」と思ってるだけで
客観的、普遍的に通る理屈じゃないのに、声だけはデカくてクレーマーでしかない。
>764
>「世の中全角でOKやんけ」という意識を定着させてしまう。
この辺が理解できないのだけれど、なぜ2chで全角数値を使っちゃだめなのか?
英語圏の人が読めない?→そもそも日本語読めないなら意味ないのでは
全角文字列も変数名として扱える処理系において・・・→人が読むだけなので問題ないかと
コピーして張り付ける時に・・・→(757)2chの書き込みをCADやExcelにこぴぺすんの?ww
それと住所入力は最近全角が多いような。混在するよりは限定した方が検索もしやすいし
ttp://itpro.nikkeibp.co.jp/article/NCD/20140212/536175/ こんな例もある
>>768 クレーマーの理屈を理解できるなら世話無いな
そもそも、コンピュータなんて、人間が楽をする為の物なのに
数字を意図して作られてるフォントが数字として認識されるのが問題と考える基地外だからな。
printf()を使ったのですが、処理にすごく時間がかかります。 特に %f の表示がかかるのですが、 別に少数点計算させている訳ではないのに、 こんなに遅くなるものでしょうか?
なぜ%fにしたのか気になる
%fが浮動小数点の演算だよ
IEとか普通の環境で見たら全角と半角の区別は判然としないと思うが。 俺は必要なときは等幅フォントのテキストエディタにコピペして確認てるよ。 全角で騒ぐやつってどんな環境で2ちゃんをやってるんだろうといつも 不思議に思ってるんだが。余程特殊な目を持ってるのかな。
774 :
710 :2014/05/06(火) 23:04:07.26 ID:mRmwjjEE
全角半角論の原因が来ましたよ。 MPLABでの2バイト文字は蹴られる理由になりますね。#pragma JISってやると良いって検索では出ますが 効果はどうなんでしょ・・・? それにしても、どう調教しても、Windows8.1のIMEが全角英数字を入力したがる。 設定で「常に半角に固定」しているのに、いちいち変換めんどくせ。 そんな話より、教えていただいた方に再度お礼。 〉724 とりあえずやってみます。1602側のデータシート完全に理解してライブラリ書かなきゃ できないのかとため息ついておりました。 「ちなみに、SC1602で探すよりHD44780で探す方がいいサンプルが出てくる。」 この文章見つけただけでも十分価値有ります。 Cの構文すらおぼつかない今の状態だと、動作の報告は結構後になりそうですが、 〉726 1. PICマイコンのデータシートのレジスタ名称が、そのまま使える。 2. ウィザードを使ってプロジェクトを作成すれば、デバイス毎のヘッダは不要 3. intは16bit この3行の文だけで随分楽になりました。 データーシートさえ見ておけば設定したい項目の答えが出ることになりますものね。 >728 #pragma config CP0=OFF,CPD=OFF,PWRT=ON,BOREN=ON,WDTEN=OFF, こんな感じならOKみたいですね。__configでやると蹴られますが。
>>774 わざわざ、お礼ありがとう。
>この3行の文だけで随分楽になりました。
でしょう?
僕も最初全然わからなくて、あちこちを見て回りましたが、
みなさん疑問には思わないみたいで、特に記述を見つけられませんでした。
特に、レジスタの名称がそのまま使えるのだと気づいたときは、
飛び上がって喜びました。
しかも、束でも、バラでも指定でき、構造体のxxx.xxx.b0とかやらなくていいのは
助かりました。
ただ、最近の(?)PICだと、出力用のレジスタと、入力用のレジスタが、
別の名前になっていて、かつ、構造体のxxx.xxという記述なので、タイプが長くて面倒です。
すかさず、#defineで、全bitの機銃を俺様仕様にしましたが。
組み込み向けCコンパイラを使う時はまず真っ先にレジスタへのアクセス方法を確認しないかい?
PICならそうだね
テス
>779 ID変更お疲れ様です!
てすてす
>781 アホか
picを使った製品の作製ってやってくれる業者はいらっしゃるのでしょうか いらっしゃるとしてどうやって探せばいいのでしょうか
>>783 普通の業者に見積もり取れば良いと思うよ。
その際に期間と数、PICを使うことを明記してあとは1週間ぐらい返事を待つだけ。
素人お断りなら反応もないだろうけど、1社だけじゃなくて数十社出したら1つぐらいは返事してくれるんじゃね?
>>784 ありがとうございます。ここはPICのスレですのでPICでとお尋ねしたのですが
AVRでもあれでいいの?でもいいんですが。
その道の業者ってどういう名称で探せばいいのでしょうか?
基板製作業?回路製作業?マイコンプログラム製作業?
どれも違うような気がします。
質問ばかりですいません
>>785 何を作りたい?
基本的には自分で作るのが一番良い。
>>785 縛りがあればそれで話を進めれば良いし、なければ相手にぼったくられる覚悟で相手が得意なICを選ばせればいい。
「組み込み 設計開発」辺りでググレば行けるんじゃないかな?
Webサイトを持ってるところはその辺の文言を載せてるみたい。
(公的な区分けでの業種って言われたら製造業しかないかと、ただめちゃくちゃ広い意味になるけど)
実は会社で使っている簡単なアナログ計測記録装置を何年か前に作ったのですが 実態はアナログのセンサーと市販のアナログ記録計とオペアンプとボリュームによる レンジ調整とレンジを切り替えるスイッチとリレーの固まりでした。 センサーがデジタルになってしまって表示された数値と比例するDC電圧を出力する 機能をつけてもらっていたのですが、そのオプションもなくなってしまいました。 エクセルだと今はeasycom.sysも必要がなく純正のコントロールが使えてらくなのですが 現場がPCを使いたくない、今まで通りのペンレコーダによる紙出力でやってくれ ということで困りはてております。シリアル出力されたPCでも読めるデジタルの データをDAコンバータ等を使って結果としてデジタル表示に比例したDC電圧出力 に変換できるものでしょうか。PICに関する当方のレベルはアナログと同じく 非常に低いです。
>>788 出来る。条件によっては8ピンPICで十分いける。
あともう一つは病院の運動療法か何かで使うのらしいですが、 手の届く範囲にLEDによる点光源を用意しランダムに一つずつ点灯させます。 点灯したところの真上に手のひらを移動させてセンサーでそれを感知すれば 次の場所がランダムに点灯します。その場所に手をかざしてLEDを消し 次の場所がランダムに点灯するようにします。LEDとセンサーを十カ所くらい 用意しそのスピードを何らかの形で点数化し表示します。両手で別々に やることも考えているとのことです。できる人を探してみます、とは 言ったものの大学の電子工学科に電話しまくっても相手にもしてもらえません。 やろうと思えばできる人がいるものでしょうか。特許関係もクリアにするには どうしたらいいものでしょうか。
>>787 ありがとうございました。教えていただいたとおりに業者を探してみます。
ぼったくり以上にできないことをできると言われても困ると思っていました
が、動いているうちに信頼できる業者と知り合えるかもしれませんね
>>789 それがわかっただけでも大助かりです。なんとか業者を探してみることにします。
感謝します。
>特許関係もクリアにするにはどうしたらいいものでしょうか。 そりゃあ、ちゃんと調査するしかない。特許庁のサイトでも行って検索してみたらいい。 ただ、そういうものって「作ることはできる」としても1点もので しかも既存のものの流用がきかなくて1から設計ってことになるから 仕事としてまともに見積もったら結構かかってしまうと思うわ。
今度赤外線リモコン作ろうとしてるんですが、 38kHz, デュティ比1/3の信号となってますが、 デュティ比が1/2、2/3、にすると強力になるのか実験してみたかたおられますか?
理論上は出力が上がるものの、受信端では過変調でデータ化けしそう。
電気初心者ですが教えてください。 ひと組のI2C通信で、3つのA/Dコンバータを制御しようと思います。 A/Dコンバータの区別は、ICの足のH,L接続でアドレスを決める方法です。 I2Cの2本の通信線は、オープンコレクタ(オープンドレイン)なので、プルアップ抵抗が必要だと思います。 そこで質問です。 1. 3個のADの配線は、どのようにするべきでしょうか? ・スター結線 ・芋づる式の結線 両端に終端抵抗を付ければ、芋づる式かなぁと思います。 2. プルアップ抵抗には、何kΩの抵抗を使えば良いでしょうか? 小さいとPICの負荷になるし、ノイズも出ると思います。 大きすぎると、回線のストレーで電圧がHになるのに時間がかかりそうです。 「ストレーCとの時定数 << 1bit時間」に注意します。 感覚的には、4.7kくらいだと考えていますが、どうでしょうか? 3. その抵抗は、どこに付けるべきでしょうか? +マークが抵抗を付ける点です。 1)マイコン---+---------------------------------AD1----AD2----AD3 2)マイコン-------------------------------------AD1----AD2---+-AD3 3)マイコン---+------------------------------+--AD1--+-AD2---+-AD3 僕の考えでは、回線を均等にインピーダンスを下げた方が良いと思うので、3)のようにして、 それぞれの抵抗を、15kくらいにしたらどうか、と思っています。 よろしくお願いします。
>>797 I2Cの規格では1kじゃなかったかな 大きすぎるとプルする意味が
データシートに内科医
配線の太さとそれぞれの距離&通信速度カモン
>>798 ありがとうございます。
パターンの太さは、0.2くらいでしょうか?
距離は、60mm前後だと思います。
>I2Cの規格では1kじゃなかったかな
あ、やっぱり1kですか。4カ所でPull-UPすれば、各4.7kでいいですね。
速度は速くないです。100kHz前後でしょうか。
100kHz=10usなので、半分の5usで1bit。t=CRでC=5us/1k=5000pF以下というところでしょうか。
SCLに関しては、マイコンが駆動するので、終端はA/D ICの近くだけで良いと思いますが、
SDAは、両者ともにLowになりますので、両端で終端がいいのかなと考えています。
>>800 ありがとうございます。データシート読んでみます。
変な質問をしてすみませんでした。
私がいけなかったです。
すみませんでした
802 :
798 :2014/05/11(日) 21:26:58.48 ID:u0NvJnRB
>>799 多くても1ヶ所でいいと思うよパターン1か2で
ただ100kbpsなら自分なら1kじゃなく4.7k使うと思うけど
必須じゃないからパターン空けといて動かなければ入れる程度で
>>800 また初心者が逃げちゃったじゃねーか
スレタイ読め
803 :
774ワット発電中さん :2014/05/11(日) 21:59:42.54 ID:x0DZqyG6
>>802 愛の鞭だよ、この程度で逃げ出すようじゃ先は無い。
俺なんか初心者の時には、職場の先輩から愛の鞭どころか
愛の蝋燭と愛の縄までいただいちゃったぞw
おかげで今じゃ自他共に許さない一流エンジニアだww
804 :
774ワット発電中さん :2014/05/11(日) 22:05:26.35 ID:x0DZqyG6
ま、冗談はともかく、定数を決めるときは人にその理由を正しく明確に説明できないとダメだよね。
ゆるさないのかw
節子それエンジニアとちゃう、ただのサディストやっっっ!>共に許さない
>自他共に許さない
自他共に認める + 他の追随を許さない の略なのかな。その強引さには痺れないし憧れない。
>>803 おまえがいるからPICスレ荒れるんだよ。説教じじいはあっちいけ、シッシッ。
>809 火に油注いで遊ぶのはやめてくだちい
>この程度で逃げ出すようじゃ先は無い こういう言い回しが この人の個性なんだな つまらん個性だが
芽吹かないのはたしか
>>803 褒めて育てるのだとか言って、おだてられて育ってきているひ弱な
世代は叱られることに耐性が無いから、そういう「ヲトナの理屈」
は通用しないよ。
昔のTVドラマによくいた「過保護ママ」みたいな言い方しないと
駄目だよ。
是正を促しても余計な軋轢を生じたとするならば、 無駄に人前でなじらないだとか、話の着地点をちゃんと設計して 理路整然と批判するとか、罪を憎んで人を憎まず、みたいな 叱る側の態度やスキルを問うべき事柄であって、過保護ママが正しい対策とは思わないけれども。 むしろ、叱られることに耐性があるってのも考えようによっちゃ問題だず・・・
文面で同じ人間だとわかるから、寂しい人だなと思ってスルーしとけばいい。
>>802 は初心者にいい加減なことを教えておいて初心者に優しくしてる
つもりなのか
会社組織なら何らかの生産が目的だから状況によって部下や同僚に打撃を与えない ようにとか、逆に厳しく接しなきゃダメとかある程度答えが集約されるでしょうけど 表現上のスタイルとしての露悪が基準の2ちゃんでは、尋ねる方もその辺を見越して、 知りたいことがわかったらそれ以外の付加的要素は無視してお礼を言うしかないんじゃ? 自分は初心者ですが「おまえは知ったかぶりの上にものを知らない馬鹿だ」と言われたとして それが事実だと判明した場合は反省し精進を決意するし、そうではない場合罵声を浴びせた側の 不利益でしかなく放置するしかないと。他者による毀誉褒貶とそれに対する自分の感情的反応は あまり意味がなく正確な自己評価に到達するには大変な努力と時間が必要と言うだけの話かもしれません
3行でよろ
821 :
774ワット発電中さん :2014/05/13(火) 16:02:51.11 ID:wn3NkaxL
>818 こんなスレにこういう常識人もいるのかと少し安心した。 今までの書き込みで考えどころを抜き出してみた。○Xの判断は各自で。 >800 −最小値は最もドライブ能力の低いデバイスで決まる。 −最大値はスピードとバスの静電容量で決まる。 >802 −多くても1ヶ所でいいと思うよパターン1か2で −ただ100kbpsなら自分なら1kじゃなく4.7k使うと思うけど ー必須じゃないからパターン空けといて動かなければ入れる程度で >804 −定数を決めるときは人にその理由を正しく明確に説明できないとダメだよね。
822 :
798 802 :2014/05/13(火) 20:01:38.78 ID:/ienbzuC
>>821 ごめんよ 5Vばっか使ってるもんだからついその気で書いてしまった。
単一電源とは書いてなかった(;゚ Д゚)
調子こいてたらダメだなぁ
>>802 は忘れてくりぇ
初心者ですが、質問いいですか? PICは、何年くらい前から販売されているのでしょうか? AVRより古いのでしょうか? 最初のPICは、PIC16C54で正しいでしょうか?
825 :
774ワット発電中さん :2014/05/14(水) 08:46:55.66 ID:fMuoyPOD
ごカンクンですか?
>823 ちなみにAVRは90Sシリーズが1996年、PICに比べて20年ほど後発になる。 Z80と同時期のPIC と intel Pentium2と同時期のAVR 8bitPIC(10F,12F,16F,18F)は、昔の設計を引き継いじゃってるから お世辞にもよく出来た命令体系とはいえないね。
>>826 ま、自称、直行性の高い良く出来た命令体系のCPUってのは、脳内では上手くいくけど、現実世界では
色々問題があって、結局売れないんだよな。
俺がPICを知ったきっかけはプレステのMODチップだなぁ。 8pinの12C508でこんなことまでできるのか!と感動して 秋月で開発環境揃えた。 最初に使いこなしたマイコンには情が移ってしまうせいか、 同時期にリリースされたAVRには見向きもしなかったな。
PICのアセンブラで苦労した後でAVRを使ってAVRに改宗したオレは PICを抹殺するべきだと感じたな
某動画の影響で最初からAVRで始めた俺だったが 秋月でのPICのラインナップの多さを見て何度も浮気しそうになった
形状、ピン数、消費電力の少なさなど、AVRの比では無いですね。 C言語でやる以上、内部アーキテクチャやアセンブラの直行線は関係ないですし。 高速で動いてくれれば、それで良いと思います。
アセンブラで苦労して、 そこから未だに抜け出せていないなんて、 いきなりCから始めた私には夢のような話です。
16bitのPICならアセンブラでもAVRのMEGAシリーよりもずっと良いけどね。 入手性も値段も充分に比較対象になると思うのだけれど、なぜかPICを けなす人には見えていない
アセンブラはバンクの切り替えがめんどくさいけど、赤外線リモコンなんか作るには超便利。 C言語でやるとオシロがないと無理。
835 :
774ワット発電中さん :2014/05/15(木) 11:53:06.02 ID:2gkPj6lc
>>829 私はPICの16F84のアセンブラでスタートしたが、
PICのプログラム書いていると思考の流れが中断されてイライラしてくる。
せっかく金かけて開発装置を揃えたのだからと頑張ったんだけど、
2本作ってとうとう諦めてAVRの90S2313に移った。
昔の話です。最近のPICは知らない。
なぜか24FやdsPICとはくらべられないんだよね、不思議だ
837 :
774ワット発電中さん :2014/05/15(木) 12:11:37.66 ID:2gkPj6lc
>>836 私がPICを始めた時そんなものは秋月に無かった。(と思う)
8ピンで電池で待機させてPWMでスピーカを駆動するとなると ATTiny45に置き換えられるPICはない
>>837 秋月にdsPICが登録されたのが2007年だから10年くらい前に始めたのかな?長いですね
それは嫌味だな。 万年℃素人って事だろwww
>>835 みたいな時の流れに乗りきれなかった連中が
大声でPICはあかんと自慢げに騒ぐから
現状が捻じ曲げられて伝わる
ま、別にPICでもAVRでもかまわんが
そこに止まってたきゃ黙って立ってろと言いたい
>>834 IDEのSimulatorでStopwatch使えばそこそこできる
そもそも計算だけでやっても動かなかったこと無いな
>>838 PICは無いかどうか知らんが
無いことを言いたいがために
8ピンという意味の無い制約を持ち出した意図は見える
アセンブラだけCだけで書くのならPICでもAVRでも一緒だけど、 混在させて直接RAMをアクセスするとAVRのほうが使いやすい気がする。
8bitPIC → Baseline , Midrange , Enhanced Midrange , PIC18 16bitPIC → PIC24 , dsPIC 32bitPIC → PIC32 今のPICのラインナップはこれだけあって、8→16→32bitで アーキテクチャも全然別物になってる。 単にPICと書いたら当然全て含まれるはずなのに、無知な奴は 自分の中だけの定義で語りだす。バカもいいところ 典型的なのが「PICよりAVRの方がずっと速い」とか 今、一番演算が速いPICはPIC32MZシリーズで 330DMIPS @200MHz AVRはAVR32のAT32UC3Aシリーズで 126DMIPS @84MHz だ。 比較したいなら見当違いな議論にならないように、両方共シリーズを 限定して書くべき。 8bitAVR → 90S , tiny , MEGA , XMEGA 32bitAVR → AVR32(AT32)
「PICよりAVRの方がずっと速い」って書いてる人がマイコンは何に使ってるのかの方が気になるかな。 LチカやLCD表示やAD入力表示やPWMしかやってないって事はないと思うけど。
>>842 ぜひ公開してほしい。できたらxc8でね。
848 :
774ワット発電中さん :2014/05/16(金) 07:18:16.84 ID:QaCef95g
昔のPICからAVRに乗り換えた時の話をしただけで <時の流れに乗れていない>とか<今のPICはすごいんだぞ>とかそんなにムキになるなんて 皆さんには何かよっぽどツライ事情があるのですね、御同情いたしますです、ハイw う〜ん、でも何で私の技術がたいした事ないって分っちゃったんだろ? 嫁にも内緒にしていたのにw
何かを必死に罵倒する人は自分のそういう面を他人に投影して いやな面から目を背け安心するための精神防御機構らしいよ。 自己投影とかで検索。
つまり、スレタイに関係ないCPUの方が性能が良いとかなんとか わざわざPICスレに書き込む様な事象の事かw
AVR教信者でPIC教信者を折伏しようとしているなら納得
しゃくぶくワロタw まぁ乗り換えたのもPICの話題ではあるけれども。 もう見限り、見捨てた石のスレッドをわざわざ覗きたくなる心境というのも ようワカランけれども。 好奇心旺盛なのは結構ですぐゎ、高い家電を買った後は、量販店のチラシは見ない方が 精神衛生上よろしいぞ!もっと安く売ってたとか解るとおちこむでな!(^д^)
kakakucom もあてにならないね
854 :
774ワット発電中さん :2014/05/16(金) 12:20:41.15 ID:QaCef95g
>>もう見限り、見捨てた石のスレッドをわざわざ覗きたくなる心境というのも ようワカランけれども。 確かに16F84は見捨てたけど、PICを見捨てたわけではありません。、 なのでアンテナは常に受信可能な状態にしておかないと。 それから念のために書いておくと、乗り換えた90S2313(tiny2313)にも不満はありましたよ。 それにしてもCPUは宗教では無いのに皆さんの心の狭さというか、余裕の無さというか、 アナフィラキシー・ショックぶりには少し驚いた。
>受信可能な状態に そういう事でしたか、言い過ぎて失礼しました><;
自分(P)が友人と自宅で話していたら、昔の知り合い(A)が勝手に入ってきて A「よっ久しぶり、友達きてるのか」 A「知ってる? こいつ(P)すごい馬鹿でさ」 P「いつの話してるんだよ。今、俺(P)は東大生なんだけど」 A「幼稚園の時の話だよ。今のお前(P)の事なんて知らねぇし」 P (なら勝手に家にも会話にも入ってくるなよ) A「挙句に、なんで自慢話聞かされなきゃなんねぇんだよ」 P「お前が勝手に来て、適当な話するから補足しただけだろ」 A「何 向きになってるんだよw」 友人…この人(A)は何をしたかったんだろ?
重要なのは、Aも使いこなせなかったから、Pをワッッチして、再起を狙ってるが い ま だ に ℃ 素 人 って事か。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 東大生だ! PIC初心者スレに東大生さまがおるぞ!! /⌒ヽ ∩ ^ω^) な ん だ | ⊂ノ | _⊃ し ⌒ /⌒ヽ (^ω^ ∩ 例 え 話 か t⊃ | ⊂_ | ⌒ J /⌒ヽ ( ) おっおっおっ / 、 つ (_(__ ⌒)ノ ∪ (ノ
東大理IIIぐらいだと、 どのマイコンでもスイスイとこなせるんだろうなぁ。 英語もバリバリだろうし
せっかくマイコンに興味を持ったのに道を踏み外して8bitPICのアセンブラに陥る不幸は防がねば
そういわずにお前も一緒にこの泥沼に浸ろうよぅ、 あっせんぶらぁはたのしいぞぉ〜 decfsz LIFE, 0
ねえ、まじレス希望なんだけど 現状でアセンブラのメリットは何?
>>847 Stopwatch使ってやってみたの?
それでうまくいかなかったソースをまず出してみなよ。
・動作を具体的に把握できる ・(ほかの石に)浮気をしにくくなる ・何で動かないんだよもしかしてコンパイラのバクじゃね? という不安やストレスとは無縁になるので自分のバカさ加減と 真摯に向き合いやすくなる(俺はアホだな、と比較的早く悟ることができる)
つまりMっ気が身につくと…
それは冗談ですが
>>834 の言うようなことはホント?
ホントならメリットですが、安いオシロ買えばいいなら
もうメリットでもないような
昔ならアセンブラしか選択肢がないことはあったけど 今なら次の2つかな CPUの能力を極限まで引き出す必要がある CPUがどうやって動いているのか興味がある タイミングが厳しいケースは いずれにしろお城でチェックしないといけないから Cとお城(ロジアナ)を用意が正解だと思う
Cのコンパイラの最適化よりも アセンブラの方が上ってことですか?
どのCPUでもアセンブラのほうが性能は上だけど書くのが激しく面倒
869 :
864 :2014/05/16(金) 20:13:39.39 ID:QhAnhsxY
>865 Cで組んだことないからわかんないあ(^p^) 変に凝ったことせずに単調な(不確定な分岐をしない)処理なら シミュレータのストップウォッチを使えば タイミング(パルス幅とか間隔とか)の確認は 実機をオシロで見なくても、PC単体だけで、ある程度はできる筈だお。 C環境でもコンパイルしてからシミュレータはせらしゃ いいんじゃないかと思うんだけど・・・なんで834の話になるのか (Cで組んだことない)おいらにゃわかりません><;
>>859 理IIIはしらないが、理情だとCPU作成(ってもxilinxあたり使うだけだが)演習あったりしたぞ。
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 東大卒だ! 初PICスレに東大卒さまがおるぞ!! /⌒ヽ ∩ ^ω^) な ん と | ⊂ノ | _⊃ し ⌒ /⌒ヽ (^ω^ ∩ ホ ン 物 か t⊃ | ⊂_ | ⌒ J /⌒ヽ ( ) おっおっおっ / 、 つ (_(__ ⌒)ノ ∪ (ノ
>>865 Cしか出来ない奴とアセンブラを使える奴との差は全体を見て、、正しいアルゴリズムでプログラムをかけるかどうか。
オシロで確認すれば確かにそのタイミングだろうけど、そんな行き当たりばったりのプログラムの仕方だと
いつ動かなくなってもおかしくないプログラムが出来上がる。
Cだとセンスが身につかない。所詮、言語仕様やプログラムのTAB、改行の入れ方に始終するだけの奴が多い。
オシロ持ってないヤツは、やめてしまったほうがいい。
チップが壊れていたりシミュレータが不完全だったら永遠に完成しないもんな
>>872 笑われたいのか?それとも笑わせたいのか?
どっちだ?
Cをやっと使ってる人は多いね
>>876 >やっと使ってる人
やっと使ってるって何?
>>872 Cしか出来ない人って正しいアルゴリズムで書けないの?
オシロで確認するのって行き当たりばったりなの?
アセンブラで無駄な労力費やしててセンスなんて身につくの?
>>878 >Cしか出来ない人って正しいアルゴリズムで書けないの?
うん
>>879 へえ、そうなんだ
その根拠を具体的に説明してよ
>>880 Cしか出来ない = 頭が不自由で考える能力が無い = アルゴリズムを考えられない
アセンブラだとアーキテクチャの知識が不可欠になるから。
昔はCのコンパイラははとても高くて、みんなアセンブラではじめたもんだ。 でも今ならCだね。楽だもの。
>>881 なるほど、やはり自己破綻したかw
>>882 アルゴリズムの話からアーキテクチャの話に変わったんですか
>>881 根拠も無く精神論を展開した果ては
大概こういう捨てせりふを吐いて消えてゆくよね
もうちょっとがんばって欲しかったのになあ
そうそう、この人偉そうなこと言う割にはいつもすぐ逃げるんだよね。
アセンブラしか使えない人のほうが、よほど頭が不自由だと思うけどな。 カーニハンもリッチーもトンプソンもそうなのか?。 ヴィルトあたりには罪悪だとか怒られそうだな。
前に、飲み会で部下のSEが 「やっぱりアセンブラっすよねー、Cじゃサイズがでかくなるし裏で何やってるかわかんないっすよー」 みたいな事言ってたのでアセンブラでできた超昔のシステム案件の修正をアサインしたら会社に来なくなった。 よくある話です。
>>885 精神論じゃなくて、馬鹿は馬鹿。℃素人は℃素人って話。
>>887 喫煙を咎められた基地外が、先に酒を規制しろよ!
とか逆切れしてるのと同じだなw
>>888 アセンブラとかCとか関係なく、会社のレベルが低くて仕様書もソースも糞だったんだろ。
. このスレは、初めてPICを使う初心者が、 わからないことを相談、解決してもらうスレです。 高度な話は、本ちゃんスレでお願いします。 僕のような初心者が質問しにくいです。宜しくお願いします。
891 :
774ワット発電中さん :2014/05/17(土) 11:01:35.02 ID:xXYJerJa
では初心者向けの分りやすい意見を。 <Cかアセンブラか>じゃなくて<Cもアセンブラも>だ。 俺の広い守備範囲である<深窓のウブな御令嬢も、キャバクラ勤めの百戦錬磨のオネーチャンも>みたいにだ。
余計にわからない。 中はダメ。 口はダメ。苦いから。 顔はダメ。
>>889 さすが汗厨。K&Rも、プログラム-アルゴリズムも知らないんだ。
>>889 Cは馬鹿で℃素人、アセンブラは利口で玄人だってんでしょ?
何の根拠も無い内容をほえるから「精神論」だなと思ったわけですよ。
いずれにしてもそれ以上のものは貴方からは出てこないでしょうね。
895 :
842,863 :2014/05/17(土) 14:12:52.76 ID:cItXvJ//
896 :
774ワット発電中さん :2014/05/17(土) 15:08:36.60 ID:eLlmlD4f
PICの板は定期的にCか汗ってテーマになるね。
スタックやフレームポインタのある16bitや32bitCPUと違ってかなり無茶な実装してるんだから 最低でも関数の呼び出し規約と呼び出し時のアセンブラコードを見てコンパイラとPICをいたわって欲しい
>>896 Base line なら、アセンブラしかないと思うが、
バンク切り替え必要な位のメモリー規模
になったら16F1***以上にした方が
良いしな。
使い分ければいいだけの話
効率とか関係なく、ベースラインでアセンブラ使って1サイクル縮めたりするのが楽しいので好き
18f2550を使っていまして、 5Vの電源を、チップに接続した瞬間 300mAの電流が流れ、レギュレーターが 発熱してしまうんですが、何が原因か、 わからない状態です。どなたかわかる方 いらっしゃいますでしょうか。
電源逆接続かショートしてないかしらべたほうがいいかも
原因究明力が無い人は、必要な情報がなんなのかわかってないから、質問が唐突だよね。
>>902 ありがとうございます。電源以外の
ショートも疑って調べてるのですが、
なかなか見つからなくて、何かヒントになるものはないかと、
質問させて頂きました。
電源ピン以外での、配線違いでこのような現象が起こりうる可能性もあるのでしょうか。
もしそうなら、電源ピン以外ピンも一つずつ外して確認する必要があると思っています。
ICソケットから抜いて PICレス状態で電源投入しても流れるん? 流れないならピンアサインの勘違いか、IOピンの入出力の設定を間違えたとかじゃねえの?
>>905 ありがとうございます。
確認してみます。
>>905 やだなぁ1ポートmax25mAでしょ?
設定で300mA流せる方法があるなら逆に教えて欲しいよ。
>907 VDDへ300mA流れるといってるだけで、I/O1本に300mA流れるとはかいていない(901) それにGNDへ繋がってるI/Oピンを(誤って)出力にしてHにすれば25mA以上軽く流れると思うが そもそも25mAってのはそこまでなら出力電圧(と動作)を保障すると言う意味で それ以上流れないわけではない。まあ壊れたり寿命が極端に縮んだりするかもしれないし 保障外の使い方だから動作しなくても文句言えない。
909 :
774ワット発電中さん :2014/05/18(日) 06:59:48.27 ID:ZBVuHnkP
AVRでならラッチアップで実験用電源の過電流保護回路(0.5Aだったかな?)を動作させた事がある。 小さなMCUでも流れるときは流れるし、触るとヤケドするときもある。
EPROMも光ったよなあ
ADコンバーターも穴ないけど光ったお
どういう設定で300mA流れるか、 肝心な説明は無いのね。
初心者向けスレですから、あまり突っ込まないであげましょう
>>913 初心者だから、突っ込んで聞かないと必要な情報が得られずに、折角質問したのに結果としては何も変わらない事になる。
本当に問題を解決するアドバイスを出すつもりなら、それなりに突っ込むだろ。
どうせ初心者の問題なんて、どうでも良いって考えなら、適当にあしらう。
>912 VOHvsIOHのグラフ見ると(25mA以上は無いから想像だけど) GND直結なら40mA程度は流れるでしょ。8bit全部間違えてれば x8で300mA程度流れても不思議じゃない。 TRISの設定間違ってるに1票
実験した回路図と現物写真うp
PICの出力ピンと内蔵プルアップを使ってON/OFFの判断をしています。 内蔵プルアップによって電圧が上がっている状態で、PICの出力ピンがONになった場合 PICの出力ピン < 内蔵プルアップ電圧の状態になることはありえるんでしょうか? こういう状況の場合、出力ピンの方が電圧が低いので逆流することになるんでしょうか? 今のところ、動いて入るのですがピンが今後壊れないか心配です。
>PICの出力ピン < 内蔵プルアップ電圧の状態になることはありえるんでしょうか? ありえる >こういう状況の場合、出力ピンの方が電圧が低いので逆流することになるんでしょうか? PICの出力ピンよりも出力負荷側へ流れれば問題ない
>917 I/Oが出力状態で内蔵プルアップが必要な理由が判らないが・・・ 使っているPICの型番が不明のため確実ではないが 例えば16F887のI/OピンのBLOCK DIAGRAM見ると 内蔵プルアップをONにするためには、WPUBやRBPUの他に TRISがHの必要がある。 つまり出力と内蔵プルアップは両立出来ず、I/Oを出力状態に したら内蔵プルアップはOFFになる。
説明不足ですみません。
>>919 16F193Xシリーズになります。
>>I/Oが出力状態で内蔵プルアップが必要な理由が判らないが・・・
本来スイッチがON/OFFになっているか判断するには
スイッチの片方 = GND、もう片方は内蔵プルアップの入力ピン
スイッチが押されたら内蔵プルアップの入力ピンがLOWになりスイッチが反応するかと思います。
このスイッチが計算機やキーボードに使われているマトリックス構造(6 × 5 = 30通り)になってまして
5をすべてGNDに繋ぐとどの状態の時に反応したのかわからなくなっていまいます。
内蔵プルアップの入力端子 => 6個接続
出力端子 => 5個接続
出力端子に OFF / ON / ON / ON / ON/
出力端子に ON / OFF / ON / ON / ON/
出力端子に ON / ON / OFF / ON / ON/
出力端子に ON / ON / ON / OFF / ON/
説明下手で申し訳ないです。
>>920 逆流して悪い理由は何もないと思うが。
それより出力端子をONにするやり方だと複数のスイッチを押したとき
出力ポート同士がショートして過大な電流が流れるぞ。
そのやり方ならTRISを制御してONにする代わりに入力にした方が良い。
>920 11個のI/Oの内、6個が入力で内蔵プルアップONでSWの状態読みで 5個が出力で、スキャンして1個だけ”L"にして列選択するということね。 内蔵プルアップは数十kΩ相当位あるし、Vddよりは低いわけだから 特に気にしなくても大丈夫でしょ。 気になるなら、列選択5個の内選択中の”L"出力以外は、入力モードに してしまえばいいのでは。
みなさんありがとうございます。 複数のスイッチを押したときの動作を考えてませんでした。 出力ピンでHIGHより、いっそ出力ピンを入力にすればよかったんですね。 出力/入力の切り替え 出力ON/出力OFF切替え 負担が大きいのはどちらになるんでしょうか。
もう少しキーマトリックスについて勉強してからの方がいいな
>923 >負担が大きいのはどちらになるんでしょうか。 処理速度的な事をいってるのかな? 16F193Xならどっちでも変わらないんじゃないか 8bit中の残り3bitを気にしなくていいなら PORTxへ書き込むか、出力は”L"固定でTRIS命令でTRISxへ書き込むかの違い まあ違っても2命令程度の差だろうし、毎秒100回読み込むとしても 2x100x5列=1000命令/sec 、 4MHzで動かしても1ms余計にかかるだけ≒0.1% こんな事気にしても意味が無いと思うが。>921で指摘されたショートの件が有る以上 >出力ON/出力OFF切替え の選択肢は無いでしょ。それとも各キーにダイオード入れるのかな
レギュレータの配線ミスに1票 センターがGNDのやつと端がGNDのやつとあってだね… …この前やらかしたの俺だ orz
927 :
774ワット発電中さん :2014/05/20(火) 00:29:26.68 ID:EKa1lrF7
こんばんは。PIC初心者です。 勉強していて不思議におもったのでどなたかご教授ください・・・ AC/DCアダプタにはセンタープラスとセンターマイナスの2種類の極性がありますが、 AC/DCアダプタを使用してるPIC電源回路で異なる極性でも同じ動作をする理由がわかりません。 全波整流と半波整流が関係してくるらしいのですがよくわからないんです・・・
ブリッジダイオードというのがあるんですお
>>927 >PIC電源回路
特定の回路を指しているのなら、第三者が理解できるような情報を出さないと判らないよ。
>>929 初めてのPICなんでしょ。しょうがないでそ。
>>925 ありがとうございます。
自分の思い込みで、入力出力の切り替えの方が負担がかかると思ってました。
入出力の切り替えで対応します。
初心者です。教えてください、 PIC16F88でRS232C通信を、115kbpsで行いたいと思います。 ピン数が少ないので、内蔵の発振器で動かそうと思いますが、まずいでしょうか? 発振周波数調整をして、現在普通に動いているのですが、 寒いときや暑いとき、電池が減ってきた時など、すぐにダメになってしまうでしょうか?
>>934 電池が多少減っても内部クロックは安定しているよ。
でも16F88はもともと下限電圧が4Vと高いほうだから、電池で駆動するにはきびしいんじゃないかな。
別のPICにしたほうがいいね。
936 :
774ワット発電中さん :2014/05/20(火) 16:50:49.09 ID:/yNDPOVY
>>935 ありがとうございます。
電池の影響は少なそうで安心しました。
低電圧のPICも考えましたが、安定化に3端子レギュレーターだと電池の落ちがもったいないので、
リニアテクノロジーのICで電池2本から5Vに少圧する回路を作りました。
そうすることで、常に5V一定になるので電池電圧の低下を気にしなくても良いので、調子いいと思ってます。
電圧低下のテストは、3端子レギュレーターを買ってくれば良いので、まだいいのですが、
温度のテストはなかなかできませんね。
熱いのは夏の炎天下で40℃くらいかなと思います。ダッシュボードの上だともっと熱くなるような気がします。
それは回路をドライヤーであぶってテストする予定です。
寒いほうは冷蔵庫ですが、冷凍室でもマイナス10℃程度しか行かないので、もう少し行きたいと思っています。
スーパーのレジ横の細かい氷を洗面器に入れて、何度になるかはかってみます。基板をビニール袋に入れて、テストしたいです。
ありがとうございました。
>>936 クロックのドリフト以前に、推奨動作条件を超えてるんじゃないのか?
>936 USARTで10bit中の半bitずれたらNGだろうから、相手のクロックから 5%ずれたら確実にNG。2%かせめて3%以内には抑えたい所。 内蔵クロックはOSCTUNEは115.2kbps用に調整済みってことかな 8→7.32MHz位? 16F88のデータシートからINTOSCのバラツキは -10〜+85℃(VDD=4.5〜5.5V)で±5% -40〜+85℃(VDD=4.5〜5.5V)で±10% だいぶ厳しそう。 EnhancedMidrangeの16F1827だと 0〜+60℃(VDD=2.5〜5.5V)で±2% 0〜+85℃(VDD=2.5〜5.5V)で±3% 0℃未満(-40℃以上)と(VDD2.5V未満(1.8V以上)は±5% 0℃以上ならこちらに変えるのもありかも、バラツキ5%に なっちゃうけど1.8V(乾電池2本)まで動くし データ取りに凄く手間かかるけど、このPICは温度計も内蔵して いるから温度に合わせてクロックを補正とかも出来ないことは無い
>>936 知っていると思うけど、氷で冷やしても、0度〜マイナス1桁程度しか冷やせないよ。
温度を気にするなら、なんとか水晶の使用を考えた方がいいと思う。
発振子だと2本使うけど、発振器なら1本で済む。もう1本がI/Oに使えるなら
それを振り替える。
I/O本数を増やすテクニック。思いつくまま。
・74HC595や74HC166などのSERDESを使用する。
・74HC573などのラッチを使って出力本数を増やす。
・n:1なら、74HC138を使う。
・PWM+LPFで電圧を作り、コンパレータで3段階とかを判定する。
・LCD使っているなら、LCDの非アクセス中は、E信号以外は入出力に使える。
・もう1つPICを使って、シリアルで通信してI/O増。
・LED2つで2ポート使っているなら、反対向きLEDの並列で、1ポートでon/offできる。
・RESET端子をIとして使う。
・
眠い。寝る
外付けでI/O本数を増やすとワンチップの意味ない気がする バリエーションが豊富なPICなんだからPIN数で選び直すのが筋
PICのピン数って、こんな感じかな? 6 pin 8 pin 16 pin 18 pin 24 pin 40 pin 続く
最近44Pinと100PinのPICしか使ってないや。
>>939 >マイナス一桁
そう不精をしないで、
岩塩を砕いた粉の塩を冷凍庫で冷やしておいて
かき氷にした氷と混ぜろ混ぜろ!
冷蔵庫の氷(サイコロのような四角いやつ)に、食塩を「まぶす」と、 どのくらいの温度になりますかね。 温度測定には、ステンレス棒に入った熱電対があります。
>>945 夏休み自由研究の種本だかで
−22℃くらいと読んだ気がする
が
本格的寒剤だったけな?
>942 6 pin 但しSOT-23のみ 8 pin 14pin 18 pin 20 pin 28 pin 40 pin
しかし 6pinって凄いよね。 VCC, GND引いたら、4本しかない。 ・I2Cで受けて、I2Cで出力か、 ・I2Cで受けて、RS232で出力か、
秋月で8ピンと6ピンのセットが売ってるが、 写真みるとカルガモの親子にしか見えんな。
目が腐ってるんだろ
PIC10Fも頑張れば色々できて楽しい。 入力は単体で9キー、ダイオード使うと28キーまでいけるし、 出力はCharlieplexingでLED6個制御したり、7セグ数字表示したり。
8pin PICに、スイッチを6個付けたことがある。アホな俺
複数SWを1ピンで取り込む最良の方法は、直列抵抗をSWで短絡して、 A/Dコンバーターで取り込む方法。 10bit A/D = 1024 = 5Vで 5mV/LSBだから、0.5Vの判別は可能だから、 SW 10個くらいなら行けると思う。
かって、車のハンドルのスイッチインターフェースがそれだったな。
>>953 普通にやるよ。いろんな波形を作る冶具として使ってる。
ボタン一発でl好きな波形が出せて便利。
やぐ?
>>957 間違えた。指摘ありがとう。
× 冶具
○ 治具
960 :
958 :2014/05/22(木) 11:34:35.56 ID:O9TBETX4
>>959 古い文献には959の主張も書かれていて、俺も昔は冶具だったけど、最近は面倒なので気が付いたときは治具にしてる。
今使ってるノートは解像度が高くて、治に限らず違いがよくわからないので、結構誤字が多い。
前に各スイッチごとに値の違う抵抗気を並列接続しておいて、 スイッチOFF時に抵抗値がかかりっぱなしになる状態にしたものを シリアルにつないで似たようなことしたことがある。 抵抗の値さえバッチシ決まればけっこううまくいくよね
>抵抗の値さえバッチシ決まればけっこううまくいくよね そうそう。 うまい抵抗値を選ぶのがポイントね。 定電流流してやると、精度が格段にupする。 問題は、複数SW押しの防止または検出。 抵抗を上手に組み合わせると、複数押しも出来た気がする
>>959 >にゃ〜(=^ェ^=)
は何を汲み取ってるの?
猫の気持ちか?
>964
そのレスはね、下書き時点では「おもうなぁ。」って書いてあったんだけど
なんか嫌味ったらしい態度だと解釈されたり、
俺が相手を侮蔑しているかのような受け取り方を
されかねない懸念をちと覚えたため、それくらいならむしろ
こいつ(=
>>959 )はバカだろwwと思われるリスクをうけいれて
表現のなかの刺さりそうなトゲを除去したんだお(^p^)
966 :
964 :2014/05/22(木) 20:31:03.32 ID:b3z1yWbV
>>965 あ、まじレスどうもです。
いや、せっかく読める内容なのに、語尾がなあと思ったもんでつい。
967 :
774ワット発電中さん :2014/05/23(金) 13:15:11.76 ID:U9t683Ct
>>表現のなかの刺さりそうなトゲを除去したんだお(^p^) 書いた本人のアイデンティを表現するためのものだと思っていたので、 今まで私は末尾に「にゃ〜」や「お」が付いているレスは見なかった、存在しなかったことにしていた。 トゲ除去という理由で付けているなら、できれば他の表現方法を希望します。 (どうしようと基本的に965の勝手です)
なぁにむしろ耐性が付くにゃ〜(=^ェ^=)だお(^p^)
俺だけかもしれないが、 「にゃ〜」とか「お」を付けてる書込を見ると、イラっと来る。 それを通り越して、かわいそうな気もする。
970 :
965 :2014/05/23(金) 15:28:48.53 ID:IZsdb9yP
流石は俺様!。「こいつ(=
>>959 )はバカだろwwと思われるリスク」に
ついての認識も的確だったようですな・・・(^ω^;)
語尾お君。 賢さを感じない。
文句しか言わないお前よりは賢いと思うぞ
オレ?
>>969 にょ や りゅん でなかった事を祝おう
うぜぇ・・・
976 :
774ワット発電中さん :2014/05/23(金) 22:37:53.54 ID:6mVYIyZ3
. 語尾に お 付けるの、やめてくれませんか? 読んでいて腹立たしいし、君がバカに見えるよ。
オレ?
牛乳を飲もお!
しょうが ヽ 丶 \ ない \ ヽ ヽ ヽ (´・ω・`) / / ヽ \ ヽ ヽ / | ヽ \ \ ヽ ゝ (にゃあ) (´・ω・`) ノ 丿 \ に \ ヾ (´・ω・`) ノ | | 丶 \ \ (にゃあ) / \ ゃ \/| (にゃあ) ノ | | \ あ | ↑ /\ \ | ( ↑ / \ / | ) ( / うーん。 \  ̄ ̄ ̄ ̄ ̄ ( ) /_ \ ) ( あの、すみません。お願いが。  ̄ | や っ た| ̄ ノ⌒ ̄⌒γ⌒ ̄⌒ゝ /何/ | つ て ま| ノ い い よ 。 ゝ /か」/ | な っ| 丿 ゞ _/な∠ | の て| 丿/|/|/|/|\|\|\|\|\ゝ .\ / | か る| │ V ――| な ・|――――――――――┼――――――――――――――――― / ? ・ヽ 巛巛巛巛巛巛巛巛見抜き?巛巛巛巛巛巛巛巛見抜きさせてもらえないでしょうか・・