【ICD3も】PIC専用のスレPart21【出たよ】
1 :
774ワット発電中さん :
2009/04/30(木) 23:55:49 ID:M8WREIZY
2 :
774ワット発電中さん :2009/04/30(木) 23:56:44 ID:M8WREIZY
3 :
774ワット発電中さん :2009/04/30(木) 23:58:11 ID:M8WREIZY
うひゃ、タイトルのpart番号間違えてるわ・・・削除依頼してくるorz
4 :
996 :2009/05/01(金) 17:40:05 ID:wnkiEpmH
うっ、おねがいします、、
picの割り込みで優先順位がない割り込みの場合、 一つの割り込み処理中に、再度割り込みが発生した場合、 どうなるのですか?
めんどくさいからそのままでいいじゃん。
スレ削除依頼出されてるけど・・・どうなるのかな?
>>5 割込み中は割込禁止だから
あえて割込許可しなけりゃ
再度割込みは発生しないよ。
9 :
996 :2009/05/01(金) 20:52:48 ID:wnkiEpmH
PICが電源投入時動かない件、なんとか回避できました。 秋月でかったLM2940CT-5.0の3端子レギュレータのキットですが、 入力電圧が5Vのとき、出力が3.2V、9Vのとき6.5Vの電圧がきていました。 ※レギュレータのINとOutで計測 標準ドロップアウト電圧0.5Vってあるんですけど、結構落ちてますね。。 そこで、無謀?にも5Vのアダプタから直接電源を取ってみたところ 動作を確認できました。 根本原因はわからずですが・・・ また、入力が12V〜16Vのような車のバッテリーを想定した場合、どんな レギュレータがお勧めでしょうか。
参考資料(個人的見解があるので参考までに) 秋月のPIC16シリーズDIP品限定ピン数別評価 40ピンは◎16F887 \250 28ピンは◎16F886 \230で決まり ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHとフルサポート 20ピンはF690のバリエーションモデルが多いけど価格差が小さいからF690でOKかな ◎16F690 \210 ADC有,eCCP有,eUSART有,SSP有,4Kw,内蔵31K-8MHzとバッチリ ○16F689 \180 F690からeCCP機能削られた ×16F687 \180 さらにF689を2Kwと半分に △16F677 \170 さらにF687からeUSARTも削られた ○16F685 \190 F690からSSP&eUSART機能が削られた ◎16F785 \180 ADC有,CCP有,2Kw,内蔵31K-8MHz,OPアンプ搭載ってのはいいね 18ピンは種類は多いけど選択の幅は狭い。F88かいっそ20ピンにするとか ×16F84A \300 機能無,1Kw,いまさら不要 △16F648A \200 CCP有,USART有,4Kw,内蔵4MHz,3.3Vでも動くよ ×16F628A \200 F648Aの2Kw版,16F648に移行 △16F627A \160 F648Aの1Kw版,低コストで勝負 ◎16F88 \230 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood ○16F87 \200 F88にADC無いだけ ×16F819 \250 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,F88に及ばない ○16F818 \200 F819の1Kw版,F87と比べるとROMとUSARTで負け,ADCで勝ち ◎16F716 \110 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い 14ピンはF688だね ◎16F688 \160 ADC有,eUSART有,4Kw,内蔵31K-8MHz,機能的にもマアマア △16F676 \140 ADC有,1Kw,内蔵4MHz,F675の14ピン版か・・・ 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い ◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 ○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 △12F629 \100 675のADC無(機能無しってこと) △12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 ◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し ×12F609 \100 F615からADC,eCCP機能省かれてる (参考)機能無,EEPROM無,12bitコア プログラム組む上で制限多し △16F57 \100 28ピン,2Kw,内蔵CLK無,安くて多くのI/O欲しいなら △16F54 \60 18ピン,0.5Kw,内蔵CLK無,安いI/O欲しいなら △10F200 \70 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用
VistaでMPLAB IDEが起動しない
コンピュータの管理者であるにもかかわらず、インストールまたは実行しようとしているプログラムから、管理者権限が必要というメッセージが表示されます。
インストールしようとしている場合、プログラムのインストール アイコンを右クリックし、[管理者として実行] をクリックします。 管理者のパスワードまたは確認を求められた場合は、パスワードを入力するか、確認情報を提供します。
プログラムがインストールされるが動作しない場合、プログラムのアイコンを右クリックし、[プロパティ] をクリックします。[互換性] タブをクリックし、[管理者としてこのプログラムを実行する] チェック ボックスをオンにして、プログラムの実行を試します。
http://science6.2ch.net/test/read.cgi/denki/1228312753/990
7805
>>14 (元々は
>>6 )
×16F84A \300 機能無,1Kw,いまさら不要
→教育用として今でも大量に使用されている
レーティングは△16F84A
test
テンプレ乙です
誤爆すまん
>>9 レギュレータはそんな入出力電圧ありえない。どこか間違ってるか壊れてる。
標準ドロップアウトの意味も理解できてない気がする。
1A出力で使用するなら5.5V入力で安定するよ、って意味。
おすすめレギュレータは最低でも出力電流がわからないと答えられない。
根本原因はレギュレータの取り扱いミスだと思う
そもそも、電圧、極性はテスターで確認済みだったのでは?
レギュレータが発振してて、DMMが正確な値を出してないんじゃね? LDOはちゃんとパスコン付けないと発振すること多いぜ。
24 :
9 :2009/05/01(金) 21:51:58 ID:wnkiEpmH
>22 ありがとうございます。 確かに理解できていないです。 ということは、利用する電流を求め、そのレンジに収まるような レギュレータを選定するという理解でよいんでしょうか。 電圧は測定していたのですが、動作する範囲かなと勝手に思いこんでいました。
>>9 5Vのとき3.2Vは性能の悪いレギュレータならありえなくもないけど、
9Vのとき6.5Vってのはありえん。
普通のレギュレータは定格入力電圧内なら電圧変動は5%以下。
キットなら組み立てミスだろうか。
で、BOR有効にしていれば3.2Vだったら起動しないと思う。
ACアダプタの出力にはリップル分があるから5Vを入力したら 3.2Vになるのは多分そんなもんだ。 そもそも5V出力の レギュレータに5Vを入力してる時点で、なんか勘違いを している気がする。 9Vを入れて6.5Vが出るのは明らかにおかしいが、既に上記の ような勘違いをしている所から、根本的な間違いを犯している 臭いがする。
27 :
9 :2009/05/01(金) 22:06:07 ID:wnkiEpmH
BOR、WDTなどもON/OFFでためしてみましたが、だめでした。 一応添付の紙を見ると、正面左からIN/OUT/GNDってなっています。 耳の部分はGNDしてないです。 もう何セットか買ってあるので、そっちも組み立てて違いを見ようかと思います。 レギュレータって入力電圧を一定にして出力してくれるもんだと思っていたんですけど、 そういうもんじゃないんですね。 勉強になりました。
LM2940CTならTO-220パッケージで正面左から、IN、GND、OUTだと思うが
>27,28 ごめんちゃい、おっしゃるとおりIN,GND,OUTの間違いです。 念のため再度確認したところやっぱりIN,GND,OUTでよさげでした。 なんかおかしな配線とかしてダイオードこわしちゃったんですかね、、、
>レギュレータって入力電圧を一定にして出力してくれるもんだと思っていたんですけど、 >そういうもんじゃないんですね。 レギュレータは正しく使えばほぼ一定にして出力してくれるよ 正しく使わなければ「そういうもんじゃない」 自分のミスを棚に上げて部品のせいにするのは良くない。 もし部品のせいだという事例があったとしてもそういう考え方をする癖は無くしたほうがいい。
「秋月でかったLM2940CT-5.0」ってことはセラコンと電解コンが1個づつ 付いてると思うが、セラコンはIN側、電解コンはOUT側に付けてるよな? 同じ秋月のLM4805Sではサービスコンデンサは2個だが、付属資料には 3つコンデンサが書いてあるので、初心者がOUT側に2つ付けてIN側に 付けない、みたいに作っちゃわないかいつも心配になるw レギュレータは入力電圧を一定にするという理解は合ってるが、あくまで 下げる方向だけだ。上げることはできんぞ。 5VのACアダプタはリップルで5V以下に下がってたりするから、それを 持ち上げたりはできないの。
PICKIT2を購入して手始めにPIC18F2320でA-0,A-1S/W入力、C-0,C-1LED出力の回路で S/WOFFの時2個のLED点滅S/WONの時1個点灯、もう一個点滅のプログラムをC言語で作り 書き込み成功して上手く動作したのですが、PICKIT2を外すと動作しません 外部電源が悪いのかと思いPICKIT2からの電源で試しても同じです 外部電源(7805-1Aタイプを使ってます)まわりの回路を外して試しても同じです PICKIT2をつないで上手く動いている時にPICKIT2ProgrammerのVDDのチェックを一度外し、 もう一度VDDのチェックを入れても動かなくなります 動かない時にTools-CheckCommunicationを実行すると動き出します WDTは使わないになっています どこが悪くてPICKIT2なし外部電源で動かないのか教えていただけないでしょうか? MPLAB v8.3 MPLAB C18v3.30 PICKIT2Programmer APP v2.61 DeviceVersion1.61 OS Firmware Version2.32 を使っています
まさかとは思うが、ちゃんとリリース用のバイナリ作って書き込んでるよね
>>34 MCLRのプルアップはしてる?
クロックは何使ってる?
34です ビルドコンフィグはリリース用になっています MCLRは10Kオーム抵抗でプルアップしています クロックはセラロック10MHz使っています PICを新品に入れ替えてやり直したけどだめでした
メニューの Debugger のほうで書き込んだ状態だとPICkit2無しでは動かないかも。 メニューの Programmer のほうで書き込むべし。
40 :
元を書いた本人 :2009/05/02(土) 01:25:39 ID:m0sfDMhW
秋月のPIC16シリーズDIP品限定ピン数別評価(先頭のvは値下げ,-は維持)'09/05更新版 v40ピンは◎16F887 \200 値下げでさらに盤石 v28ピンは◎16F886 \190 こちらも値下げ ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHzとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば20,18ピンよりこちらを 20ピンはF690のバリエーションモデル多.価格差が小さいからF690か,OPアンプのF785 -◎16F690 \210 ADC有,eCCP有,eUSART有,SSP有,4Kw,内蔵31K-8MHzとバッチリ -○16F689 \180 F690からeCCP機能削られた -×16F687 \180 さらにF689を2Kwと半分に -△16F677 \170 さらにF687からeUSARTも削られた -○16F685 \190 F690からSSP&eUSART機能が削られた -◎16F785 \180 ADC有,CCP有,2Kw,内蔵31K-8MHz,OPアンプ搭載ってのはいいね 18ピンは種類は多いけど選択の幅は狭い。F88かいっそ20pinにするとか -×16F84A \300 機能無,1Kw,いまさら不要 v△16F648A \180 CCP有,USART有,4Kw,内蔵4MHz,同じ値下組のF819と比較するとキツイ v△16F628A \160 F648Aの2Kw版,売りが値段だけだと厳しいかな -×16F627A \160 F648Aの1Kw版,売りの低コストで628Aと並ばれると・・・ -◎16F88 \230 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood -○16F87 \200 F88にADC無い,下のF819と比較するとADCで負けフラッシュ4Kwで勝ちダケド v○16F819 \180 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,値下げで価値が急上昇! -×16F818 \200 F819の1Kw版,上位のF819の値下げで不要に -◎16F716 \110 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い,ADC8bit注意 14ピンはF688だね -◎16F688 \160 ADC有,eUSART有,4Kw,内蔵31K-8MHz -△16F676 \140 ADC有,1Kw,内蔵4MHz 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い -◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 -○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 v○12F629 \80 675のADC無(機能無しってこと),この値段ならチョット使うに便利 -△12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 -◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し -×12F609 \100 F615からADC,eCCP機能省かれてる (参考)機能無,EEPROM無,12bitコア プログラム組む上で制限多し -△16F57 \100 28ピン,2Kw,内蔵CLK無,安くて多くのI/O欲しいなら -△16F54 \60 18ピン,0.5Kw,内蔵CLK無,安いI/O欲しいなら -△10F200 \70 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用 マークの意味 ◎お勧め、用途決まっていないならこれ買っとけ ○内蔵モジュール減ってるけど、その分値段も安くなってるから、まあまあ △内蔵モジュール大幅に減ってる、\10でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない。
41 :
774ワット発電中さん :2009/05/02(土) 02:51:23 ID:51ls3+XP
16F887はPSPが無くなってしまったのが痛い。
てかもうPIC24でいいんじゃまいか?
既にPIC24に移行済み。
まだPIC16使ってる。既に製品になってるから、ファミリの一部だけPIC24に移行するのは辛いな・・・
46 :
774ワット発電中さん :2009/05/02(土) 13:12:41 ID:51ls3+XP
>>42 PSPの方が速度も速いし都合が良い場合が結構ある。
マルチチップマイコンの外部RAMがいまだに全てシリアルにならないのと同じ理由だな。
>>43 基本的には同意。でもいまだにPIC16の拡張版が出るところを見るとなんか
そういう需要ってあるんだろうね。個人的にはPIC24の5V版でも出してくれた
ほうが嬉しいんだけど。w
>>47 PIC24の5V版ってPIC30なんじゃないの?
消費電流多くて発熱大きいけど、電流かなり取れるし一品物にはよく使う
30F6012Aと秋月の変換基板は10セットほど常にストックしてる
49 :
774ワット発電中さん :2009/05/02(土) 16:03:00 ID:51ls3+XP
>>47 結局、人間が楽をするか、ダイサイズを小さくする事を優先するかって事だと思うよ。
個人でLEDチカチカなら24でも良いだろけど、量産の場合は1円でも安い方がメリットある。
世の中には4ビットマイコンで十分なアプリの方が、8ビットが必要なアプリよりも極端に多いから
そこに食い込む為には低機能ローコスト版が拡充されるのは致し方無い。
てか、数十円で買える多ピン4ビットフラッシュPICが出たら面白いと思う。
使っている人にお聞きしたいのですが PIC16F887にはCCPとECCPが備わっているようですが この2つって、別々の周期やデューティで同時に動かすことができるんでしょうか それともどちらか一つだけしか使えないんでしょうか
16F877(A)と比べてCCP1がEnhanced CCPになった。 CCP2は変ってない。 CCP1/2は独立してCapture/Compare/PWM modeとして 使えるけど、組み合わせるTimer1/2は各1つずつだね。 だから・・・
4bitは数円の世界だからなぁ。 フラッシュのメリットもないし。
> 数十円で買える多ピン DRAMメーカじゃないんだから、そうは買い叩けないだろ。
多ピンという時点で最低限のダイサイズは決まるから コア部分の面積を減らしてもあまり効かないんだよね
16F59なら170円ぐらいで32ピン取れるけどねこれはさすがにイレギュラーだよなw(ピンあたり6円) 8が4に下がったら何処まで出来るかってことも考えると、A/Dコンバータの精度を削って値段を下げるとかって事も出るのかな? ところで、電源ライン以外すべてのピンをI/Oに振れるPICを触ろうと思ってるんだが、ICSPなんかに不都合ある? 各ピンをI/Oに割り振るついでにフラッシュ書き換え用のラインも一応確保しておこうと思うんだが…。 ちなみに秋月で買えるPIC16F677を想定している。
4bitだとピン1円くらいのがある(らしい)けど、たいていはマスクで数量をコミット する買い方だから直接には比較できないね。
>>48 6012Aを10個?
俺なら規模に合わせて5011とかもストックしておくけどな
>>51 >組み合わせるTimer1/2は各1つずつだね。
組み合わせるのはTMR2じゃね?
ちなみにPIC16F1827と16F193XはTMR2型タイマーを3機搭載してる
タイマ1+CCP(Compare)で16bitPWM使えるよな。
61 :
774ワット発電中さん :2009/05/03(日) 14:47:31 ID:boqzuvrq
>>58 量産しないんで使い分けするのもめんどくさい
数百円のマイコンのコスト差なぞごみみたいなもん
うちは単品高額装置メインなんで、こんな考え方なんです
最近はPIC32MX使ってる
こいつは早くて安くてすばらしい かなり気に入った
32bitで80MHzで512kBフラッシュに32kBメモリでUSB付きで1個8ドル
なので、3.3VはPIC32MX460F512L、5VはDSPIC30F6012Aで統一することにした
ここの人たちは8bit大好きみたいだけど、一応薦めておきます
俺もMicrochipの8bitコアは嫌いだな。同じ8bitならAVRのほうが好き。 それでも周辺の魅力に負けて使ってしまうことはあるけど。w 最近はPIC24がデフォという感じ。このコアは気に入ってる。 PIC32も良さそうだけど、そのクラスだとARM系と比べてどっちにしようか って感じになるね。
>>60 そんな長時間パルス幅と高クロックを両立させるのか?
ご苦労だなw
>>61 >PIC32MX460F512L
基板に載せたやつが25ドルか。
勉強目的に俺もそろえておくか。
PIC32MX320F032H-40I/PTを手はんだでいいや。
while(1){ if(char型の変数<TMR0) GP0 = 1; else GP0 = 0; } 割り込みで変数変える (;^ω^)なんとかなった
65 :
774ワット発電中さん :2009/05/04(月) 07:55:36 ID:RatzJSfm
おそらくありきたりな質問でしょうが教えてください。 PICのEEPROMは読み出しは瞬時にできるようですが、一般記憶領域のように 頻繁にアクセスするようなことをしても大丈夫なのでしょうか? そのほうが記憶領域の節約になるので・・
100万回
67 :
774ワット発電中さん :2009/05/04(月) 08:56:48 ID:jD/88Dnn
>>65 書き込みは回数制限あるけど、読み出しのみは制限は無い。
SRAMに比べれば、当然遅いがね。
68 :
65 :2009/05/04(月) 09:27:02 ID:RatzJSfm
>SRAMに比べれば、当然遅いがね。 間接参照なので遅くなるという意味でしょうか?
SRAMなら1命令サイクルで読めるからね
内蔵EEPROMは書き込み遅すぎ。 外部EEPROMでPage-writeの方がまし。 RAMサイズ大きなPIC選びなおすか 外部RAM(23Kxxx)使うとか・・・
PIC入出力をタクトスイッチ+液晶モジュールの定番は止めてパソコンとシリアル通信しようと思ったが結構たいへんなのなw
タクトスイッチ+液晶モジュールよりずっと簡単だと思うけどなあ
GWで暇だし、タイマオーバフローごとにcharを左シフトしてそれをそのままPORTAに放り込んで、4回に1回charをインクリメントするだけのプログラムを組んだ 何か涙出てきて疲れが吹き飛んだ気がした
低電圧仕様のLCDって見かけないしな 232Cレベルコンバータは低電圧仕様あるし。 もうちょっと頑張ってみるか
ちょっと調べてみた。 前スレでUSARTを内蔵してないPICでのシリアル通信のソース教えろとか書いていたので マイクロチップのアプリケーションノートをあげておく。 AN555, Software Implementation of Asynchronous Serial I/O AN593, Serial Port Routines Without Using the RTCC AN712, RS-232 Autobaud for the PIC16C5X Devices
76 :
774ワット発電中さん :2009/05/04(月) 16:41:05 ID:Bg2FBzIV
>>74 232のレベコンが動く位の電圧があるなら、DATA線にダイオードとコンデンサ付けてLCDのバイアスにするだけでOK
ADM3202ANは3Vから動くということなんだがLCDモジュールは電源自体が+5Vを要求してるようだけど。 データ信号のH/Lの判別が5V/0Vで無くてもいいのは分かるが。 まあともかくAN555の図4にはレベルコンバータを使わずに済ます回路がでてる。 ZVN104って何ですかね? そもそもRxDをタイマー0クロックで受けるって。 じっくりソースを読むとするか
78 :
774ワット発電中さん :2009/05/04(月) 17:34:47 ID:Bg2FBzIV
>>77 モジュールの取り説では無くて、使われてるICのデーターシートを読むことが出来れば幸せになれるかもしれない。
>>80 へぇ〜。
LCDモジュールのクロックって、思いのほかとりやすいところに出てるのね。
>>71 最近だとPC側の制約でシリアル使うのが難しいからUSB搭載PICがお勧め
うちには最初から3.3V仕様のLCDモジュールがあったりするのだった
>75 CCS-C使うなら関数で指定できるんだよな? ソフトでやらせる場合、全二重じゃないらしいが。
いまどきUART入ってるPICなんていっぱいあるんだから、 「結構たいへん」とか言うなら、そういうの使えばいいじゃん。
8ピンで2つの異なるデューティ比でPWM出力できるのってあります? 例えば50/256と80/256を2つのピンで同時に出力できる感じの
>>86 CCPが2個って意味なら、そういうデバイスは無いと思うけど、他に仕事が
無いならソフトウェア的に作るって手はあるかも。
>>1 やはりそうでしたか ありがとうございます
未熟者なもんで「無いらしい」というところまでしかたどり着けずモヤモヤしてました
90 :
774ワット発電中さん :2009/05/04(月) 23:01:52 ID:gpmLNUWs
「PICとC言語の電子工作」を読んでいてPICCライトの制限については 最適化の有無しか記述が見当たらないが、実際には877Aで2KW、2バンクの制限が あるのですか? せっかくCで大規模なソフトが書けるのかと思ったのに。
c30
>>86 16F873で昔それをやった記憶がある
元のタイマは一緒だから周期は一緒だけどデューティは独立してたはず
当然だけど28pin以上なら出来るデバイスはいっぱいある。 元の質問は8pinで出来るデバイスがあるか、というもの。
>>90 877Aでどういった大規模な物をつくるのか非常に興味はあるが、
君の無能っぷりでは、おそらく作ることは出来ないだろう
96 :
774ワット発電中さん :2009/05/05(火) 12:23:56 ID:tL5gy+ZV
>89 アンカーをまともに打てないくせに IDはなんかカコイイ!
97 :
774ワット発電中さん :2009/05/05(火) 13:09:48 ID:XBrE01bz
886でCKLINとINTとRXを使いたいんだがPORTxレジスタが一個ずつつぶされてめんどくせぇ めんどくせぇけどがんばる
どういった規模が何Kwに納まるのか、私のような初心者には判断がつかん。 とりあえず8Kwの16F886でも使っとけと言うことか。 16F54なんざたかが512ワードだ。原稿用紙1枚強。 松尾芭蕉クラスのプログラマーでないと使いこなしは難しいかもしれん。
昔共立で売ってた256wordしかなくSRAMが16Byteの10F200もたまには思い出してあげてください。
101 :
774ワット発電中さん :2009/05/06(水) 04:53:39 ID:t9n4i07n
>>99 12F683で赤外線受信処理と3chPWM出力で226ワードでできる。
同じPICでバイクのCDIを作ったときはプログラム185ワード、進角データ256ワード。
PICなんてそんなレベルの工作だろ。
>>102 PICC Lite→Lite Modeへの移行はそんなに難しくないでしょう。
移行時Liteモードで使っていると、ソフトウェアDelayが3倍位伸びるが、
Delay関数を置き換えればok。
その本はセンサー関係のノウハウがあるから、その意味では重宝すると思う。
強いて言うなら
>アキバ系電子オタクに大人気のマイコンPICを使った
>ベタな電子工作から極上のテクニックまで。
という、内容もわからんやつが下手糞なコピーをつけて売る所だなwwww
だから24FでC30つかっとけばいいじゃん。gccだしさ。
>>106 そろそろ20pinが出るよ。PIC24F16KA101-I/P
秋月は知らんが Digi-Key で5月25日入荷予定。
正直16Fとかはいらね
>>106 > 24Fは3.3Vで5Vでないから使いにくい。
せっかくレギュレータ内蔵で内部2.5V動作なんだから、外部最大5Vまで
許容すればいいのにね。
密かに 24F**KA に期待してたんだが、やっぱり最大3.6Vだった。
(一部のI/Oピンが5Vトレラントなのは、今までの24FJと同じ)
なんでそんなに5Vに拘る?
周辺回路との兼ね合いで5Vっていうならわかるけど 今時3.3Vでインターフェースすることのほうが多いからなぁ むしろ5Vのほうが不便だ
3.3Vで何が困るのかな。たとえば24Fだと、出力は3.3VでTTLレベルOKだし、 入力は5Vトレラントだし。低損失REGなら5Vから容易に3.3Vつくれるし。 わからんわぁ。
113 :
774ワット発電中さん :2009/05/06(水) 18:32:22 ID:t9n4i07n
タイル張りの人は周辺ICに合ってれば良いだけだろうけど アナログ混在で設計すると15V位の電源で動いてくれた方が便利だな。 不要な時は電源を2Vなり3Vなりで動かせば良いのだから 価格や性能が同じなら耐圧が高い分には困らない。
>113 そんなムチャなことを!
>>113 一応 HV シリーズというのが、あることはあるのだが。w
回路規模にもよるんじゃない、5Vの周辺1個とMCUだけですむ構成なら そこに3.3Vのレギュレーター追加するのももったいない。コンデンサも必要だし よく使う秋月のLCDモジュールやクリスタルオシレータなんかはほとんど5Vだしね。 16Fなんかは2.0V〜5.5Vで使えるから使いたい周辺に合わせればいいから その点は手軽に使える。 >113 16HVとか12HVとかいうシリーズがあったような
>>112 > 入力は5Vトレラントだし。
実際に5Vトレラントなピンは半分以下だから、意外と制約になるときが
あるんだよね〜
>>115 それってシャントレギュレータがついてるだけでなかった?
>>118 そうそう。だから一応。w
あれ、いまいち使えないのよねえ。
>>118-119 シャントレギュレータが付いてるだけのデバイス(PIC16HV610/616/785)と、
一部GPIOの入出力レベルまでHVになってるデバイス(PIC16HV540)の2種類がある。
16HV540はフラッシュじゃないから調べてなかった。 使いようによってはいいかも。 欲を言えばAC100Vをタイマー用のクロックにぶち込んで50Hzとか60Hzを読みたい。 実際は抵抗かトランス使うの? 抵抗使うと電気喰いそうだしトランスは値段が高い。
>>121 50Hz/60Hzを読むだけ? それなら、コスト最優先の場合、抵抗1本で済ますこともできる。
その場合、電源のグランド(じゃなくてもいいけど、どこかの電位)がACと共通になるから、
感電に注意しないといけなくなる。接続先はGPIOだから、消費電力は無視できる程度。
絶縁するのであれば抵抗経由でAC100Vにフォトカプラを直結が楽。この場合、mAオーダの
電流が必要になるので、抵抗の消費電力がバカにならない。ノイズ耐性を妥協してもよければ
コンデンサで絶縁する手もある。これなら消費電力は気にならない程度に下げられる。
AC100Vから電源も取りたいということなら、最安値は(秋月ACアダプタ的な)大量生産の
スイッチング電源。少量生産であればコンデンサ経由のリアクタンスドロッパとトランスが
コスト的にもサイズ的にも同程度。抵抗ドロップが最安値だけど電力バカ食い。
IPIで旧PICが105円均一で売ってるね 16F874とかいいかも
ググッたら結構良いものも16F84も105円だな。 ところでここ、525円までは50円の手数料だが、送料はどこに書いてあるの? フォームで発注をかけた後で分かるのかな?
ご利用案内に書いてあるよ
PICとニキシー管を使った時計の工作を良く見るけど あれLEDに変えたらダイナミック点灯がしょぼくなってしまいますかねぇ? だれか実験した人いません? 当然BCDデコーダーをニキシー用からLED用に(4511系)変えないとだめですけど やってみたいがソースが書けないww orz
サンクス、詳しく書いてあったわ早速代引きでPIC50個発注してくるわ。 USB232基板とかただだし回路図さえあればどうにかなりそうなんだがなぁ…。 ただとは言わないから部品セットやらサンプルプログラム出してくれないかなぁ…。
桁ドライブを2本増やすだけで医院ジャマイカ?
>>130 あとはソースいじれってことですね
><;わかりません
>>132 ちょwww それは_wwww
うるさすぎww
PICの読み方教えてください。 ピックですか?ピーアイシーですか?
P伊藤麻衣子C
>>130 まず1桁、次に2桁っていうふうに増やして理解していけばいいと思う。
1桁を1秒ごとに1増やすっていう回路とソフトができなくちゃ
とてもじゃないけど6桁なんてムリぽ
>>134 ピーアイーシーでしょうね。秋月なんかでは「ピックですね!」とか
言ってるけどさ。こっちも吊られて「はい、ピックの○○です」とか
答えちゃう。
>>137 そうなんす、_は承知の上で
Web上にあるニキシー時計の回路とソースを眺めていたら
BCDをニキシードライバーに入れてるだけだからと安直に考えてw
んならば4511でLEDをドライブしてやんよ!
7セグA〜Fとコモン6個でI/Oは7+6程度で済むのだろうなぁ
とまでは理解できてるww
と、思いつつ、秋葉原にいく準備をしているww
休みもう終わっちゃうけど orz
wikiによるとピックみたいです。
>>139 ドットまで制御するならもう1つ必要。あと時刻合わせとかいるだろうから
入力がいるね。それでも4511とかは必要ないですよ。あっても3ピン減るだけで
ICがひとつドーンと増えてあまり意味と思う。数字以外出せないから
後々つまらないと思うし、ドライバあっても結局コモン側のトランジスタがいるし。
142 :
141 :2009/05/08(金) 13:44:55 ID:A3npxIYv
ちょっと訂正っていうか追記 例えばPORTBに7SEGのa〜g、dpを接続、PORTAにCOM6つと時刻合わせ用スイッチを 接続、回路はそれだけであととはプログラムでウニョウニョやるってのが定番だと思う。 もちろん接続ってのは抵抗かましたりいろいろあるけど、その辺の回路図はググれば 腐るほどあると思うんで見てくだしあ。
どもども
>>141 I/Oは7+6のほかに設定ボタンが必要でしたね
コロンは自己点滅LEDでも入れときゃいいやw
回路図のイメージは湧きましたが
プログラムイメージがorz ですw
とりあえず、組んでから考えるw
と明日はお祭りなので秋葉原へ泊まろうかと野望を
兄貴たちに質問です
>>132 みたいな時計を目標にPICを学び始めたんだけど
ドラクエで言ったらどれくらいの敵ですか?
自分はまだスライムと戦い始めたばかりです。
回転軸さえなんとかなりゃスライム×3ってとこか まあ半田とかライターがクリアできてれば…
Arduinoなら一晩でできる程度のこと
>>148 一晩もかかるのか。PICなら1/3位で済むかな。
そういう宗教論争はどっか他でやってくれ。 どちらも使う人から見れば痛いだけだよ。
144です 兄貴たちすげー あんな超難解そうな装置なのに、、、 いつか兄貴たちと冒険にでれるように頑張るぜ とりあえずLEDピカピカスライム倒すぜ
>>153 そんな高いのじゃなくても16bitのタイマーがあればどれも余裕じゃないの?
>>154 16bitのタイマーで安く時計を実現する参考ページある?
>>155 安くも糞もない。
タイマーさえ使えれば出来るだろ?
>>153 こういうICはCPUの電源を落としたときでもカウントし続けるために使うものだね。
CPU常時ON前提で時計を設計するなら、CPUのタイマ+ソフトでカウント
したほうがローコストだし柔軟な設計が出来るよ。
>>160 それ有名ですよねw
GP3に50Hzを入力してるけど、T1CKIであるGP5でないのかな?
>>161 有名というか・・・◆xcrOSgS2wYさんはこの板のコテですよ。
最近はPICを見限ってPSoCスレにしか行かないのかもしれないけど。
へえ、おもしろい人がいたんだ
6桁・・・・・ボソリ
このスレも毎日何度も読んでるよw PICも未だに、仕事・遊び両方で使ってるし(それもPIC16を)
回るLED時計はPICのテクっていうよりメカのほうが面倒そうだね。 正確な時計は発振器しだいだし、もしくは電波かGPSだろうけど 違う分野の知識が99%な気がする。
こんなもんフォトインタラプタの存在と動作を知ってりゃ楽勝だろ
メカは苦手なんだよね。 俺が作るとバランスが悪くて転げ回ったりしそう。w
PC用の回転センサー付きファン使えばセンシングは簡単やがな。
求む普通のデジタル時計
パタパタ
172 :
774ワット発電中さん :2009/05/09(土) 16:31:26 ID:nEZpkJpL
回転させれば6桁と言わず8桁でも16桁でも自在だな。 折角自作なんだから西暦まで入れるとか。
ちょwww 普通のLEDデジタル時計きぼん!!!1
ホムセンに売ってたよ。 498円で。
量産品じゃなく”俺の”時計が欲しんだよ。何時までもチカチカ♪するやつ
ふーん。で?
>>159 デカいLEDだな
そして回路みて、MAXの石つかいてーっと思った俺ズボラ
>>159 マイコンとかさわるの初めてなら本買ったほうがいいと思うよ
慣れてくればweb上の情報を自分で処理していろいろやれるようになる
179 :
774ワット発電中さん :2009/05/09(土) 22:03:29 ID:2wv9hw0p
ちょっと質問。 PICに抵抗値を読ますにはA/Dを積んだPICを使うんですよね。 逆にPICの処理にしたがって特定の抵抗値を出させたい場合って どうすればいいでしょうか?
そういう聞き方よりも、何がしたいのかを具体的に書いた方がいいですよ。
> PICの処理にしたがって特定の抵抗値を出させたい 無理です。
昔、CdSフォトカップラというものがあったな。 直線性が悪いうえに速度もとても遅かったが。
>>184 カドミウムが有害だから市場から消えた・・・んだと思ってたんですけど
まだ売ってるんですね。今度買っとこう。
>>179 たとえば10Ω,20Ω,40Ω,80Ωの抵抗をリレーでON,OFFする。
>>159 トップページに普通の時計と音声時計があったが青7セグってどうなの?
190 :
774ワット発電中さん :2009/05/09(土) 23:42:09 ID:EUIbJPQS
質問させてください。 PIC16F628Aを12.8MHzで動作させるために「RA7/OSC1/CLKIN」に水晶を繋げた状態では 「RA6/OSC/CLKOUT」はデジタル出力ピンRA6としては使えないのでしょうか?
AN555の図4ですが ZVN104というFETのスペックって分かりますか? RS232CレベルをPICが扱えるレベルまで落とせればいいのだから 2SC1815で代用可能と見ているのですがね。 LM301もタダ単にマイナスレベルの信号も作りたいってことだろうから 手持ちの4558でも大丈夫だと見てる。
>>190 逆に聞きたいんだが、水晶は端子を2つ持ってるが、PICに水晶を接続するときは
そのうち1本だけ接続する気なのか?
>>192 この回路なら2SC1815で代用可能だけど、入力電流が大きくなる。(実害なし)
ただ、ターンオフがやや遅いかもしれないから、極端に速いボーレートで
使う場合は要注意。
4558もLM301よりかなり遅いはず。どちらも9600bpsとかなら大丈夫だと思う。
>>193 水晶振動子ではなく水晶発信器を使うって事でしょ?
>>190 データシートミロ。628は知らんが手元にある12F683はIOとして使える
俺も
>>193 と同じこと考えた。
つーか、普通、水晶発振器を水晶とは略さない。
>>193 表現が紛らわしかったようで申し訳ありません。
京セラのKTXO-18S (12.8MHz)を使いたいと思っています。
>>189 可変抵抗みたいにリニアな抵抗値を変更するのが求められてるからじゃないかな。
>>193 ありがとうございます。
おかげさんで安くできそうです。
>>197 ピンの役目はレジスタの設定で決るはずで
プログラミングするには、それを理解しておく必要があると思うのだが。
ちょうど秋月でKTXO買ってきた漏れ様がちょっと通りますよw
>>197 資料付いてなかったのかな?
7ピンがGND
8ピンをPIC側
14ピンが電源Vcc
7,8,14がわからないってのはググレカス(AAry
>>202 お前が質問を理解できていない。
>>197 は水晶発信器の使い方を聞いているわけではない。
PICの入力について教えてください。 車のパーキングブレーキの信号を入力したいと思っています。 踏んでいるとき0V、解除したときに+12Vになります。 この信号を入れるのに、 ポートを10kΩでプルアップして、ダイオードを ポート→アノード ダイオード カソード→パーキングブレーキのようにつなぐ方法で問題ありますか? ブレッドボード上では問題なく動いてくれるんですけどちょっと心配で。 セオリーはフォトカプラか抵抗で分圧することだと思うんですけど、ダイオードで問題なければ それにしたいと思っています。
エスパーだらけのスレだな
>>204 それで大丈夫。
逆に抵抗分圧やフォトカプラではうまく動かない場合がある。
207 :
774ワット発電中さん :2009/05/10(日) 00:59:42 ID:JU88Qeko
>>204 3端子レギュレーターを入れて、5Vに変換した方が簡単。
>>206 ありがとうございます。
これで問題ないんですね。
分圧だと電圧の変動への対処が面倒だし、フォトカプラは手元になかったので。
>>207 ダイオードで問題ないようですし、部品数が増えちゃいますよね?
発振の対策はしなくていいのかな?
210 :
774ワット発電中さん :2009/05/10(日) 01:10:30 ID:EED9EIGo
たぶん動くけど、「パーキングブレーキの信号」って奴にシンク能力が あるかがちょっと不安だな。たぶん、パラにリアのランプ(LEDか電球) が入ってるんだろうけど、10kΩ→ダイオード→ランプという経路でドライブ して、ローに落ちないかもしれない。 まあ、実験して駄目なら対策すればいい。壊れることは無いはず。
アース制御される負荷のアース側が接地されていない状態で
端子に電源電圧が現るのを見て常時電源と勘違いする馬鹿が居るが、
まさに
>>207 だなw
あ、パーキングブレーキだからリアのブレーキ灯なんて関係ないか。
もう一つ質問させてください。 204の方法がOKなのは、+12Vと0Vの状態しかないからですよね? リバース信号も入れたいんですが、ネットで探してみるとトランジスタのベースで受けたりフォトカプラを使っているのが多いですね。 リバース信号がオフのときはどういう電圧になっているかわからないんですけど、同じ方法でいけますか?
>>211 いやいやいや
なんでパーキングブレーキのラインにパラでリアのランプがあるのよ
メーター内のパーキングブレーキのアースをボディに落としてるだけだ
1つ注意するならブレーキフルードの残量警告で点灯するのを知らない人が多い事か
>>214 同じ方法でいけるが論理は逆
リバース線はONで+12V、OFFで開放
この場合はレギュかますか、1/3分圧でいけるだろ
ただしPICを+5Vで動かしてる場合な
パーキング線は引くとボディアースに落ちて(GND=0V)、解除で開放
メーター内のランプのマイナス側なのでランプの種類や取り出し方で値が変わるかも知れん
なのでプルアップで正解
趣味で作るなら是が非にとはいわないけど できれば絶縁カプラー噛ました方がいいぞ。
190です。 自己レスになりますが、PIC16F628A で 「RA7/OSC1/CLKIN」を CLKIN として使用した状態で「RA6/OSC/CLKOUT」を デジタル出力ピンとして使用するには、コンフィグレーションワードの FOSC2-0 ビットを「011」EC(External Clock In)にするようです。 CCS-C の 16F628.h を見たところ //////// Fuses: LP,XT,HS,EC_IO,NOWDT,WDT,NOPUT,PUT,PROTECT,PROTECT_50% とあるので KTXO-18S を購入したら「#fuses EC_IO」で試してみることにします。 あと、自信がないのでダメだった時のために PIC16F690 も買っておくことにします。
兄貴たちに聞きたいんだけど Cコンパイラのソフトってどんなの使ってます? 自分は無料のHI-TECH使ってるんですけど Delay関数で詰まったので有料ソフト買おうか考えてます お勧めのソフトあったら教えてほしいです。
無料のが一番お勧め。 どうしても買うというなら CCS かなあ。(最近使ってないけど)
ディレイはループで必要回数回せばいいじゃないかと(ry
>>221 兄貴ありがとう
すっごい勉強になった!
HI-TECH C PRO(Lite mode)で頑張って行こうと思う
ほんとにありがとうございました
最近でたやつは 2kの制限がなくなったのか
>>224 そうなんだよ。2kの制限がなくなっただけでなく、市販の全てのPIC16Fが使える様に
なったのがうれしい。また、ICDが速いんだ(C18のICDがトロイのどうにかしてくれ)
ただ、PICC liteの時あった最適化がなくなった為、HEXファイルサイズが大きくなる。
でも、そんなの関係ねぇー
おもしろそうなのでまた PICいじりだそうかな
以前HI-TECH Cの弱点はPIC専用ライブラリが充実してないことだったけど、 このあいだHI-TECHがMicrochipに買収されて、HI-TECHがPICコンパイラ専門ベンダに 様変わりして他のデバイス向けのコンパイラはすべてディスコンになったから、 これからはPIC専用ライブラリも充実してくるんだろうな・・・と予想&期待。
Microchipの指図に嫌気がさしたHI-TECHのエンジニアが スピンアウトすると予想&期待。
C30が一番楽だわ、gccだし。
HI-TECH PICC Pro (Lite mode)は最適化しないってレベルじゃなく わざとcodeサイズ増量してるみたいだぞ。 Lite mode利用者への嫌がらせなのかとも思ったが Pro modeの最適化効果を大きく見せる為の策略なのかな? 例:PIC16F627A void main() { char hoge=0; hoge = 1; (以下略) PICC lite V9.60PL1の場合、まぁ納得 ;char hoge=0; bcf status,5 clrf (hoge) ;hoge = 1; clrf (hoge) incf (hoge) PICC Pro(Lite mode) V9.60PL5の場合、わざと増量w ;char hoge=0; clrc movlw 0 btfsc status,0 movlw 1 movwf (hoge) ;hoge = 1; clrf (hoge) bsf status,0 rlf (hoge),f
231 :
774ワット発電中さん :2009/05/11(月) 12:13:12 ID:fvLwg+ZI
そんなもん趣味で使うに問題あるか? 全デバイス使えるんだから容量の大きなやつ選べばいいだけ。 商用ベースに文句いっても仕方ないだろ。
>>230 そりゃ酷えな。PICコンパイラの評価を下げてるだけじゃね?
>>231 処理実行時間も犠牲になる罠。
Cである程度以上のプログラム書くなら PIC18 / PIC24 が お勧めだな。いろんな意味で。 簡単なプログラムしか動かさないなら PIC16 もありだが。
一時間5000円って、、 一時間で何も理解できないまま終わりそうだw
237 :
774ワット発電中さん :2009/05/11(月) 23:20:35 ID:BlIc5Ggj
C30ってプロファイル吐き出せない?
先週、MPLAB+PICC+PIC16F88でデビューしました。 皆様よろすくです。 ちなみに、訳有ってIDEはVirtualBox上のWindows7RCにインストールして、リモートデスクトップ経由で使ってます。 本当はRemoteAppで使いたいのですが、仕込み方が分からんです。 VisualStudioとキースキームが違うので使いにくいのですが、カスタマイズするのもめんどくさいのでそのまま使ってます。 楽しくてイキそうです(`・ω・´)
239 :
774ワット発電中さん :2009/05/12(火) 00:30:46 ID:Ol7bHQCv
PIC18F2550で作ったプロジェクトをLFのPIC18LF2550で使うにはどうしたらいいの? 設定すべき箇所が見当たらないのにデバイスIDではねられる プロジェクト新規作成しようにも、デバイス選択にLFは出ないし、困ってます
>>239 PIC18F2550とPIC18LF2550はID同じだよ。
もともとのプロジェクトを「PIC18F2550」で作ったと思ってるのが勘違いってことはない?
>>240 ありがとう
じゃあ、壊れてるのかも
F実装したやつの次にLF実装してダメだった
242 :
179 :2009/05/12(火) 22:21:46 ID:pftMau3h
皆さん,お知恵をお貸し頂きありがとうございました。 R2Rラダー回路とか、デジタルポテンションメータとか、知らない単語ばかりで 正直先は長そうですが・・・ いちばん簡単そうなのはリレー+抵抗ですかね。 蛇足ながら、やりたかったことはSONYのカーオーディオについている ロータリーコマンダーの替りをPICでやりたいということでした。 10個ぐらいのスイッチと抵抗で回路が出来ていて、 3.5mmピンプラグに押されたスイッチに応じて抵抗値が変化するものです。
>>242 それだったら欲しい抵抗値分の本数の抵抗とトランジスタで済むじゃねえか
用途は先に言ってくれ
244 :
239 :2009/05/13(水) 01:02:55 ID:XRbYZp4w
基板取り出してがっかり 逆付けしてました 足切って新品交換した もったいない
MCLRを使わずに、純粋にプログラムだけでリセットを掛ける事は出来ないでしょうかね?
ウォッチドッグとか使えない?
247 :
774ワット発電中さん :2009/05/13(水) 08:01:51 ID:uh8IlqiT
>>242 フォトMOSリレーかフォトカプラを使えば、小型化できるしPICで制御出来るな。
IOピン数の多い奴使えばいいかと。
可変抵抗を使いたいなら、ボリュームとステッピングモーターをPWM制御だな。
抵抗を直列につないでゲートICで組み合わせて抵抗値を変えるとかすれば抵抗の数も減らせる。
私はロータリーコマンダじゃなくて赤外線リモコンをPICで作りたい。
最初から38kHzのキャリアつきで光る赤外LEDってありますかね?
プログラムでやらせればいいのだけど、
PCとの通信とかマクロとかも盛り込みたいんでステップ数を減らしたいんですよ
これ買えばいいんですけど、詳しい機能とか分からないし。
http://www.donya.jp/item/931.html
>>249 >キャリアつきで光る赤外LED
無いと思う。
マイコン使うんだよな?
だったら内蔵タイマー使えば38kHz変調は簡単に出来る。
ステップ数そんなに増えん。
私もソニーのロータリーコマンダー作ろうかな。
DAコン出力にトランジスタかまして他の機器を制御とか面白そう。
でもDAコン内蔵ってあまりないけれどVrefでも使えばいいし。
でも12F629はコンパレータでVREFを使うためにVRCONなんてレジスタを持っていながら
その出力がピンに出てないんだよね。せっかく安いのに。
>>250 >だったら内蔵タイマー使えば
内蔵タイマはマクロに使いたいんで。
しょうがないから高いPICを使いますかね?
>>246 すばらしいです。
ありがとうございます。
突然質問なのですが、PICに入れるプログラムの周波数を、 本来の周波数の4倍ほど大きく設定して実行してしまいました。 PICやその基盤は故障する場合はあるのでしょうか?
内蔵発振の周波数が本来は2Mなのに8Mの設定で実行してしまったってこと? 外部発振のクロックに規定の4倍のものを使用してしまったってこと?
どっちにしても無問題だろ。
>>254 回路次第だけど、普通はその程度では壊れないよ。
>>255 初心者なもので発振とかよく理解していないのですが、
MPLABでプログラムを書いてその時にPICの周波数より大きな周波数を設定してプロジェクトを作成しました。
その後PICにプログラムを書き込んで、基盤に差し込んで電源を入てしまいました。
基盤についているスピーカからなぜか音が出たのでただちに電源をきりました。
やろうとしていたことは、LEDを点灯させるだけです。
現在手元にないため動作するかの確認はできないです。
もし壊してもこっそりPICを取り替えればOK。 ブートローダかなにか使ってるならバックアップは忘れずに。
> 基盤についているスピーカからなぜか音が出たので あー、そりゃダメだ。断末魔の叫びだよ。 助けてほしかったのに、いま一歩立ち止まって確認してほしかったのに、 心の声は届かず、無機質な音とともにスイッチは入れられてしまった。 命費えたその瞬間を、あなたは見てしまったんだね。 きっと閻魔様も、涙を浮かべながら天国行きを指示しなさるよ。 そう、あの黒焦げの555以来の悲劇と言っても過言でないからね。
シュレディンガーのPICですね 通電するまでわかりませんw
>>259 最大許容を超えたのなら、最悪の場合、故障もありうるから、安心できないと思う。
264 :
774ワット発電中さん :2009/05/16(土) 03:06:42 ID:1rBX1nPx
PICでCANする方法おしえれ。。 たとえば、PIC30F4012での何番ピンとCANトランシーバつなげばいい? あと、プログラムが全くわからいない。 PIC30F4012で、CAN-ID_0x240でデータFF 33 32 43 00 00 00 00として 12msで送り続けたいとしたらどうする??さらに CAN-ID_0x240、データFF 33 32 43 00 00 00 00を12msで、 さらにCAN-ID_0x332、でーたAA 2A 33 3A 33 2A A0を24msで 送信したいときは?
265 :
239 :2009/05/16(土) 03:32:09 ID:kVial5Mg
最近またCAN小僧が出没か・・・
>>264 12ms毎のタイマー割り込みで送信。
0x240は毎回、0x332は2回に1回。
269 :
774ワット発電中さん :2009/05/16(土) 09:23:40 ID:YWJKx/Vd
270 :
264 :2009/05/16(土) 10:25:48 ID:1rBX1nPx
265> 持ってる。 でも自分がやりたいことに対してどこを変更すればいいのかわかんね〜〜んだ。 もともと、このプログラムもソースは乗せてるけど、これによって何ができるかわからないんだよね。 266> たしかに、読んではいるんだけど、自分が読んでる資料がただしいのかすら わからなくて苦労してるわ。 とりあえず、もっと基本のPWMとかから練習しようかと思ってPWMも並行でれんしゅうしてるんだけど、 そっちも時間かかってて、知識が足りないのはわかってるんだが 「まずはやりたいことを実現しよう」ってことになったのだわ。 今、手元にdsPIC30F4012とCANトランシーバがあるだわ。
271 :
264 :2009/05/16(土) 10:28:27 ID:1rBX1nPx
268> サンキュー。 そうするなり。 269> 道具はそろっていると思う。 ホントに使いこなせるようになるなら5千円くらいはありかと思ってる。
>>271 まずはアンカーの付け方覚えろ。
話はそれから。
273 :
264 :2009/05/16(土) 10:55:05 ID:1rBX1nPx
CANなんてまったくやったことがないんだが、 接続は、PICのC1TXをCANトランシーバのTXD、PICのC1RXをCANトランシーバのRXDだろう
276 :
264 :2009/05/16(土) 11:41:33 ID:1rBX1nPx
>>276 >マイコン内蔵の周辺機器だけで解決
>モータ制御とかLEDちかちかと
そう単純なIOとかAD・PWM出力・タイマー・インプットキャプチャー等。
あとはUART。UARTはパソコンとの通信だが単純でweb上にソースも多いので
すぐに出来るだろ。
これらでマイコンの内蔵レジスタの役割や使い方を覚える。
そうすればCANの基礎知識があれば同じようにすんなり使えるはず。
279 :
264 :2009/05/16(土) 12:32:38 ID:1rBX1nPx
>>277 了解。
というか、上述のようにやってはいる。
今、UART使用で2桁のLEDを制御。
これは配線の問題で部品調達中。
PWM制御はただいま勉強中。
これもやろうとしていて、
2モータの車を購入したがPWM(マイコンの知識)の準備ができないので、
動作できない。
>>278 (3)からわからなくなる。
(1)、(2)も完全に理解しているというより、
ここで「わからない」といってしまえば話が終わってしまうので
わからないと書いていないのかも。。
(1)はわかる。
(2)は微妙。
コントローラがいるのはわかる。
そのマイコンにCANがついていないからだ。
また、逆にUARTとMCP2515(コントローラ)とMCP2551(トランシーバ)があれば
CAN通信できることがわかる。
ただし、自分が持っているマイコンがCAN内臓であることで、
違うシステムとなり少し混乱。
(3)から自分の使うマイコンとの違い(CAN内臓とコントローラ使用)に対し、
そのままコードや手順が使えるのか微修正必要なのかが不明&混乱。
(4)は(3)同様。
(5)は(3)同様。
(6)は(3)同様。
(7)はわかるようなわからないような。
(8)はわかるようなわからないような。
(9)は動作確認なので読んでいない。
(10)はわかる。
>>279 CANに関してそこまで理解しているなら大丈夫だと思う。
あとはマイコン独自のレジスタ操作とデーターシートに慣れる事。
CAN等はマイコンだけでなく周辺機器も絡んでくるので
何処に問題があり動作しないかの確認が難しい。
CANアナライザー等を持っているならCANから入ってもいいかもしれんが・・・
まずは簡単に直接目で見て動作確認できるものの作成をお勧めする。
281 :
264 :2009/05/16(土) 13:31:14 ID:1rBX1nPx
ちなみに、PIC30F2012はPWM:2チャンネルとあったが、 どのピンなのだろう?? それとも DIOのピンをPWM制御してくれるのだろうか?? おせ〜てくれたまえ。
>>281 ちっとまて!
2012なり4012なりハードウェアーマニュアル見れ!
そこにブロックダイアグラムと共に書いてあるがな。
それすら見ずに質問するな!
データシートの読み方を学んだほうがいい。 やりたいことに能力が追いついてないから簡単なことからステップアップしていったほうがいいよ。 急がば回れってやつだ。 一々事細かに説明しないと出来ないのであれば本を買ってみるのもいいかもしれない。 流れを掴んだらあとは自力で解決できるようになるからね。
284 :
774ワット発電中さん :2009/05/16(土) 14:11:50 ID:YWJKx/Vd
払うものがなければ体で払ってもらってもいいんだぜウホッ
286 :
264 :2009/05/16(土) 14:40:27 ID:1rBX1nPx
結構本とかよんでるんだけどな〜。・ みんなどうやって勉強した?? 近くに詳しい友達とかいたらいいだけど。。
大量の本読んで考えれば大抵判る
慣れてくると、『データシートに書いてあるじゃん』となる。 慣れるまでは、どこに書いてあるかすらわからん。 結局は慣れと経験なんで、わからんところを解決しながらとにかく完成品を作り続けるのが近道 機能をちょっと使ってみるのとちゃんとした完成品を作るのとはまるで違うし得られる経験値も桁違いだと思う なので、自分なりに仕様を決めて完成するまでがんばるのがお勧めの勉強方法
289 :
264 :2009/05/16(土) 14:54:13 ID:1rBX1nPx
>>288 さんくす。
そのとおりだ。
ということで、
仕様はもう決まってる。
1.2桁の7セグLEDで1分間ストップウォッチ
2.2モータのついた車をサイン起動で走行
3.CAN吐き出しボックス。(ある信号はポテンショメータで数値調整、ある信号はスイッチで3つか4つの数値を選ぶ、ある信号はずっと同じ値)
てなかんじだ。
これを完成するために今色々本とかネットとか見てる。
これを書いたり読んだりしてる間もずっとマイコンいじくってるよ。
291 :
264 :2009/05/16(土) 15:03:47 ID:1rBX1nPx
ところで、そのdsPIC30F2012が急に書き込めなくなってしまった。 どないしょ。。。。 熱さによわいとかある???
292 :
264 :2009/05/16(土) 16:01:44 ID:1rBX1nPx
>>282 ちなみに
>>281 の答えはいかに。。。
適当なDIOになんかさせたらいいのか???
あと、データシートの探し方おせ〜て。。
しらなかったらいいけど。
>>292 データシートぐらい自分で探せ。
普通はメーカーサイトに行くだろう。そこで検索すれば出てくる。
>>296 LEDを点灯させるのとキャラクタLCDを使うのとではソフト側の抽象化レベルが違うから、
より低いレベルまで降りなきゃいかんLEDのほうが面倒、ってことでしょ。
2桁点灯だけで比較すれば、どっちでも手数は大して変わらんと思うは思うが。
298 :
254 :2009/05/16(土) 20:19:20 ID:d3D49qXA
>>260 >>261 >>263 254ですが、もし故障したとなるとどうなるのでしょうか?
通電してみたのですが、LEDを単純に点灯させるだけなら正常につきましたが、
LEDをスクロールさせたりすると変な所にランプがついたりします。
このような故障はあるのでしょうか
壊れるなら煙が出て無反応なぐらい分かりやすく壊れてくれたらいいんだけど、どうなんでしょう・・
プログラムのミスならうれしいんだけど
299 :
264 :2009/05/16(土) 21:11:58 ID:1rBX1nPx
>>294 三きゅ。
お気に入りにいれといたよ。
で、今本読んで勉強中。
今、タイマーとかCCPの辺読んでますわ。
ただ、ちょっとだけ教えてほしい。
PIC30F2012でPWMつかいたかったら、
モータに接続するトランジスタはどのピンにつなげるんや??
結局まだ今のところわかってないんだわ。
RC13とRC14??
それともRB0〜9&RC13、14&RD8、9&RF2〜5どれでもいいの??
それだけ教えて〜。
ハードの問題もあって先に作っていかんとあかんから。
>298 故障よりプログラムミスを確認した方がいい。 前回の上限の4倍のクロックを入れた件は、勘違いの可能性が高いと思う。 (おそらくMPLAB SIMのProcessor Frequencyの設定あたりでは) ソフト側の設定のみで周波数を上限よりも高くするとなるとPLLがある PIC24やdsPICじゃないとできない。 まず使っているPICと外部に水晶がついているならその周波数を確認すべき。 まあLEDの件はBCFやBSFを直にPORTに使っているっぽいけど
>>300 この前動作確認した時に、PICの型メモってたの完全に忘れてたので思い出してしらべてみました。
PIC16F877Aの最大周波数が20Mhzなのに対して4Mhzで入れるようになっていました。
それに20Mhzで入れたので問題ないってことですよね。。
ということは水晶の周波数が20Mhzより低ければ、今度はそちらの故障も考えられるのでしょうか
とりあえずプログラムのミスということで、今度確認してみます。
ググレ といいたかったが16Fまでしか触った事の無い俺にはちんぷんかんぷんだったぜw 何だこれ、どの機能に割り当てられてんだw っと思ったらやっぱり書いてあるな、16Fとは違う名前なんだな。
>>299 PWM1出力が24番ピンのOC1
PWM2出力が23番ピンのOC2
PICを使いたいのなら、まずマニュアルの隅から隅まで一字一句 読むこと。それでどの程度のスキルかわかる。なんじゃかりゃ? なら、PIC初心者解説書へ直行。英語の勉強が必要な場合もあるが、 日本語の翻訳マニュアルもあるから、それほど困らないだろう。
306 :
264 :2009/05/16(土) 23:42:31 ID:1rBX1nPx
>>304 サンクス。
全然違うピンにつなげてしまってるわ。
>>305 そんなものがあるのか??
「PIC初心者解説書」一度見てみる。
って、そんなものないぞ??
くれ。。。
307 :
264 :2009/05/17(日) 01:36:50 ID:SqzvLXPg
ちなみに dsPIC30F2012が死んでしまった。 2つあるんだけど、 2つともやられた。 デジタル入出力とGNDの間に0.6Wのスピーカつけてただけやのに。。 初心者がマイコン壊すときってどんなとき??」
>>307 普通のダイナミックスピーカーなら直流抵抗小さいから、
出力をGNDショートするのと同じだよ
309 :
774ワット発電中さん :2009/05/17(日) 01:57:32 ID:IUSP2ehA
>デジタル入出力とGNDの間に0.6Wのスピーカつけてた 8Ωか4Ωのスピーカーだろ? 電流を流し過ぎ!!! 絶対最大定格を確認シロ!
310 :
264 :2009/05/17(日) 02:02:36 ID:SqzvLXPg
>>308 、
>>309 マイコンこわれたんかな???
(トラ技の付録で)
一応、ブートローだは動いてるみたいで、電源入れるとLED点滅するんだけど、
残念なことにダウンロードが成功しない。
>>310 マイコンが壊れたというのは、錯覚だと思う。壊れたのは、あなたの
頭つまり大脳だと思う。早く身辺整理してシャットダウンしたほうがいい。
人類のために、世界のために。
312 :
264 :2009/05/17(日) 02:34:42 ID:SqzvLXPg
>>311 それは言わない約束だろ。。。
あくまで、マイコンの話をしよう。
壊れたのが錯覚ということは生きてるのか??
どうすれば元に戻る???
戻らない あきらめれ
>>312 ああ、そうだね。ごめんごめん。
で、PICが挙動不審になったら、足を折り曲げて捨てる。これは徹底して
やった方がいい。ちょっと使えるかもって保存希望なんてしちゃうと
後で痛い目を見ることになる。だから、今回も、うだうだやらずに、
新品を購入する。基板なら基板ごと交換。それですっきりします。
そして、猛勉強する。明るい未来はすぐそこですよ。がんばれ!!!
315 :
774ワット発電中さん :2009/05/17(日) 09:25:52 ID:NaY+NL+J
316 :
264 :2009/05/17(日) 10:08:00 ID:SqzvLXPg
PICマイコンの型番の後ろのほうのアルファベットって何?? たとえば @ [PIC16F873A-I/SP] の「A」とか PIC16F873とPIC16F873Aは何が違うの?? そのほかの型番は? A [PIC16F873A-I/SP] の「I/SP」とか 20/SP、I/P、I/SP、40/SS、I/SSなどなど色々あるが。
何で聞いてばかりなの?死ぬの? お前の考えの一つも示してくれれば少しは調べたんだなと思って優しく説明したくなるんだがな、特に1番については
318 :
264 :2009/05/17(日) 10:47:49 ID:SqzvLXPg
>>317 生きる
わからんもんはわからんのだよ。
これって、知識だから俺の考えがはいるとそれはただの想像で、
事実からはさらに遠くなるじゃん。
>>318 調べるれば分かることを…
「分からんものは分からん」で済ます奴は来ないでよいよ
320 :
774ワット発電中さん :2009/05/17(日) 10:50:58 ID:NaY+NL+J
だから264は放置するか金を払わすかしろとあれほど。 エンジニア系は悪い意味でいい人ばかりw
>>318 単純な知識だって分かってるんなら自分で調べなさい。
それとも此処の回答者は、一般人が知りえないような内部情報を知っている
Microchipの中の人だとでも思ってるの?
確かになぁ 教えて君なままで、世話になった分を人に貢献しようとか思う性質でも無いようだし 「訊ねているのだから教えてもらって当然」君か
>>294 >>304 とレスしたけど
こんな奴に教えてやるんじゃなかったと後悔しきり。
あ〜 腹立つ奴だなあ
Aは秋月のA。扱い量が大きいから専用ロットになる。 中身は表向き変わらない。 他店に流れたものはそのバルク。
うそはいかん
優しすぎワロタ たとえ2chでも人に物を尋ねる態度って物があると思う。
327 :
264 :2009/05/17(日) 12:12:46 ID:SqzvLXPg
みんな、ありがとう。
ちょっとずつ理解してきたよ。
>>319 君の言うとおりだ。
わからないものをわからないで済ませるようなことはいけない。
しっかり教えてくれ。
俺も、自分でも調べるし、それでわからなかったことは
先輩であるお前らに教えてもらうしかない。
頼りにしてるんだ。
>>321 おしい。
microchipのひととかあまりいないんじゃない??
一般人が知りえないような内部情報を知ってる人がいるともおもってない。
ただ、「一般人が知りえないような専門知識」を持っている人が集まっているとは思っている。
お前らみたいに。
>>322 教えてもらって当然とは思ってないぞ。
感謝してる。
マジ!!
そして、恩返しはするつもりだ。
ただ、今の俺がお前らに返せる力がないだけだ。
「PICの仲間でDSPICってのがあるんだよ」って
俺がお前らに教えても別にありがたくないだろ?
だから、俺がマスターしたらお前らが俺に教えてくれたように
次の世代につたえるんさ。
>>323 腹がたったなら誤る。
ごめん。
ただ、お前の情報は結構有益で感謝している。
>>327 あなたには基礎知識がたりないようなので
まず本を買って勉強してください。
そこでわからないことがあれば、webなりで検索して勉強してください
それでもわからない事があれば、みんなの意見を聞いて勉強してください
問題を理解せずに、答えだけを求めていては知識として無駄です、
応用ができない、カチカチ頭になりますよ
問題を理解しようと試行錯誤して、いろいろな知識が入ってくることで
ひとつの問題の解決だけではなく複数の問題解決につながるはずです。
教えてもらうだけではなく、自分の力で解決する楽しみを知ってください。
って堅苦しいこと言っちゃったー
久々の休日ピックピクするぞおおぉぉぉ
330 :
264 :2009/05/17(日) 14:28:35 ID:SqzvLXPg
まぁこんな便所の落書きと同程度の匿名掲示板から 有益な情報を得ようとしたり、 示した情報に対して返礼や対価wを求めようってのもなー
匿名つうか誰が見てるかわからん所で有益な情報を提供するはずはないし 対価を求めるなら情報を示す前だな。
ヒントとか、ここにあったよー的な情報は結構ころがってて嬉しいけどね
すいません 初心者でなやんでいます デバックモードでは動くのですが、Programモードで書き込むと 何も動きません、多分設定だとは思うのですがよくわかりません MPLAB、Pickit2からの書き込みも同じです どなたかたすけてください
Release modeで buildしてないんじゃね? あと WDTとか・・・
>336 環境 トラ技術 dspic30F2012+トレーニングボード+AKI-PIC2 WDTはOFFです LEDの点滅だけですが、なぜか書き込みは正常終了しているのですが動作しないです なぜだろう。。。
338 :
774ワット発電中さん :2009/05/18(月) 00:15:24 ID:59lTXKbA
スピーカーでも繋いだんじゃね?
>337 この前 自分が経験したのは、MCLRをプルアップしてなかった時 Pickit2でデバッグ中はPickit2がMCLRをHiにしてくれてたみたい。
>>337 誰がやっても問題なく動くものを、あなたが弄る(いじる)と
動かない。間違いなく故障でしょうね。
341 :
264 :2009/05/18(月) 07:12:26 ID:5tFVjrtO
>>332 あんたのいうとおりなんだよ。
いままで、ブートローだで書き込んでたからPICKIT2もないし、
RS232C⇒マイコン信号の変換ICはもうそろそろとどくんだけどね。
付録壊しちゃったからDSPICにこだわる必要なくて、
今、手元にDSPIC30F4012は購入したのが2個あるけど、
とりあえず、モータ動かすのはPIC30F873とかを購入することもけんとうしてるんだよね。
とにかく、ライタとかもなしで、ブートローだをどのPICにも埋め込むこととかもできたらいいなっておもったり。。。。
今までの付録のありがたかったことは書き込み成功したか失敗したかが、
その付録自身でわかるようにLEDが光ってくれてたってことかな。。
今もってるやつで書き込みをやっても今のところうまく書き込めてるかの確認が不安やわ。
ってことで、今後の方針はちょっとづつ考えるわ。
現時点でわかったのは今後もマイコンを何かの拍子に壊してしまうかもしれないってこと。
あとは、その壊れたことを俺が気づく手段が必要ってことかな。
>>337 書き込んだはずのプログラムが書き込まれていないってことない?
最初、自分がそうだった。
書き込まれているはずのプログラムを読み出してみたら
イレースされた状態だった。
昨日はVCCとアースを間違えてつないでしまってPICが熱くなった。
手でさわって熱いと感じる程度なんだけど
あわてて電源切ってつなぎなおしたら動いた。
PICって丈夫なんだね。
バッファローのPC用学習リモコンって16F688積んでるみたいね。 基板にはスルホール用の穴が開いてるがICSP用以外に考えられない。
>PICって丈夫なんだね。 運が良かっただけ。 あと電源がなにかによる、乾電池だと少しだけ逝きにくいけどACアダプタだと高確率で逝く。 電源の接続を間違えないようにコネクタにしたほうがいいよ。
20MHzのクロックを内蔵した12系出してくれないかなぁ… もしくは、T1CKIを別にピンにアサインするか… 16系使えば良いんだろうけど、そこまでIO要らないんだよな。
>>345 大きさが気になるなら表面実装使えばいいじゃまいか
クロック8MHzだと不足で20MHzなら足りる、8ピンPICが使いたいような アプリケーションがどんなものなのか、ちょっと気になる。 ブロック崩しとかかな。それとも、PWM出力で分解能と周波数がもうちょっと 欲しい、とかかな。それだと少々ピンが余ってもどうということもないか・・・
液晶制御基板と液晶パネルの間にPICを挟んで、液晶に渡す同期信号を弄りたいのだわ。 処理を1ライン内(20us程度)で終わらせないといかんので、8MHzだとちょっと厳しい。 まぁピンが余るの気にしないようにすれば16シリーズでなんら問題ないんだが。
>>348 どうしても少ピンにしたいということで考えて、8ピンでも1ピンCLKINにしても
出力4ピン(入力なら5ピン)あるけどダメ?
8pinはシステムクロックとタイマー1クロックが排他になってるからな
>>348 回答ありがとう。
タイミングがシビアな用途だと確かに8MHzで足りないことも多いね。
DIPで小型だと品種が限られるからなぁ。
PIC以外のマイコンだと8ピンDIPでも内蔵OSCでフルスピード出るのもあるけど、
それだと今度はPICほど入手性が良くなかったり高かったり。
353 :
348 :2009/05/19(火) 13:12:42 ID:0JS7f92u
制御基板から出てるデータクロック(約40MHz)を分周してクロックソースにするのが 信号タイミング的に一番最適な気がしたんで、なんとなくdsPICを注文してみた。 4分周して10MHzにしてPLLで8倍にする方向で。
8ビット系の内部クロックは8MHzが最速と思っていたが、16MHzモデルが既にあり、32MHzモデルもまもなく リリースされるようだ。16MHzモデルのデータシートを何気に眺めていたら、Capacitive Sensing Module(8〜16CH)が搭載されている。 タッチキーセンサーを使ったアプリケーションを考えてみようかな。
>>354 PIC18も8ビット系だけど、内蔵8MHzオシレータからPLLで48MHz作れる品種が
2年も前からあるよ。PIC18F87J50ファミリとかが該当。
PLL使わず、固定周波数のオシレータが直接16MHzとか32MHzとかを生成するって
ことなんだろか・・・
嗚呼、4k使い切ってしまった。lite版のhexだと入り切らねぇ どーすれば良いんだ? アセンブリは頭がおかしくなるから使えないし
>>356 HI-TECH社の罠にはまったな。製品版買うとhexファイルを4k→2kの半分にしてくれるよ。
え〜!製品版って、こんなに高いの!
>>356 8kワード品種か、PIC18かdsPICにしてみては。
>>367 liteじゃなきゃ入るんだけどね。バイナリ配布出来ないし。
例えば、liteで入りきらないソースコードが公開されてたとしても、入手した人は何も言わないのは暗黙の了解?
もちろん、評価目的にね。
>>358 AVRの方がピン数多くて、メモリも少なくね?
>>359 16F88専用にガッツリ作ったので、変更は酢
当たり前なのかも知れないけど、if-else文を三項演算子に置き換えたら、バイナリがさらに増えてるし
361 :
774ワット発電中さん :2009/05/21(木) 10:21:01 ID:pfwn8rxB
Cしか使えない頭の方をなんとか汁!
362 :
774ワット発電中さん :2009/05/21(木) 10:32:17 ID:lWi/qdrk
俺なんかアセンブラしか使えんのに・・・ 誰かCを教えてほしいわ。
∧__∧ (`・ω・´) C言語は拙者にとって刀でござる .ノ^ yヽ、 ヽ,,ノ==l ノ / l | """~""""""~"""~"""~"
>>356 コンパイラが最適化しやすいようなソースコードに書き換える
場合によってはアルゴリズムから見直す
>>362 仕事で使ってるんで言語自体は問題ないし、たぶんアセンブラがわかれば
すぐわかるものだけど、ライブラリとかめんどくせー。みんな違うし慣れるまでは
ヘルプ見まくりで。PICに限らんけどね。
>>364 いやだから最適化されないんだって
SFRの初期化順番変えても、その都度バンク切り替えやがるし、ループからベタ書きにしても下手すると4wordしか違わなかったり(逆を言えばベタ書きをループにしても、下手するとその程度)
>>360 当初の目的からずれるだろうけど、もしもバイナリだけでなくソースの公開まで
考えているんだとすれば、一足先に今のソースを公開して、Liteで入りきるまで
ソース最適化できるかどうか呼びかけてみるってのはどうだろうw
>>366 Lite版のVersionは?
旧版だとある程度最適化するのもあるんじゃない?
俺は開発、これからだけど
色々と調べて、PL4で行こうと思ってるんだが。
>>367 削れる所は沢山あるので(設定値をメニューから変更させずに、ハードコーディングにするとか)
もし、公開するとしてもハッカーの皆さんの助力に頼る必要はあまり無いかもしれません。
それより、世の中怖い人が多いので、評価版の悪用(?)を前提にコードを公開して攻撃される方が怖いですわ。
>>368 PL5っす。
私も今回が初めてなんで、ひょっとしたら良い事聞いたかも。
でもPL4だかPL3って致命的なバグ持ちって何処かで見た覚えが…(勘違いだったらスマタ)
こうして目的が古いマイコンを無理して使う事にすり替わっていくのでありましたとさ。
ETHERNET PHY 内蔵の安い MCU 探してるんだけど、やはり PIC シリーズが良さそうですか?評判が聞けると有り難いので す。要求としては軽いデータを別のマイコン(IPスタックは載らな い)からIPパケットに載せて送るだけです。 近い価格帯では、 -- ASIX AX110xx (ちょっと高いけどパフォーマンスは良さげ) -- WIZnet W3150/W5100 (.kr なんで却下) あたりのようです。 他にも SH2 とか ColdFire の PHY 付きなどが見つかりますが、 要求に対して高機能&高価なんで選外。
PICスレなのにさらに脱線
PICシリーズが良さそうですね。
>>372-373 PIC スレで聞く事自体、まぁそうなのかもしれんのだが、
やたら目にする割に私の周りで使ってる例を聞かないの
で聞いてみたんです。
(AVRとルネサスばっかり目にするもんで・・・)
よくみたら売り物のコンパイラも有るし、automotive グレー
ドのチップも出してるし、気のせいなのだろう。きっと。
>>374 まあ、仕事はルネサスで組めが多いかなあ。 親会社と打ち合わせして
PICの話だしたら、「ん?何、PICって」とか言われたしw
日立系の人なのでは? 未だに認定部品しか使っちゃダメ なのかな?日立
>>376 日立とは決まってないけど、NEC、日立、東芝、富士通とにかく保守的なのは
仕方がない。
380 :
371 :2009/05/23(土) 08:52:09 ID:4bG+EoTD
>>375-379 情報、ありがとうございます。
>375-377
海外(東南アジア)の連中は AVR 使いたがって、国内の
お客さんはルネが多いって感じですね。秋月なんかの店
頭とのギャップに萌えって訳じゃないですけど、隣の人が
使ってないので使わないみたいな空気を感じます。
やっぱり細かい使い勝手とか動きは、実績の有るマイコン
がいいですから仕方無しの面も有るのでしょう。
>378 スレチながら情報ありがとう御座います。要求次第です
が面白い存在ですね。
>379 結局これかなって感じですね。バリエーションも有りま
すし、入手性も問題なさそうですし。
PICKIT3でエミューレーションしたいので教えてください。 目的のデバイスはPIC16F631です。 PICKIT3から配線を行い、MPLABでプログラミング(書き込み) できることを確認しました。 だが、シミュレーターにPICKIT3を選択し、[RUN]をおこうなうと、以下のようなエラーが出ます。 PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. MCLRは、Vddから、4.7kでプルアップしています。 CONFIG設定は #pragma DATA _CONFIG, _CP_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO です。 何が問題でしょうか?
382 :
381 :2009/05/24(日) 16:05:45 ID:lr2M27ZL
自己解決 ちょっとおばかなミスなので詳細は略
383 :
381 :2009/05/24(日) 16:34:42 ID:lr2M27ZL
一応書いておく、デバッグ機能がないものを買ってしまった。orz
20pin以下のは ICD Headerが要るんだよな。 18pinで16F88/818/819とか例外もあるけど
PICKITでなくて、ICDにすればよかったかなと思うが そんな金ねーよ。
>>386 つまりは、ICD Headerを使えばデバッグ機能なしのPICでも
オンチップデバッグができる、ということですか?
よくわからないが、規模のでかいPIC(ICD Header)に、小さいPICを再現する・・ みたいな?違うかな・・
みんなありがとう。 今回は予算の都合で、デバッグにはどっかのピンを1ビット使うことにするよ。 こんなのだったら、pickit買う必要もなかったのに・・・
>>391 まぁ・・・そう云わず・・・
統合環境(IDE)から更新build→即ICSP出来るだけでも便利だから
最後に1点教えてください。 CONFIGを 内蔵オシレーターモードで MCLRE=OFF (/MCLRをI/Oとして使う) で書き込んで、電源を入れると動作開始までに、5秒くらいかかったりしませんか? (入力ピンをN.C.にしてあるのでこれが原因かな?)
395 :
394 :2009/05/24(日) 20:45:15 ID:lr2M27ZL
あーやっぱり、N.C.はまずいみたいだね。 今日はサンキュ>ALL さて明日からまた仕事だよ。
pic24Fのアセンブラの命令セットのドキュメントってどこにあるのでしょうか?
>>396 pic24f family reference manual section 2 でググる
(そのままだけど)
12Fを逆挿しして5番ピン死亡… とりあえず、5番ピンをニッパーで落としてパーツ入れに戻した。
本当にそれだけならいいが......
400 :
774ワット発電中さん :2009/05/29(金) 21:30:00 ID:GzeXn5Dk
こころかぁ(遠い目) あの時サンフランシスコに置いてきちゃったしなぁ
402 :
774ワット発電中さん :2009/05/29(金) 21:58:42 ID:SzPPOjFe
逆挿しでも死なないように電流制限かければいいんじゃね? とふと思うけどめんどくさいい、くさくないけどウン○ついてる。
>>398 逆挿し激熱直後: 臨死
数時間後: 復活(A/Dは死亡)
数週間後: 書き込み不安定
数ヵ月後: 脳死
こんな感じ。 うちの12F675
まるで放射能浴びたみたいだなぁ
逆挿しは、足を曲げて廃棄が一番いい。思い切り良く。 「あ、大丈夫だった!」とかいって保存希望すると 後で大変だ。
RA4にハマった…
407 :
774ワット発電中さん :2009/05/30(土) 15:16:13 ID:UgBXavao
おまいらなんでそんなに逆挿しするんだ? 注意力と慎重さが足りない
>>407 数えるほどしかないけど、18pinに慣れてると8pin間違える。
今まで壊したのは8pinばっかり。注意力ないのは反省している。
>>408 電源の出力電流しぼって、最大でも75mAくらいしか流れないように
していれば、なんとかなるかもしれない。
俺はよくこれで助かる
シリアルの書き込み器で逆挿しやったけど無事だった。
>>406 いくらがんばってもLEDが点かない、とか?
オープンドレンか
内蔵発振モード&NOMCLR設定でAKI-PIC2のゼロプレッシャーソケットにPICをセットして書き込んだら 直後にPICが動作しないかビクビクしてるんだが、大丈夫?
AVR のfuse bitみたいの想像しちゃってるのか
>>412 書き込みソフト側で明示的にVDDを与えればPICが動作する。
そうでなければ、読み書き実行までVDDが与えられないのでPICが動作することはない。
415 :
412 :2009/05/30(土) 22:07:03 ID:O2JmjtZF
>>414 テスタで確認してみたら、USBの+5VとVDDが直結されてるみたいなんだ・・・
>>415 なるほど。それだと、書き込み時以外はPICが動作してることになるね。
PICkit2と同じ回路でターゲットPICと接続されているのであれば問題はないんだが、
AKI-PIC2で問題ないかどうかはAKI-PIC2の回路図がないと判断できないなぁ。
>>412 何にビクビクしているのか知らないが、その位の事AKI-PIC2はフェイルセーフに設計した
あると思う。AKI-PIC2はこわれないと思う。
心配なら、気になる小さなテストコードを書いて試してみたら?
それに、対象のPICは書き込みが終わったらAKI-PIC2のゼロプレッシャーソケットから
はずして、ターゲットボードに指し直すんでしょ?何にビクビクしてんの?
418 :
412 :2009/05/30(土) 22:54:36 ID:O2JmjtZF
>>416 レスサンクス。
今手元に無いんで明日改めて確認してみる。
>>417 たとえばPGD,PGCにあたるピンをHIGHにするプログラムを書き込んだら
大電流が流れてPICが破壊されるんじゃないかとビクビクしてた。言葉足らずでスマソ。
>>415 ってーことは5V以外のPICは書き込みできない?
>>418 PICKit2と同じ回路なら大電流は流れないように出来てる。
電源部が違うってことはその辺も違ったりするのだろうか。
421 :
412 :2009/05/31(日) 01:00:53 ID:3BC3smgh
>>419 >5V以外のPICに書き込み
ゼロプレッシャーで書き込みできるPICは16F,18Fファミリー限定らしいから
5V以外非対応とも言えるかも。
電源部の確認はいい加減にやってしまったから再確認してみる。
>大電流が流れないように
PICKit2ユーザガイドの回路図にある33Ω抵抗だと思えばおk?
422 :
412 :2009/05/31(日) 01:08:45 ID:3BC3smgh
>>420 T側にセットしたと思う。…改めて見るとT側は+5V USBだと書いてあるな。
つまり、ゼロプレッシャーは+5V USBに直接接続してあるのだろうか。
とりあえずサンクス。
シリコンハウスのブログにPicKit3 ICD3出てる
425 :
412 :2009/05/31(日) 16:10:57 ID:HFsPKKza
やはりUSBの5Vに直結されているっぽい。 試しに16F648Aに内蔵発振,NOMCLR設定で全ポートをHIGHにするプログラムを書き込んで ゼロプレッシャーにセットしたまま、各ピンの電圧を測ってみたら、RA1,RA4,RA5以外HIGHだった。 RA4はオープンドレイン,RA5は入力専用だからLOWでいいんだが、RA1はHIGHになるはず。 確認してみると、RA1がべたGNDに,RA2がVDDに直接接続されてた・・・orz 内蔵発振を使うときはNOMCLRで書き込むなってことなんだろか。
426 :
412 :2009/05/31(日) 16:12:16 ID:HFsPKKza
とりあえずHEX貼っとく :1000000000308A000428000084011F308305073077 :100010009F008316050883121F080C13003065002B :0C0020006600FF30850086001428630095 :02400E00503F21 :00000001FF ;PIC16F648A
書込みソフトのPICkit 2 Programmerの「VDD PICkit 2」の□ Onのチェックをはずして おけば、プログラム書込み後にVDDは供給されないんじゃない?
428 :
412 :2009/05/31(日) 18:42:03 ID:HFsPKKza
>>427 試してみたけどゼロプレッシャーの方は5Vのままだった。
ICSPのコネクタの方は連動してくれたんだが・・・
>>428 そこまで確認済みなら、もう秋月に確認するだな。
メール質問すると返答が返ってくるよ。
共立でPickit3 見たけど、クリアレッドに黒ライン、まるでEva02号機
432 :
774ワット発電中さん :2009/06/01(月) 07:30:45 ID:sfrMkV8/
マイクロチップのHPでpicのセレクションガイドみたいなってURLってどこだっけ? 前々スレあたりで出てた気がするけど失念してしまった。
トップページ⇒Productsメニュー(左上)の中のProduct Selection Tools⇒MAPS のことだろうか?
434 :
774ワット発電中さん :2009/06/01(月) 08:21:46 ID:sfrMkV8/
>>433 違うけど目的は達成できました。
ありがとう。
435 :
774ワット発電中さん :2009/06/01(月) 14:57:16 ID:EoASL0Go
こんにちは。質問させてください。 PICのメモリ(RAM)が512byteのものに、700byteくらいの変数をとるとエラーって出ます? 今、自分では700byteくらいとったつもりなのですが、エラーがでません。 環境は・・・ MPLAB v8.30 CCS C v4.057 を使用しています。 よろしくお願い致します。
>>434 目的達成したURLをここにも出しといてくれ。
そうすれば、次に同じ疑問に突き当たった人の役に立つ。
>>435 変数領域が512バイト使用可能のところ、700バイト必要なのであればエラーになる。
使用可能な512バイトで収まるのであればエラーにならない。
エラーが出なかったのなら、収まったんだろう。
>>435 一般的なCコンパイラの仕様で参考にならんかったらすまんが
ビットがあふれるほどのとんでもない数値でない限りコンパイルは
とおって、実行時におかしくなるものがPCなどでも一般的です。
配列もコンパイル時点で添字が明らかにおかしいものでも
実行して暴走しないとわかりません。それがCだと思います。
>>435 コンパイル後にRAM使用量とかでると思うけど。
CCS Cだとそういうのでないの?
441 :
774ワット発電中さん :2009/06/01(月) 17:36:15 ID:EoASL0Go
ありがとうございます。 RAMに関しては、足りていました。 int型を2byteで計算していましたが、CCS Cでは1byteでした。。。 ではでは、コンパイルしたときに、画面上にROMが100%と赤い帯で表示されますが、 コンパイルは通り、Output画面には30%と出ます。 自分としてもそこまでたくさん記述していないつもりですが、 100%と一瞬表示されるものは無視して良いのでしょうか?
442 :
774ワット発電中さん :2009/06/01(月) 19:32:31 ID:XnlnUnqV
誰か教えてください。 オプティマイズPIC24USB使ってるのですが、 I/OのRB15のみデジタル出力設定にすると1.5〜1.6V位に張り付いてしまいます。 AD1PCFG = 0; ODCB = 0;にしてあり、RB0〜RB14は問題なく使えています。 お願いします。
またエスパーへの依頼か
>>443 隣のピンとショートしているのに100won
>>443 ラッピングで組みなおしなさい。その方が近道。
ばれたか。 でもさ、初心者のハンダ不良ってめっちゃ多いじゃん。 ラッピングなら確実だと思ってさ。
449 :
774ワット発電中さん :2009/06/03(水) 10:54:40 ID:CZb+oB+d
ちょっとお知恵を拝借させて下さい pic24fで途中でリセットがかかってしまうプログラムのデバックに苦労しています。 なんとかアドレスエラーでトラップがかかってることまでは分かったのですが どこでかかってるのか調べる方法が分かりません。 アドレスエラーの割り込みルーチンに入った時点でのスタックを調べればよいのでは、と思い ICD2でFile Registersを開いてスタック(0x800〜)を見てみたのですが、RRRRR…で値が 表示されません。 他に何か調べる方法はないでしょうか?
>>449 現象の発生頻度が低いと辛いが、頻度が高いのであれば、外部からの入力
(GPIO入力等)なしでも現象が発生するようにソースを改変した上で
SIMに掛けて、現象発生時の実行トレースログを見てみては。
>>449 調べる前に確認するべき点を全部やった?
・WDTの設定
・電源電圧の変動。
:BORの設定確認
・リセットがかかる現象についての洗い出し。
:発生するパターンの抽出。
:起動から一定時間経過後?
・電源電圧とクロック数の確認。
本当にリセットがかかっているのか確認した?
暴走してリセットが発生しているように見える時もあるよ。
>>445 なんだよその超自信のなさw
ほれ、お前の勝ちだ。円でやるから釣りくれ。
つI
100wonて今何円?
>>449 RRRR表示はICD2デバッグ用予約領域だからでしょう。
先ずworkとスタック領域とかをずらせて設定し再buildしませう。
455 :
264 :2009/06/03(水) 22:56:33 ID:g/qhgfqX
お久しぶり。
>>264 だよ。
結局、壊れたdsPICはあきらめた。
そして、なんとPICkit2を購入。
初の最初からのプログラミング。
ただ、参考にしている本がCCSコンパイラを使ってるんだけど、
俺が使ってるのはHI-TECのコンパイラ。
プログラム書き込んだんだところ、
PICkit2は正常に書き込めたってメッセがでたんだけど、
動作を見てみるとLEDが点灯しない。
ポートを0Vか5Vにしたつもりが3.5Vほどに。。。
なんでだろう。。
ヘッダーファイルはインクルードしてるし、コンパイルも通ってるんだけどね。
コンパイルを通ってからが本当のたたかいさ
同じ20MHzで、セラロックより、水晶のほうが低電圧でも稼動できるようだ。 それ以来簡単なものでもセラロックを買うのをやめて、水晶に切り替えた。
458 :
774ワット発電中さん :2009/06/03(水) 23:52:10 ID:VWBWjxBe
出荷数量、売り上げNO1 8ビットマイコン PIC PIC PIC
459 :
264 :2009/06/04(木) 00:31:22 ID:Qu+nGnYh
PIC始めた頃の 「あ、○○やるのわすれてた」とか 「△△っていうことをやっとかなきゃいけなかっただ〜」とか あればおしえてちょ〜。
460 :
774ワット発電中さん :2009/06/04(木) 00:39:04 ID:ly7ordNL
>>459 PIC始めた頃の「xx忘れてた」とか言う内容を忘れた。
「あー、データシートの細かい注を読むの忘れてた」って失敗が多いな。
手順を追って必要な設定をきちんとやること・・かな。
463 :
近藤@日湘 :2009/06/04(木) 01:56:58 ID:+UrM1xUn
>455 わからないことがあるときは、まずゴーグル先生で調べましょう。 大抵のことは教えてくれます。(^o^)
「英語読めないの忘れてた」ってのはあったわ。
>>264 PICは、進化するデバイスだから、ターゲットPICの最新データーシートを
よく読むことが大切だと思います。良く出てくる言葉は、
1. え? この設定しなくていいんだ。
2. レジスタのビットの名前違うじゃん
3. え? バンク切り替えても、ここは変わらずなのか?
揚げたら霧がないのでやめます
コンパレーター切るの忘れてた。
そうだね。初心者はデジタルI/Oに設定しないで、LEDが光りません みたいなの多いかもね。そういうこともデータシートには、設定 プログラムを示して詳しく解説してるけど、なぜか一番読まなければ いけない初心者が、データシートを読まないという暴挙に出るんだよね。
>>468 英語だ、うわぁ、いやだ〜
ってのがあるかもしれんが俺も英語なんか苦手だけどデータシートは
日本語のほうが読みにくいと思う。
同じ英語でもデーターシートの英語は、決まった単語しか 出てこないから楽っていうか、読みやすいね。
>>467 FAQのTOP10に入ると思うw というか orz
PIC16F84でよく質問にだされたRA4にHi出力がでないのがあったね。
>>471 A/D_OFFしていなくて出力されないのは最近のデバイスかな?
A/D offしなくても殆どのPICで出力できるよ。 ただ BCF/BSF PORTx の結果が PORT readに影響されるけど
A/DをOFFしないとアッチチになるでしょ。あれは、まずいよ。 てか、排他的じゃない設計って許せるのかな。
>A/DをOFFしないとアッチチになるでしょ。あれは、まずいよ。 何のこと云ってんの?
476 :
264 :2009/06/05(金) 00:37:25 ID:ZAU75P+T
I/Oポートの初期化ってどうやるの??? データシートには初期化しろってかいてあるけど。
>>476 >>264 過去の質問は読んだけど一般的な事柄で答えを記述するよ。
I/O ポート pin H でモーターがフル回転するハードウエアの設計になっているとする。
/MCLR 有効から I/Oポートの TRIS 初期化までは入力モードに戻される。 → 出力に初期化設定する。
ハードウエアで pull UP されているとする。 → 出力を H → L にしてやらないとモーターはフル回転してしまう。
緊急停止ボタンが /MCLR に OR 接続されていて、押し続けられるとリセットで H のまま。
押し続けられる事を想定しておらず、モーターがフル回転で人が死亡する事もありうる。
別に初期化しなくても問題無い場合もある、LED 等だとリセット時にちょこっと点灯しても文句は言われないだろうねぇ。
データーシートにはポート毎の初期化サンプル・プログラムは無かったのかな?
アナログポートや UART・I2C・SPI兼用ポート等だと初期化手順が異なるよ。
だからまずデーターシートを嫁と言われるんだよね。
>>477 そういう場合に常識ある設計者ならpull DOWNするんじゃね?
常識の無い設計者がいたんだよね。 んでもって自分のハードウエアの設計ミスをソフトウエアのせいにする。 アナログデバイスの ADCでリセット端子が無い物が何らかのトラブルで誤動作。 ソフトウエアが 8bitの命令転送時に ADCのコマンド表に無い命令を送るから反応しなくなるんだからソフトを直せと言い張る。 KL5C80C20 だと CPU クロックが停止すると CTC3のウオッチドグが効かなくなるのもソフトが悪いと言い張る。 このときはバグファインダーのデバッグ機能も無反応になってしまう。 共同でプログラムをすると自分のバグを人のせいにする。 8bit の集合抵抗で他の ポート bit もまとめてプルアップして済ませておいて、ソフトですぐに L にしとけと命令されただけだよ。 もう会社辞めたから関係ねーけどね。
いまだにTTLレベル入力デバイスが多いんだよな。TTLレベル入力だとLレベルより Hレベルのほうが雑音余裕度が4倍近くあるから、なるべくプルアップが使えるように 回路を考えたいところ。
某工作系のサイトとか見ると「使ってないポートは入力に」って書いてあるんだけど、その人のサンプルコードとか見ると殆ど出力のまんまなんだけどなんか意味あるの?
俺は不定値が嫌いだから出力にするなあ…
>>481 つーか、デフォルトが入力だから出力のまんまっていうとあえて
出力にしたってことだよね。 まあポリシーと結果が食い違ってる
ってだけで、意味はないだろうな。
>>482 ,483
thx
なるほど、暗黙のルール的な物は無いんですかね
>デフォルトが入力だから出力のまんまっていうとあえて
デフォルトってのがPIC共通の事か分からないけど(初心者なんてスマソ)
16F88なんかの場合下記みたいな事してるんですよね
TRISA = 0b00001111; // PortA初期化
TRISB = 0; // PortB初期化 (未使用)
>>484 1 未使用 PORT を 出力にしておけばオープンでも無問題、しかし Vdd か GND にショートすると PIC が壊れる可能性がある。
2 未使用 PORT を 入力にしておけば Vdd か GND にショートしても無問題、しかしオープンにするとラッチアップで PIC が壊れる可能性がある。
3 未使用 PORT を 抵抗で pull UP または pull DOWN しておけば入力・出力どちらにしても無問題。(出力にした場合は1に注意。)
どれを 選ぶかは、あなた次第だよ。
>>484 その命令が実行される前はオール入力になってる。
A/Dやコンパレータ付きだと、さらにアナログになってる。
それが最初のうちよくはまる罠だし。
で、未使用ならなおさら1命令でも減らすために省くということも
考えられる。 その例で言うと TRISB=0 は不要。
でも、入力で不定の状態を嫌う人もいる。 どれが間違っている
ってことはないと思うよ。
>>481 EMI対策じゃねぇ?
入力にするより、L出力にした方が放射ノイズが減ることが多いらしい。
実際に変えて測定したことはないけど。
俺はプルアップ付きポートはinput、プルアップないポートはoutputにしてる。 オープンはまずいし、短絡を防ぐために可能な限り出力は避ける。
まあショートさせるような実装じゃなければoutputで問題ないんじゃね? 例えば初期化ぜずアナログinputで放置だとスリープでも消費電力も増えるし。 とはいってもバッテリー駆動でもなきゃ問題にならないレベルだけど。
>>490 そうだよね。
最近は電源確保できる用途ではアホかと思うような努力をしているケースもあるが
あれが全部電池駆動かどうかと疑問に思うときがある。
川鉄のマイコンってまだ流行ってるのかな。
C30でライブラリファイルを作る方法を教えて。 pic30-gcc --help で一通りのオプションを見たが見当たらない。 \binの下にあるいくつかのコマンドも見てみたがイマイチ良く分からん。
>>492 Z80 の 10倍早いと上司に騙されてプログラムしたよ。(確かに NOP は 10倍早い)
他の命令を含めると 2〜3倍程度だった UART 115.2Kbps の受信をするとメインルーチンの実行が停止する。
PIC18F シリーズの方が 40MHz で実際に 10倍早い 1命令1クロックなので暗算で実行時間も計算できる。
外付けの ROM RAM も不要ではるかに便利。
dsPIC や PIC24 と比べると、川鉄のマイコンって今更使う気にならないよね。
>>494 眠くて頭朦朧としているだろう。
しっかり寝て現実世界へ戻って来い。
>PIC18F シリーズの方が 40MHz で実際に 10倍早い 1命令1クロックなので暗算で実行時間も計算できる。
AVRと勘違いしていないか?
>>495 勘違いはしていないが
あなたに出来るものなら PIC18F452 で FFT 解析を行って 50mSEC の DTMF 信号を取り出せるかな?
もちろんそれ以外の仕事もこなしてる。↑はバックグラウンド処理で常時解析してる。
PIC18C452 の頃だから 6年ぐらい前の事だがね。
もうソフトウエアの仕事に戻るつもりは無いんで別にどーでもいい事だけどね。
>>496 PIC18Fは1命令4クロックですぞ。
Z80 も PIC18F と同じく「1命令が4クロック」 「PIC18F 40MHz が Z80 4MHz より 10倍速い」というのはだけは合っている
>Z80 も PIC18F と同じく「1命令が4クロック」 えっ?えっ?えっ?
NOPのことなんだろw
501 :
264 :2009/06/06(土) 11:57:17 ID:+Z8o5bIu
あかんわ〜〜。 PIC16F84AとPICkit2を説明書どおりにつないでるし、 自作のプログラムとネットで紹介されている実績ありプログラムで ためしてるんやけど、うまくいかんわ〜。 PICkit2のアプリでは書き込み成功!! みたいなこというてるねんけどね。 LEDが点灯しないのよ。 Vcc⇒抵抗⇒LED⇒GND ならLED点灯するからLEDとかはちゃんとなってるはず、 Vcc⇒抵抗⇒LED⇒RB1 ならLEDが点灯しないのはどうして〜〜。 #include "pic.h" main(void) { TRISB=0x00; while(1) { PORTB=0x00; } }
>>496 >勘違いはしていないが
>あなたに出来るものなら
うっわ〜恥ずかしいヤツ
テスターで当たってRB1がLになっているか確かめるんだ!
>>501 その接続はオープンドレインポートへのつなぎ方。
16F84AのRB1は普通のプッシュプルのポートだから、LEDのつなぎ方を
直すか、オープンドレインポートのRA4を使うかしなきゃ駄目だろ。
>>264 の時にもさんざん指摘されていたが、データシートの読み方とか
回路の組み方の基礎から勉強し直した方が良いな。
>>505 おぃおぃ、君もLEDのつなぎ方を勉強し直した方が良いな。
Configは設定してないのか
>>501 > ならLEDが点灯しないのはどうして〜〜。
あなたの問題解決能力が試されているわけだから、ここは気合を入れて
立ち向かいましょう。
まず、上にもあるように、PICのポートの状態をテスターを使って調べましょう
落ちてますか? 落ちていないなら、リセットピンの状態など順に調べていきましょう。
つづく
509 :
264 :2009/06/06(土) 13:03:16 ID:+Z8o5bIu
>>503 clock発振??
clock発振とはなんだろう?
発振してたほうがいい??してないほうがいい??
>>504 テスターでは調べたんだけど、
RB1は3.7Vくらいかな〜〜〜。。
オープンになったピンは0Vになってるんだけど。。
LEDとつないだところは3.7Vとかにひきあげられてるんだよ。
>>505 オープンドレインポートって何かわからないから、
とりあえず、ネットで調べたらわかりそうだし、
勉強しておくわ。
LEDのつなぎ方どうしたらいい??
RA4を使う気はなくて、RB0〜3を利用したいのよ。
とりあえず、データシートは片っ端から読んでるところだよ。
一応、自分に必要な(I/Oポートとか)については読んでるつもりなんだけど。。;
色々読まないといけないものが多くて、
全然進まないんだけど、地道に読んでるよ。
507>>
Config ってのはWDTとかHSとかその辺???
試したりしてみたけど、そこを直しても解決はしなかったので
別の部分かも。。
ということは、ピンがローに落ちてないのだから、WDTによるリセットが かかって、ポートがしょっちゅうリセットされている。などが考え られるね。 もう一度、コンフィギュレーションのWDTビットがクリアされていないか 確認してください。ねんのためにね。つづく
511 :
264 :2009/06/06(土) 13:47:44 ID:+Z8o5bIu
>>510 サンクス。
WDTを確認するわ。
WDTビットがクリアされているかどうかはどこをみればいいんかな〜〜?
テスターで見れる???
あと、この状態で電源供給しててマイコンがつぶれることある??
今フィ具ビットは、プログラムを書き込むときに上書きされるわけだが、 それも知らないのか? じゃあ、すべての作業を停止して休暇をとった 方がいいかもしれない。家を焼くよマジで。
513 :
264 :2009/06/06(土) 14:13:19 ID:+Z8o5bIu
休暇をとらずに済む方法で教えてもらえないか??
>>501 これ16F84Aの日本語データシート(124ページ) どうぞ。
http://www.madlabo.com/mad/gid/pdf/pic16f84j.pdf 質問:15番ピンと16番ピンにはセラロックか水晶をつないでる?
16F84Aで、PICC liteで、PICkit2使用だよね?
たしか__CONFIG();の設定はこんな風に書くんじゃなかったっけ?
#include "pic.h"
__CONFIG(CPDIS & PWRTEN & WDTDIS & HSOSC);
main(void) {
TRISB=0x00;
while(1) {
PORTB=0x00;
}
}
抵抗とLEDの接続はこれでいいんじゃないかなあ。
Vcc⇒抵抗⇒LED⇒RB1
質問:抵抗は何オーム使ってる?
>>501 > 自作のプログラムとネットで紹介されている実績ありプログラムで
ネットで紹介されている実績ありプログラムのURLをここに示せ
まさかとは思うけどLEDに極性があることは知ってるよね?
>>513 なんらかの原因でRB0が出力設定されていない
リセットが掛かりっぱなしなんじゃないのか?
リセットが内部なのか外部なのかは色々試して調べてみ
16F84AのRB0は吸出しでも吸い込みでも10mA程度は電流流せるので、
>>505 は間違い
CLOCK回路は何つかってる?
CLOCK発振がしているかどうかを確認しろ
CLOCKが発振して初めてPICはプログラムコードを実行する
CLOCKが発振していなければ、RB0が出力設定になる事はない
(何も設定しないと、入力設定)
MCLRピンが5Vになってるか?
PICKIT2と16F84Aとの接続は下記資料のChapter 3.FIGURE 3-1
↓
http://ww1.microchip.com/downloads/en/DeviceDoc/51553B.pdf と、まあここまで確認できたら後はCONFIG設定の確認だ
>>516 > まさかとは思うけどLEDに極性があることは知ってるよね?
>>501 で
> Vcc⇒抵抗⇒LED⇒GND
> ならLED点灯するからLEDとかはちゃんとなってるはず、
とちゃんとLED点灯させせいるから、LEDに極性があることは知っていると思われ。
そんなの偶然合ってただけかもしれない クロックも知らないような人だからアテにはできない
520 :
264 :2009/06/06(土) 15:25:29 ID:+Z8o5bIu
>>さすがにまさかだよ それはすまんかった、健闘を祈る。
Step by step でやらないとどこがおかしいかわからんだろ
524 :
264 :2009/06/06(土) 16:43:32 ID:+Z8o5bIu
526 :
264 :2009/06/06(土) 17:57:09 ID:+Z8o5bIu
1kオームなら持ってるから並列につなげばとりあえず500になるかな。 もしくは100オームじゃだめ??? 壊れる?? 回答1:OSC1とOSC2はコンデンサ内臓のセラミック発信子(CSTLS20M0X51) の両端の足を接続している。 真ん中はGNDに持っていく。 回答2:MCLRは書き込み時はPICkit2の1ピン、 その線はVCCの線と10kオームで接続。 動作確認時はVCCと直接接続。 回答3:電源はUSBの5V、VCCとGNDの間は5.08Vだった。 これは1週間前にも計測したが同じ数値だった。
527 :
264 :2009/06/06(土) 18:08:41 ID:+Z8o5bIu
ちなみに色々しらべてみた。 Vcc-5.08V⇒5.08V-抵抗-1.6V⇒1.6V-LED-0V⇒GND(0V) これは当然ね。 Vcc-5.08V⇒5.08V-抵抗-5.08V⇒5.08V-LED-3.7V⇒3.7V-BR1(≠0V) 10kオームなのに電圧低下なし?? ってことはBR1の入力抵抗無限大???それとも不定??
>>526 1kオーム並列で500オームが良いと思う。
Vcc⇒抵抗(500オーム)⇒LED⇒RB1
> もしくは100オームじゃだめ???
> 壊れる??
×Vcc⇒抵抗(100オーム)⇒LED⇒RB1
は壊れるかも知れないのでやめておこう。
ハードの方は問題ない感じと思う。
・電源:USBで5.08V
・OSC1とOSC2はセラロック20MHz
・Vcc⇒抵抗(500オーム)⇒LED⇒RB1
・MCLR−Vcc接続(動作確認時)
(動作確認時もMCLR-抵抗(10kオーム)-Vccのままで良いと思う。)
★もう一息でLEDは点灯すると思う。
質問:プログラム書込み時のPICkit2との接続は
PICkit2−16F84A
1−MCLR
2−Vcc
3−GND
4−RB7(PGD)
5−RB6(PGC)
で間違いないか?
もう一度、MPLABのPICC liteでプロジェクトを作る所の一番最初から丁寧に
やって、プログラムを入力、コンパイル、PICkit2で16F84Aのプログラムを書込み
動かしてみたらどうなる?
意気込みは買うけど、Q5cky76zのレスを見てると、ちょっとアレな気もする。 だべるのが目的ならいいが、真面目に進む気なら、264はもう少し自分で考えた方が 得るものは大きいのではないか。
>>496 今何の仕事しているのかわからんがソフトウェアの仕事(プログラマーそれともSE?)止めて正解だね。
記憶力ももうだめみたいだし(笑)
1命令1−2cyclesで実行されるのが正解ね。
私はそんなに能力ないから250KHzの16ビットパラレルデータサンプリングしかできなかった。
>>527 LED光らない=電流0なんだから電圧降下するわけがない。
ポートの電圧が0Vでも5Vでもないってことはinputのまま、つまりプログラムが実行されていない。
514氏のCONFIGの設定は書いたかい?
テスターに周波数レンジがあればOSC2とGNDに当ててクロックの周波数が出ているか見てみ。
>>529 のいう事ももっともだと思う。甘やかし過ぎの感がある。
でも264は自分で努力出来る感があるので付き合っている。
最初の一歩(LEDを点灯させる)だけ出来れば、先は自分でやって行くのでは?
264は5/16から、トラ技の付録dsPIC30F2012壊してから、PICkit2と16F84Aを購入して
コツコツとがんばってる様だし。応援してる。
>>498 >Z80 も PIC18F と同じく「1命令が4クロック」
Z80は1マシンサイクルが4クロック、最速命令(NOPやAcc・レジスタ間演算)が1マシンサイクル(=4クロック)
だったw
>>527 コンパイルオプションで16F84Aじゃない別のPicを指定してるってことはないよね?
535 :
264 :2009/06/06(土) 21:13:05 ID:+Z8o5bIu
まず
>>526 回答:間違いない。
これは、毎回注意している。
>>531 たしかにいうとおりかもしれない。
(多分、そうだ。)
ただ、その確認方法・確認の知識がない分確認もできなければ、
対策も立てられないのが現状で、
ここ2週間、図書館行ったり、ネット探したり、してるんだけど、
なかなか解決策がみつからない。
514氏のCONFIGの設定は書いたよ。
結果は変わらずだった。
テスターはためしてみたところ0Hzだった。
ってことはそういうことなんか。。。
>>532 もうしわけない。
たしかに、俺も甘えすぎてるんかもしれん。
でも、532がいうてくれてるように、
ずっと、色んなことためしたりして、自分でなんとかしようとしてる。
それがわかってくれただけでも532には感謝だ。
532の言うように自分で進むために、
その取っ掛かりに関しては甘えさせてもらうつもりだ。
ブッチャケ、もともとマイコン触りだしたのはLEDを点灯させたいとかじゃないし、
この、PIC16F84Aは自分がもともと目的としてることはできない代物だ。
でも、いろんな書籍を読んで、
これが最初の教材なんだなって自分で思って
購入・苦戦してる。
ホントに楽しようと思ったら、
dsPIC30F4012を買って(買って入るんだけど)、
誰かにプログラムと回路図完全に作ってもらうのが
楽なんだろうな〜〜って、思う。
だから、532をはじめとしてここで色々教えてくれるひとは
もう少し、つきあってほしいな〜。
536 :
264 :2009/06/06(土) 21:22:05 ID:+Z8o5bIu
>>528 回答:間違いないよ。
ここは毎回注意してるよ。
とりあえず、何度もためしてみるね。
>>531 531のいうとおりかも。
テスターでも0Hzってなるし。
誰かが言うてたように、WDTが怪しいと思ったりもするけど、
どうしたらいいかわからんねんな〜。
514氏のCONFIGの設定は書いたけど、結果は変わらなかったよ。
537 :
264 :2009/06/06(土) 21:24:32 ID:+Z8o5bIu
>>534 それはないぜ。
PICCのヘッダーはPIC1684ってやつで、PIC16○84系の共通のだったよ。
はるか昔に作った サンプル発見 これでやってみな at 8Mhzで 一秒ごとにPortBが on/off するはず :100000000428FF3FFF3FFF3F031383168601FF30A5 :10001000831286000B30CC00FF30CB00FF30CA00CB :10002000CC0B13281A28CB0B16281928CA0B162814 :10003000132810283330CB00FF30CA00CB0B212807 :100040002428CA0B21281E288830CA00CA0B26285B :1000500086010B30CC00FF30CB00FF30CA00CC0B48 :1000600032283928CB0B35283828CA0B35283228B6 :100070002F283330CB00FF30CA00CB0B4028432859 :10008000CA0B40283D288830CA00CA0B45280728DB :100090004828FF3FFF3FFF3FFF3FFF3FFF3FFF3F3E :02400E00FA3F77 :00000001FF
>>537 クロックが確認できないとちょっとつらいけど、
リセット端子は10kでプルアップしてあるとして、電源を入れたあとピンセットかなにかで
リセット端子をGNDに一瞬落してみるてのはどお?
何かブレッドボードでやってるような印象を受けるんだが、 そのせいで発振子が、 ・接触不良などでうまく繋がってない ・ブレッドボード内部の接続を誤解してるとかで意図しないところにも繋がっている ・配線の引き回しが長いなどで正常に発振しない のではないか?
結局、発振してないっていうことなのかな。もう一度そのあたりを チェックだね。ハンダ付けなら、再度鏝を当てて食んだ不良を解消 するとか。
組み立てた様子の写真を晒すとか
>>533 >Z80は1マシンサイクルが4クロック
もはやそこからして間違ってるけど・・・
Z80の1マシンサイクルは3〜6クロックの可変長だよ。
「通常命令実行時の第1マシンサイクル(M1サイクル)」まで限定してようやく
4サイクルに確定する。
セラロック発振子の場合ブレッドボードだとPICの直近に付けられないので 必ず引き回しが発生するはず。セラロックのGND端子ね。
既にスレ違だが…
>>543 '83/84 Zilog Data Sheet (紙)で
M1がT4、I/O&IRQ ACKがT3、他を確認した
余りに昔の話で忘れてた
546 :
264 :2009/06/06(土) 23:11:03 ID:+Z8o5bIu
>>539 それって壊れたりしない?
>>540 そのとおり、ブレッドボードでやってるよ。
で、今の書き込み見て、基盤でも試してみたよ。
結果は同じだった。
(もともと基盤で作ってて、うまくいかないから、
ブレッドボードバージョンを別途準備しんだよね。
DSPICを壊した経緯から今回は
予備のマイコンを何個か余分に購入した。)
引き回しとかも影響するんだね。。
勉強になるわ。
長さ変わると抵抗値が換わるから??
>>541 一応テスターですべて確認してるし、
ブレッドボードバージョンでも試してるから、
半田の不良はないよ。
半田はまあまあ自身ありだよ。
マイコンは初だけど、半田はちょくちょく使ってるから
>>544 どうしたらいいだろう。。
>>536 > 誰かが言うてたように、WDTが怪しいと思ったりもするけど、
> どうしたらいいかわからんねんな〜。
> 514氏のCONFIGの設定は書いたけど、結果は変わらなかったよ。
おい、ホントに
__CONFIG(CPDIS & PWRTEN & WDTDIS & HSOSC);
書いてコンパイルしたのか、
__CONFIG(CPDIS & PWRTEN & WDTDIS & HSOSC);
この書き方、全然メチャクチャじゃないか。コンパイルエラー2つも出るぞ。
>>536 コンパイラ何使ってる?
コンパイル完了メッセージをここに貼ってみ。
HI-TECH PICC-Lite COMPILER (Microchip PICmicro) V9.60PL1
Copyright (C) 1984-2007 HI-TECH SOFTWARE
Memory Summary:
Program space used 5h ( 5) of 400h words ( 0.5%)
Data space used 0h ( 0) of 44h bytes ( 0.0%)
EEPROM space used 0h ( 0) of 40h bytes ( 0.0%)
Configuration bits used 1h ( 1) of 1h word (100.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Loaded C:\PICC_PRO_Prg\16F84A\led\led.cof.
********** Build successful! **************
5ピン(GND)と14ピン(VDD)間に0.1uFくらいのパスコンつけてみ
550 :
264 :2009/06/06(土) 23:51:13 ID:+Z8o5bIu
>>548 実際にはこう書いてる。
エラーは出なかったよ。
_CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & BORDIS & HSOSC);
コンパイラはHITECのPICCだよ。
HI-TECH C PRO for the PIC10/12/16 MCU family (Lite) V9.60PL5
Copyright (C) 1984-2009 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode (warning)
Memory Summary:
Program space used Fh ( 15) of 400h words ( 1.5%)
Data space used 0h ( 0) of 44h bytes ( 0.0%)
EEPROM space used 0h ( 0) of 40h bytes ( 0.0%)
Configuration bits used 0h ( 0) of 1h word ( 0.0%)
ID Location space used 0h ( 0) of 4h bytes ( 0.0%)
Running this compiler in PRO mode, with Omniscient Code Generation enabled,
produces code which is typically 52% smaller than in Lite mode.
The HI-TECH C PRO compiler output for this code could be 7 words smaller.
See
http://microchip.htsoft.com/portal/pic_pro for more information.
Loaded D:\source\PIC16F84A\test\test.cof.
********** Build successful! **********
551 :
264 :2009/06/06(土) 23:56:29 ID:+Z8o5bIu
>>550 コンパイラPICC PRO(Lite)にPICは何を設定している?
ちゃんと「PIC16F84A」を設定した?
コンパイル完了メッセージの最初の所をここに貼ってみ
Build C:\PICC_PRO_Prg\16F84A\led\led for device 16F84A
Using driver C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe
>>551 > 了解
って、も毎、それやってないわけ?
>>Configuration bits used 0h ( 0) of 1h word ( 0.0%) これか?
>>554 そうなんだよ。正しいと↓こうなると思うんだよ。
Configuration bits used 1h ( 1) of 1h word (100.0%)
生成されたHEXみれないのか
557 :
264 :2009/06/07(日) 00:40:14 ID:gZvk1hOI
>>552 Build D:\source\PIC16F84A\test\test for device 16F84A
Using driver C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe
>>553 これからやるわ。
これって、めっちゃ重要??
色々本読んだ限りでは念のため的なイメージが。。。
重要ならこれから気をつけるわ。
>>554 、
>>555 俺も気になってた。
なんでだろ。
どうしたらいいかわかれば対処するんだけど。。
>264 ところで >538にHEXファイルが提供されているけど、これを書き込んで 実行してみたの? これが「動く」「動かない」で切り分けができるはずなんだけど ついでに俺からもHEX :020000040000FA :10000000831600308500003086008312850186014A :1000100064301120FF3085008600643011200628EE :1000200001308C00C8308D003E308E0000008E0BF9 :0C00300016288D0B14288C0B12280800D9 :02400E00F23F7F :00000001FF 全てのポートが1秒H , 1秒Lを繰り返す(@20MHz) 16F84Aが手元にないのでテストはしていないけど
559 :
264 :2009/06/07(日) 00:46:01 ID:gZvk1hOI
>>556 :020000040000FA
:100000000128031083160030031801308600031006
:100010008312003003180130860007280028FF3FB4
:10002000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE0
:10003000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FD0
:10004000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC0
以下省略
以下省略してるけど コンフィグのアドレスと値がないよ :02400E00F23F7F
INTIO 内臓RCクロック使用、OSC端子はIOとして使用可 MCLRDIS MCLRピンを無効とし、内蔵リセット回路を使用する どっちも84Aには無い機能だ
なんにせよConfig臭いな Configure->ConfigrationBitsを晒してみるとなにかわかるかもね
これ解決した瞬間すげえすっきりするだろうな・・・ と横レス
書籍やインターネットで情報が出回ってる16F84Aで LED一つ点灯出来ないのは逆に何故かと思う クロックが発振してるかどうかの確認をテスターでやってるみたいだけれど、 テスターでその周波数は確認できるのか? 貧乏な俺の持ってる高性能デジタルテスターは1MHzまでしか確認できん デジカメで写真とってハード状態写真をアップしろ 一度、LED回路をはずしてみて全部のポートを出力設定した後、 一秒間隔で出力H→出力Lを繰り返しのプログラムをいれてみ ポートが壊れてるかどうか確認できる 一秒間隔なら、ボロテスターでも確認できる ハードかソフトかの確認もできる やってみ
565 :
264 :2009/06/07(日) 02:07:37 ID:gZvk1hOI
ちょと、前進したよ。
LEDがつきました。
えっと、
>>538 、
>>558 のいうとおりHEXを上書きしたら、
LEDがついたよ。
ってことは書き込みはできてるねんね。
で、書き込んでるプログラムがおかしいってことやね。。
うんうん。
ただ、両方ともLEDは点灯するけど、
コメントのように1秒後との点滅ってのがないから、
これは発振子がおかしいのかも。。
ってことで、今から基盤VERで試すね。
念の為に書くけれど、上記やりかたで確認するとき テスターを他のピンとショートさせるなよ LEDを点灯させるときの抵抗値が分からないなら、ピン同士をショートさせて いけない理由は分からんのかもしれんから、あえて教えておく
なんだよ!ソフトかよ
568 :
264 :2009/06/07(日) 02:15:56 ID:gZvk1hOI
確認完了、結果は同じ。 ってことで、俺の未熟点は2つあったってわけだ。。 1つはコンフィグがおかしい。 これは、ちょっとずつ教えてもらったり、本読んだりしておぼえるわ。 もうひとつは(多分だけど)発振子がうまく動作していない。 これはどうしたらいいか全くなぞです。 抵抗は470オームでも1kオームでも10kオームでもよかったっぽい。 多分明るさがかわるんかな。。。。
569 :
264 :2009/06/07(日) 02:35:11 ID:gZvk1hOI
今、LEDは光ってる。 ただし、点滅ではない。。 今、ピンはRB0、RB1、RB2、RB3それぞれに抵抗とLEDつなげてるんだけど、 4つともライトが着きっぱなし。。。。 点滅はしないのかな。。。
そういうもん。
そのスキルでCANをなんとかしようとする所がエライ! 夢は大きく態度は小さく 馬鹿のフリしてれば、親切な人が教えてくれる がんばりー
>>571 >CANの基本知識はだいたいあるつもりやで。
だって言ってたくらいだから分かってやってるだけじゃね?
CANの基本知識ってのはたぶん終端抵抗の抵抗値とかバスへの接続方法辺りじゃね? と言いたくなったが、多分CANまで到達してもCANバスにマイコン直結とか終端抵抗値を間違えるとかやってくれるに違いない。
>>565 > LEDがつきました。
>
> えっと、
>>538 、
>>558 のいうとおりHEXを上書きしたら、
> LEDがついたよ。
一応、おめでとう。と言っておこう。
LEDがついたということは、セラロック20MHzは正しく発振していると考えて良いと思う。
問題はコンパイラの方だ。
>>550 >>557 の情報を信じると
#include "pic.h"
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & BORDIS & HSOSC);
main(void) {
TRISB=0x00;
while(1) {
PORTB=0x00;
}
}
プログラムはこの様に書いてあって、16F84Aの設定でコンパイラが通る?
>>574 の続き
俺の所で「16F84A」に設定してコンパイルしてみると、以下の様に正しくエラーをはいてくれる。
Build C:\PICC_PRO_Prg\16F84A\led\led for device 16F84A
Using driver C:\Program Files\HI-TECH Software\PICC\PRO\9.60\bin\picc.exe
(中略)
HI-TECH C PRO for the PIC10/12/16 MCU family (Lite) candidate build 2729 V9.60PL4
Copyright (C) 1984-2008 HI-TECH SOFTWARE
(1273) Omniscient Code Generation not available in Lite mode (warning)
Error [800] C:\DOCUME~1\TFO3~1\TEMP\s3i0.; 39. undefined symbol "HSOSC"
Error [800] C:\DOCUME~1\TFO3~1\TEMP\s3i0.; 39. undefined symbol "BORDIS"
Error [800] C:\DOCUME~1\TFO3~1\TEMP\s3i0.; 39. undefined symbol "MCLRDIS"
Error [800] C:\DOCUME~1\TFO3~1\TEMP\s3i0.; 39. undefined symbol "INTIO"
********** Build failed! **********
>>557 俺の示したプログラムをコピペして、コンパイラが通るか確かめてくれ。
そして、コンパイルメッセージの最初と最後をここに貼ってみ
576 :
質問です。 :2009/06/07(日) 08:43:01 ID:SJs5eb9k
MPLAB IDE v8.30 & C18 v3.31 Student でコンパイルは出来るもののリンカが通りません。 #include <p18f2550.h> void main(void) { long lp = 0; } <リンカコマンド> Executing: "C:\Program Files\Microchip\MCC18\bin\mplink.exe" /l"C:\Program Files\Microchip\MCC18\lib" /k"C:\Program Files\Microchip\MPASM Suite\LKR" "..\..\Program Files\Microchip\MPASM Suite\LKR\18f2550.lkr" "main.o" /u_CRUNTIME /z__MPLAB_BUILD=1 /o"usb.cof" /M"usb.map" /W <結果> Error - could not find definition of symbol 'FSR2L' in file './main.o'. Errors : 1 コマンドを見て解ると思うのですが、プロジェクトオプションの Include Search PathにC:\Program Files\Microchip\MCC18\h Library Search PathにC:\Program Files\Microchip\MCC18\lib を加えてます。 まだ何か足りませんでしょうか?親切な方助けてください、お願いしますm(_ _)m
点滅しないのは 電源の発振 リセット回路 あたりが悪さしてる可能性あるな 電源の発振は0,1uをVdd とGNDにいれればほぼ直る あとは 乾電池にするか
576ですが、解決しました。 プロジェクトのLibrary Filesにclib.lib とp18f2550.libを追加したところ、 無事リンクを通すことが出来ました。
>>564 秋月の1000円台のDMMでも60MHzまで測れるぜ
その高性能テスタは精度とか速度とかの性能は高いかもしれないが機能が足りないんだよ
>>569 >>562
>>576 >>578 えっと、C18なら MPASM Suite\LKR じゃなくて MCC18\lkr の方を使いなよ。
例えば MPASM Suite\LKR\18f2550.lkr には次のように書かれてるだろ。
// Not intended for use with MPLAB C18. For C18 projects,
// use the linker scripts provided with that product.
581 :
558 :2009/06/07(日) 13:15:11 ID:feSWEAwN
>568 一歩前進だけど、プログラムが途中で止まってるなら >577 を確認だね。 :020000040000FA :1000000083168501860183128501EE308600122059 :10001000DD3086001220BB3086001220773086004B :100020001220052819308C00C8308D003E308E001B :1000300000008E0B18288D0B16288C0B1428080036 :02400E00F23F7F :00000001FF もう一度、確認用に ソースの一部は下記(CALL TIMEは0.25秒待ち) __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC LOOP1 MOVLW H'EE' MOVWF PORTB CALL TIME MOVLW H'DD' MOVWF PORTB CALL TIME MOVLW H'BB' MOVWF PORTB CALL TIME MOVLW H'77' MOVWF PORTB CALL TIME GOTO LOOP1 PINが”L"で点灯ならRB0→RB1→RB2→RB3→RB0・・・と順に点灯するはず もしRB0だけ点灯なら止まってるorリセットかかってるかも
>>581 俺も検証の為の回路を組み、プログラム書いてみた。
16F84A、20MHzで、PORTB全てのLEDが0.5秒点灯、0.5秒消灯で点滅するプログラムを
HI-TECH C PRO(Lite)で書き、コンパイルした。__CONFIG();設定もプログラムに書いた。
PICkit2で書込み、実際の稼働も確認出来た。HEXファイルを以下に示す。
:1000000000000228F4308C0001308D0003108316AC
:100010000030031801308600831286090C088E0117
:0E0020008E070D088F018F07E9230C28012899
:1007D200F92B073091007D309000900BEE2B910B9E
:1007E200EE2B831201308E020030031C8F038F0226
:0E07F2000F080E04031DFE2BFF2BEA2B080040
:02400E00F23F7F
:00000001FF
583 :
264 :2009/06/07(日) 21:11:57 ID:gZvk1hOI
半分まできたね。
>>581 581が書いてくれたHEXで実行すると5秒おきに点滅するよ。
順番に光る。
ここまでで、ハードは問題ないことがわかったね。
ただし、ここで思ったのは
今回HEXをもらっちゃったので、
俺のソフトウェアがどのように間違っているのかが不明だね。
これをつきとめて、どういうことに気をつけなきゃならないのかとか、
今後違うマイコン使う場合も実装できるようにしておきたいねんけど、
どこがおかしかったんだろ〜〜??
5秒ということはクロック 2MHzなのか
>>583 大事なアドバイスをことごとくスルーしてるけど本当に動かす気あるの?
スルーしてきた大事なレスをまとめておいたからちゃんと試せ
>>560 HEXのconfigの行を見せろ
>>561 そのconfigは84Aには使えない
>>562 Configure->ConfigrationBitsを晒せ
>>574 config変だろ
>>575 このconfigじゃコンパイル通らないはず
>>585 やさしいな。
てか、それ全部お前だったりしてな。
CANがどうだこうだというから 多少わかってるのかなと思ったが・・・ 厨かよ
>>583 > これをつきとめて、どういうことに気をつけなきゃならないのかとか、
> 今後違うマイコン使う場合も実装できるようにしておきたいねんけど、
> どこがおかしかったんだろ〜〜??
それを見付ける為に、みんな協力してくれてんだろう。
みんなの質問にはやく答えろ
>>560 >>559 の様な中途半端なHEXファイルの見せ方じゃなくて、HEXファイル全部見せろ。
長いんなら最初の4行と最後の4行を見せろ。それと行数を教えろ。
>>562 Configure->ConfigrationBitsの内容をさらせ。
>>574-575 >>574 のプログラムをコンパイルして、そのコンパイルメッセージの最初と最後をここに貼ってみ
上記3件の質問にはやく答えろ
よっぱらてるのか
591 :
264 :2009/06/08(月) 01:50:12 ID:0Ge8rutu
おっす。俺だよ。
みんな、サンキュー。
どれから答えていけばいいかわからないから順にいくな。
>>560 最初の4行
:020000040000FA
:100000000128031083160030031801308600031006
:100010008312003003180130860007280028FF3FB4
:10002000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE0
最後の4行
:10427000FF00FF00FF00FF00FF00FF00FF00FF0046
:02400E00FF3F72
:08400000FF3FFF3FFF3FFF3FC0
:00000001FF
この
:02400E00FF3F72
が婚フィルの行ってことだな。。
どの行がコンフィグで、どの行が何?ってのはどうやったらわかるの??
>>562 それはどれ??
どこをみたらいい??
プログラム?
HEX?
>>574 やってみる。
これはなんの検査??
LEDはすでに光ってるので、ピカピカさせたいのだが。。
>>575 しばしまたレイ。
592 :
264 :2009/06/08(月) 01:53:15 ID:0Ge8rutu
>>581 まじサンクス。
プログラムをCに変換できる??
俺はアセンブラ全くわからんネン。
>>582 CONFIGはどんなかんじになった??
ねぇもう、無理っぽいから。 CANまで行くのに一生かかりそうだ。
これだからCしか出来ない奴ぁw
>>591 > これはなんの検査??
> LEDはすでに光ってるので、ピカピカさせたいのだが。。
まだ、自分ではLEDも点灯できないのに、「ピカピカさせたい」? 何夢みたいな事いってる?
先ずは、自分でLEDが点灯出来る様になることだ。
>>591 コンフィグが3FFFになってる
つまり設定できてない
562のは探したの?
MPLABにあるでしょ?
コンフィグが設定出来てないのはわかったからもう晒さなくていいよ
ここで設定されたコンフィグが確認できるから覚えとくといい
だから、前にも書いたようにWDTでリセットかかりぱなしなんでしょ。 命令を少し実行してWDTリセットがかかるからうごかない。 もう、原因わかってるのに、あ〜だこ〜だやってる。頭悪すぎる。 普通の人は、2、3レスで「あ、解決しました!!!!」ってなる。 この人は、普通じゃない。
物事を順序立てて論理的に考えられない人みたいだな キーワードがあっても自分で調べようとしないし 理系ではなさそうだ
感性で行動する芸術系の人って感じね。arduinoの方を勧めたほうがよさげなのか?
CANって何?
友人の中に感性だけで行動してる奴がいるけど、結局人生に挫折してる。 感情だけで判断していく人生って、そのときは自分に都合がいいけど 全体で考えると、全然ダメ。やっぱり、たとえ嫌なことでも、その場に 対応した行動を取らないと、普通に生活できない。 CAN死亡の人って、あれだけアドバイス受けながら、与えられた HEXを実行させてるだけ。動きましたぁ〜ってそんな返答要らないでしょ。 今はPICの問題だからいいけど、人生で大きな問題にブチ当たったとき また、他人にどうしたらいいでしょう的な問いかけするのかね。 まあ、いいけど。頑張ってください! 応援してますよ。
>>532 Q5cky76zはコテ名乗れ。責任もって264の相手をしろ。
別スレ立ててもいいぞ。
605 :
264 :2009/06/08(月) 21:12:02 ID:0Ge8rutu
>>593 応援ありがとう。
一生かかっても俺はがんばる。
>>594 せやねん。すまんね〜。
>>595 了解!!
応援ありがとう
>>596 コンフィグが3FFFになっている。
なるほど。
Hexをみるとほとんどが3FFFになってる。
どの3FFFのこといってる???
「上から(下から?)何行目の何文字目から4文字」
でおせ〜〜て。
ちなみに
>>562 は探せていない。
もし、方法を知っていたら教えてほしい。
わけもわからず省略しないで、全体をアップローダに上げればいいのに。
607 :
264 :2009/06/08(月) 21:38:15 ID:0Ge8rutu
ConfigBitsは :02400E00FF3F72これだね。 3FFFではないようだ。。
610 :
264 :2009/06/08(月) 22:03:29 ID:0Ge8rutu
コンフィグがうまくいかね〜。 Hexを下から2行目のみ誰かのを真似すると俺のプログラムも正常に動く。 って、ことはコンフィグがうまく言ってない。 そこまではわかった。 あとは、コンフィグをどう設定するか考えてみるぜ。
>>532 Q5cky76zはコテ名乗れ。責任もって264の相手をしろ。
別スレ立ててもいいぞ。
>>605 MPLABのメニューに「File」「Edit」…「Configure」ってあるだろ
そこのなかのConfigrationBitsだ
もちろん編集中のプロジェクトを開いてコンパイルした後で見るんだぞ
いい加減腹立ってきた
613 :
264 :2009/06/08(月) 23:41:46 ID:0Ge8rutu
一応情報として、 プログラム上でCONFIGの部分を変更し、 ビルドすると一度エラーになり、 もう一度ビルドするとコンパイルがとおる。 何か思い当たる人いる??
>>610 > あとは、コンフィグをどう設定するか考えてみるぜ
相変わらずのDQNぶりだな。どう設定するか考えるって、コンパイラ以上の
ことはできないだろう。素直に仕様にしたがって記述すればいいだけ。
考えてなにかキテレツな方法でも見つけようって言うの? ゲーム脳か?
裏技探しみたいな。やめておけよ。今のキミには無理。今日は寝て、また
明日やりましょう。寝たら視点が変わって、案外すぐに解決するかもよ。
615 :
264 :2009/06/09(火) 00:21:46 ID:Xeqqzmlw
>>612 サンクス。
これって、実はプログラム内に
記載することじゃナインやね。
「File」「Edit」…「Configure」の中のConfigrationBitsをいじってやるんだね。
>>614 了解。
なんか、根性論ぽいことおしえてくれてはるんかな?
がんばるわ。
616 :
質問 :2009/06/09(火) 00:52:38 ID:Na2uyInU
USBマイコンの使い方について誰か教えてください。 なんとかPIC18F2550をパソコンに認識させるところまで出来ました。 利用しているのはUSB Framework 2.4の汎用USBクラスです。 パソコンからエンドポイントにデータを書き込みたいのですが、 MPUSBWriteでタイムアウトを起こしてしまいます。 通常のPICとしての利用法は問題ありません、USB抜きではしっかり実行してくれてます。 どなたか教えてくださいませんでしょうか?以下にソースコードを提示します。
617 :
質問 :2009/06/09(火) 00:54:07 ID:Na2uyInU
/* PIC側 main.c */ void main(void) { USBDeviceInit(); USBEnableEndpoint(USBGEN_EP_NUM /* 1 */, USB_OUT_ENABLED|USB_IN_ENABLED|USB_HANDSHAKE_ENABLED|USB_DISALLOW_SETUP); while(1) { USBDeviceTasks(); } } /* usb_config.h変更点 */ #define USB_POLLING //#define USB_INTERRUPT
618 :
質問 :2009/06/09(火) 00:54:52 ID:Na2uyInU
/* パソコン側*/ int main(int argc,char* argv[]) { LoadMPUSBDLL(); // mpusbapi.dllロード DWORD lib_version = MPUSBGetDLLVersion(); printf("lib_version = %d\n",lib_version); int device_size = MPUSBGetDeviceCount(DEVICE_ID); if(device_size != 1) error_exit("- デバイスの数が不正"); printf("device_size = %d\n",device_size); HANDLE hUsbHandle = MPUSBOpen(0,DEVICE_ID,USE_EP,MP_WRITE,0); if(hUsbHandle == INVALID_HANDLE_VALUE) error_exit("- ハンドルオープンに失敗"); DWORD ExWrite; if(MPUSBWrite(hUsbHandle,"TEST",4,&ExWrite,2000) == 0) error_exit("- 送信失敗"); // タイムアウトを起こす。 MPUSBClose(hUsbHandle); return 0; }
619 :
質問 :2009/06/09(火) 01:56:41 ID:Na2uyInU
ひとつ解決しました、PIC側プログラムのループ内に h = USBGenRead(USBGEN_EP_NUM,a,64); を書き込むことで解決しました。 実はa[64]をローカルで取っていたのが大きすぎたのが悪かったようです。 しかしこの関数で取得したものがPC側のWriteによるものなのか判別が出来ません。 if(USBHandleGetLength(h) == 0)を試してみたのですが、何も送ってないのに通過してしまいました。 どういう風に判別するのでしょうか?
>>615 >>550 のコードには間違いがある。
それを正しい(動く)コードに修正するためには、以下「しなさい」と書いてある所を全てしなさい。
1.MPLAB ウィンドーの上の方にある「Configure」をクリック、「Select Device」をクリック
で使用PIC品種を設定できる。ここがPIC16F84Aになっているか確認しなさい。
違うとコンパイルが通らないから絶対確認しなさい。
2.あなたはコンフィグのために
_CONFIG(INTIO & WDTDIS & PWRTEN & MCLRDIS & BORDIS & HSOSC);
と書いたが、これは間違っている。
@この行の先頭は、「__」だ。アンダースコアが1個ではなく2個だ。1個だとダメだ。修正しなさい。
AINTIO は使えない。なぜなら、PIC16F84Aという品種は、クロック生成器を内蔵で持っていないからだ。
君は20MHzの発振素子をPICに配線したはずだ。だから「INTIO」を削除し、「HS」と書き換えなさい。
BMCRLDIS は使えない。なぜなら、PIC16F84Aという品種の仕様だからだ。
その機能がある品種でのみ使用することができる。今はその記述を削除しなさい。
CBORDIS は使えない。なぜなら、PIC16F84Aという品種の仕様だからだ。
その機能がある品種でのみ使用することができる。今はその記述を削除しなさい。
DHSOSC は使えない。なぜなら、PIC16F84Aという品種の仕様だからだ。
その機能がある品種でのみ使用することができる。今はその記述を削除しなさい。
>>615 >「File」「Edit」…「Configure」の中のConfigrationBitsをいじってやるんだね。
違う。
上記1と2がきちんと行われていれば、MPLABとコンパイラが
ConfigurationBitsに自動で適切な値をセットしてくれる。
本当に基礎中の基礎という、データーシートを読むことをやらずに 他人の手間ばかり強要する人って、ある種の基地外かもしれないな。 いったいなにがしたんだか。CANまでこの調子で逝くのか? 俺は知らないよ。
手際の悪さから仕事とは考えられないし、LED電飾小僧と同種の臭いがするから、 CANでデータとってエンジン回転数をLED表示したい、とかじゃね?
おもしろくない
>>619 使ったのが半年以上前でうろ覚えだけど
PICのUSB通信に使うメモリは次のように宣言しないといけない
自動変数だとうまくいくかどうかわからないからグローバルで宣言したほうが確実
#pragma udata USB_VARS //これ以降の宣言はアドレス0x400台に配置するよう指定
volatile BYTE a[8]; //USBモジュールによって書き込まれるのでvolatile宣言
#pragma udata //以降の宣言をRAM領域指定に戻す
追加 h = USBGenRead(USBGEN_EP_NUM,a,64); この時点ではまだ受信は完了してなくて、受信バッファをUSBモジュールに割り当てただけ。 すぐに制御が戻ってくる。 受信の判定はこんな感じ if(!USBHandleBusy(h)){ //受信完了? Len=USBHandleGetLength(h); //受信サイズ取得 //ここにデータを受信した //ときの処理を記述 h = USBGenRead(USBGEN_EP_NUM,a,64); //次のパケットの受信バッファ割り当て }
628 :
774ワット発電中さん :2009/06/10(水) 09:59:26 ID:qid4rNj5
質問です。 I2C通信をしたいのですが、PIC18F2520でI2C通信ができません。 CCS Cを使用しているので、、、 #use i2c(MASTER, SCL=PIN_C3, SDA=PIN_C4, SLOW, FORCE_HW) で、設定して、 i2c_start(); 等の関数を使用して、通信をこころみました。 18F2320でうまく通信できたので、同じソースを移殖し、同じ回路で試したのですが、 18F2520では通信できません。。。 レジスタをみてもちゃんと設定されているように思うんですが。 原因がわからないのですが、何かアドバイスをいただけますか??
18F2550はSCL/SDAピンアサインが違うからでは?
あ、それだけならソフトウェア処理になるけど・・・ RC3ピンが存在しないからSCL動作しないと思う。
631 :
774ワット発電中さん :2009/06/10(水) 12:59:42 ID:qid4rNj5
>18F2550はSCL/SDAピンアサインが違うからでは? 2550ではありません。 2520です。 PINアサインは同じです。
移植時のソース書き換えを間違えたんじゃないの?
>>628 ピンからそれらしい波形出てるかどうかとか待機時の電圧が正常かどうかとか見た?
「出来ません」というのは何で判断した?
634 :
774ワット発電中さん :2009/06/10(水) 20:36:00 ID:NfT62anD
>>628 CONFIG2hとCONFIG3hの設定方法を違える必要があるのでは?
635 :
774ワット発電中さん :2009/06/10(水) 23:41:41 ID:lbIdl0gT
>>628 すみません、間違えました
CONFIG2L と CONFIG3H でした
636 :
264 :2009/06/11(木) 02:42:44 ID:y3TPBJhg
タイマー割り込みむずかしいね〜。。コンパイルがとおらないわん。 ここまでの経緯。 以前、みんなに教えてもらってLEDの点灯に成功した。 1.誰かにもらったHEXファイルで点灯 2.自分のソースのNG部分を探す。 ⇒コンフィグの設定だったようだ。 前回はここまでだった。 その後 3.自作のプログラムにてLEDを点灯 4.自作のプログラムにてLEDを交互に点灯、順番に点灯に成功 ⇒これはタイマを使ったわけではなく、whileループで数万命令分まって、から点灯するLEDを変える。 5.自作のプログラムにてタイマー処理でLEDを順番に点灯のところで躓く。 自分では完璧なプログラムのつもりなのだが。。。 NGの部分のヒントを頂きたい。 宣言部、割り込み部、メイン部、関数部の順に示す。
637 :
774ワット発電中さん :2009/06/11(木) 02:46:08 ID:y3TPBJhg
#include "pic.h" static void pic_init(void); // マイコン初期化 static void wait_1sec(void); // ライト点灯時間 // グローバル変数 static unsigned int tcnt; // 51.2us*195=10mS static unsigned int ttcnt; // 10mS*100=1s __CONFIG(WDTDIS & PWRTEN & HS & UNPROTECT); static void interrupt isr(void) { TMR0 = 0x3c; // タイマー0設定 T0IF = 0; // タイマー0オーバーフローフラグリセット if(++tcnt == 195){ // 10msec割り込みが195回目なら tcnt = 0; // TMR0割り込みカウンタークリア ttcnt++; // 待ち処理カウンターインクリメント } }
ここにだらだら書かずに、プロジェクト全体をまとめてアップローダに晒せ
639 :
264 :2009/06/11(木) 02:49:03 ID:y3TPBJhg
main(void) { pic_init(); while(1) { PORTB=0xFE; wait_1sec(); PORTB=0xFD; wait_1sec(); PORTB=0xFB; wait_1sec(); PORTB=0xF7; wait_1sec(); } } /* PICの初期化 */ static void pic_init(void) { TRISA=0xFF; // RA0-4:in TRISB=0x00; // RB0-7:out OPTION = 0xA0; // プリスケーラ:256無し INTCON = 0xFF; tcnt = 0; ttcnt = 0; } /* 1.0sウェイトルーチン */ static void wait_1sec(void) { unsigned int cnt; cnt = 100; while (ttcnt<cnt) { NOP(); } ttcnt = 0; }
いい加減 自己解決しろよ
642 :
628 :2009/06/11(木) 08:20:37 ID:COnfqbcS
>>633 PICに電圧はきています。
他のモジュールは動いていますが、i2c通信だけ動きません。
動かないというのは、PICのSCLとSDAピンから信号が出てこないので、
動いていないと判断しました。
2320だとちゃんと動くんですよね〜。
>>634 CONFIG2LとCONFIG3Hですか?
2Lはブラウンリセット、パワーアップタイマの設定、
3HはMCLRピン、PortBのアナログ設定、CCP2ピンの設定
だと思うんですが、違います?
実は、これのどこかがi2cに関係してるんですか!?
>>636 >⇒コンフィグの設定だったようだ。
ちょっとカチンときた
いいかげんにしろよ? 何回そう言われたんだよ
>NGの部分のヒントを頂きたい。
>宣言部、割り込み部、メイン部、関数部の順に示す。
もう何様だっつーの
情報を小出しにして皆の反応を楽しむカマって君じゃねえか
しったか先生が生徒に聞かれてわからず、此処で回答探しに 256バイト
>>643 まえから判ってるじゃん。この引きでCANまで逝きたいんだそうだ。
>>264 をおもちゃにして遊ばないと元が取れないよ。ここは、ひとつ冷静に。
ArduinoでCANしたいっす
>>639 それじゃ動かん!
デバイスの仕様書を良く読んで
static void pic_init(void)の中
を書き直そうぜ。
>>639 書き方だけど、普通インデントつけると思うんだけど、
最近は、インデントなしが普通なの? メンテのために
誰でも読めるように書くのがいいとは思うけど、インデントに
なれた人には違和感あるなぁ。おれが時代遅れなのか。
>>648 付いているよ。
←ここに半角スペース8文字入れてある。
消えてるでしょ?
TABも消えるよな。 全角スペースなら消えないけど インデント代わりに使うのはやめて欲し
テキストファイルでアップロードするのが一番確実
>>652 わざわざダウンロードしろってか?
いや、ウザくないからイイかも。
LHAで圧縮してISHで…
今時ISHって… 若いモンは知らんぞ。 今ならBase64かな。
ishはエラー訂正してくれるから好きだ。 知ってても、実際に持ってる人は少ないだろう・・・と思ったが、検索したら Windows版でロングファイル名にも対応したishなんてのも存在するんだなw
xmodem kermit
MPLABがスプラッシュウィンドウが出たところで落ちるようになってしまった。 別のユーザーアカウントだとちゃんと動くんだけどどこいじれば直るかな。
>>659 もうちょっと弄って変わらなければ再インストールしてみる
>>660 ユーザー名はもともとASCII文字にしてる
今日まで動いていたのに突然こうなった
PICkit2の供給電圧、結構誤差あるな。 実際の出力電圧[V]/PICkit2 Programmerの表示[V]/誤差[%] 2.5 / 2.675 / 7.0 2.7 / 2.860 / 5.9 2.9 / 3.076 / 6.1 3.0 / 3.168 / 5.6 3.5 / 3.664 / 4.9 4.0 / 4.15 / 3.8 4.5 / 4.64 / 3.1 4.6 / 4.73 / 2.8 4.7 / 4.83 / 2.8 4.8 / 4.84 / 0.8 4.9 / 4.84 / -1.2 5.0 / 4.84 / -3.2 USBの供給電圧を疑うべき? それともPICkit2が精度悪くてあてにしないほうがいい?
>>662 逆だった。
○PICkit2 Programmerの表示[V]/実際の出力電圧[V]/誤差[%]
×実際の出力電圧[V]/PICkit2 Programmerの表示[V]/誤差[%]
664 :
774ワット発電中さん :2009/06/11(木) 22:33:58 ID:Z6/FdHko
USBの給電の誤差はプラスマイナス5%じゃ無かったっけ?
>>663 キャリブレーションかけたらどうかな?
PICkit2ユーザガイドより抜粋
2.13.1 Calibrating the PICkit 2 VDD
Calibration allows greater accuracy both in the VDD voltage
supplied to the target from PICkit 2, and the voltage detected
on a powered target and reported in the software. The calibration
is stored in the PICkit 2 unit nonvolatile memory, so the unit
will remain calibrated even when used from within MPLAB IDE.
It is important to note, however, that as the calibration is
dependent on the USB voltage, moving the PICkit 2 unit to a
different USB port, to or from a USB hub or to another computer
port may invalidate the calibration.
667 :
264 :2009/06/11(木) 22:51:21 ID:y3TPBJhg
>>664 ケーブルやらコネクタの接触抵抗やらの電圧降下まで規定されていて、最終的に
USBデバイスは4.35Vから5.25Vの範囲で動作できなければならない。
>>666 その通りにキャリブレーションしたら、4.8V以下では誤差1%程度になりました。
サンクスです!
4.9/5.0Vでは4.84V一定になったので、PCのUSB供給電圧が低いようです。
(怖くてテスタをUSBに突っ込めなかったので推測)
670 :
264 :2009/06/11(木) 23:24:30 ID:y3TPBJhg
>>674 >デバイスの仕様書を良く読んで
>static void pic_init(void)の中
>を書き直そうぜ。
ほんまやな。
OPTIONとINTCONが逆やな。
割り込み処理のほうがおかしいのかと思ってたわ。
サンキュー
教えてください。PIC16F88のADコンバータで質問があります。 1.ADコンバータ周辺の設定レジスタの中には、ANSELとADCON0があります。 この2つは、ともにAD入力chを選択する設定のようですが、なぜ2箇所もあるのでしょうか? データシートを見ると、ADコンバータ前のchセレクタはADCON0[5:3]で選択できるようです。 であれば、ANSELは何のために?ということです。ANSELもADCON0と同じように、 回路図上で説明されていればよいのですが。 2.ADのchを切り替えて多点のアナログ入力をしようとデバッグしています。 +Vref=VDD=5V, -Vref=GND=0Vの設定で、入力に5kのVRをつないで0V〜5Vを可変。 ターミナルで変換値を確認しています。 期待する変換値は、0V入力時→0x0000、5V入力時→0xffc0です。 ところが、0V入力時は0x0000でOKなんですが、5V入力時が約0x6340になり、 とても0xffc0まで行きそうにありません。全chとも同じ現象です。値も同じぐらい。 VRによる0〜5Vまでの、変化途中で飽和しているわけでなく、5V丁度のときにキレイに 0x6340になります。まるで分圧されたイメージです。 何か原因となりそうな事がありましたら、アドバイスいただけないでしょうか? AD変換部分のソースです。 #define AD_start 0b00000100; // AD start #define ch1 0b00000000; #define ch2 0b00001000; #define ch3 0b00010000; という感じでchセレクト情報を書いて ADCON &= 0b11000111; // 前回ch設定をclear ADCON |= ch2; // ch2をselect ADCON |= AD_start; // AD start while( (ADCON&AD_start) != 0 ){} // 変換待ち ch2_data = ((unsigned long int)ADRESH) << 8; ch2_data += ((unsigned long int)ADRESL); という感じです。
>>669 Vppは可変昇圧回路だけど
Vddは昇圧無しシリーズ制御だから
5Vキッカリ出力は難しいと思う。
因みにどっちもPWM応用してるみたい。
>>671 A1. ANSELはAN0〜AN6ピンのDigital/Analog入力切替(select)だよ。
A2. ch-select後に20us程度wait入れるべし。
>>672 VddはPWMと言ってもをD/A変換代わりに使ってるだけだけど
675 :
264 :2009/06/12(金) 01:30:50 ID:ErQ8LjNT
割り込みの部分ってあってる?? 割り込みが195回済んだら ttcntがインクリメントして tcntがリセット、 これでttcntが10msごとにインクリメントされる予定なんだけど、 ttcntはずっと0のままなの。。 多分、割り込みの中が怪しい気がするけど。 static void interrupt isr(void) { T0IF = 0; // タイマー0オーバーフローフラグリセット tcnt++; if(tcnt == 195){ // 10msec割り込みが195回目なら tcnt = 0; // TMR0割り込みカウンタークリア ttcnt++; // 待ち処理カウンターインクリメント } }
>>673 さっそくありがとうございます。
>ANSELはAN0〜AN6ピンのDigital/Analog入力切替
なるほど、そうだったのですか。でも、CMCONにもDigital/Analog入力切替が
ありますが、あちらとの位置関係は、どのようになるのでしょう。
I/O PortのBlockDiagramを見たときに、AnalogInputModeという信号でゲーティング
されているのですが、この信号の行き先がどのようになっているのか、
わからなかったのです。
I/O pin------ANSEL-----CMCON------ADCON0[5:3]のSW-----A/Dという
経路なのでしょうか。
すみません、よくわかっていません。
今日のところは帰ります。また明日、ご連絡したいと思います。
ありがとうございました。
677 :
264 :2009/06/12(金) 01:54:07 ID:ErQ8LjNT
>>563 連絡おくれたね。
とりあえず、コンフィグ設定うまくいったよ。
解決した瞬間はめっちゃすっきりしたよ。
レベルUPだね。
今はタイマ処理に悩んでるよ。
ただ、もう一息なきがする。
>>677 >レベルUPだね。
レベルアップしてねえよ!(三村)
他力でレベルアップ面白すぎwww
悪い事はいわない、こんな殺伐とした世界に足を踏み入れると怪我するぜ
家で母さんのお手伝いでもしてな
679 :
264 :2009/06/12(金) 02:29:49 ID:ErQ8LjNT
>>677 まあ、がんばるわ。
この世界モチベーション大事やし。
まあ、大体わかってる人にとってはレベルアップに見えないのかもね。
>>678 のいうように確かに他人の力も少々頼ってるし、
おれ自身少ししか貢献できてないのは申し訳ないと思うわ。
680 :
264 :2009/06/12(金) 02:31:47 ID:ErQ8LjNT
少し、改善させたつもりだけど、 結果的には変化ないね〜。 とりあえず、ifを増やしたよ。 static void interrupt isr(void) { if(T0IF) { T0IF = 0; // タイマー0オーバーフローフラグリセット tcnt++; if(tcnt == 195){ // 10msec割り込みが195回目なら tcnt = 0; // TMR0割り込みカウンタークリア ttcnt++; // 待ち処理カウンターインクリメント } } }
681 :
774ワット発電中さん :2009/06/12(金) 02:32:20 ID:gHriFAo8
>678 軽石氏ね。 おまえ、自分では何にも作ってないだろ。 変換ケーブルとかLEDの”点灯”止まりじゃん。 LED、”点滅させてみろよ。”
>>636 一番の間違いを教えてやるよ。
みんなお友達と勘違いし、質問の仕方をわきまえずスレを占領し
CONFIGではないかとの再三の指摘を無視し続け、さも自己解決したかのように言い放ち
その次に当たった壁に対して大して考えもせずすぐスレに質問した挙げ句
「自分では完璧なプログラムのつもりなのだが。。。」
とのたまうお前の思考回路だよ。
683 :
264 :2009/06/12(金) 03:33:37 ID:ErQ8LjNT
>>682 おしい!!!
おしいが、ちょっと違う。
CONFIGではないかとの再三の指摘は十分受け止めて、参考にさせてもらったよ。
ただ、CONFIGが怪しいといわれたけど、CONFIGのどこがおかしいかわからなかっただけ。
まあ、そういうことだ。
自分で解決したなんて思ってないよ。
とくに、CONFIGのところではいろいろ教えてもらって、そういう人たちには感謝してる。
問題解決したから、そういう人たちに連絡しただけで、
別に「おれ、解決策みつけたよ」って行ってるわけじゃないよ。
自分では完璧なプログラムのつもりはさらさらない。
だって、まともに動かせてないし、できたこともないんだから。
ただ、自分の精一杯のプログラムなので、それ以上のものってのは見つかりませんでした。ってだけ。
ちょっと、ひねくれてるのかな。。
あと、スレを占領しておいて、
ちょっとしか貢献できてないことに関しては
教えてくれているみんなや質問したいみんなには申し訳ない。
ごめん。
>>683 >>264 自分で解決出来ないなら、仕様書を書いて他の人に作って貰えば良い。
その時、規約書に保守義務を明記するのとソースリストの提出を条件にすればいい。
そしてそのプログラムを自分で読んで見る事が一番の解決方法だろう。
他の人の書いたプログラムを読んでテクニックを盗むのも自己研鑽のひとつだよ。
>>676 PICのGPIOピンは、ANSELで明示的にアナログ入力を指定しない限り、デジタル入力バッファが
常に有効になっている。デジタル入力バッファはデジタルH/デジタルLに該当しない中途半端な
電圧が掛かると比較的大きな電流が内部で流れるので、そういう電圧が掛かる場合はANSELで
アナログ入力を指定して、デジタル入力バッファを無効にする必要がある。
ANSELの機能は、正確には「デジタル入力バッファを無効にする」だけなので、これを
指定するだけでアナログ入力になるわけではない。というより、ANSELの設定に関係なく、
アナログ入力は常に有効になっている。なので、デジタル入力バッファが有効のままでも
TRISでGPIOをデジタル入力に設定すればアナログ入力もできる(この場合、中途半端な
入力電圧では消費電流が増える)し、TRISでGPIOをデジタル出力に設定すれば、「現在
デジタル出力している電圧」がアナログ入力される(この場合、出力電圧のモニタが
できることになる)。
ついでに言えば、TRISの機能も、正確には「デジタル出力バッファを無効にする」だけ。
これの指定の有無に関係なく、デジタル入力バッファはANSELの指定で有効・無効が決まり
(無効時にはデジタルLが読み込まれる)、アナログ入力は常に有効となる(無効にはできない)。
>でも、CMCONにもDigital/Analog入力切替がありますが、
CMCONで行うのは、コンパレータに接続する入力を切り替えるだけ。ピンの機能を切り替えて
いるわけではないので、CMCONでピンの入出力モードは変わらない。
>682 説教うざい。軽石。 お前のスレじゃないだろ。 自分のサイトでやれよ。 何年経ったら復旧するんだよ。 能無し。
687 :
628 :2009/06/12(金) 08:23:56 ID:NLu2Az4m
PIC18F2520でi2c通信できない理由ってわかりませんかね? 昨日も頑張ってみたんですが、解決できませんでした。 誰か、同じように止まった人いないかな??
690 :
628 :2009/06/12(金) 09:26:09 ID:NLu2Az4m
>>690 うは、偉そうな指摘しておきながら見落としてたわ。すまん。
それじゃ未回答は
>>632 だけだな。
>>264 正直今までの経緯をみて
>>264 がこれからPICをマスター出来るとは
とうてい思えない
だが貢献するという、、、面白いな
だがあえてレスしてやる
OPTIONの値は?0xFFなのか?(逆だとそうなるな)
コメントの// プリスケーラ:256無し とはどういう意味なんだ?
もっと人が分かるように説明してくれ
>>673 >A2. ch-select後に20us程度wait入れるべし。
ありがとうございました。
ズバリ時間を待ったら、無事に変換できました。
ADのch切替して、変換開始すると、100nsでコンデンサが切り離されるんですね。
なので、100nsではサンプルコンデンサが完全充電できなかったようです。
待ち時間を1usずつ延ばしていくと、それに連れて変換結果が上がっていき、
コンデンサの気持ちが目で見えて、楽しかったです。
どうもありがとうございました。
>>685 わかりやすい説明、ありがとうございました。
まさに私の知りたかったことが書かれていて、感激しました。
特に、
>ANSELの機能は、正確には「デジタル入力バッファを無効にする」だけ
この1文で、疑問氷解でした。マイクロチップのデータシートにも
>>685 のような表記がされていたら、なんと分かり易いのか、と思いました。
(英文の理解力は棚に上げておきます)
さらに、
>アナログ入力は常に有効となる(無効にはできない)。
カッコ内の説明は、それまでの説明を確認する意味で、表現にしびれました。
どうもありがとうごさいました。
感激したので調子に乗って、脳内イメージを図にしてみました。
こんな感じではないでしょうか? 要は、ADは常時接続だよ、というだけですが。
http://mcnc.hp.infoseek.co.jp/cgi-bin/img-box/img20090612124335.png
>>676 ANSELはデフォでADC(analog)入力有効だから注意。
CMCONはアナログコンパレータの設定で、これによっても
PINがanalog入力になったり、コンパレータ出力に変わる。要TRIS設定
analog入力の場合、Digital入力はゲートで常に'0'入力になる。
analog入力に係わらず大概のPICはTRIS='0'で
Digital出力バッファ有効になる。
695 :
685 :2009/06/12(金) 13:18:31 ID:XHvhzThP
>>695 いろいろと お世話になりありがとうごさいました。
また教えてください。
スレーブから受信データがないかポーリングするわけですな
>>687 アマチュアが使う定番のPICではないから情報がないのは仕方ないと思う。
さらに純正コンパイラがある18FなのにCCSを使ってるから余計に。
あとね、何をしたらどんな風で駄目だったとか書かないと264と同じだよ。
他力本願な人だと思われてレスしてもらえなくなるよ。
とりあえず切り分けのために、
・SCL/SDAピンの状態は? Lo, Hi, Hi-Z
・MPLABSIMでシミュレートするとどんな感じ?
I2Cはプルアップ忘れが多いけど....。
16F88のA/D変換について教えてください。 A/D変換結果が一定以上を超えると、PICのVSSからGNDへ流れ出る電流だけが異常増加します。 A/Dの生の値が、概ね100以下の時は 0.6mA 150〜1000以上(VDDと直結するのも試した)の時は 25.4mA その間、電源からPICのVDDに流れ込む電流は0.6mAで一定です。 何が原因でしょうか?
で、VDDと入力端子にかかってる電圧はどれくらい?VDD越えてたりはしないよね?
>>701 入力端子に掛かる電圧は、DMM実測で電源電圧の範囲内(0〜5.0V)と確認してます。
A/Dの生の値とも概ねよく一致しているように見えました。
相手のI2Cの基準電圧は5Vなのか3.3Vなのかという問題もある 石によっては5V-3.3V間でも通信できてしまうが
705 :
264 :2009/06/13(土) 00:07:40 ID:1TUxVejT
割り込みがちょうしわるいんかな。。。 static void interrupt isr(void)がうまく呼び出されていない感じ。 TMR0 = 0x3cっていうタイマ設定命令は、 割り込みstatic void interrupt isr(void)の中で実行して自己回帰すべき? それとも、待ち関数waitナンチャラ()って関数のwhile文の中にかいたらいいんかな???
>>704 理由判明。
該当ポートのTRISを出力にし、LO出力で放置していたため
ポートがLO出力とADCの両方に接続された状態になってました(!)
ANSELさえ正しくしておけば、入力/出力ラッチどちらからも切り離してくれると勝手に思い込んでました。
ブロック図をもっとしっかり見ておくべきでした。
アナログ入力するときは、TRISも入力にしないといけないんですね。
勉強になりますた。
>>705 6/3から取り掛かって割り込みを使ったLED点滅ができない君の無能力さには
ホトホトあきれてしまうよ
その無能力さは君の他人の意見を聞かない所以だと思う
但しこの程度の事に、叱咤もありながら10日もかかって取り組む姿勢は素晴らしいと思う
君はこの世界に向いているのかもしれない
OPTIONレジスタの各ビットの値は確認したのか?
? OPTION = 0xA0;
>>705 500レス近くに渡ってがんばってるわけだし、そろそろ、どれが同じ質問者なのか
分かるようにトリップかコテ付けないか?
そうしないと、せっかく以前に説明したことでも「あれはどうなってる?」と
何度も聞かれることになるよ。読むほうも楽になるから。
>>543 亀レスだが休みが無いもんで・・・
8bit パソコンゲーム→16進ダンプリスト→脳内変換→逆アセンブラ→プロテクト外し
Z80 だと必要マシンサイクルまで覚えていたね。川鉄は必要マシンステートが変わっていて役に立たなかった。
PIC10〜18シリーズ は RISCプロセッサとして X'tal4クロックを 1マシンステートと数えて 1命令1サイクルとして宣伝してただけ。
内部的には Q1〜Q4 ステートがあるだけ、その中のどこかで次の命令を先読みしてるだけ。
264 が 今後 人に教えられるようになれるか見守る事にしてみるよ。
私の E-mail は隠していないから過去のレスを見てみればいい。
712 :
774ワット発電中さん :2009/06/13(土) 15:44:00 ID:GChg8HYE
その物言いでメアドがニャンニャンコwww キャンディミルキィの乗りなのか?
713 :
774ワット発電中さん :2009/06/13(土) 16:42:31 ID:DW3C3qRd
にゃんにゃんこさんを知らないモグリもいるんだな。 PICfanとか知らないのか?
>>715 にゃんにゃんこ PICfun に一致する日本語のページ 3 件中 1 - 3 件目 (0.24 秒)
>>715 funじゃなくてfanか。
にゃんにゃんこ PICfan に一致する情報は見つかりませんでした。
nyankoさんに豚小屋は失礼だよ。 マナー云々言うやつが多いPICな人の中で、的確かつ無駄のない回答で、すごく貢献してるんだよ。 ま、PSoCに宗派換えだそうですが。
>>720 DV164131
$56
今、PicKit3をゲットには、これが最安?
送料は$15で、\7500位?
>>721 あ、送料+手数料で、$20.5掛かるみたいね
そうすると、マルツ等とあまり変わらんね
724 :
>>264 :2009/06/15(月) 23:09:03 ID:ivmIeLsA
>>706 サンクス。
サイト見て参考にしたらできたよ。
ただ、ちょっとタイミングがずれてるんだけど、
まあ、許容かな。
>>708 確認したよ。
OKぽい。
@PICやPIC工作の初歩的なことはどこかにまとめサイトを作ってまずそっちを教える。 Aそれでも不明ならここで質問する。 BQ&Aとして利用価値が高いならまとめサイトに誰かが追加する。 C終了 初心者が質問してくる@へ
>>725 まとめサイトっつーか、丁寧に工作を図解までしてくれてるサイトとか
腐るほどあるし、たいてい質問するほどの内容でもないのは確か。
ただ、そんな空気作ってると確実に過疎化すると思うよ。
板自体が盛んなわけじゃないし、馴れ合ってもいいんじゃないかなあ。
つーか、2chと言うコミュニティ自体意味が無くなる 初心者の相手をするのが嫌なら、スルーするかここに来なければ良いだけの話
728 :
774ワット発電中さん :2009/06/16(火) 23:44:08 ID:zDjk+mg1
初心者を罵倒しないと自我を保つ事ができない奴がいるからね。 軽とか近藤とか
731 :
774ワット発電中さん :2009/06/18(木) 01:19:28 ID:yLUvOmE1
PICKIT2で使える 8〜40ピンのZIFアダプター回路図きぼんぬ
ググレカス
733 :
774ワット発電中さん :2009/06/18(木) 01:28:49 ID:gxn5RPob
軽石乙。
簡単だろ
>>731 せっかくのICSP端子にZIFソケットなんて無粋なものを・・・
使うのがもっぱら少ピンの品種だとか、1つHEXをたくさんのPICに書き込むとかなら
話は別だけど。
>>732 知っているならヒントくらい教えてやれよ。
>>735 ライターとして使いたいだけだから悩む必要ないよ。
>>731 「写真で見る工作室」でピンリストがあるよ。
ヒントも出せないならROMれハゲ。
>ヒントも出せないならROMれハゲ。 相手を罵倒するとき自分がコンプレックスと感じていることを 口にしやすいという法則があるそうだ
739 :
774ワット発電中さん :2009/06/18(木) 07:00:54 ID:pTyOYuCg
黙れフサフサ!
ぐぐると2chがヒットするのはよくあること。 しかしこの件は"pickit2 ZIF"でぐぐれば、一発ビンゴでいろいろヒットするから。
つーか、個人で使うだけならZIFソケットより、 ICSP用以外のピンを除去して抜き差ししやすくしたICソケットで十分だぜ。
千枚通しでコジて抜いてるけど、マイナスドライバーより尖ってて使えると思う。
丸ピンのICソケットならピンセットを使うときれいに抜けるよ。
>>720 サイトで掲示されてるハイスコアが214,748点なんだが、いったいどうやったら
そんな点数に到達できるんだろう。
制限時間が3分、チップが1秒あたり3個弱だから、チップ全部で500個程度。
チップ1個あたり平均50点として、全部ヒットしても25,000点。クイズの難易度が
いちばん高いのを選んで、5問全問正解しても+3,000点。合計28,000点。
桁違いだからチートなんだろうけど、そもそもどんなチートをしたらそんなとこまで
行くんだw
C18で関数をインライン展開させる方法ってない? 数十サイクルで終わる処理だから関数呼び出しのオーバーヘッドが無視できないんだ
インライン展開させる方法そのものではないんだが、数十サイクル程度の処理なら ソース行数もたいしたことないだろうから、そのままそっくりマクロにしてしまっては。
>>724 動く様になり、おめでとう。
どこをどの様になおしたら動く様になったか教えて。
また、どの様にタイミングがずれているか教えて。
それが、アドバイスくれた方々へのお礼であり、皆への貢献だと思うよ。
750 :
264 :2009/06/20(土) 02:43:39 ID:2583FO0O
>>749 あんたの言うとおりだ。
まず
>どこをどの様になおしたら動く様になったか教えて。
勘違いしていた点⇒「TMR0 = 0x3C;」がタイマーのセット(カウント開始)だと思っていたこと。
実は「TMR0 = 0x3C;」はタイマーのカウント開始値であり、
カウント開始は「T0IF = 0;」であった。
>また、どの様にタイミングがずれているか教えて。
タイミングのずれは解消された。
タイミングがずれていたのは、1秒おきにLEDの点灯パターン(4つのLEDのON・OFF)を切り替えるはずが、
時計を見てみるとちょっと1秒より長いなって思っていた。
理由:最初にしか「TMR0 = 0x3C;」をしていなかったんで、
2回目からは役1.3秒置きのパターンチェンジになってたんだな。。
今は「TMR0 = 0x3C;」してから直後に「T0IF = 0;」とすることでうまくいっている。
教えてくれたみんなありがとう。
ただ、ちょっとづつわかってきて思ったこと。。。
俺に「データシート読め」って言ってた人、ホントにデータシートの意味わかってるんだろうか??
俺がわからなかったことってデータシートには全く載ってないけど。。。
って、ことで誰かが質問したら「データシートを読め」「ぐぐれ」は言わないようにしようと思う。
>>750 >>264 >データシートの意味わかってるんだろうか??
英語を翻訳することは、滅多にしない。
ブロックダイヤグラム・等価回路・タイミングチャートは万国共通。
またサンプルプログラム(アセンブラや C言語)も万国共通。
>「データシートを読め」「ぐぐれ」は言わないようにしようと思う。
「データーシートの何ページに記載があるよ」と書いているね。
>>750 解決の経緯を紹介してくれて、ありがとう。
う〜ん。この説明では良くわからないなあ。
コードはそんなに長そうにないので、動く様になったコードを全部貼ってよ。
>750 データシートには各レジスタの説明やサンプルプログラムが載っている。 それを読めば >カウント開始は「T0IF = 0;」であった。 のようなことは書かない。 「データシートを読め」と言われているのは、データシートの内容を「非常に注意深く読め」 ということ。斜め読みして分ったつもりになっているだけでは、読んだ内には入らないよ。
中高の学生の発言レベルだな まったく
>>751 >>753 俺は初心者に「データシートを読め」とアドバイスするのは賛同しないなあ。
俺は初心者を卒業し、中級者に入っているかなあ?と自分では思っているが、正直
データシートを熟読した経験がない。(ポイント、ポイントは読んでいる)
それより初心者には「ググレ」を言いたい。
ググって、それと同じPICで、同じ回路で、同じプログラムで先ず動かしてみろ。
そして、それを改造してみろ。「メチャ勉強になるぞ。」と言いたい。
うむ、嫁嫁言ってるやつに限って読んでないとおも。 本職でも頭っから読むことないしね。 やはりヒナには噛み砕き済みのweb情報の方がいいとおも。
データシートには何も書いてないと思ったほうがいい
いや、それは暴論だ。
PIC始めた年に英語に慣れるためにPIC16F819のデータシートを全部読んだ。 819はミッドレンジの一通りの機能が備わってるし、知らなかった機能を知ることも出来た。 掛けた時間の割には合ってないかもしれないけど相当役に立ってると思う。 まともに英語の勉強なんかしてないけどデータシートばかり読んでたらTOEIC690点取れちゃったし。 何もわからない初めは本買ったほうがいいと思うけどなー。 俺は5年前に「おもしろいPICマイコンPIC12F675を使いこなす」でPICデビューした。 この本はこのスレで紹介してもらったような気がする。 データシート読んだことないマイコンのマの字も知らないような人はwebの情報より順序立てて説明してある本のほうがいいと思う。
データシートもそうだがリファレンスマニュアルを読まないとな リファレンスマニュアル読んでれば >実は「TMR0 = 0x3C;」はタイマーのカウント開始値であり、 >カウント開始は「T0IF = 0;」であった。 こういう理解の仕方にはならないだろう また >今は「TMR0 = 0x3C;」してから直後に「T0IF = 0;」とすることでうまくいっている。 「今は」とか「うまくいっている」のようなトライアンドエラー的なことにもならないでしょう
間違った知識で覚えるといけないから一応補足しておこう。 T0IFはTimer0InterruptFlagの略。 タイマ0がオーバーフローすると1になり、この1を見て割り込みが掛かる。 0にせずに割り込み関数を終了するとタイマがオーバーフローするのを 待たずに一瞬でまた割り込みが掛かる。
>>750 データシートに書いてある
お前が探せないだけw
自分が馬鹿だと認識しなさい
「アホな奴に限ってデータシートやマニュアルにケチをつける法則」
ていうか、
>>264 は終始「ため口」なのはなぜ?
教えてもらうんだったら、もっと丁重な姿勢でもいいと思うけどなぁ。
タイマー設定の件は、設定数値をいろいろと変えて結果を比べれば
おかしなところがわかってくると思うけどね。
「オレはこのように理解している。だから、この値をこうすれば、結果はこうなるはず」と考えて、
試した結果と比べて「???」となる部分が原因だと思う。
オレは16F84と16F877でマニュアルをマジメに読んだだけで、
あとは上記のような推測と実験でやってきた。
>>750 PICの理解と自己分析が足りて無いな。
カウント開始は「T0IF = 0;」じゃない。
「TMR0 = 0x3C;」は
>>637 の時点であったのに
>>675 以降で消えてたぞ。
ちょっと古い石の質問なんですが、よろしくです。 16F84A2つに対して、1つの入力から分岐してもう1つのPICに信号を与えたいのですが・・・ 基盤AはRA4へ入力されていて、分岐させたい基盤Bの16F84AはRB5へ入力したいとします。 入力信号は、基盤AのRA4にフォトカプラで絶縁して10kの抵抗でプルアップで入力しています。 問題は、2つのPICの入力に対して1つのフォトカプラ&10kのプルアップ抵抗で問題ないでしょうか?
1つの入力に対して問題ないなら、2つの入力に対しても問題なし。
> 1つの入力から分岐してもう1つのPICに信号を与えたいのですが・・・ 整理整頓推敲を重ねてから質問すべし。
768 :
264 :2009/06/20(土) 19:21:03 ID:2583FO0O
>>761 >タイマ0がオーバーフローすると1になり、この1を見て割り込みが掛かる。
確かに参考書に書いてた。
ただ、以下がまだ理解できていない。
>0にせずに割り込み関数を終了するとタイマがオーバーフローするのを
待たずに一瞬でまた割り込みが掛かる。
割り込み関数を終了するってことは割り込み関数の命令をすべて実施し、
}までいってしまうってこと??
タイマがオーバーフローするのを待たずに一瞬でまた割り込みが掛かるってことは無限ループになるってこと??
>>763 最初にこのキャラでやってしまったからだよ。
キャラは全く関係ない
770 :
264 :2009/06/20(土) 19:25:33 ID:2583FO0O
>>764 そうなの。。
途中から消したんだよね。。
なぜか。。。
それは、最初に設定したから。
当時は最初に一度設定しておけばT0IFが0になったときに「TMR0 = 0x3C;」からスタートすると思っていたんだよね。
そうじゃナインよね。
「TMR0 = 0x3C;」することでTMR0が0x3Cとなり、オーバーフローまでのタイミングを決定できるって意味よね。
>>768 >割り込み関数を終了するってことは割り込み関数の命令をすべて実施し、
>}までいってしまうってこと??
>タイマがオーバーフローするのを待たずに一瞬でまた割り込みが掛かるってことは無限ループになるってこと??
珍しい。ご名答。
>>768 >割り込み関数を終了するってことは割り込み関数の命令をすべて実施し、
>}までいってしまうってこと??
そこは当たり前だろ!
264氏は肝心なところがわかってないからね いきなりCじゃなくてアセンブラから入って内部動作から学んだほうがいいと思うんだが
>>773 何故?
内部動作と言語に何の関係あるの?
アセンブラは万能なんだよ。 ハードの誤動作を予測して対策できるんだ。
>>774 Cじゃ内部動作がわからなくても書けてしまうから264みたいなことになる
}一つだってアセンブラじゃ退避レジスタ復帰からRETFIEまでやらなきゃいけない
そういうことを知った上でC使う分には良いけど
CでもSFRや各種内部フラグの動作理解は必要。 アセンブラでもCでも同じこと。
>776 じゃあ責任を持って教えてやれば良い。 おい前の好きなアセンブラを、お前の好きな誤作動予測の対策込みで。
nop();様の憂鬱 第一話
780 :
264 :2009/06/21(日) 00:53:50 ID:zK8a2Whg
>>752 返事してなかったね。ごめん。
全部貼るとほかの人にも怒られそうなので。。↓
順序立てて示すね。
@最初は割り込みができてなかった。
メインの中で割り込みをセットしてなかった。(
>>639 参照)
つまり、T0IF = 0;をしてなかった。
なので、割り込み処理が発生しなかった。
あってる?
T0IF == 1だと瞬時に割り込みが掛かるってのがまだ理解できてないわ〜。
つまり、発振回路の周波数が20Hzとしたら5Hzの割り込みがかかっちゃうってこと???
MPLABでシミュレーションしてたら、割り込み処理の部分には一度も矢印がいってなかったけど。。。
誰か概念教えて〜。
>781 解説してやれよ、軽石。
>>780 >@最初は割り込みができてなかった。
>メインの中で割り込みをセットしてなかった。
それは OPTIONとINTCONの設定間違えたからだろ。
どこまで無理解なんだ?
784 :
264 :2009/06/21(日) 01:35:33 ID:zK8a2Whg
>>781 なるほど。
読んでみる。
>T0IFは割り込みを有効にするためのレジスタじゃないと何度言ったら分かる?
多分何度言われてもわからないと思う。
なぜなのかわからないから。。。
ちなみに俺が「TMR0 = 0x3C」してから「T0IF = 0;」する。
って書いてあるけど、
これって、ホントは逆にすべき??
延々と引っ張るなよ 隔離スレにでもいってやってくれ
787 :
264 :2009/06/21(日) 01:40:55 ID:zK8a2Whg
>787 いい加減に少しは自力で考えろよ、わからないなら調べろ。 初期化で行うこと 1)TMR0の初期値を設定(しなくても可) 2)OPTION_REGを設定 TMR0のインクリメント動作始める 3)INTCON の GIEとT0IEをセットする TMR0のオーバーフローで割り込みがかかるようになる 割込処理内 1)TMR0の再設定(フリーランなら不要) 2)INTCON の T0IFをクリア T0IFは割込フラグなのでクリアしておかないとダメ
>いい加減に少しは自力で考えろよ、わからないなら調べろ。 それができる”普通の人”ならこんなに引っ張ってないと思う
>>784 >>T0IFは割り込みを有効にするためのレジスタじゃないと何度言ったら分かる?
>多分何度言われてもわからないと思う。
>なぜなのかわからないから。。。
なぜなのかを、君がわかろうがわからまいが、マイクロチップが決めた事だから納得するしかないよ。
T0IFの意味を考えればわかると思うよ。T0IF=Timer 0 Interrupt Flagの略です。
タイマー0番の割り込みを示すフラグ、っていう意味ね。
このフラグは、タイマー0がオーバーフローすると、
PICの中のハード回路が自動的に1にしてくれる。(ソフトは何もしなくても、ハードがやる)
・T0IF=1になると、
・その事がCPUに伝わり、
・CPUは現在の処理を中断して、
・タイマー0割り込みプログラム(事前に君が記述しているはず)を開始する。
・タイマー0割り込みプログラムが終わると、
・CPUは、以前のプログラムに戻って実行しようとする。
・しかし、T0IF=1のままだと、再び上記の割り込みプログラムに行ってしまう。
・なので、タイマー割り込みプログラム内で、ソフトでT0IF=0にしてやる。
ちなみに
>>264 さんは、年はいくつですか? 僕は17才の高校生です。
してくれる。(ソフトは何もしなくても、ハードがやる)
>>791 > 僕は17才の高校生です。
所属は?工業の電気科?、普通科のパソコンクラブ?
>>792 所属は?工業の電気科?、普通科のパソコンクラブ?
そんな事はどうでも良い事で、
彼の言っている事は正しい事は確かだ
>>777 普通の人ならCで書いてもレジスタやフラグを意識したコーディングするから良いけど
彼の場合それができてないからあえてアセンブラからはじめたほうがいいと言ってる
別にちゃんと理解して使える普通の人ならCからはじめていいよ
>>264 とりあえず事細かに手順から書いてある本を買ったほうがいい
ここで断片的な知識を得ても身につかないと思うよ
そんなことどうでもいいだろ。 つか、彼って誰だ? 間接を多様する奴って(ry
あ、>793宛てです。
ぼくもタイマの使い方がやばかったので
>>637 >>639 の課題を、このページを参考にやってみました。
http://kuri6005.sakura.ne.jp/pic/index.php?%A5%A4%A5%F3%A5%BF%A1%BC%A5%D0%A5%EB%A5%BF%A5%A4%A5%DE%28TMR0%B3%E4%B9%FE%A4%DF%CD%F8%CD%D1%29 /* LEF(RB0-3)を1秒毎に点灯する
* PIC16F84A
* クロック:20MHz
* HI-TECH C PRO(Lite) 9.60
*
* クロック:20MHz = 20000000Hz = 1/20000000 = 0.05us
* プリスケーラを256回にする
* 1サイクル:0.05us * 4 * 256回 = 51.2us
* Timer0で10msカウンタを作る
* 51.2us * 195回 = 9.984ms ≒ 10ms
* 10ms * 100回 = 1s
*/
#include <htc.h>
__CONFIG(UNPROTECT & PWRTEN & WDTDIS & HS);
//グローバル変数の定義
unsigned int ttcnt; //100回カウンタ用
//関数のプロトタイプ宣言
void pic_init(void); //PICの初期化
void wait_1sec(void); //1.0sウェイトルーチン
void interrupt
isr(void) //割込み関数
{
//10msecインターバルタイマ(クロック:20MHz プリスケーラ256回)
if (T0IF) //割込み種がTimer0割込みの場合
{
T0IF = 0; //割込みフラグクリア
TMR0 = -195; //TMR0カウント値再設定 195回(アップカウンタ)
ttcnt++; //100回カウンタ カウントアップ
}
}
//メイン処理 void main(void) { pic_init(); //PICの初期化 while(1) { PORTB = 0b11111110; //RB0点灯 =0xFE wait_1sec(); //1.0sウェイト PORTB = 0b11111101; //RB1点灯 =0xFD wait_1sec(); //1.0sウェイト PORTB = 0b11111011; //RB3点灯 =0xFB wait_1sec(); //1.0sウェイト PORTB = 0b11110111; //RB4点灯 =0xF7 wait_1sec(); //1.0sウェイト } } /* PICの初期化 */ void pic_init(void) { TRISA = 0b11111111; // RA0-4を1:入力に設定 TRISB = 0b00000000; // RB0-7を0:出力に設定 OPTION = 0b0111; //プリスケーラ値設定 0b0111(=256回) TMR0 = -195; //TMR0カウント値設定 195回(アップカウンタ) T0IE = 1; //タイマ割込み許可 GIE = 1; //全体割込み許可 ttcnt = 0; //100回カウンタ値クリア } /* 1.0sウェイトルーチン */ void wait_1sec(void) { unsigned int cnt = 100; //10ms * 100回 = 1s while (ttcnt < cnt) { NOP(); } ttcnt = 0; //100回カウンタ値クリア }
800 :
774ワット発電中さん :2009/06/21(日) 12:24:11 ID:Vl1zfnGG
質問です。PIC18F2550からmicroSD(SPIモード)への書き込みに挑戦しています。 MPLAB上でC18コンパイラで行っているのですが、プログラムがリンカでどうしても失敗します。 Error - section '.code_FSIO.o' can not fit the section. Section '.code_FSIO.o' length=0x0000d95c FSIO.cというファイルは確かにあるのですが、 このファイルを含めるのに0xd95cもの領域を必要とすると言うことでしょうか? それとも何か記述が足りないのでしょうか? おわかりの方いましたら教えてください。一応以下にリンカファイルの記述を晒しておきます。
801 :
774ワット発電中さん :2009/06/21(日) 12:25:14 ID:Vl1zfnGG
LIBPATH . FILES c018i.o FILES clib.lib FILES p18f2550.lib CODEPAGE NAME=page START=0x0 END=0x7FFF CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED ACCESSBANK NAME=accessram START=0x0 END=0x5F DATABANK NAME=gpr0 START=0x60 END=0xFF DATABANK NAME=gpr1 START=0x100 END=0x1FF DATABANK NAME=gpr2 START=0x200 END=0x2FF DATABANK NAME=mmd3-4 START=0x300 END=0x4FF PROTECTED ←512byteは必ず必要なんですよね? DATABANK NAME=mmd5-6 START=0x500 END=0x6FF PROTECTED ←512byteは必ず必要なんですよね? DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED SECTION NAME=CONFIG ROM=config STACK SIZE=0x100 RAM=gpr2 SECTION NAME=dataBuffer RAM=mmd3-4 SECTION NAME=FATBuffer RAM=mmd5-6 SECTION NAME=USB_VARS RAM=usb7
>>800 その通りだと思う
CODEPAGEが0x7FFFしかないのに0xD95C確保しようとしている
いい加減PICから卒業すれば良いのに・・・
卒業というより、逃避中退ってところでは。 落第もいいところなんだし。
>>798 791です。
せっかくタイマー割り込みで10msを作っているのに、1秒待ちルーチンで while( ttcnt < cnt ){}だと
もったいなくないでしょうか?
あと、HITECH-Cだと割り込みの種類を自分で解析しないといけないの?
CCSだとアセンブラレベルで判別を組み込んでくれると思う。
こんなのはどうですか?
#define LED_port PORTB
#define clear 0
#define time_1s 100
#define set_10ms -195
#define start_pattern 0b11111110
#define end_pattern 0b11110111
void interrupt isr(void){ //割込み関数 10msecインターバルタイマ(クロック:20MHz)
static unsigned int ttcnt = 0; //100回カウンタ カウントアップ
if (T0IF) { //割込み種がTimer0割込みの場合
T0IF = clear; //割込みフラグクリア
TMR0 = set_10ms; //TMR0カウント値再設定 195回(アップカウンタ)
if( ttcnt++ >= time_1s ) {
if( LED_port != end_pattern) { LED_port >>= 1; }
else { LED_port = start_pattern; }
ttcnt = clear;
}
}
}
void main( void ){
pic_init(); //PICの初期化
while(1){ // タイマー割り込みでLEDの制御も行うので、
} // mainは何もしない
}
今日は寝ます
間違えました。 × LED_port >>= 1; ○ LED_port <<= 1;
>>807 アドバイスありがとうございます。勉強になります。
> せっかくタイマー割り込みで10msを作っているのに、1秒待ちルーチンで while( ttcnt < cnt ){}だと
> もったいなくないでしょうか?
割込み関数の中はなるべく短く。割込みがPICを占有してしまわない様に。
と習いました。でも、基礎の知識で、応用(実践)の経験がありません。
>>797 のプログラムも割込み関数の中は短くなってますが、PICを占有
しちゃってないか?と言われると???です。良くわかりません。
> あと、HITECH-Cだと割り込みの種類を自分で解析しないといけないの?
> CCSだとアセンブラレベルで判別を組み込んでくれると思う。
HI-TECH Cは割込み種類をifで分けます。CCSは自動ですか。便利ですね。
どの様な仕組みになってるんだろう。
割り込みを徹底的に短くするなら、
>>807 氏のをもじって
void interrupt isr(void){ //割込み関数 10msecインターバルタイマ(クロック:20MHz)
static unsigned int ttcnt = 0; //100回カウンタ カウントアップ
if (T0IF) { //割込み種がTimer0割込みの場合
T0IF = clear; //割込みフラグクリア
TMR0 = set_10ms; //TMR0カウント値再設定 195回(アップカウンタ)
ttcnt++;
}
}
void main( void ){
pic_init(); //PICの初期化
while(1){
if( ttcnt >= time_1s ) {
if( LED_port != end_pattern) { LED_port <<= 1; }
else { LED_port = start_pattern; }
ttcnt = clear; //カウンタクリア
}
}
}
とかかしら?
ただし、メインループの待たされ分、実行がズレる。普通はまず無いけど。
>>810 ttcntの宣言そこだと・・・(Ry
それから TMR0 += set_10ms; オヌヌメ
ナイトライダーくらいなら問題ないと思うけど、
・定周期キッチリに出力したい場合などは、
>>807 のように割り込みの中で出力処理
・特に時間に問題がないときは、
>>810 のようにメインで処理
この考えは正しいでしょうか?
>>812 ぉぉぅ。宣言をはじき出すの忘れてた。
で。+= のほうが早いのかしら…コード表とにらめっこするかな。
>>809 >割込み関数の中はなるべく短く。割込みがPICを占有してしまわない様に。
>と習いました。でも、基礎の知識で、応用(実践)の経験がありません。
割り込みは、応用と実体験がないと、なかなかわかりにくいよね。
なぜ「割込みがPICを占有してしまわない様に」した方がよいのか
を理解することが大変重要です。
例えばこんな場合
「LEDを点灯させた後、1秒以内にSWが押されたときだけ、LEDを消して次の処理へ」
while (ttcnt < cnt) とやるとダメなんだよね。
>>815 やはり割込みは実体験がないとわかりにくいですか。
実体験をしてみたいですが
「SW(RB3)を押し、LED(RB0)を点灯させた後、2秒以内にSW(RB4)が押されたときだけ、
LED(RB0)を消して、LED(RB1)を点灯させる。2秒間SW(RB4)が押されなかったらLED(RB2)
を点灯する。」
というコードを、割込みがPICを占有してうまくいかないコードと、割込みがPICを
占有しないようにしてうまく動くコードの2つを書いて実体験してみようとおもう
けど、上に書いた動作のコードでいいですか?
OKだよ。2秒という期間はタイマー割り込みで作り出すということね。
>>816 天ぷら作ってる時に電話がかかってきた(天ぷら料理:main 電話で話す:割込み処理)
「割込みがPICを占有してしまわない様に」てのはそういう事
別に天ぷら料理ではなくて、時間的余裕のある料理だったら割込みがPICを占有しても構わない
実戦しなくても割り込みフラグと実行される時間の幅で タイムチャート書いてみてもいいと思うけどね
>>818 例えがよくわからん。
・電話掛けながら天ぷら揚げればよい。(コードレス、携帯電話の使用、ハンズフリー機能の使用)
・天ぷらの火を切って、電話に出て、電話が終わったら、再度天ぷら再開でいいし。
電磁調理器だから火災の心配はないし。
>>820 ひねくれた奴だな。議論を前進させる気無いだろお前。
>>818 はわかりやすいと思うけど。
>>828 のはPICは一部の機能除いて並列動作できないからコードレスとかで同時にやるってのは例えとしては良くないような。
割り込みは強制的だから電話鳴ると電話出るは1セットで考えないと駄目なのは確かに実際とは違うな。
割り込みでフラグだけクリアして戻るのは電話を無視or切ってすぐに戻る感じかな。
823 :
774ワット発電中さん :2009/06/23(火) 15:27:12 ID:BlaDMBLv
スレチかもしれませんがわかる方いましたら教えてください。 温度センサー(LM61BIZ)をPICにて計測しようとしています。 そのまえにどのような値が出力されるかをテスターで計ろうとしたのですが 気温25℃くらいのときにVin5VにてVout430mVとなっています。 データシートによると25℃にてVout850mVのはずなのですが・・・ (ちなみにVo=(+10mV/℃xT℃)+600mV) なぜこんなに違うのかがわかりません。指摘お願いします。
>>825 出力Zの関係かな?Vs>3Vだとmax800Ωだけど
どちらにしても回路が解らんことには...
>>823 Arduinoて最近良く見るけど普通のマイコンボードと何か違うの?
Arduinoてなんと発音すれば良いのでしょう? アルジーノ アーデュイーノ
アルジャーノン
>>831 本家 arduino.cc に本場イアリア語での .wav があったような
>>823 I/Oピンがたくさんあっていいなー
Arduinoから乗り換えようかな
>>827 律儀にPICとAVR書き換えてあるのか
センサ系のスレがナイカラ…とか言えばいいものを…とか書こうと思って調べたら、センサ系スレあるんでやんの。
838 :
774ワット発電中さん :2009/06/24(水) 01:03:17 ID:OYKiBIuy
秋月で売ってる24HJ12GP202で質問です。 コンフィグを下記の様に設定したのですが、高速内蔵RCPLLになってくれません。 config __CONFIG1, JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF &COE_OFF & ICS_NONE & FWDTEN_OFF config __CONFIG2, IESO_OFF & FNOSC_FRCPLL & FCKSM_CSECME & OSCIOFNC_OFF & IOL1WAY_OFF & POSCMD_NONE 何処が間違ってるのでしょうか。
839 :
774ワット発電中さん :2009/06/24(水) 01:04:07 ID:OYKiBIuy
PICKIT2でデバッグすると、OSCCON、の上位バイトが77hでしたので、アンロック シーケンスのプログラムを追加 してみましたが、77hが71hになるだけで、切り替わらない様です。
「高速内蔵RCPLLになってくれない」ことは、何を参照して、どういう根拠で判断した?
>>838 そういえば俺も最初作った時悩んだナー
俺が以前作った24HJ12GP202でのプログラム頭部分をアップしてやるわ
#include <p24Hxxxx.h>
#include <p24HJ12GP202.h>
_FBS(BSS_NO_FLASH & BWRP_WRPROTECT_OFF);
_FGS(GSS_OFF & GCP_OFF & GWRP_OFF);
_FOSCSEL(FNOSC_PRIPLL & IESO_ON);
_FOSC(FCKSM_CSECME & IOL1WAY_OFF & OSCIOFNC_OFF & POSCMD_XT);
_FWDT(FWDTEN_OFF & WINDIS_OFF & WDTPRE_PR128 & WDTPOST_PS32768);
_FPOR(FPWRT_PWR128 & ALTI2C_OFF);
_FICD(BKBUG_ON & COE_ON & JTAGEN_OFF & ICS_PGD1);
ほんで、mainプログラムの頭部分は
int main(int argc, char * argv[])
{
// クロック設定 8Mhz入力で80MHz(40MIPS)設定
CLKDIVbits.PLLPRE=0; // クロック分周(0:CLK/2)
PLLFBD=38; // クロックテイ倍
CLKDIVbits.PLLPOST=0; // クロック分周(0:CLK/2) C
OSCTUN=0;
RCONbits.SWDTEN=0; // ウォッチドッグタイマ無効
while(OSCCONbits.LOCK!=1) {}; /* Wait for PLL to lock*/
間違ってるかもしれんから各設定の意味はデータシートとヘッダファイル読んで確認してくれ
あ!内蔵RCですか! レスは無視してくれ!すまん
843 :
natu :2009/06/24(水) 13:35:57 ID:NZf5jhbG
>>838 CONFIGをそのように書くとプログラムメモリーのどこか(多分.textの続きへ)2ワードに
セクション定義を勝手にされて書込まれるだけだよ。
プログラムメモリを覗けば__CONFIG1,2と言うラベルがCONFIGレジスタアドレスでは無く
プログラムメモリ上に見えるはずです。
__CONFIG1,2じゃ無くFOSCとかFOSCSEL等のCONFIGレジスタアドレスが定義された
記号定数を使いましょう。
連投すまぬ 記号定数→セクションの名前
845 :
774ワット発電中さん :2009/06/24(水) 22:57:32 ID:OYKiBIuy
846 :
774ワット発電中さん :2009/06/25(木) 00:18:18 ID:D7VKrI/K
16行x2列のLCDをPICと繋ぐ上でのコツみたいなのがもしあれば教えていただけないでしょうか 温度計の表示用に16F819と4bit接続で繋ごうとしています。 BFは見ない仕様にしています。 一向に表示させることができず、失敗基盤の山を目の前に心が潰えてしまいそうです 濃度調節用の抵抗をグリグリ回すと黒い四角が表示されるのでLCDは生きていると思われます。 曖昧かつどうしようもない質問で申し訳ないですが このままではLCDを動かすこともままならぬまま息絶えてしまいそうです 励みの一言を・・・
ショショショッショ 初期化ルーちんこ逝けてる?
>>846 16行x2列のLCDと言ってもいくつかの種類がある。
とりあえず入手しているLCDの正式型番を書けやボケ!
初めて作ったならばPICとの接続がどうなっているかもついでの書くのだ糞虫。
曖昧かつどうしようもない質問する馬鹿はまず罵倒される事から始まる。
・基「板」で作る前にブレッドボードで試せ ・AVRに乗り換える
850 :
846 :2009/06/25(木) 00:43:25 ID:D7VKrI/K
即レス感謝の至りです ・初期化るーちんこは某サイトで4bitと8bitの接続についての詳しい解説があったので参考にしますた 多分逝けてます ・LCDはSD1602HUOBというオレンジがかっちょいい奴です ・接続は、LCDのDB4-7とPICのRB4-7、 LCDのRSがPICのRA2、LCDのRSがPICのRA4 に繋いでます ・骸の山を作ってからブレッドボードがあるのに気がつきました、今はブレッドボードです ・AVRって何?うまいの? とりあえずLEDピコピコから進化すべく努力します
>LCDのRSがPICのRA2、LCDのRSがPICのRA4 に繋いでます LCDのRSが2箇所に接続されているぞ。 説明すらまともにできないから道のりは遠いな。 LCDのR/WやEはどこにつながっているのやら・・・・。
>>851 おおお・・・なんか違ったw
RS → RA2
E → RA4
RW → GND
こんな感じです。
あと、LCDの使ってないDB0-3はGNDに落としておくという説と放置しておくという説があるようですが、
何も接続せず放置しています。
んで、一行目にうっすら四角いのが(俗称トーフ)出てるときは8bit->4bitモード移行に失敗しているとおも。 うっかり接続ミスとかMCLRがほにゃらとか。 あと、スピードが速すぎると動かないよ。クロック落としてみた入りして。
> LCDの使ってないDB0-3はGNDに これは開放で放置に決着。Read時は出力になるから。
初期るーチンコの大麻は多めにゆっくりラリっといてネ
>>853 あああああ!
まさにその状況です!
1行目の■だけやたら濃く出てるんですがメガネが曇っていることにして放置してました!
クロックは内蔵の4MHzでやってます。
LCDの未使用ピンは放置でいいんですね。了解です。
とりあえず給料日を生き抜く気力が涌いてきました。
皆様ありがとうございました。
なんとかやってみます
>>856 「生き抜く気力」がいるのは、給料日までだろ?と、つんこんでみる。
「うちは経営者で..」と切り返されたら、どうしよう?
PICのRA4ってさハイにラリれなくね?
LCD初期化出来てれば後は問題ないのさ。 出来てないことを認識せ〜よ。 あ〜因みに電源投入時のデフォは1行modeなので 奇数行のみ■表示だが、初期化設定で2行modeに 切替れば均等濃度に変わるぞ。
>>858 16F818/819や16F88とかのRA4はODじゃないよ。
>>856 どんなコードで動かそうとしてる?
コードを晒せ
コンパイラ名とバージョンもな。
>>852 RA4がODで無いとして
>>RW → GND
では動かないわ。
俺も知りたい
867 :
>>863 :2009/06/25(木) 11:23:20 ID:qjQExeYs
LCD側に書き込みしかしないで動作させるつもりなら、それでも間違いではないが 初心者が最初からそんなプログラム書くこと自体が間違っている。 データシート読めば、プログラムの書きかたやレジスタのアクセス手順は載っている。 まず最初は、その手順に従う、つまりリード/ライトを行うことから始めるべきだ というつもりで書いたんだが、思わぬ突込みを受けビックリしている。
>>867 あのレスからじゃそうは読み取れんと思うが。
ピン節約のためにRWをGNDにつなぐってのは結構普通だからなー。
ただ、コンパイラのライブラリによってはRWつなぐ事前提で書いてあったりするから、ハードとソフトのすり合わせは必要だろうけど。
>>867 お、逃げなかったのはえらいぞ。
素人はそんなにじっくりと取り掛かる事はないよ。
ネットで探して、使っている実例をコピっていく方が早くて確実だと思っている。
しかし、デバイスやスピードを変更した時にいろいろと不具合が出てくる。
だれかがやっているのをなぞっていくのが一番楽なんだよ。
リードライトするより、ライトだけで制御するとルーチン処理が楽になるから誰かが始めたら、みんなそれのまねしている。
逃げ出さずにレスしている
>>867 にびっくりしている。
最初はPICは1クロックでプログラムが動いていると叫んだアホと一緒に思ってしまった。謝罪はするが、賠償はしないよ。
ArduinoでLCDなんて超簡単
質問者は最初に
>>846 で
>BFは見ない仕様にしています。
と云ってるからそれなりにわかってそうだね。
実際、Port出力操作のみの方が簡単だからok
ありがちだけど不具合の切り分けが出来てないな。
推測だけど・・・16F84あたりの例を参考にしてて
Configやanalog入力ピン無効の初期設定とか
拙いんじゃないか?
872 :
>>863 :2009/06/25(木) 13:29:54 ID:qjQExeYs
>>871 確かに。見事に見落としてました。
ID:D7VKrI/K氏。申し訳ない。
AN2,AN4のFAQじゃまいか?
874 :
774ワット発電中さん :2009/06/25(木) 13:43:45 ID:Zoa4cG/4
あの〜、MPLAB v8.30で、MPLAB SIMのシミュレーションでは Memoryのウインドウは利用できないのでしょうか? メニュー項目が灰色になっていて選択できませぬ・・・
>>875 それはPIC32MX用のMemory Windowのこと?
>>816 「割込みがPICを占有したら良くない」を実体験したい為に
「SW(RB3)を押し、LED(RB0)を点灯させた後、2秒以内にSW(RB4)が押されたときだけ、
LED(RB0)を消して、LED(RB1)を点灯させる。2秒間SW(RB4)が押されなかったらLED(RB2)
を点灯する。」
の課題を、割込みがPICを占有しない(割込み処理は必要最小限とする)コードを
書いてみました。課題に示した通り正しく動きました。こんなもので良いでしょうか?
次は、割込みがPICを占有してうまく動かないコードを考えてみます。
/* PIC16F84A
* クロック:20MHz
* HI-TECH C PRO(Lite) 9.60
*/
#include <htc.h>
__CONFIG(UNPROTECT & PWRTEN & WDTDIS & HS);
//グローバル変数の定義
unsigned int ttcnt; //200回(2秒)カウンタ用
void interrupt
isr(void) //割込み関数
{
//10msecインターバルタイマ(クロック:20MHz プリスケーラ256回)
if (T0IF) //割込み種がTimer0割込みの場合
{
T0IF = 0; //割込みフラグクリア
TMR0 = -195; //TMR0カウント値再設定 195回(アップカウンタ)
ttcnt++; //200回(2秒)カウンタ カウントアップ
}
}
//メイン処理 void main(void) { //PICの初期化 TRISB = 0b00011000; //RB3とRB4を1:入力、他は0:出力に設定 RBPU = 0; //PORTBを内部プルアップ PORTB = 0b11111111; //PORTBの中身をきれいにする OPTION = 0b0111; //Timer0プリスケーラ値設定 0b0111(=256回) //PICの初期化終わり while(1) { if (RB3 == 0) //switch downの場合 { RB0 = 0; //LED(RB0) ON RB1 = 1; //LED(RB1) OFF RB2 = 1; //LED(RB2) OFF TMR0 = -195; //TMR0カウント値設定 195回(アップカウンタ) T0IE = 1; //タイマ割込み許可 GIE = 1; //全体割込み許可 ttcnt = 0; //200回(2秒)カウンタ値クリア } if (ttcnt < 200) { //2秒以内の場合 if (RB4 == 0) //switch downの場合 { RB0 = 1; //LED(RB0) OFF RB1 = 0; //LED(RB1) ON T0IE = 0; //タイマ割込み停止 } } else { //2秒以上の場合 RB2 = 0; //LED(RB2) ON T0IE = 0; //タイマ割込み停止 } } }
879 :
846 :2009/06/25(木) 22:46:42 ID:Urd6nBc0
MPLAB v8.30 にて Debugger に MPLAB SIMを指定した際に "Step Out" が使えない(グレー)状態であることに最近気がついたのですが、 同様の症状の方いますか? MPLAB v8.33 にバージョンをあげても変化しないことを確認しました。
>>879 ソースに動作clock明記されて無いみたいだな。
delay-loop数から4MHzらしいけど・・・4MHz発振子付けたの?
Config設定おかしくないか?
> __config _HS_OSC & _CP_OFF & _PWRTE_ON & _WDT_OFF & _MCLR_ON
>>856 で内蔵4MHzと云ってなかったか?
それなら・・・(Ry
>>881 説明不足まくりで申し訳ないです
ブレッドボードに移したときに、記述をちょっとでも減らそうと思って4MHzのセラロックを付けました。
なんとなく内蔵4MHzの設定が間違ってるのではないかと思ったんですが関係なかったので
話をややこしくしただけでした
すまんです
>>879 > call delay1ms ;ここからBFチェックができるけどしない
> movlw B'00101000' ;4bit、1/16デュティ、5*7ドットに設定
> call LCD_CMD_4
どんなLCDつこてるんだらう?
オイラよくわからないママ秋月LCDは
movlw B'00100000' ;1/16デュティじゃないけん
にしてる
884 :
846 :2009/06/26(金) 01:40:44 ID:uVNtwidC
>>883 そのパターンで試しましたが無理でしたorz
液晶はSD1602HUOBという16x2のやつです。
LCDの代わりにLEDを繋いで、そもそもPICが動作しているのかどうかチェックしてみました。
DB4-7に繋いでいるRB4-7はきちんと動いているようでした。
が、RA2(LCDのRS)とRA4(LCDのE)に対して、bcfとbsf命令でLEDチカチカをしようとしたら動いたり動かなかったりです
<動くパターン>
main
bsf LCD_RS
(100msのウエイト)
bcf LCD_RS
(100msのウエイト)
goto main
<動かないパターン>
main
bcf LCD_RS
(100msのウエイト)
bsf LCD_RS
(100msのウエイト)
goto main
mainの前は初期設定です。なんかbcfとbsfが怪しい気がしてきた・・・
とりあえず日記帳状態になるのはよろしくないので、あとはグーグル先生に教えを乞うてみます。
いろいろとありがとうございました。
ポートをHにしてLにする所を一箇所忘れて、以降すべて反転。 それで一週間ハマった僕のLCDデビュー。 オシロで見れば一発だったのだが...。
>886 おお!おめー!! わが身のようにうれしいよ!
889 :
774ワット発電中さん :2009/06/26(金) 10:45:02 ID:uxrfINh3
ピックキット2の在庫が復活しとる
891 :
774ワット発電中さん :2009/06/27(土) 02:13:05 ID:nVqRl8G/
そういえば、 PICC Lite 使っているとLCD用の printf()が使えないですよね。 PICC Lite ではどういうコード書いたらいいんですかね? あと、Nullの概念ってないんですか?? char s; s = Null; ってやるとえらーになります。
>>891 >char s; s = Null; ってやるとえらーになります。
コンパイラーは、Nullなんて言葉は知らないからね。
やるなら、
#define Null 0x00
と定義してやれば、それ以降でNullは0x00と解釈されて、エラーではなくなるけどね、
>>891 * をつけてくださいね〜
char *s;
NullじゃなくてNULLじゃないの?標準ヘッダファイルの中をのぞいて調べるべし
そのコンパイラはどうかしらんがNULLが0じゃない流儀もごくまれにあるので
>LCD用のprintf()が使えないですよね。 >PICC Lite ではどういうコード書いたらいいんですかね? printf()なんて単なるライブラリなんだから,無いなら作ればいいんでないの? >Nullの概念ってないんですか?? Nullの「概念」って何? char s; s = Null; で,sに何が入ることを期待してるの?
>>891 #include <htc.h>
#include <stdio.h>
#include "lcd.c" などとしておいて
unsigned int a,b;
char buf[21];
a = 12345;
b = 23456;
sprintf(buf,"a+b = %5u",a+b);
lcd_puts(buf);
とやれば、LCD表示結果は当然
a+b = 35801
897 :
371 :2009/06/27(土) 11:29:11 ID:jHfvJbCg
>>895 >>Nullの概念ってないんですか??
>Nullの「概念」って何?
VB みたいに Nothing (存在しない、未定義)といった言語としての規定は無い。
>char s; s = Null;
>で,sに何が入ることを期待してるの?
おそらくだが、例えばスタック上のメモリを解放して、s の実体が存在しない
状態を期待していると思われ。
C 言語では、0 を偽、それ以外を真として(厳密な定義はCの規格書を見てくれ)
扱い、これについてマクロで NULL が 0 といった風に定義する事で抽象化すると
はいえ、あくまでもハードを意識すべき言語には違いない。
やるとしたら、0を真と、正の値を異常系、-1 を未定義とか、そんな風に使えばよい。
ぬるぽ
ガッ
900 :
PIC-BASIC :2009/06/27(土) 15:43:35 ID:kZleBcnF
PIC-BASIC(AKI-PIC877ベーシック開発セット、秋月電子)で ケースレー2430ソースメジャーを操作しています 以下の命令でキー押すと600mA出力しますが、 RS232c結線した時にまず「エラー101」不明な文字? と2430が表示します PIC877から何か命令が出ているのでしょうか a=6 略--- Input rb.Bit0 'キーを定義 略--- Serout pb9600,":SOUR:FUNC CURR;:Sour:curr:mode fixed",CHR$(13),CHR$(10) Serout pb9600,":SOUR:CURR:rang 1;:sour:curr:lev ",chr$(48),chr$(46),a,CHR$(13),CHR$(10) 略---
901 :
412 :2009/06/27(土) 16:33:52 ID:70nQ625i
つまりコンパイラの都合でNULLを定義しとくと無駄にメモリ使わないで すませられるってことか。 メモリ管理をコンパイラが行う高級言語ならではだな。 アセンブラだとありえないな
え・・
ワロスw
ところで >おそらくだが、例えばスタック上のメモリを解放して、s の実体が存在しない >状態を期待していると思われ。 これって、ローカル変数にしておけば、コンパイラが(スイッチ次第で)勝手にやってくれるよね?
>>900 文字列を変数に収めて送信したらいかがでせう
>>906 スコープ内でスタックに乗っかってる奴を引きずり出してって
棄てるってことを、=演算子の評価時に実行するという思いで
書きました。スレ汚し失礼ですた。
C語におけるNULLは、実メモリをさしていないことを表す 特別なポインタ値として用いられます。多くの処理系では 0を使いますが、K&Rなどを読むと、0以外の値をNULLに 用いる処理系も存在するとあります。私は見たことないけれど。 ヌル文字とは別物ですし、偽値とも別の概念です。
会社の研修でPICを勉強して、pikkit2まで買ってしまったので、プライベートでPICマイコンを使って何か作ろうと思うのですが なかなか思い浮かびません。 皆さんはどんな物を作ってるのか教えて頂けませんか?
作ってるのは書き込み器,動かしてるのはLEDチカチカ
>>910 親子ロボット工作教室に通ってPICを知った。
色々なパターンの自動車型ロボットを作ったなあ。
↓PICの活用事例紹介としてこのページ参考になるのでは?
ttp://www.picfun.com/appframe.html PICkit2(3,500円)が発売される前は、みんな作るものがないのか、ああでもないこうでも
ないと言って「PIC書込み器」を何種類も作ってた人多かったなあ。
でも、廉価高機能のPICkit2(3,500円)が発売されてその目的も奪われてしまった。
>>910 赤外線を使った各種リモコン
似非盗難防止装置
バイクのデジタルCDI
USBオシロ
等々
915 :
891 :2009/06/28(日) 14:20:11 ID:p5toNr5z
NULLに関しては何とかなりそうです。 LCDに出力したいので、 NULLは s = " "; でいいと思います。 893>> 参考にさせていただきます。 なかなかPICCのサンプルを見つけれなくて困っておりました。 いつも、同じ環境で作ったプログラムをネットでゲットして、 それと自分のプログラムを見比べるという作業をしているので助かります。 ありがとうございます。 895>> アナタというとおりsに何が入ることを期待するか それを考えると別にNULLでなくても答えはおのずと見えてきますね。 参考になりました。 上述のとおり s = " "; とします。 896>> lcd.cはどこでゲットするんでしょうか?? 自作してもいいので参考になるサイト等あれば教えてください。
916 :
891 :2009/06/28(日) 14:23:21 ID:p5toNr5z
>>909 勉強になります。
やはり
>>895 の言うとおり
どんな処理をしてほしいのかというのを
考えて代替案を探したほうがよさそうですね。
917 :
891 :2009/06/28(日) 15:34:02 ID:p5toNr5z
>>914 の記載に訂正があります。
lcd.cはどこでゲットするか
⇒lcd.hはどこでゲットするか
です。
lcd.cはそのまま
>>896 のURLにあるとおりですね。
lcd.hは自分のPCのsamplesにありましたが、
内容にわからないところがあります。
たとえば
「アケオメ」と表示させる場合、
0xB1⇒0xB9⇒0xB5⇒0xD2と入れなくてはなりません。
つまり、
0xB1ではかきのようになりますが、
「ア」を0xB1と変換させているのはどこなのでしょうか?
asci = 0xB1;
LCD_RS = 1;
RB4 = (asci & 0b00010000) >> 4; //Set 8 Bit U0
RB5 = (asci & 0b00100000) >> 5; //Set 8 Bit U1
RB6 = (asci & 0b01000000) >> 6; //Set 8 Bit U2
RB7 = (asci & 0b10000000) >> 7; //Set 8 Bit U3
LCD_RS = 1; //Control Bit
wait_us(20);
LCD_E = 1; //Enable 1
wait_us(20);
LCD_E = 0; //Enable 0
RB4 = (asci & 0b00000001) >> 0; //Set 8 Bit U0
RB5 = (asci & 0b00000010) >> 1; //Set 8 Bit U1
RB6 = (asci & 0b00000100) >> 2; //Set 8 Bit U2
RB7 = (asci & 0b00001000) >> 3; //Set 8 Bit U3
LCD_RS = 1; //Control Bit
wait_us(20);
LCD_E = 1; //Enable 1
wait_us(20);
LCD_E = 0; //Enable 0
wait_us(40);
lcd_puts("アケオメ"); でいいんじゃね?
919 :
891 :2009/06/28(日) 16:06:21 ID:p5toNr5z
>>918 回答ありがとうございます。
これらの変換はPC、PIC、その他のプログラミング言語共通なんでしょうか??
もしかして、
char s;
s = "ァ";
printf("%x", (int)s);
とやると
"ァ"って出力される???
アセンプラ(MPASM)の場合 movlw 'ア' と movlw 0xB1 は同じ。
HI-TECH CやMPLAB C18とかで
UART出力なら printf("ア");
LCD表示なら lcd_puts("ア");
LCD表示でprintf書式を使うなら
>>896 の様に sprintfを利用すればok
あと全角(2byte系)文字はダメだから
>>919 全角は無理だから。
s = "ア";
と記述したとして、それだと
b1
て表示されると思うんだけど。
%xの意味わかってるの?
>>923 s = "ア";
もダメ。
s = 'ア';
だし
>>919 はもっとポインタを勉強しないと先進めない
ピンポイントに「ポインタの勉強」よりも、むしろ「C言語の基礎勉強」だろうな。 どう見ても、ポインタだけダメで他はOKとは見えない。
891は頭が良過ぎ。整理が出来てないだけ。 彼のレス・書いたコードを見たが、成長するタイプ。
928 :
891 :2009/06/29(月) 00:14:55 ID:4G9GoR2/
>>923 たしかにそうですね。
>printf("%x", (int)s);
>とやると
>"ァ"って出力される???
わけないですね。
当然、B1ってなりますね。
ご忠告ありがとうございます。
>>928 どうしてもprinftでLCDに文字を出したいのなら自前でvoid putch(char)を
LCDに向けて実装すれば良いyo。
表示位置はprintfの前にlcd_gotoで設定してからな
#include <htc.h>
#include <stdio.h>
#include "lcd.h"
void putch( char c )
{
lcd_putch( c );
}
void main( void )
{
printf( "abc" );
while ( 1 ) { }
}
930 :
891 :2009/06/29(月) 20:54:58 ID:4G9GoR2/
>>929 printf()は使用しません。
lcd_putch()を使用します。
ただ、lcd_putch()の中身がわからなかったので、
わからないまま使うのもいかがなものかと思いまして。。
ちなみに、LCDのデータシート見てパラレルなり SPI なりのタイミング チャート見ながら、じっくり触ってみようなんてのは、アホのやる事なん ですか?
>>932 <訂正>
中級者以上のやることだと思う
とりあえず、ライブラリとコードもらってきて、動かしてみる。 そんでライブラリの中みて、ああそうかとわかったつもりになる。 で、適当に書き換えると、タイミングが違って動かない。 さあ、どうしよう。 こんなん、10回ぐらい繰り返したら、ツボが見えてくるよ。
>910 PICKIT3クローンを作る。 ICD2クローンを作る。 これでPICKITが壊れても安泰だね。 と亀ってみる。 …ICD3はFPGAみたいだからむりぽ…。 real-iceは流石にクローンは無理か…。
>>931 「アホのやる事」がどの部分を指しているのか分からんが・・・
LCDにアクセスするコードを書くときに、データシートを参照してタイミングチャートを
確認する行為のことなら、やって当然、やらんやつがアホという基本中の基本だよ。
>>930 >printf()は使用しません。
うわぁ〜酷ぇ。
どうりでsprintfにも関心示さないわけだ。
>>930 意味不明。
>>891 の質問の真意は?
あとlcd_putch()の中身を知る必要は?
何のためのC言語?
もうほっとけよw
940 :
natu :2009/06/29(月) 22:45:51 ID:YaLBKS4I
>>930 >>891 int _printf(char* s)
{
return( cd_putch(s) );
}
意味はこんな感じで printf を 使うようにした方が後で変更する時に便利だよ。
でも char* や cd_putch() の 戻り値の厳密な型を 理解しないと出来ないかも?
char* も ROM と RAM では表記方法が異なるし、使う C言語でも異なるよ。
エラーが出たら、どういう意味のエラーかが 理解出来るようになれば スキルアップするね。
↓のプロトタイプ宣言が理解できるように成ったら C言語は使いこなせるようになるね。 extern unsigned int16 _printf(const far rom char *, ...); ガンガレ
仏
945 :
931 :2009/06/30(火) 08:58:57 ID:YmHyuWDr
みんなやさしいなぁ。ここは良いスレ。
>>941 ,942
printf の f つまり format する部分が入っとらんやん。
せめて puts とか別の名前に割り当てた方が良いと思う。
簡易的なフォーマット解釈する printf を自作してみても
面白いと思うよ。%s %d くらいは対応してるとかね。
メモリがギリギリだと、豪華ライブラリのせられなかったり
もあるんじゃねーかと。
947 :
natu :2009/06/30(火) 11:03:25 ID:d1hCoZqr
C18でprintfの変換を使うなら #include <p18cxxx.h> #include <stdio.h> int _user_putc( char c ) { lcd_putch( c ); //好きなように } void main(void) { stdout = _H_USER; printf( "ABC=%d", 123 ); } でOK。プログラムはこれだけで4Kbyte程必要だけど...
>>947 ということはstdinも変更できる?
出所を教えて。
>>948 stdinは全部自前になって実装は疲れると思う。
出処は
C:\mcc18\h
C:\mcc18\src\traditional\stdclib
"_H_USER"でググって見ると英語が多いみたい
>>945 >>931 extern unsigned int16 _printf(const far rom char *, ...);
↑のプロトタイプ宣言の最後の ... は可変長の引数を意味しています。
後ろに何個引数が来るかはわからないよって意味ね。
フォーマットが無いって言って来ると思って付け足したんだよ。
最初はフォーマットまで対応するのは難しいでしょ。
C18 の初期の頃にアセンブラで自作でしたからね。今は楽になってるね。
その後は BlackFin では桑野さんの PSoC C言語の printfを 移植させて使わせて貰いました。
951 :
PIC-BASIC :2009/06/30(火) 20:22:27 ID:D6lnjT+l
908さま 略--- Serout pb9600,":SOUR:FUNC CURR;:Sour:curr:mode fixed",CHR$(13),CHR$(10) Serout pb9600,":SOUR:CURR:rang 1;:sour:curr:lev ",chr$(48),chr$(46),a,CHR$(13),CHR$(10) 略--- pb9600以降を文字列に代入して見ましたがNGです 文字列として出力しません
952 :
>948 :2009/06/30(火) 21:35:22 ID:C9RbxGbG
>949 感謝!
>>944 つか、メアドみて分らない香具師はモグリなんだが
SPI通信って何メートルの電線まで通信できるのでしょうか?
>954 線路長の質問は非常に返答しにくい。基本的に基板内部での通信を想定している 事からm単位にはならなず、せいぜい数十cmになる。 後は通信速度から周波数を計算して波長の1/4以下に抑えるというのが答えになるか? しかし、本当にSPI通信にあった使い方かどうかをよく検討した方が良いと思う。
あれま そんなに短距離なんですか・・・ 数十メートルで高速通信するには何がいいですか?
SPIと同じくらい高速です
>>959 これこれ。ちゃんと数字で書け。
200kbps程度なら485でもいいしそれ以上なら別の手を考えなくてはならん。
答えを求めるならちゃんと書く事。
すげー
6m、数十kbpsの通信にRS485使ったけどオーバースペックだな 石が300円もするから贅沢な使い方だ
>963 批判を承知で書くが、高々300円が高い?量産数はどのくらい? 手持ちソフトのライブラリや開発期間の余裕を含めて考えて評価すべき で、単独の部品代で高い/安いをいうのは余程の量産数で無いと意味がない。 ここは2CH。アマチュアから小規模生産者も多数参加している。
石を使う必要もないな
> ここは2CH。アマチュアから小規模生産者も多数参加している。 こだわりのアマチュアも、大量生産を夢見る小規模生産者も参加してますね。 ええ、批判してるわけじゃないです。
でじきーで100個単位なら180円程度か、量産品なら普通これくらいの量は買うよな。 と言うか25個でも単価なら秋月より安いな。
SPIもIICも基本はオンボードIC間。
差動信号というのが音響マニア的でカッコイイネ
価格の高い・安いも難易度の難しい・簡単と同じで、その人次第だよなー。 「安いものを探してます」とか「難しいですか?」とか、それだけ書く人が よくいるけど、それだけじゃ答えようがない。
>>964 趣味でちょっとさわっただけで量産とかは次元の違う話
通信には相手がいるから、2個用意して600円だ
これに12F629と16F88あたりを繋いで使ったりすると値段が際立つ
高いなんて言ってないけど所詮6m、数十kbpsの通信ごときに使うには贅沢でしょう
別に1万のグラボが高いとは思わないけどゲームしないなら「贅沢」だと思わない?
973 :
774ワット発電中さん :2009/07/01(水) 23:14:09 ID:+ZxN4J0n
PICでSDカードアクセスに挑戦している者です。利用しているのは18F2550です。
アクセスがうまく行かず、相談させていただきます。
いろいろ調べてみましたが、そもそもSPI通信がうまく行ってないことが解りました。
SDカードは切り離して、SDO,SDI,CLKを100KΩを介して、全てVccに繋げてました。
SDIがVccにつながれているにもかかわらず、SSPBUFに値を(0xFF)を書くと、
0xFFではなく0x5Aなどという意味不明な値が何度やってもSSPBUFに入ります。
原因がさっぱりわかりません、原因として考えられることがあれば教えてください。
ソースをこちらにうpしました。
http://toukatugiken.dip.jp/main3.txt
974 :
774ワット発電中さん :2009/07/01(水) 23:15:17 ID:+ZxN4J0n
繋げてました → 繋げました の間違いです、失礼しました。
VCCに繋いだつもりが、実は繋がってねーんじゃねーの? そのせいでSDOとCLKから合成された中途半端な電位が入力されてると。
秋月のダウンロードサイトにあるHEXファイルのウインドウズ上でのサイズが該当するPICのデータシート上のプログラムメモリー量より遥かに多いのだけど HEXファイルをPIC上に移したときのサイズを知る方法ってありますか?
HEXファイル フォーマットでググれ
978 :
natu :2009/07/02(木) 09:36:50 ID:pXnf78xs
>>973 こっちへ来たのね...
ADCON1は調べたみたいですね。それでSPI通信部分は
動く気がする。多分(BFはRO)
デバッグ用に16バイトEE-PROMへ記録している値が0x5a
で全て同じならハードも動作してるんじゃないですか?
>>977 教えてくれてたキーワードで芋づる式で分かったよ。
HEXファイルのデータ領域は可変長だから、そのファイルサイズからはメモリ使用量は分からない
メモリ使用量を確認するにはMAPファイルを覗けばいいのだね
980 :
774ワット発電中さん :2009/07/02(木) 11:30:44 ID:yp4T2s9g
>>957 LTC1485CN8 と普通の2芯ケーブル10mで
20Mbps 迄可能でした。実測値です
PIC が追いつきません
ノイズが心配ならツイストシールドを使います
使い方がわかりもはん
982 :
774ワット発電中さん :2009/07/02(木) 12:06:24 ID:GnLr5c61
おいどんもわかりもはん
983 :
774ワット発電中さん :2009/07/02(木) 12:44:47 ID:KMza8e63
>>980 補足事項です
端末に電源を送る+5VとGNDの
2本も一緒に敷設しています
シリアルでそれだけ帯域あればシフトレジスタ挟んで 複数ポート混ぜてもいいね
差動信号と電力供給を兼用して、差動信号を全波整流して電源として使ったりして
>>973 ・テスタでピンの電圧を測ってみる
・ICD2なりPICkit2なりがあればインサーキットデバッグすべし
めんどくさい方法でやってるってことは持ってないのかな