[秋月の新シリーズのPIC16F1xxx テンプレ用] 旧シリーズより機能が大幅にアップしていて値段も下がってる。新規に組むならこちらから選択すべき [40pin] 16kwハ必要ナイカモシレナイケド10円差ナラ ◎16F1939 \180 16Kw 1024 I/O36 ADC14 CapS16 Comp2 Timer4/1 MSSP1 ECCP2/1 CCP2 ○16F1937 \170 8Kw 512 I/O36 ADC14 CapS16 Comp2 Timer4/1 MSSP1 ECCP2/1 CCP2 [28pin] ナゼ同価格ニ設定サレテイルノカ理解デキナイ ◎16F1938 \150 16Kw 1024 I/O25 ADC11 CapS8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 ×16F1936 \150 8Kw 512 I/O25 ADC11 CapS8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 ×16F1933 \150 4Kw 256 I/O25 ADC11 CapS8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 [18pin] 18ピンの割にMSSPが2コ,ADC入力ピン多,タイマーx5,CCPx4と多機能 ◎16F1827 \120 4Kw 384 I/O16 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 [14pin] 機能的に8ピンとあまり変わらないのは残念 ◎16F1823 \100 2Kw 128 I/O12 ADC8 CapS8 Comp2 Timer2/1 MSSP1 ECCP1/0 CCP- [8pin] 8ピンでUSARTもI2Cも使えるってのは大きいね ◎12F1822 \80 2Kw 128 I/O6 ADC4 CapS4 Comp1 Timer2/1 MSSP1 ECCP0/1 CCP- 表記 Timer[8bit]/[16bit],ECCP[Full]/[Half],CspS=CapSense,Comp=Comparator 共通 EEPROM256byte,EUSART,SRLatch(555相当?),10bitADC,5bitDAC,1.024V基準電圧,温度計(?) VDD1.8〜5,5V,Max32MHz(Vdd2.5V以上),4xPLL有,内蔵OSCでも32MHz可 プログラム面で新命令追加,bankは32マデ拡張,スタック16レベル,LATが追加,割込時のレジスタ自動保存 16bit幅で2本になったFSRデ連続配置RAMやプログラム領域アクセス可能 追加命令群 ADDWFC,SUBWFB : キャリー,ボローを含んだ加減算 ASRF,LSLF,LSRF : シフト命令 BRA : PCLATHやページ境界に関係なく相対ジャンプ [9bit幅] PC+255〜PC-256へ BRW : PCLATHやページ境界に関係なく前方へのみ相対ジャンプ PC+W(0〜255) ADDWF PCL,f ヨリ便利 CALLW : 上位はPCLATH,下位はWのアドレスにサブルーチンコール MOVLB,MOVLP :バンクセレクト,PCLATHに直接定数入れる TRIS,OPTION :TRIS(A〜C),OPTION_REGにWの値入れる(12bit幅品互換?) RESET : ソフトウェアリセト ADDFSR : FSRに定数(-32〜+31)加減算 MOVIW,MOVWI : INDFガツカイヤスク FSRに対して[PRE/POST][+1/-1]や定数(-32〜+31)offset可能
秋月のPIC12/16F(旧)シリーズ 命令セット14bit幅&DIP品限定ピン数別評価 あくまでも旧シリーズ内での相対評価。新シリーズが使えない場合のみ有効 (先頭のvは値下げ,-は維持,*は新規)'11/8更新版 -40ピンは◎16F887 \200 40ピン600mil幅が許せるなら 旧シリーズ最強 -28ピンは◎16F886 \190 887よりピン数減ってスリム(400mil幅) ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば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カ値段でF716いっそ20pinにするか -×16F84A \250 機能無,1Kw,新規では不要だけど作例参照用or互換用に -△16F648A \180 CCP有,USART有,4Kw,内蔵4MHz,ADCないのはオシイ -△16F628A \160 F648Aの2Kw版,売りが値段だけだと厳しいかな -×16F627A \160 F648Aの1Kw版,売りの低コストで628Aと並ばれると・・・ -×16F627 \200 F627Aの改良前Ver,なぜこんな物が・・・ -◎16F88 \200 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzと旧18ピンの王者 -×16F87 \200 F88にADC無い,F88と同価格では不要・・・ -○16F819 \180 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,F88とはROM容量の差 -×16F818 \200 F819の1Kw版,上位のF819より高くては不要・・・ -◎16F716 \110 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い,ADC8bit注意 14ピンはF688の値下げで他2がほぼ不要に v◎16F688 \120 ADC有,eUSART有,4Kw,内蔵31K-8MHz -×16F676 \140 ADC有,1Kw,内蔵4MHz -△16F630 \110 F676のADC無し 無機能で影薄い、今まで存在に気付かなかったw 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い -◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 -○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 -○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欲しいなら ◯12F510 \60 ADC有(8bit),1kw,内蔵4Mor8MHz,EEPROM無し ×12F509 \60 機能無し,1Kw,内蔵4M,EEPROM無し △10F222 \70 DIP8ピン,1/2Kw,内蔵4Mor8MHz,米粒PICのデバッグ用 △10F200 \70 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用 マークの意味 ◎お勧め、用途決まっていないならこれ買っとけ ○内蔵モジュール減ってるけど、その分値段も安くなってるから、まあまあ △内蔵モジュール大幅に減ってる、\10でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない。
秋月DIP品限定18,24,dsPICシリーズ 18Fシリーズは多いけどUSBが使えるこのあたり(他のは性能の割に高い) -◎40ピン 18F4550 \400 -◎28ピン 18F2550 \400 (△18F2420 \300 USB無し) v◎20ピン 18F14K50 \170 5V動作,Max48MHz,8Kw,768RAMナラUSBナクテモ 24,dsPICシリーズ(24F,dsPICは品数限られていて,値段も高め) 40ピン -○30F4013 \650 16kw 2KB EEPROM1KB -×30F3014 \750 8kw 2KB EEPROM1KB 28ピン -◎24FJ64GA002 \350 21.3kw(64kB) 8KB EEPROM無 リビジョンはイクツカナA3/4ハナイヨナ -△24HJ12GP202 \400 4kw 1KB EEPROM無 -○30F4012 \750 16kw 2KB EEPROM1KB 5V必須ならこれかな -△30F2020 \700 12kw 0.5KB EEPROM無 -△30F2012 \500 4kw 1KB EEPROM無 -○33FJ32GP202 \450 11kw弱(32kB) RAM2KB 高速性能を求めるなら 18ピン -○30F3012 \500 8kw 2KB EEPROM1KB 共通 24Fシリーズ Vdd2.0-3.6V Max16MIPS 5V入力可(全ピンジャナイヨ) 24Hシリーズ Vdd3.0-3.6V Max40MIPS 30Fシリーズ Vdd2.5-5.5V Max30MIPS DSP命令有,5V動作可 33Fシリーズ Vdd3.0-3.6V Max40MIPS DSP命令有
5 :
のうし :2011/08/15(月) 09:07:10.70 ID:WZRrV51C
んで、もまいらはそんなDSPレベルので何すんのよ?
個人的に一押し DSPIC33FJ16GS502I/SP 33Fシリーズ Vdd3.0-3.6V Max40MIPS DSP命令有 高速高精度PWM機能付き
>>5 電源、オーディオ制御。(アルゴリズムを自分で考えるって意味で)
ロートルだとこれが限界かな。
(大規模DSPは下手するとFPGAよりむずいw)
8 :
5 :2011/08/15(月) 09:20:19.98 ID:WZRrV51C
DSPがワンチップになっていると楽だ罠。 いつの時代だか、テキサスのDSPをゲットして、なかなかない高速メモリと接続して「早っえー!」なんてやったけど今は味気ないねえ。 ワンチップじゃない時代はバスサイクルが見れて面白かった。 ところでモーターのベクトル制御なんかどうよ?
>>8 センサレスベクトル制御とかかっこいいよなー。
中身理解して自分で書き下ろすのは、できるの?って感じだが…
10 :
774ワット発電中さん :2011/08/15(月) 11:09:49.08 ID:wVW5WxLP
シーケンサ以外の用途となると数学がわからないと何もできないね。
11 :
774ワット発電中さん :2011/08/15(月) 11:18:23.49 ID:Bigns0/z
MATLABで簡単に動いたよ。
12 :
8 :2011/08/15(月) 11:44:42.43 ID:WZRrV51C
MATLABいいねぇ 高くて買えないけど。
>>13 Scilabでいいやん。
>>1 結局テンプレのままかよ。
FAQが書けないとは、情けない奴だな。
>>14 おお、DSPIC用のブロックセットがあるんだね。
これでLチカやってみよう
16 :
12 :2011/08/15(月) 14:01:17.02 ID:WZRrV51C
DSPでLED点滅? すごい転送量だろうなw‥
17 :
774ワット発電中さん :2011/08/15(月) 18:54:26.90 ID:Bigns0/z
Cしか出来ない奴はMATLABネタについてこれないから静かだな。 と思ったら変なのがwww
アセンブラは難しいとでも言いたいのか? 一番簡単。
組み立てるのがめどいだけだな。 スパゲティでいいなら、アセンブラだろうとC言語だろうと、覚えてしまえば書けるし。 ところで MATLABって数値演算に特化した言語よね? PICで有意義に使える使い道ってそんなに無いような…
>>19 > PICで有意義に使える使い道ってそんなに無いような…
フィルター組むなら常道。知らんの?
21 :
774ワット発電中さん :2011/08/15(月) 20:36:07.89 ID:Bigns0/z
MATLABはオプションが沢山あって、そのうちのSIMULINKをつけとくと ブロック線図を描けばシミュレーションが出来るし、エンベデットコーダーも付ければ ブロック線図がそのままCに落ちるからマイコンでH∞制御とか簡単に出来る。 DSPIC向けのブロックセットがマイクロチップから出てるので、それも入れれば DSPIC用のCが吐き出されると言う訳。 DSPICでロケット飛ばすのも乙かも試練。
22 :
774ワット発電中さん :2011/08/15(月) 20:39:42.43 ID:Bigns0/z
>>20 フィルタ組むならMATLABなんて不要だな。
てか、出来ない訳じゃないが目的が違う。
デジタルフィルタや2次系以上のフィードバック制御を設計 できる香具師はここには居ないか、居てもアセンブラ対C の議論をニヤニヤしながらROMしてるだけだと思う。
24 :
774ワット発電中さん :2011/08/16(火) 06:35:33.54 ID:fOjRfTjv
Cしか出来ない奴ってMATLAB使うセンスは無いんだな。 てか所詮コーダーだから不要かw アセンブラ位なら口を出せるけど中途半端だしw
>>21 なんかおもしろそうだ。
が、そこまでする元気はないな…
MATLABをググってみたが、アセンブラからの遠さ的には、CとBASICの間ぐらいかしら? 拡張は別として。
matlabやmaximaは数式処理が出来るからCとかBASICとかいう話とは方向性が異なるよ。 maximaでぐぐってみるとよろし。
maxima solveや maxima ratsimpでぐぐった方が早わかり
29 :
774ワット発電中さん :2011/08/16(火) 15:37:13.17 ID:fOjRfTjv
>>26 まあ、金も掛かる品
言語としてはBASICみたいなもん。基本的な部分はインタプリタでBASICより数式処理が得意なだけだが
エンベデッドコーダーやリアルタイムワークショップを追加するとブロック線図(GUI上でいろんな機能のBOXを並べて線でつなげるだけ)
がそのままスタンどアローンのPCで動くようにコンパイル出来るし、各社IOボードもGUI上のBOXが用意されてる。
コンパクトにしたいならDSPICやFPGA用にもコンパイル出来る。
MATLABが単なる数式処理アプリだったのは過去の話でそれだけならフリーでも沢山あるが
肝はSIMULINKとそれの各種ブロックセット。フリーで似たようなことが出来るのはScilab位だな。
PCでしたシミュがそのままターゲットでリアルタイム処理として動くから
制御系やるならとても便利だけどオプションが高いから簡単に数百万いく。
仕事で使うなら安いもんだと思うが最初動かすまでが大変かもな。
30 :
一応大学生 :2011/08/17(水) 03:42:03.34 ID:rDzpOG8M
こんにちは。 いま、SDCCでコンパイルされたソースをPIC16F88に書き込んでLCDの制御をしようと思い、datasheet見たりネットでいろいろ調べて、 DB4〜DB7をRA6、RA7、RA0、RA1の順で接続、RSをRB6、ENをRB7に接続して、 4BITモードの設定や文字出力の信号がでるように、プログラムを立てたのですが、 LCDは、うんともすんとも言いません。 回路は大丈夫のようなのですが・・・・ ここでしたら、分かる方がいると思い書かせていただきました。 よろしくお願いします。 ↓C言語で書いたプログラムです。コンパイルはできました。 int main (void) { ANSEL=0x00; /*アナログ OFF*/ TRISA=0x3C; /*RA2〜RA5を入力設定*/ TRISB=0x0F; /*RB0〜RB3を入力設定*/ PORTA=0x00; /*ポートAを初期化*/ PORTB=0x00; /*ポートBを初期化*/ delay_ms(36);ここから PORTA=0x80; PORTA=0x80; PORTA=0x03; delay_ms(1); PORTA=0x00; PORTA=0xC3; delay_ms(1); PORTA=0x00; PORTA=0x40; delay_ms(2); PORTA=0x00; PORTA=0x81;ここまでがLCDの初期設定(4BITモード)の部分です。 PORTB=0xC0;ここから delay_ms(1); PORTA=0x8C; PORTA=0x44;ここまでは、文字データ出力です。 return (0); } ちなみに、delay_ms(n) はnミリ秒間待つ関数です。
>>30 >回路は大丈夫のようなのですが・・・・
この自信はどこから来るのだろうか…
>>30 コントラスト調整VRを回して、何か変化がある?
>プログラムを立てたのですが、
プログラムは、立てるとはいわない。作ると言う
33 :
774ワット発電中さん :2011/08/17(水) 04:05:29.54 ID:secleO1G
電流計で流れていないところがないってことを確かめただけで、 安易に大丈夫だろうと考えています。 やっぱり、ちゃんと調べるべきですよね。
34 :
774ワット発電中さん :2011/08/17(水) 04:08:09.71 ID:secleO1G
>>32 バックのLEDの明るさが変わります。
プログラムはつくる。
わかりました。
>30 TRISのbit設定が逆じゃないですか E(EN)信号が全く制御されていないようだけど… 配線を楽にしたいからと言ってbit並びを滅茶苦茶にするのはどうなんでしょ 下記が何をしたいかさっぱりわかりません。通常はDB7-4="0011"にして E信号を0→1(最低230ns)→0にする処理だと思いますが >PORTA=0x80; >PORTA=0x80; >PORTA=0x03;
36 :
774ワット発電中さん :2011/08/17(水) 04:52:00.09 ID:secleO1G
>TRISのbit設定が逆じゃないですか えっと、TRISって"1"で入力、"0"で出力じゃなかったでしたっけ。 "bit設定"って上のとは違うもののことですか? "bit設定"という言葉が何をするものなのかわからないので、 よろしければ教えてください。 > E(EN)信号が全く制御されていないよう インストラクションを送る際にもE信号は必要なのですか?
37 :
774ワット発電中さん :2011/08/17(水) 05:38:21.96 ID:SOtI6oyY
>配線を楽にしたいからと言ってbit並びを滅茶苦茶にするのはどうなんでしょ >下記が何をしたいかさっぱりわかりません。通常はDB7-4="0011"にして 全然問題ない。プログラムが見辛いのはセンスが無いから。
>>34 表現が間違っていると願いたいが、
コントラストの調整でLEDの明るさがなぜ変わる。
>36 ごめんTRISの件は勘違いだった。 >インストラクションを送る際にもE信号は必要なのですか? インストラクション? 。データでもコマンドでもLCDにデータを送る際は必ず必要 もちろん最初の"0011"や"0010"を送る際も必要
ところでPICの入力(スイッチつなぐ方)って1が電流流れてない状態で0が流されてる状態なの?
>>41 回路による。
マイコンの入力端子自体は、入力インピーダンスが高いので、どちらの状態でも
ほとんど電流は流れない。
意味不明、トランジスタの構造から勉強し直し。
内部プルアップ使ってれば、そう言っても間違いじゃないな。
>43 入力端子っていっても、 トランジスタと違ってFETを使ってるわけだし、 GPIO入力で内部プルアップを使う場合を除けば入力電流は微少で、 0でも1でも電流の値は変わらない(少なくともデータシート上は)のが普通では。 GPIO以外の入力端子(GPIOとして使えない入力専用の端子なんて付いてないチップが大半だけど)なら、 42の答えでも間違いじゃない気がするんだが...
46 :
42 :2011/08/17(水) 18:57:33.54 ID:mT/qoGWa
>>45 >GPIO入力で内部プルアップを使う場合を除けば入力電流は微少
内部プルアップに限らず、単極単投のスイッチを使う場合は、内部または外部の
プルアップ/プルダウン抵抗が必ず必要ですよね?
この抵抗無しで単極単投スイッチを使える方法があるのなら、是非教えて
頂きたいのですが…
シリアル受信のタイムアウト処理をアセンブラで書きたいんだけど、いまいちわからん。 受信フラグRCIFの監視ループ内にタイマの割り込みフラグ監視いれるの? 最初のデータまでは、タイムアウトしたくないんだけど。 うまく質問できないので、サンプルプログラムがあるとうれしい。
>>47 目的は?
部品点数を減らしたいだけなら、素直に内部プルアップすればいいよね?
>>48 自分なら、一定の周期でメインループを回して、その中でRCIFを読むという処理にする。
受信フラグがあるなら、バッファを読みに行く。無いならそのままメインに戻る。
タイムアウトが欲しいなら、RCIFを読みに行った回数を数える。
受信後すぐに処理をしたいのなら逆にシリアル受信そのものに割り込みを使う。
50 :
一応大学生 :2011/08/17(水) 20:17:20.06 ID:7MiDXfqz
>>40 そうだったんですか!
timing chartにはdata writeって書いてあったので
勘違い。これで出来たらまた書きます。
>>39 コントラストのピンに半固定抵抗ちゃんとつけて、コントラスト変わってます。
>>47 回答1:抵抗という部品を使わない方法という命題への解でよければ低電流ダイオードを使えば良い
回答2:30cmくらいの電線をつないでおき、電線が拾った誘導雑音の有無をソフトで判別してスイッチのオンオフを判断する。
>>48 通信系ならミリ秒ぐらいのカウンタは常に回してるだろ?
tick_t start = GetTickCount();
while (((result = serial_get()) != NOTHING) && (GetTickCount() - start >= timeout)) ;
あ、アセンブラは自分でかけ
どうでもいいが == NOTHINGだた
タイムアウト判定も逆だしww もうこれはスルーしてくれてかまわない
つーかRCIFって、普通はバッファに溜めないか? おれが言うのもなんだがアセンブラでもレイヤーはきちんと分けたほうがいぞ
>48 タイマ割込みは適当に1/10秒位に発生するようにして タイマ割込み処理内は適当なカウンタを+1するだけ(桁あふれも無視) RC受信割込み内では受信した後に、、データ受け取ったフラグを1に 上記の適当なカウンタをいつも"0"にする メインルーチンで最初にデータ受け取ったフラグを0にして L1: データ受け取ったフラグが0ならL1へ 適当なカウンタが50以上(5秒)だったらタイムアウトへ GOTO L1
>56 誤)データ受け取ったフラグ → 正)最初にデータ受け取ったフラグ だった。RC受信割込み内で受信処理全て行う前提ね。
58 :
47 :2011/08/17(水) 22:30:30.07 ID:C1tOg50E
>>49 >>51 ありがとうございます。
>>49 >目的は?
省電力化です。
やりたいことは、
・マイコンは、PIC12F683あたりを使用。
・使うセンサは水銀スイッチみたいな物で傾斜やゆれを検出。
・センサがONかOFFで一定時間の変化が無ければ、Sleepする。
・Sleepからは、センサのGPIO変化割り込みで復帰させる。
・Sleep中センサOFF→センサONの変化で復帰。
・Sleep中センサON→センサOFFの変化でも復帰。
・なるべく小型にしたい(小さなコイン電池を使いたい)
で、Sleep中にプルアップ抵抗に流れる電流がPICの消費電流に比べて
多すぎて、PICの省電力を生かせなくて悩んでいます。
プルアップに数十MΩの抵抗を使うのはノイズ的に不安ですし…
>>51 と言う事で回答1の「定電流ダイオード」は不可です。
(条件の後出しでごめんなさい)
回答2は、誘導雑音を積極的に使って、アンテナ(電線)の長さの変化を
検出する訳ですね?
面白いアイデアですけど、電線の電位が電源電圧の1/2位だと、
逆に消費電力が増えませんかね?
>>58 常套手段だから、既に検討してるんじゃ無いかとも思うけど、WDTでループを作って
測定時だけ電源供給というのはどうだろう。
1.SLEEP
2.WDTでSLEEPから復帰
3.内部プルアップON
4.GPIOの読み取り
5.内部プルアップOFF
6.1.へ戻る
問題点は、消費電力を下げようとすると、測定間隔が長くなること。
傾斜の検出ならともかく、揺れの検出は出来ないかも。
こんなんじゃだめかなあ。。 電流はON→OFF/OFF→ONの変化時しか流れないけど、 1/2Vccでwakeupするかどうかは知らん。 ずれてたらごめんなさい Vcc--R--C-+-C--GND | +-SW--GND | GPIO
ずれたw Vcc--R--C-+-C--GND | +-SW--GND | GPIO
62 :
47 :2011/08/17(水) 23:57:06.92 ID:C1tOg50E
>>59 WDTをONにすると消費電流が2uA(typ.3V)も増えてしまいます。
(WDT等すべてのモジュールをOFFにすれば、たったの0.15uA)
殆どの時間がSleepしている用途なので、電池寿命が1/10程度に
なりそうで…
63 :
47 :2011/08/18(木) 00:06:45.36 ID:RRxe9u9M
>>61 コンデンサで直流電流が流れないようにする訳ですか?
今日はもう寝ますので、明日にでも検討してみます。
ありがとうございます。
>>58 > アンテナ(電線)の長さの変化を 検出する訳ですね?
そういうやりかたもあるが、アンテナをスイッチで GND に落として
ノイズがなKなることを判定する方法もある。
できるなら、センサがオフになっている時間が多くなるようにしたうえで、
1μA流れるくらいで外部抵抗でプルアップしておけば、ボタン電池の
容量が 150mAH として計算上17年間持つわけだか不足かな?
ノイズ対性を上げるには、Sleep から目覚めた後、PORT の状態を複
数回チェックして、前回から完全に変化していなければソフトで無視す
るという方法も吉。
65 :
59 :2011/08/18(木) 01:13:47.24 ID:ILauXAe4
>>62 WDT自体の消費電流は、メガオーム程度でプルアップしたときとコンパラか。
そう言われてみれば、中身はRC発振なんだと思えば、そんなものかもしれない。
66 :
30 :2011/08/18(木) 02:51:54.22 ID:TgClva7I
SDCCを使ってPIC16f88でLCD(ACM0802C-NLW-BBH)を制御しようとしている一応大学生です。
以前、書かしていただいてあらゆるレスをいただき、
その中でコマンドでもデータでもLCDに信号を送る際にはE信号を送るというのを
教えていただき、もう一度データシート見てプログラムを作りなおして
実行しましたが、ダメでした。
それで、シートを見ていて気なったのですが、、、
いま、16f88を内部クロック8MHzで動作させています。
また、LCDのデータシートには FOSC=270KHzと書いてあります。
何か、関係ありますか?
↓4BITモード設定するための手順が書かれているので使わせていただきました。
よろしければ参考に。これを書いている方も同じLCDを使っていました。
http://amahime.main.jp/lcd/main.php?name=lcd
>66 LCDはめんどいよね。 どの段階までは出来てるの? 1列目■、二列目空白で埋まってる通電状態は表示されてる? コレすら出てないなら、電源の極性間違いかコントラスト端子の間違い。
68 :
一応大学生 :2011/08/18(木) 03:20:46.80 ID:dSC8kdhu
>>67 一列目は何もなってないです!
ああ、今までレスくれた人ごめんなさい。
おまえら高度な話するなよ(´・ω・`)
>>68 手書きでいいから、回路図をup loadできない?
71 :
一応大学生 :2011/08/18(木) 03:33:27.36 ID:dSC8kdhu
やってみます。 ただ、画像ってどうやってアップロードするんですか?
1列目■はSC1602とか2004の話なのでもしかしたら動作違うかも。 多分互換だろうと思うけど。
73 :
一応大学生 :2011/08/18(木) 03:52:04.47 ID:dSC8kdhu
>>72 コントローラーICはKS0066です。
種類は、AZdispley社のACM0802C-NLW-BBHです。
74 :
一応大学生 :2011/08/18(木) 03:58:45.02 ID:dSC8kdhu
>>70 >>72 すいません。今日はもう寝かせていただきます。
ありがとうございました。
よろしければ、また明日来るのでレス頂けるとありがたいです。
回路図ですが、自分のレンタルサーバーに画像をアップロードして、
URL貼っておきます。
75 :
30 :2011/08/18(木) 07:23:30.21 ID:TgClva7I
>75 配線は一応OK。 なんだけどこんなピン配置でD4〜D7間違わない?
>>76 配線で楽をするとプログラムで苦労する事になる。それだけかな。
ある意味器用だよね ピン名称にdefineしちゃえば迷わないだろうけど、 出来ればRB4-7とか対応している方が脳内は楽かも 私も同じくsdccで遊んでいるけど特に問題ないからがんがれ!
>>75 VO(LCD contrast adjust)
データシート見れば可変抵抗にてVCCとVSSにつなげている
可変抵抗ないならばVOはVSS(GND)をつなげる
■■■■■■■■
□□□□□□□□(67氏のコメント通りこんな画面が出てくる
実際はコントラストによりかなり見づらいです
白抜きは液晶ド初心者には敷居が高い ドボジテタダノ1602ニジナカッタンディス!
>>58 プルアップじゃなくて、どっかのポートから繋げばいいじゃん。
読むときだけ、Hを出力。マトリックスのスキャンと同じ。
通りすがりだが
>>61 スイッチがオープンした際 GPIO ピン部にどこから電荷が溜まってくるのか判らない
>>81 ポートの状態変化で sleep 状態から wake up して消費電力を抑えたいという要件を満たせない
84 :
83 :2011/08/18(木) 12:37:50.46 ID:wc26wNhU
85 :
30 :2011/08/18(木) 17:27:56.75 ID:TgClva7I
86 :
30 :2011/08/18(木) 17:35:47.40 ID:TgClva7I
>>83 すいません。ZIPファイルをダウンロードしようとしたのですが、
キーワードが分かりません。
教えていただけますか?
>>86 83じゃないけど良く見りゃ書いてあんじゃね。
これは、まれによく見るアレなのかもしれない 本人を舞えにしてはとてもかけないが
>>86 ググるくらいの努力はしような2ちゃん初心者
90 :
774ワット発電中さん :2011/08/18(木) 18:37:03.77 ID:lefQx/bY
ファイル添付できない2チャンは根本的に不便だよな。
どうしてもやりたきゃuuencodeとかあるけど 怒るキチガイがいるかもなw 昔はISH連投とか普通だったけどなあ へっくすぐらいならいいんじゃね?とは思うが
92 :
30 :2011/08/18(木) 19:27:42.93 ID:TgClva7I
>>89 ファイルがアップロードされたサイトに、アップロードした人に
キーワードを教えてもらって、
ダウンロードすると書いてあったので、
86さんに聞いていますので、あしからず。
URL の次の行の pic がキーワードだと思う。 確かに全くわからない相手には説明不足ではあるな。
94 :
30 :2011/08/18(木) 19:56:45.61 ID:TgClva7I
お騒がせしました。 93さんの言うとおり pic がキーワードでした。
>■■■■■■■■ >□□□□□□□□ >白抜きは液晶ド初心者には敷居が高い 思いっきりフイタ ( 笑 これだからPIC厨はw ほかの石のスレだったらkawanaと同列に扱われておしまいの筈なのにw まぁdsPICや32MXのDMA、QVGAライブラリ扱うぐらいだったら、こんなところで訊くことはないだろうけど。
96 :
一応大学生 :2011/08/18(木) 21:07:03.37 ID:dSC8kdhu
>>83 ダウンロードして、PICに書き込んで実行しましたが、
なんのはんのうもありませんでした。
接続の不具合などがあるかもしれないので、
しらべてみます。
>66と>75で LCDの+5VとGNDのピンの順番が逆だけど?
98 :
75 :2011/08/18(木) 23:39:03.21 ID:dSC8kdhu
>>97 確かに。失礼しました。絵が間違ってました。
しかし、picやlcdのpinの接続については、
データシートなどで確認しながら接続しましたので、
間違ってはないはずです。
絵のpinの位置はめちゃくちゃですが、
言葉は間違ってはないです。
ハズ,ダロウは甘い悪魔の囁きだよ 事故のうちほとんどの人的要因がそのキーワード
タイムアウトのやつなんですが、思い描いているようになりません。1回受信後からタイムアウトカウントします。 おかしいとこありませんか? RCV ;受信 ;if 処理フラグがたっていたら CALL ISTIMEOUT ;タイムアウト判定処理 BTFSS PIR1,RCIF ;受信レジスタチェック GOTO RCV CLRF TIMEOUTCNT ;タイムアウトカウンタリセット ;処理 処理開始フラグをたてる . . ISTIMEOUT ;タイムアウト判定処理 ;if タイムアウトカウンタが0なら CALL TIMERSET BITFSS INTCON,TOIF GOTO SKIP MOVLW 1 GOTO NEXT SKIP NOP NOP MOVLW 0 NEXT ADDWF TIMEOUT,F ;処理 タイムアウトカウンタが100ならタイムアウトでLCDに文字表示してMAINに戻る RETURN TIMERSET ;バンク1にして MOVLW 087H MOVWF OPTION_REG ;バンク0にもどす MOVLW 09BH MOVWF TMR0 RETURN
>>102 「思い描いている」挙動や使っているPICの型番を説明しているレス番を挙げてもらえないだろうか。
BITFSS命令とかTOIFビットとかって、存在するの?
104 :
56 :2011/08/19(金) 00:53:39.89 ID:2WMuhWPG
>102 コメントなのか省略なのかわからないし、これは割込み処理じゃなくてメインルーチン? さらに割込みは未使用…? ちゃんとした(全部)のをどこかのサイトに上げないと判断できないよ。 まあ 気になるのはINTCONのT0IFをクリアしていないから1度TMR0がオーバーフロー したら一気にいきそうだなって位
105 :
98 :2011/08/19(金) 01:21:45.01 ID:qnbL1Y9r
んで? >67の表示は出たの? 出てなきゃ配線間違い。 というか各部の電圧テスターで見るくらいはやったの? 駄目でした出来ませんでしたばっかりで具体的に何をやってどこまでできたのか 報告がないんだよね。だからこちらも指示が出しづらい。 いっそ今の基板捨てて1から作りなおしたほうがいいかもね。 配線は大丈夫なはずだ、ていう思い込みってなかなか取れないもんだから。
>>105 RA6 RA7から、出力が出ていることを確認した?
今一度、全部のピンが、ちゃんとLCDまで届いているか、確認をしてみて。
以下のような簡単なプログラムを作って、LCDをソケットから抜いて、
そのソケットにLEDかテスターをつないで、点滅 or 電圧↑↓を確認します。
while(1){ // RA0の出力を0.5secでon/off
a_port = 0b00000000; delay_ms(500);
a_port = 0b00000001; delay_ms(500);
}
これを、必要なピン全部に対して1回1回行う。全部で7回?かな
108 :
774ワット発電中さん :2011/08/19(金) 02:48:17.40 ID:TohjPwZp
2SC1815と2SA1015どちらも同じ機能を実現できる場合 どっちがいいですか? コストは同じだし、手持ちが偏ってるときはそちらを使うようにしてるが。 近くでYとGRが混在するとマズいですか?
>108 どっちでもいい時はどっちでもいい。
近くって? アナログ動作でペアで動作させるなら、できることなら合わせたい回路とかもあるが。
てか、ここPICスレがないか。 続けるならどこか適当なスレで改めて質問したほうがいいと思う。
NPNを使いたい場面のほうが多いけど、俺はコンプリは同じ数買っちゃうから、どちらでも使える場合は余らせがちなPNPを使うかな。 NPNを使いたい場面が多いからとNPNを多めに買ってる人なら、NPNを使うのがいいんじゃないか。 要は在庫見て決める。 YとGRどちらでも正常に動作する回路で、特性が揃っている必要すらないならhFE混在も問題ない。
>>108 設計にかなうなら好きな方を使えば良い。
同じランクの物を使っても設計・実装が悪ければ当然問題が起きる。
そもそも、回路図や仕様を知らせずに、
アナログ部の質問をする事自体が無茶。
115 :
75 :2011/08/19(金) 03:38:34.11 ID:V9biaMq5
>>106 一列目の■表示は、出てません。
報告については、すいませんでした。レス頂いた直後に確認してレスしたのですが、
もっと、分かりやすいように書きます。
今のところでは、105の写真のように半田付けした時点と考えていただいた方がいいかもしれません。。
確認したのは、picに+5VがかかっていることとLCDにもVcc-Vss間で5Vかかっていることです。
>いっそ今の基板捨てて1から作りなおしたほうがいいかもね。
配線は大丈夫なはずだ、ていう思い込みってなかなか取れないもんだから。
なるほど。基盤とかは、ただ半田でくっ付けとけばいいなんて思ってましたが、
そんな甘いもんじゃないんすね。気を付けます。
一列目に出るはずの■ですが、VccとVssに5Vかかっている時点でLCDに表示されるのですか?
>>107 現状は、上記したような状況です。
LEDが手元にないので、代用できるものがないのか探して、
確認してみます。
皆さんへ
初めて電子工作をするので、至らない部分が多々あり、大変失礼いたします。
初心者なりにでも頑張りますのでよろしくお願いします。
116 :
75 :2011/08/19(金) 04:36:53.55 ID:V9biaMq5
>>105 の配線見て
電源なに使っている?
電源スイッチ後に可変抵抗がついているのが見えるが何したいの?
画像荒くて推測だが
コントラスト調整用の可変抵抗の両方ともVDDがついているように見える
LCDのGNDとRSのどちらかが未接続?
(■見えなくても電源入れれば光りますか?<LCD)
書籍買ってLEDチカチカから始めることをすすめる
118 :
105 :2011/08/19(金) 06:00:39.09 ID:V9biaMq5
>>117 電源は単3電池を直列で4本使っていて合計6Vになってしまうので、
半固定抵抗で5Vに分圧しています。
>コントラスト調整用の可変抵抗の両方ともVDDがついているように見える
LCDのGNDとRSのどちらかが未接続?
見辛いかもしれませんが、モジュール側に直接ボリュームを
つけられなかったので、
複雑ですがボリュームを基板につけて
Voに接続しています。RS,LCDのGND共についています。
>(■見えなくても電源入れれば光りますか?<LCD)
バックライトはつきますが、LCDはつかないです。
>>118 > 電源は単3電池を直列で4本使っていて合計6Vになってしまうので、
3本の4.5Vでもいいと思うけど?
でも、三端子レギュレータを付けるのが吉。
さて、
1. パスコン付けてないだろ? 回路設計からやり直せ。その前に、電源の重要性を学べ。
2. 基板上のピン-ピン間の配線は、(なんだっけ?)ニッケル線?でするもんだよ。
3. 初心者はICソケットのピンから、直接リード線を引っ張りだすな。ニッケル線で間隔を取ってから接続しろ。恐らくショートしている。
こんなもんだけど、半田付けは止めて、ブレッドボード上でしたほうが良くないか?
120 :
102 :2011/08/19(金) 06:35:47.81 ID:lHAihuRX
行数の関係で、わかりずらくしてすいません。まさしく、すぐにタイムアウトになることでした。説明不足ですいません。 TMR0の使い方がいまいちわかってないんですが、カウンタ加算前で、T0IFクリアすれば良いんでしょうか?TMR0に再セットはしなくてもよい?クリアだけ?
121 :
105 :2011/08/19(金) 06:56:40.44 ID:V9biaMq5
>>119 いろいろ、詳しくありがとうございます。
もう一度考え直してみます。
>>118 半固定抵抗で分圧って…
負荷で電圧変わるから無理だろ
回路も酷ければ実装も酷いな
やり直し
>>120 × わかりずらく
○ わかりづらく ( わかり + つらい = わかりづらい )
>>119 ニッケル線って何?
初心者 と 使用する電源の種類 とは、相関関係はないよ。
ブレッドボードは、さらに状況を悪化させる に、100pic
>>115 >LEDが手元にないので、
テスターもLEDも無しでやってるの?
ということは、
部品集め → 基板にハンダ付 → 配線 → PIC書き込んで差し込んで → 電源on
そして今に至る ということですか?
電圧が来ているか(何V来ているか)観測できるような物を用意して。←工作には必要
・ホーセンターでいいからテスタ買ってくる
・最悪は「330Ω抵抗+LED」でもいい。
>>115 >LEDが手元にないので、
なのに
>半固定抵抗で5Vに分圧しています。
ということは、電圧を測る手段があるということ?
だったら
>>107 の確認してよ。
話はそれからだよ。
でないと、一生文字は出ないよ。
127 :
115 :2011/08/19(金) 13:29:09.09 ID:V9biaMq5
>>125 現状としては大体そのくらいです。
PICとLCDに5Vずつかかっているのを確認してます。
ちゃんとしたテスターではないですが、
簡単な電圧計、電流計はあります。
昔買った、学研の電子ブロックです。
付属の回路集に40V電圧計などあります。
>>126 はい。
上記したもので計りながら5Vになるようにしました。
すいません。早速確認してみます。
>>127 テスタ買って電圧だけじゃなくて導通もチェックしろ。
>>127 1000円くらいでホームセンターで買えるので、ぜひ買ってください。
とにかく、
>>107 により、
「PICからの電圧が、LCDの期待するピンに出ているか」を
全部調べてください。
確認するときに重要なのは、
・プログラムは、1つのピンだけ↑↓して、他のピンは全て常時Low(0V)にすること。
これをピン数の分繰り返す。一度に多ピンを変化させないで、1品ごとに行う。焦らずに。
・↑↓動作がテスターでもわかるように、時間は1secくらいでチカチカさせること。
チカチカが速すぎると、テスターでは応答できず、正しい値を表示しない。
・PICのピンの↑↓を出力信号が、目的のピンに、5V←→0Vで届いていることを確認するだけでなく、
PICのピンのLowを出しているピンの接続先には、↑↓信号が来ずに、電圧が常時0Vになっていることも確認。
2.5Vとか0Vと5V以外の電圧が出ているところがあるかも知れないので、電圧をしっかり読む。←これ重要。
それが全部正しくなったら、ハードウェアの接続はOKということで、
工作のうまい/へた、ニッケル線?の使用有無は関係なくなります。
そうすれば、あとはソフトのバグに集中できます。
もし、可能なら、LCDへのデータ線は「続いたポート番号」に変更します。
例えば、RA0,1,2,3 とか。
また、RA6, RA7は、水週発振子を付ける特殊なペンなので、
設定をちゃんとしないと、出力されません。
よく確認してください。
130 :
108 :2011/08/19(金) 15:35:11.65 ID:y/n1vifF
2SC1815はベースに6mA 0.5Vで150mA流せて 2SA1015はベースに2mA 0.5Vで150mA流せるので 若干省エネだっていう意見はないんですか
スニカエレ!!
おまえら親切だなw
>>127 ひとこと
PICライタ何使っていますか
たとえば秋月製のですか
pickitならコネクタは大丈夫ですか
自作ライタですか
(mclr pgc pgdの端子知ってる?)
そのライタで実績はありますか
(pic16f88での書き込み実績です)
それは本当に自分で書き込みましたか
他者に自信を持って疑問を聞くことができるように
精進してください
134 :
56 :2011/08/19(金) 18:25:24.51 ID:2WMuhWPG
>133 いや、もっと根本的に >127 今までにPICを動かしたことはありますか?
>>124 > ニッケル線って何?
錫メッキ線かな。しばらく使って無いので名前を忘れた(汗
懐かしいな、万能基板上にいろんな物を作って遊んだっけ。
> ブレッドボードは、さらに状況を悪化させる に、100pic
写真見て、あの出来映えなら半田付け不要なブレッドボードがいいと思ったんだ。
一応大学生氏は、周囲に半田付けが得意な人がいないんだろうね。
その手の電子機器会社でバイトするといいかも。
>>130 ん?それYとGRで比べてるんじゃないの?
C1815のGR使えば良いじゃん。
大は小を兼ねる
hFEに依存する設計をしてはいけない
コンプメンタリは使うなとでも?
PCとデータのやり取りする場合 RC232C(EIA-574?)とUSBどちらのほうが初心者向けでしょうか?
フィードバック掛ければ一緒しょ
>141 232C
144 :
47 :2011/08/20(土) 01:35:30.94 ID:ucH5kxH8
Sleep中のGPIO変化割り込みにプルアップ抵抗を使いたくない件の
自分なりのまとめです。
数cmの電線をアンテナ替わりに誘導ノイズの変化を検出する方法を
実際に試して見ましたが、条件によってはノイズをほとんど拾って
くれませんでした。
仮に誘導ノイズを確実に拾うように電線を長くしても、商用電源の
周波数で割り込みが入るので、Sleepの復帰に使う用途には向かないと
思われます。
次にコンデンサでプルアップ抵抗からの直流成分をカットして、
スイッチ(センサ)の変化時だけ電流を流す方法ですが、よく考えたら
「電流が流れない」のだから「プルアップ抵抗が付いていない」のと
同じでノイズに弱そうですが、どうでしょう?
結局、高抵抗でプルアップし、必要ならWakeup後にソフトでノイズを
除去する方法が一番良さそうという結論になりました。
>>64 >容量が 150mAH として計算上17年間持つわけだか不足かな?
CR927リチウム電池(公称30mAh)を使うつもりだったので、Sleep時の
消費電力は多くてもその数分の1の数mAh程度で考えていました。
皆さん、色々なアイデアをありがとう & 長文失礼しました。
145 :
127 :2011/08/20(土) 02:16:37.44 ID:YelSSyKt
>>129 詳しい指示、ありがとうございます。
明日、テスターを探してみます。
>>133 ライタは秋月のものです。コネクタも一緒に買いました。
PICは学校の授業で動かしたことがあります。
授業中は教員のライタを使いましたが、書き込みは自分でやりました。
>>135 上記したように、動かしたことはあります。
>>136 そういうバイトもあるんですか。
ブレッドボードに関しては今回、LCD以外にもやりたいこともあり
ちょっと経済的なこともあるので、今回はやめておきます。
>145 あ、まだやってたんだ とりあえず一手ずつ、やる事を混ぜずに進めなさい。何が悪いのか今だに切り分けが出来てないでしょ? ・LCDの配線確認 : PICをソケットから抜き、LCDに電源投入。コントラストボリュームを調整して 1行目■の表示が出るか確認 これが出来なきゃそれ以降進めても無駄だから。
>>47 > 数cmの電線をアンテナ替わりに誘導ノイズの変化を検出する方法を
> 実際に試して見ましたが、条件によってはノイズをほとんど拾って
> くれませんでした。
だから 30cm くらいと書いたわけだが。
ご所望の省電力目的に不適格なことについては同意。
> 「電流が流れない」のだから「プルアップ抵抗が付いていない」のと
> 同じでノイズに弱そうですが、どうでしょう?
コンデンサが交流ノイズを吸収するのでコンデンサが無いよりノイズ
に強い筈だが、コンデンサが直流を流さないのでセンサの変化を検出
できないのではないのかな?実際にやってみて結果教えて?
>>144 ノイズ上等で、超高抵抗でプルアップしたものでWakeUpするようにしておいて
WakeUpした後でPIC内蔵のweak pull-uをONにして値を読み直すというのはどうだろう
あんまりノイズが多いようだったら頻繁にWakeUpするから、その辺の匙加減が難しそうだが
こなさん みんばんは
151 :
112 :2011/08/20(土) 12:48:05.38 ID:bXqAzgRk
こわら たうたろう です
>>149 >とかなついわ
って、どういう意味? 日本語かな?
お馬鹿さんの使う「変な省略語」じゃないよね、きっと。
>>153 揚げ足取ろうとして滑ってんじゃん。ださ
みついわ
今日は雨なので すずい
冬の水に指を入れると 爪が痛い
>>153 は態度が悪いけど、おれ教えちゃうぞ。懐かしい、だよ。
いや、
>>153 はそれよりまず区切りが分かってないんじゃなかろうか。
>>158 ありがとう。
>スネークマンショーとかなついわ → 〜とか、懐かしいわ
ですか。ありがとうございました。
でもなんで、
1. なつい と、ひらがななんでしょうか?
2. 懐い とは書かないんでしょうか?
3. 懐かしい→ なつい ←懐かしくない と、
どちらにも受け取れますが、どうして「懐かしい」なのでしょうか?
もし時間があったら、教えてください。
>>157 爪が痛くて効率落ちたなら、迷わず皮膚科に行くといいよ。
電電板なのに、PIC関係ない話題になったな。
162 :
47 :2011/08/20(土) 20:07:22.41 ID:ucH5kxH8
>>147 >コンデンサが交流ノイズを吸収するのでコンデンサが無いよりノイズ
>に強い筈だが、コンデンサが直流を流さないのでセンサの変化を検出
>できないのではないのかな?実際にやってみて結果教えて?
あ、そうか。
直流は通さなくても、交流成分はコンデンサを通してGNDに流れるから、
ノイズに弱い訳ではないですね。
で、
>>61 の回路を
>>82 を踏まえて考察してみると…
SWがONするとVcc側のコンデンサ(仮にC1と呼ぶ)は充電されて、GND側の
コンデンサは放電状態になる。
そこでSWがOFFしてもC1は充電済みで電流が流れないので、GPIOはLOの
ままで変化しない。
と言うことですね?
>>148 >WakeUpした後でPIC内蔵のweak pull-uをONにして値を読み直す
これは名案ですね。
特に部品点数が増えないところが良いです。
>>160 おまえは「うざい」を「うざったい」といちいち言うのかと
「うざい」ときいて「うざったくない」と間違うのかと
>>163 それは、どちらにも受け取れますし、もちろん「うざったい」と言いますよ。
うざい、きもい、きしょい、なつい、むずい 等や、変な省略語を使う人は
「私はお馬鹿さんです」と言っているのと同じですので、社員には使わせないようにしています。
スレチ
そのまえに、なんか昔にこういうやりとりをどっかでたった気がするなあ。そんときはどう決着したっけな? どちらとも取れる… とりあえず「ない」の否定形と、それ以前の形容をくっつけて略すって、略としておかしい気はするが。 万国博覧会→万国+博覧会=万博、うざったい→うざった+い=うざい、であるから、うざったくない→うざった+くない…「うざくな」? ああ、「うざくね?」ってこの形式の略だな。 というわけで、否定形の「ない」を略したものが「い」だけだと思うあなたがおかしい。 さて…社員が「うざったい」という状態ってどんなだ。
>>166 おいおい、
>うざったくない
「うざくない」の立場はどうなるんだ?
>「うざくな」?
はぁ??
おっと、コンパイルか終わったようだ。
「うざく+ない」だろう?ああつられたのか。なるほど。
おっと、切れ目がおかしい。 まあいいや。
>>168 だろ?
うざったい→うざい
うざくない→うざい どっちも同じになる。
だからやめようよ、そういうアホな言い方。
PICのアセンブラ覚えるのにいいホームページあったらお背しえてください
>>170 なあ、
>うざくない→うざい
「うざった+くない」の略が「うざ+くない」なのに、なんでさらに「うざい」って略すんだ?
このスレに一体なにがあったw
>>173 いつもの事だ
薬が切れて暴れているだけ
その内収まる
略語に否定が含まれているパターンは普通考えないでしょ 万国でない+博覧会=万博 なんていう馬鹿は居ない
え?何? ・・・・あ、夏休みか
でも笑ったw
>>164 も分かってて言ってるっぽいし。
もしあれがマジレスだとしたら「周りを見よう」「長い藻のには巻かれろ」と言いたい。
だからやめようよ、そういうアホな省略言葉。 お馬鹿さんに見える
だれかPICアセンブラを勉強するのに良いホームページおせーて
そんなもの勉強しても何の役にも立たないぞ
勉強すること自体が趣味なら、他人をあてにしないで自力でこつこつ努力しろよ
>>183 ニーモニック表があれば書けるアセンブラは、勉強するもんではない。
ニーモニック表があれば書ける? そんなわけないだろ。
188 :
774ワット発電中さん :2011/08/21(日) 09:19:22.98 ID:cKsCLI1v
質問形式で書き込めばすぐに「人をあてに」とか、 この手の趣味は多くはないから身近な人と話題を共有するってことができない場合もあるだろう。 ちょっと前にかなり失礼な書込みをするアセンブラ使いがいてイメージが悪くなったところはあるけど Cとアセンブラ、うまく使い分けられればアセンブラも有益なのだから。
>>188 > ちょっと前にかなり失礼な書込みをするアセンブラ使い
居たな。
> Cとアセンブラ、うまく使い分け
同意する。
が、それ以前にPICを選択したのが間違い。
速度が必要なら、Cに適したMCUを使うのが正攻法。
連枝使っとけ
ま、実際には他のCPUでもたいして早くないしすぐに部品や会社がディスコンするようなチップじゃ 保守も出来ないからPICで十分なんだがな。
192 :
774ワット発電中さん :2011/08/21(日) 16:09:56.35 ID:bmNZQJPo
>>189 > Cに適したMCU
PIC24F以上ってそうじゃないの?
193 :
774ワット発電中さん :2011/08/21(日) 16:16:38.10 ID:bmNZQJPo
>>160 略語が気に触って仕方が無いのはアスペの傾向の一つらしい。
「冷たい」の語源は 「爪痛し」の略語 言葉という物は日々進化(劣化)するもの たとえば現在の「こだわる」という使い方は昔とは違う意味になっています なわけで MPLAB Xを自分自身の進化のためにインストールしたが 日本語ファイル読み込むと文字化する エンコード設定はどこでしょうか??? これを劣化と言ふ・・・違うか
197 :
774ワット発電中さん :2011/08/21(日) 20:10:09.58 ID:STQAzelT
エンコードってかフォントじゃなかろか。
>>196 その場合の爪は、「先端」という意味だけどな
前スレのRGBLEDアレイのネタを8MHzの○VRで検証してみた
http://akizukidenshi.com/catalog/g/gI-04761/ これの30LEDを50KHz割り込みで8bitソフトPWM制御するコードを
C言語で書いてみたが、やっぱ余裕だったよ
エンコの具合だろうけど、上がってる動画よりもなめらかに見える
ちなみに検証はLEDが届いて数時間で終わった
結局C言語どうこうじゃなくてPICのCがダメなんだと思うよ
>>200 PICがダメじゃなくて、PIC18,PIC16がだめなだけ。
PIC24,dsPIC,PIC32なら楽勝っしょ。
>>200 > 結局C言語どうこうじゃなくてPICのCがダメなんだと思うよ
そう。それをアセンブラでどうとか、違う方向に…。
(選択ミスを認めたくない気持ちは判るけどさ…)
うちのPCにRS232Cがないので USB・シリアル変換ケーブルなるものを使おうと思うのですが これはUSBの仕様を理解してないと利用できませんか?
>203 USBの知識は不要 PC側はドライバを入れればCOM5とかになるんでシリアル使えるソフトならそのままOK PIC側はRS232Cレベル変換(TTL←→±12V MAX232C等)が必要だけどUSARTがそのまま使える 物によっては最初からTTLレベルなのでPICに直結できる
久し振りに作りかけのプログラムに手をつけてみたら、肥大化しすぎててわからんワロタw 20MHzOSCのときって、1cycleあたり50nsだよね?設定は合ってるはずなのに、ストップウォッチで1cycleあたり0.2u進んでしまう ご無沙汰で俺がぼけてるのか?w
ぼけてる
まじかw どこがおかしい? 半年ぶりぐらいだからorz
すまんorz 自己解決。。 夜分遅くにどうも
211 :
774ワット発電中さん :2011/08/22(月) 08:17:40.06 ID:qY1YqCAB
PICなど普通のマイコンについてるPWMとΔΣDAという名称のDA変換器、同じものかな? DA変換器としては後者のほうが高性能なイメージがあるけど、もし2者が異なるものならΔΣDAは どんな点でPWM方式のDA変換よりも優れてるのだろうか?
とりあえずウィキペディアでも見ろ、とか思ったが、ΔΣの記事、ぐちゃぐちゃもいいところだな。
デューティ比の代わりにパルス密度でアナログ量を表すのだから全然違う 実装しようと思ったけど無理過ぎて諦めた あれはハード向けだわ
>>211 PWMの出力はデジタル。LPFを噛ますことでアナログになる。
デジタルだから距離を延ばしても劣化しない。
LPFが厄介。
DACは直にアナログを出す。
ノイズの影響にインビーダンスの影響を受けやすい。
バッファを噛ませるとフルスイングさせにくい。
でもLPFは要らない。
215 :
774ワット発電中さん :2011/08/22(月) 09:31:54.65 ID:qY1YqCAB
ΔΣDAはパルス密度(PDM)なのか。 でもAD変換もPWMでよさそうだけどわざわざPDMにするメリットって何かな?
理想的なDAコンバータなら、サンプリング周波数の半分までが 信号帯域になるのがサンプリング定理やん? 実際はそこまでいかないけど、サンプリング周波数の0.4倍とか その辺にカットオフ周波数を持つ、折り返し雑音除去フィルタを 付けて使う。 ΔΣDAだと、もともとオーバーサンプリングされてるので、この フィルタが普通のDAよりも適当で済む。 逆に、PWMをDAコンバータに使うと、数学的にちゃんとした説明は 俺もわかってないんで省略するけど、折り返し雑音的なものがすごく 低い周波数まで分布しちゃう。 PWMのクロックに対して、低ノイズで取り出せる信号帯域が狭い。 欲しいアナログ信号が直流かかなり低い周波数ならいいけど、音声 再生を綺麗にっていうと、だんだん苦しくなってくるのがPWM デジタルアンプも原理通りのPWM使ってるものは少なくて、それは 純PWMだとS/Nが稼げないからだな
>>215 PDMって何?
Pulse Density Moduration? とか?
パルス密度変調??
確かこんなのじゃなかったけ (PWM)  ̄_________ 10%  ̄ ̄________ 20%  ̄ ̄ ̄_______ 30%  ̄ ̄ ̄ ̄______ 40% (PDM)  ̄_________ 10%  ̄____ ̄____ 20%  ̄__ ̄__ ̄___ 30%  ̄_ ̄__ ̄_ ̄__ 40%
>218 それPFMって言わない?>下の図
Pulse Duration Modulation で、= PWM じゃね?
∩___∩ | | ノ\ ヽ | / ●゛ ● | | | ∪ ( _●_) ミ j 彡、 |∪| | J / ∩ノ ⊃ ヽ 220 ( \ / _ノ | | .\ “ /__| | \ /___ /
224 :
145 :2011/08/23(火) 11:29:18.42 ID:c4H0WhzN
一応大学生です。 LCD動きました。原因は、LCDに2.5Vしかかかっていないことでした。 電源を5Vに分圧していて、PICとLCDを並列についないでいたのですが、 同時に電源につけると、2.5Vずつしか、かかってなかったです。 自分の確認を怠ったのが原因でした。 そこで、電源を大きくしたところちゃんと5Vずつかかりました。 そして、83さんに頂いたソースを実行したらちゃんと映りました。 お騒がせしました。
>>224 >そこで、電源を大きくしたところ
そうじゃないから。PICやLCDの電源ににVRで分圧して供給なんてきいたことない。
そういう思考ができてしまう時点で、あなたは別世界にいることになる。
次から次へと新たな問題点の種を自分で播いて、自分で躓くタイプの人なんだね。
ちゃんとした電源インピーダンスの低い回路で的確な5Vを供給しないとイケマセン。
ところで、どこの大学ですか?
灯台じゃね
最近始めたばかりでよく分からんのだが 分圧ってその後ろに繋がる回路次第で 電圧かなり変わってくるんでそ?
>>224 それはよかったね。
もしテスター1台あれば「測ってみようかな」という気になるけど、
それも無ければ「ま、いっか」となり、
「はず」「つもり」という言葉が出てくるんだ。今回はその典型な感じだね。
デバッグは、状況の確認、把握が大事です。
最初から、まともに回路図出してれば、即終了なのに。
230 :
774ワット発電中さん :2011/08/23(火) 13:57:47.56 ID:nEh5CxNi
>200 滑らかに点灯したと言い張るならUPしてみたら? きっと「エンコの関係でちらついた動画しかUP出来ない」とか「動画撮る機材が無い」とか言い訳するだろうけどw 「エンコの関係だろうけど俺の作ったほうが滑らか」 なんて言い訳しても第三者から見れば、馬鹿じゃねーのって話だな。 66KHzのPDMと50KHzのPWMで50KHzのPWMの方が滑らかに見えると思えるAVR脳だから仕方ないけどさw
231 :
224 :2011/08/23(火) 14:15:17.74 ID:c4H0WhzN
>>225 千葉大学です。
二年次までだと、数学や物理学が主で、
機械的なことは余りやってないんで、
実際に回路を作るとなると分からないことばかりです。
232 :
774ワット発電中さん :2011/08/23(火) 14:25:41.45 ID:B4sb7/XN
僕はボリューム使うことで明るさを滑らかに自在に変化させることに成功したんだ
AVRのも見てみたいな。
>>224 分圧って聞いてすぐに指摘したのに今頃になってやっと確認したんだね
ど素人はだいたいそんなもん。
ardiunoでシールド合体させたり、 (スクリプトレベルの)ソフトウェアしかやったことない人は、いきなりやっても、難しい たったそれだけのこと
普通、後ろに繋がる回路込みで値決めるんじゃないかい?
ところで66KHzって何か意味があるの? 66667Hzだとして、ミリ秒カウンタとかちゃんと作れてるのかな そもそも50KHzと66KHzのチカチカが区別つくもんなのかギモンなんだけど
>240 まあ>200の書き方だと勘違いしやすいけど割込み周期が50kHzなので ココから8bit=256諧調とRGBダイナミック点灯用の3で割って周期が決まる 50,000Hz÷256÷3=65.1Hz Dutyが小さい色だとちらつきがきつそう
>240 それと66kHzは、割込周期の限界じゃないのかな 前スレの>983に8ch256諧調ソフトPWMで1割込み50命令(20MHzで10us)程度の サンプル出したけど、それを10chにしてRGBのカソード側の処理を追加したら 12〜15us弱かるんじゃないか。PIC16Fの20MHzだとこの辺が限界かと
AVRだとCで適当に書いても100KHz超えそうだなw
>>243 スレ違いだよ?
それともAVRスレで相手にされなかったの?
PWMで65Hzだと肉眼でもチラ付くけど、カメラではもっと厳しいかも。 PDMで86Hzなら出力が1の時は上よりちょっと良いくらいだけど、2なら170Hz、3なら…
>243 ARM or AVR最強 PIC使う奴、頭悪い ・ ・ ・ 寂しい、、、、誰かカマッテ、、、 という奴か
速度が欲しいならFPGAで組めばよくね?
>>247 > ARM or AVR最強
ARM使いだが、PICと一緒にさせてもなぁ。
メイン基板上にARMが載り、サブ基板上でビン不足を補ったり信号数を減らす役目がPIC。
PICの名前通りの正しい使い方をしているだけだけど、なにか?
250 :
774ワット発電中さん :2011/08/24(水) 08:57:56.31 ID:SRdCxUnj
>248 スレ違い >249 まあ、A○○厨に動画をUPする能力がない事には変わりないが
>>246 つまりAVRでPDMすりゃすごいことになるな
そんな都合の悪い事は考えないかw
別に凄いのを狙っているわけではないから。 手元にある環境で好きなモノを作ればよい。
253 :
774ワット発電中さん :2011/08/24(水) 12:57:59.16 ID:OYWfooh6
>251 現実にUPされてないじゃん。それが全てw 所詮ネット弁慶w
>>249 そう。PICとARMはそもそも役割が違う。
にもかかわらず、PICスレでやたらARMを連呼してくる構ってちゃんがいるんだよ。
>>254 まあ、M0は8bitMCUの牙城を切り崩すためのコアですし。
それは置いといて24fのビデオアクセラレータ使ってみた奴いる?
なんでこう夏なのかな?別にどっちでもいいだろが 出来る事をやれればいいだけ、面倒だろうが手間だろうが知らん 実際に作る人にとっては入手性も評価基準だが、 小屋の引き出しからES品で遊ぶならなんでもいいよ
ほんとだよ。 犬小屋をレンガでつくろうが木材でつくろうが本人の勝手なのに。 レンガの焼き方や、木材の切り方の優劣にアホほどこだわって、肝心の 犬小屋が作れないんじゃどうしようもない。
32kHzの8051に比べれば、どれも天国だと思わないか?
ロートルが衒学趣味振りかざし始めると途端に雰囲気悪くなる。
260 :
774ワット発電中さん :2011/08/24(水) 18:00:58.53 ID:XC74hTNP
だれか
>>255 のねたで話を展開してくれよ。こっちのほうがよっぽど面白そうなのに。
picで画像出力とかほんとにできるのか?
3LEDそれぞれでPDMの周波数を変化させてると、 ある周波数成分が強くなった時にちらついて見えることがある。 汚く見えるのはたぶんそれ。
262 :
774ワット発電中さん :2011/08/24(水) 20:19:48.40 ID:ef6hfysK
全然そんな事は無い。知ったか乙w
>>260 24Hなら静的描画は余裕(オシロとか。詳しくは後閑哲也のHP・Microchip提供ミドルウェアで)
流石に32MXでも、外部RAMがないとQVGAの全領域にアニメーションは難しい。
(このあたりが、SDRAM付き基板、Cortex-A8、SH4より劣るとされている。尤も、これらのマイコンはロートル・小規模開発で扱うには高すぎるがな)
QVGAサイズのアニメはRAMじゃなくてROMが厳しいんだ。ワンチップだと。Coretex-M3でもそうだし
(SDから動画再生とかなら可)
>>260 VGA以上だと32MX・FPGA(外部ビデオチップ)未使用の場合、どんなに頑張ってもは難しいかもなw
(できたとしても超カクカク)
>>257 なんで被害者気取り?
>>260 可能だけと、アーキ的に向いてない。
趣味なら頑張れ。
仕事なら止めとけ。
266 :
774ワット発電中さん :2011/08/24(水) 20:59:05.94 ID:/RK5Kmp4
>>255 の言ってるのは24F DAの話じゃないの?
>>266 某ARMのCM3が動画の時代に突入しているのに、今更フォトフレームも無いだろう?
趣味でやってみたいなら、止めはしないけど…。
268 :
774ワット発電中さん :2011/08/24(水) 21:22:37.27 ID:/RK5Kmp4
正論
270 :
774ワット発電中さん :2011/08/25(木) 01:00:16.27 ID:wOEQf+4F
高い金払ってOSやらファイルシステムやらをパーツとして買ってきてARMで動画とか得意げに 語るとか趣味が悪い。こういったものすべてを自分で一から作って、結果フォトフレームってのも 趣味としてはありだろ。FPGA関連スレをみててもそうだが仕事でやってるようなやつの書込み みると心が病んでるのではと思うわ。
PICスレには心を病んで被害妄想な奴がいるな。
273 :
774ワット発電中さん :2011/08/25(木) 01:17:31.41 ID:hGy/qRpu
ルネサスは信用ならないからな 俺が採用することはしばらくないはず
276 :
774ワット発電中さん :2011/08/25(木) 08:18:02.53 ID:zrtIASU8
>255 そう、牙城なんだよな 所詮A○○じゃ足元にも及ばない。Lチカさえまともに出来ないんだからな。
>>270 > こういったものすべてを自分で一から作って、結果フォトフレームってのも
出来もしない事を、大口叩くなよ。
278 :
774ワット発電中さん :2011/08/25(木) 10:20:43.81 ID:2eadVl9l
久しぶりに来たら、ARM VS PICですか?w PIC は面白いよね? 大きいMPUが、有る処理を依頼し小さいMPUが、それを受け取って処理を行う。 その間、大きいMPUは他の処理を行う。 処理が完了したら処理完了の信号を送る。 これって何て言う処理名だっけ?
ついでに 16F876って外部クロックを与えないと動作しなかったっけ?
281 :
774ワット発電中さん :2011/08/25(木) 11:16:50.66 ID:2eadVl9l
282 :
774ワット発電中さん :2011/08/25(木) 11:20:20.35 ID:wOEQf+4F
283 :
774ワット発電中さん :2011/08/25(木) 11:26:43.82 ID:2eadVl9l
>>282 ようつべでPIC VGAとかで検索かけると動画たくさん出てくるよ。
VGA以上だと、例外なくフォトフレームor CUIな訳だがw
285 :
774ワット発電中さん :2011/08/25(木) 11:57:52.89 ID:2eadVl9l
>>284 VGA以上の解像度の動画は32MXでも無理ってこと
287 :
774ワット発電中さん :2011/08/25(木) 12:06:46.78 ID:2eadVl9l
>>286 そんな話全然してないし関係もないんだけど。したり顔で入ってくんなよw
壁紙はフォトフレームレベルでも、その上に表示する文字は図形は うまく処理すれば実用になるレベルなんだから、 そんなに落ち込むことないよ でも客は動画とか要求してくるんだよね まいっちゃうよね ならもっと予算出せってね
客が後からってことね で、動画に対応しましたまではよかったが、 こんどはコンテンツのフォーマットの関係で HD動画が必要とかね、ありがちだよね だったらPCでいいんじゃ?ということになって、 結局PCになりましたとさw
バスとか地下鉄の液晶に行き先とかCMが出ると「マイコンで動いてるんだろうなーキレイだなー」って思って気が付くと終点だよね
291 :
774ワット発電中さん :2011/08/25(木) 15:11:59.68 ID:wOEQf+4F
>>290 それはマイコンというより産業用に筐体をなくしたパソコンといったほうがふさわしいのでは?
電車とかのインフラで動画を垂れ流すような案件は全部PCだよw コンテンツや広告動画とかはそれぞれ別会社だから デコードの問題が常に付き纏うし、SD以下の画質では当然満足しない そんなものをマイコンでやれんのかと
293 :
774ワット発電中さん :2011/08/25(木) 17:11:11.67 ID:zrtIASU8
>292 出来なくはないが工数考えたら出来合いのボードでやるのが楽
16f688、4本分のポート割込みでランダムパルスを数えたいんだけど 外部ラッチが要るのか要らないのか、マニュアル読んでもよくわからない。 入力ポート自体に短いパルスをラッチしておいてくれる機能あるんですか?
296 :
774ワット発電中さん :2011/08/25(木) 17:54:15.75 ID:wOEQf+4F
>>294 「短いパルスのラッチ」とかそういう機能はない。パルス幅が短いと当然エッジ検出漏れもでてくるから
割込み処理にかかる時間などをきちんと見積もって検出漏れがあっても論理が破綻しないようにプログラム
する必要がある。
動画だのフォトフレームだの極端なアプリケーション例を持ち出せばPICネタからは外れてしまう。
キャラクタ液晶では自由度が足りない、で白黒グラフィック液晶を導入しもう少しカラフルにアイコンを
点滅させたい、でカラーグラフィック液晶の導入、そういうステップで考えれば小型カラー液晶も十分に
PICネタに入ってくる。LEDちかちかばかりじゃなくてこっちのほうもPICスレで話が活発化すると
いいね。
PICは知らないけど、普通のマイコンの割り込み端子はラッチ有るだろ?
割り込みってなんだよ?
299 :
224 :2011/08/25(木) 18:15:23.81 ID:ZwzIMehz
一応大学生です。 LCDの表示に関してはありがとうございました。 さて、またLCDに関してなのですが、 PICが誤作動を起こしてLCDの表示が10秒後くらいに変わってしまいます。 ネットでしらべてパスコンをつけたのですが直りません。 不安定な電圧供給以外にPICが誤作動をおこす訳ってありますか?
300 :
774ワット発電中さん :2011/08/25(木) 18:29:33.88 ID:xGpzJuFy
>299 なんで不安定な電圧供給をそのままにして先に進もうとするんだよ。 千葉大なんて嘘だろw
>>300 段取りの下手さは、大学あんまり関係ないような… 卒業できるかは別として。
302 :
774ワット発電中さん :2011/08/25(木) 18:35:35.64 ID:xGpzJuFy
>296 >「短いパルスのラッチ」とかそういう機能はない。 残念でした。SR-LATCH付のPICが存在する。
303 :
774ワット発電中さん :2011/08/25(木) 18:37:59.24 ID:xGpzJuFy
>301 段取りってか、論理的思考。 小学生とかにありがちな、手当たりしだいに手をつけて 結局、何やってるか自分で理解出来てない奴。
鏡よ鏡、バグの原因はなぁに 鏡に映ったのは ID:ZwzIMehz だったのです
>>296 後閑乙
自演せずにそろそろコテつけろよ。
千葉大か?国立大?凄いな? けれど、工学部電気系出ても「千葉大か?w」 と言うレベルだけどなww 今迄千葉大って私立か?と思っていた。
>>302 残念でしたとか、どっちが小学生だよ。アホか。
>299 普通に考えれば、プログラムのバグで暴走しているんじゃないか。 その10秒間にPICは何しているの? 試しに最初の文字を表示後 GOTO $で無限ループやSLEEPにして表示がどうなるか試してみたら。 それと どう表示がおかしくなるのか(画面が消える、ランダムな文字が 出力される,etc) 自分で何を試してどうなったか等を書かないと 全然 話が進まないよ。
>>291 >>292 あれパソコンなのか、明日からパソコンで動いてるんだろうなーって思いながら終点通過する
通過しちゃ駄目だろ。目的地で降りなきゃ
これだから平成生まれはw
windowsやunix以外で作れと言われても困るからな
千葉大のやつよりは電気系だったら芝浦とか電気大のやつらのほうができるだろ オタクだけど
終点なら通過しないでしょ。折り返しか車庫行き。
時々車庫行きの人見かけるね。
始発で倉庫から出てきた列車に乗ってるのな
車庫で一夜を過ごす
PICで複数のアクチュエータ操作するときは 複数のゲームキャラ動かすような割り込み処理でやってんの? それとも単にmainの中で総当りしてループかけてるの?
総当りにしてもタイマーのカウント処理は割り込みだよな? 結局タイマーをゲームキャラのデータと見なして割り込み制御する感じか Z80でやるかな
322 :
一応大学生 :2011/08/26(金) 13:44:48.91 ID:14Mfk5or
>>309 電圧計りなおしてみたら、LCDとPICには安定して4.5Vはいっていました。
LCDの表示ははじめの10秒はしてほしい動作(オの文字出力)の後、
ランダムな文字列に変わってしまいます。
ためしに、最後の文字の後のRS、ENも0(LOW)にする信号をプログラムの
最後に入れてもだめでした。
ループをかけてみましたが、直らなかったです。
323 :
774ワット発電中さん :2011/08/26(金) 13:46:49.26 ID:J9+ZJStz
ソフトウェアUARTは以前からよくあるけどソフトウェアUSBなんてのはあまり聞かないね。 PICにはUSB内臓の機種があるけどAVRってそういうのはないのかな?AVR関連でV−USB なんていうソフトウェアUSBプロジェクトがあるらしいけど、同じことをPICでもやれば16F88 あたりでも外付けチップ無しでUSB接続できて面白そう。
>>322 テスタで測れないレベルで変動してるかもしれん。
5Vなら乾電池でもUSBからでも取れるだろ。
怪しいところはまずつぶせ。
それと回路図もプログラムもわからんが、MCLRのピンは使わなくてもプルアップしておけ。
>>321 タイマーはフリーランにしておき、各処理がフリーランタイマーを見な
がら前回からの差分で経過時間をチェックするというやりかたもあります。
326 :
一応大学生 :2011/08/26(金) 16:40:16.60 ID:14Mfk5or
>>323 16F88の20MHzじゃAVRの5MHz相当だから無理だな
素直に内蔵のPIC使った方がいいよ
PICの品番の見方で教えてください。 よく、16F877A I/Pとか見かけますがこのアルファベットの箇所 A I/Pの部分 A:品種改良型 I:わからない P:わからない E:わからない それぞれのアルファベットは何を意味しているのでしょうか?
つまり、あおいうえ作文をせよと I:異常な数の P:PICの E:エラッタ
330 :
774ワット発電中さん :2011/08/26(金) 19:11:53.35 ID:J9+ZJStz
>>327 UARTの場合は処理速度に応じて通信速度を落とせばいいけどUSB(1.1)の場合は1.5Mbpsと
決まってて通信速度遅くてもいいからといってデータレート下げるってことはできないんですね。
>>328 データシートの最後の方に、型番の見方が書いてあると思うけど。
PICに限らず、IはIndustrial品、CはCommertial品、PはPlastic品、Aは改版revisionA
とか、相場
重箱の隅ですまないが Commertial は Commercial ということで
333 :
一応大学生 :2011/08/27(土) 00:31:16.54 ID:jMfPhl18
324さんの指示通りプルアップ、ためしにプルダウンもやってみましたが駄目でした。 パスコンをPICの近くに1つつけているのですが、1つじゃ効果ないですか? 以前、ここの方に頂いたHEXファイルをPICに書き込んでみたら、ちゃんと表示出来てました。
>>323 170円の18F14k50にハードウェアフルスピードUSB付いてるからメリットがない。
ロースピードかつソフト処理じゃ大したことできないからねぇ。
じゃープログラムミス
336 :
774ワット発電中さん :2011/08/27(土) 00:50:05.72 ID:ir5D2t+J
ブレッドボード上に液晶を組んで実験してた時、正常に動いてたものがある日突然誤表示し始めた って経験はあるが、接触の状態は大丈夫なのか? 「ちゃんと表示できてました」とあるが、この状態で10秒後くらいから表示がおかしくなるという ことなのか? ちょっと前にいいチェック方法をあげてた人がいたけどキャラクタ液晶は正しい電圧をかけ続けている限り、 新たにデータが書き込まれない限りは前回書き込んだ表示状態を維持するものだと思うので表示が おかしくなるということはソフトのバグで意図に反したデータを書き込んだが瞬間的な電圧低下で 液晶が正常な動作モードからはずれて初期化からやり直さなければならなくなったとかいうことじゃないのかな。
337 :
774ワット発電中さん :2011/08/27(土) 00:55:20.53 ID:ir5D2t+J
>>334 メリットはひとそれぞれだろう。もしソフトウェアUSBが実現できるのなら8ピンタイプの
picだって最小限の構成でPCに接続できるのだから。もっとも
>>327 のとおり無理かもしれないけど。
338 :
774ワット発電中さん :2011/08/27(土) 01:01:21.51 ID:ir5D2t+J
キャラクタ液晶に関して、データ書込みルーチンで待ち時間を入れることになると思うが、 その時間は使用どおりの時間になってるのか、短すぎないか確認してみるとか。それとも データ書込みが終わったかどうか端子の状態をチェックしてから次の書込みをしてるのかな?
AVRは8ピンからUSBが使えるんだよなあ でもSSOPの18F14K50が秋月で売ってるから、 それぐらい我慢できるよね
>333 いいからどっかに回路図とソース全部、省略一切なしで全部アップしろよ。 お前の『大丈夫』とか『異常ない』って判断は一切信用出来ないんだよ。
>341 お前は写真を配線図と呼ぶ星の人なのか?
>>333 回路が(確証はないだろうけど)一応動くのであれば、
次のステップは当然プログラムの問題だよね。
Lチカの次にコピペしないでLCD駆動は、プログラム入門者にとっては少し敷居が上がるのが気になるところ。
7セグは動かしたことある?
CCSCかHitechであれば、穴埋め問題作るよ。
だれかブレッドボード買ってあげて
あれって線さしっぱなしだと悪くなるんだろうか
346 :
一応大学生 :2011/08/27(土) 15:25:03.68 ID:jMfPhl18
>>336 僕がいちから書いたソースだと、10秒後に表示が消えて→ランダムな文字が表示→
またランダムな表示が消えて→元の表示→10秒後に表示が消えて→・・・・・
を繰り返すという感じで、
「以前にここの方に頂いたHEXファイルだと」、ちゃんと表示できていたということです。
>>340 ↓配線図や写真、ソース貼り付けときました。
http://chibayacht.web.fc2.com/gazo.html >>343 7セグメントは動かしたことないです。
コンパイラはSDCCを使ってます。
picは16f88を使っています。picのクロックの設定は20MHzです。
それで、秋月で買ったLCDについていた、データシート(?)には
condition: fosc=270kHz
と書いてありました。これって、270kHzで信号を入れろということでしょうか。
>>331 言われたとおり、データシートの最後のほうに書いてありました。
ありがとう。
348 :
346 :2011/08/27(土) 15:55:47.86 ID:jMfPhl18
すいません。 PICは8MHzです。
>346 省略一切なしで、っつたろうが。 その+5Vはどっから来てるんだLCDのVOは何も繋いでないのか。 前回なんであんなに解決に手間取ったかまだ理解してないのか。
>>346 なんで最後return(0);で終わっちゃうんだよw
352 :
346 :2011/08/27(土) 16:19:14.83 ID:jMfPhl18
>>349 すいません。
実際は4.5Vで乾電池3本直列です。
Voには半固定抵抗つけてあります。
>>350 return(0);ないと、コンパイルしたときに警告が出てしまうのでとりあえずつけてます。
>>351 余り気にしたことはなかったです。
353 :
774ワット発電中さん :2011/08/27(土) 16:20:35.93 ID:xesfLmDy
だいたい昔の基盤や航空機の仲間は電気電子にいますね
>>350 スタートアップルーチンが再度mainを呼ぶ。と深読みしたけど、それ以前の問題だね。このソース
>>352 いやそうじゃなくて、無限ループで処理終了にしときなよw
その後にreturn(0);書きたきゃ書いていいから。
356 :
346 :2011/08/27(土) 16:30:45.82 ID:jMfPhl18
>>355 ループは初期設定の部分も含めてですか?
まず半固定が両面にあるのがありえない 回路図は当然として配置図も書いた方がいいな 大学生自称してるけど某スレの鉄工所並の頭の硬さ FMV-BIBLOの時点でおっさんだとは思うけど
>352 乾電池の種類は?半固定の抵抗値とその配線は? 写真だと電源にスイッチ入ってるけどそれも書いてないよね? いいかげん人に見せても文句を言われない資料の書き方ってもんを考えような。 大学のレポートでも必要だろ? 気にしろ。とりあえず今の状態だとE立ち上がり時間が何nsecなのか計算しなさい。 仕様より短かったらnop入れなさい。
>>356 プログラムの本を読んでから出直した方がいいよ。例題を先に理解してから次に進む。
1冊読むだけでもずいぶん違う。
乾電池は1.5Vと書いてあるが当然実際は違う。回路動かしながら電圧測ってみないと本当の電圧はわからない。 PICはともかくLCDの方は入力電圧が仕様書より低かったらまともに動かなくても文句言えないよね。 確か簡易テスターはあるって言ってたよね?電圧測って。 出来ることなら9か12VのACアダプタと、5V3端子レギュレータを買うことを強く勧める
>>361 どうでもいいけどなんでそんなに偉そうなんだよw
>362 指摘することが多すぎて文書書くのがダルいんだよw でもまあちょっと気をつけます。一応大学生さんもあんまり気にしないでね。 まあ所詮2ちゃん住人だし、とでも思っといて。
364 :
346 :2011/08/27(土) 17:00:26.00 ID:jMfPhl18
365 :
774ワット発電中さん :2011/08/27(土) 17:11:16.76 ID:ir5D2t+J
>>346 からするとおかしいのは自分で書いたプログラムであって、電源、その他のハード面は
問題はあるにしろ直接の表示不良の原因ではなさそうだな。
>>351 で指摘されてるけどLCDのデータシートを丁寧に読んで制御出力のタイミングを仕様
どおりにすることだな。
>>346 お初です。
いま気になった点をあげます。
回路図を見ましたが、LCDのDB4-7がポートAに接続されているようですね。
お言葉なのですが、LCDのDB4-7は、それぞれ、ポートAの連番にあわせたほうが
データシートとのプロトコルすりあわせ等で楽に作れると思います。
あなたと場合だと、LCDのDB4-7は、それぞれ、RA0-3もしくは、RA4-7へ
つなぎなおすことを、勧めします。
そのメリットは、LCDのデータシートに初期化プロセスや、文字を表示する際の
ビット列が書かれていると思いますが、ほぼそのまま流用できるからです。
>>348 PICのクロックとして8MHzを使っていのですね、了解です。
そうであれば、PICが8MHzのとき、delay_ms(1);は
1ms時間待ち、しなければなりません。(当たり前のことなのですが)
TRISB=0x00;
while (1) {
PORTB = 0xff;
delay_ms(1);
PORTB = 0x00;
delay_ms(1);
}
これを実行して、オシロスコープで、1ms間隔でH/Lが切り替わるか確認してください。
これで、いま書いたとおりの結果にならない場合、
コンパイラが、実際にPICに接続されているクロックを知らないことになります。
#pragma か何かの設定で、コンパイラにPICは8MHzであることを教えてやる
必要があります。
コンパイラが知らないということは、delay_msに多大な悪影響意を与えます。
また最後にdelay_ms(100000);と書かれていますが、オーバーフローの可能性ありませんか_
return(0);は問題です。
一連の処理を終えた後、プログラムは自身を終了します。
汎用OSではプロンプトと呼ばれる状態に戻るのですが、制御系ではどうなるか
定義されていません。
もしかすると、リブートされ、また1からスタートを永遠と繰り返すかも知れません。
意図からして、
while (1) {}
return(0);
としてやることで、処理を終えた後、じっと待ちます。(電源を消すまで)
さて、ここまでの回答でどうでしょうか?
なんというか自分で難易度あげまくってないか?
368 :
346 :2011/08/27(土) 17:27:43.72 ID:jMfPhl18
>>355 >>366 お二人の言うとおり、ループをreturn(0);の前に入れたら
なおりました。
ありがとうございます。
なおった。じゃなくて、ループを入れる事、ループにする意味を理解しないと、次のステップが厳しいよ。。
社内でもありませんでしたか… 【創価・集団ストーカー犯罪】とは、 加害者達が集団で、被害者を鬱病や統合失調症に仕立て上げ、 社会から抹殺しようとする凶悪な犯罪です。 この犯罪は海外でも存在し、アメリカではテレビでも報道され、 【生命倫理に関する大統領諮問委員会】も開かれています。 日本では20年以上も隠蔽され続け、年間自殺率3万人以上と増加の一途。 一刻も早く集団ストーカー犯罪を規制する法律が必要です。
371 :
346 :2011/08/27(土) 19:33:16.66 ID:jMfPhl18
>>369 ループをいれた意味はPICが何も動作しないで待つ状態を作りたいからですよね
>371 おまえ>309で言われて>322のレスしといてそれかよ。
>>371 PIC焼き込む
電源onしたときのPICの動きは、
電源on→最初にmain()の関数を実行する、と決まってるので、main()に飛び込んでくる→
→LCDの初期化して、「オ」を表示する→関数終了でプログラム終了で止まってしまう。
という動きをします。しかし、これでは「1発野郎」の動作になってしまい、
もしかすると、LCDの文字がそのうち消えてしまうかもしれません。
だから僕たちは、PICにいつまでもずーっと「オ」の表示という仕事だけを繰り返して欲しいと考えます。
ところがmain()関数の中には、初期化と「オ」の表示が続けて書いてあるので、
初期化は1回だけ、「オ」の表示は何度も繰り返すようにして欲しいです。
そうすると、
初期化
条件がonなら繰り返してくれ、ここから
「オ」の表示
ここまで。
という書き方をする必要があるのです。
もしLCDが「オ」の表示を1回やるだけでOKというものなら、
初期化
「オ」の表示
条件がonなら繰り返してくれ、ここから
ここまで。
という書き方をすれば良いです。
条件がonなら繰り返してくれ → while(条件)
ここから → {
ここまで → } という記述をします。
void main(){
初期化
while(1){
「オ」の表示
何かほかの処理
}
}
>>368 なおったと考えるのではなく、今までも自分が作ったとうりに伝句
失礼
>>368 なおったと考えるのではなく、今までも自分が作った通りに
動いていたと考えるのだ
12F1822を今弄っています。上手く動かないのでPICkit2でデバックしてみるかと思ったのですが、 MPLAB IDE v8.73aのdebuger→select toolの一覧でPICkit2が白文字表示で選択できません。 えーとこれは、何かのバージョンを上げれば対応しているでしょうか? 無理ならとうとうPICkit3を買わなくてはなりません。 どうでっしゃろ?
>>376 IDE
configure→Select Device
で目的のPICを探してみて。
選んで、赤丸だったら未対応
緑丸だったら対応。
緑丸は一応対応なんだけど少し怪しい。
16F877なんか、pickit3対応って出てるのにどうがんばっても
debugに持っていけない。(普通のプログラミング読み書きはできる)
378 :
371 :2011/08/27(土) 21:05:02.41 ID:jMfPhl18
皆さんの言うとおりですね。 ありがとうございました。
>>377 ありがとうございます。PICkit3を買うしかなさそうですね。
最近なにかと出費が多くて嫁に何といわれるか・・・・
>>380 っシミュレーション。12F1822で先週試してみたけど素直に動いたよ。
IO含めてターゲット環境での動作不具合になると難しいけど、そのあたりは
UART、もしくはLED接続して状態を出力すればなんとかなるかと。
それよか、8pinだからデバッガとして接続するとピン数が厳しくないか?
今更ながら確認したら、PIC12F1822のMPLAB SIMは黄色のベータサポート(MPLAB IDE v8.70)だった。 変数の変化は期待値通りだったので・・・まぁ、赤色の未サポートじゃないから、試しに使ってみ
自分の相談も聞いてください。 シリアルポートのバイナリ送信のLCD表示について、 可変長データ(20〜40バイト位)が連続で流れてきて、都度何バイト目かのデータの値をみて、 受信したデータのうちLCD表示する文字数を可変してます。 これまでLCD表示のデータをバッファにためて、まとめて出力しようとし てたけど、オーバーランエラーが発生してしまったので、 データを受けながら、1バイトずつ表示するように変更しました。 その時、可変長データ毎に表示を書き換えるために、いったんLCDクリアのため、 LCDのクリアコマンドを挿入しました。 ところが、このコマンドのせいで、オーバーランエラーになってしまいます。 可変長データ毎にうまいことLCDを書き換える方法ありませんか? 割り込みというのは使ってないし、使うつもりもありません。
>>383 LCD表示部分のコードは自分で設計しましたか?
コンパイラに標準装備の関数を使ってますか?
385 :
774ワット発電中さん :2011/08/27(土) 23:50:32.41 ID:ir5D2t+J
LCD表示って結構時間かかるよね。数値を文字列に変換するのも必要だし。 データレートはいくらで20〜40バイトのデータ列単位の受信周期はどれくらい? 1バイトごとのデータをバッファに貯めるのは割り込みを使ってるんだよね?
>>383 LCDのクリアコマンドって結構な時間が必要だよね?確か数ms。
オーバーランエラー自体の発生意味を考えた方がいいよ。処理時間の分配も。
受信データ取得がポーリング方式なら、バイト通信時間2回分でオーバーランの可能性有り。
9600bpsなら約1ms/byte。なので約2msまでが単発の猶予時間。連続しちゃ駄目ね。
クリアコマンド使う代わりにスペース表示した方が処理時間は早いと思います。
一般論として、もし、LCD に送れる速度(平均値)より表示したい 速度(平均値)の方が速ければオーバーランを防ぐことは不可能。 ソフト的に表示を間引く必要ある。 速度のピークが時々オーバーするだけなら、FIFO 処理でしのげ るが、プログラミングの難易度は低くない。
>>384 恥ずかしながら、的を得た答えかわかりませんが、
アセンブラでコーディングしています。
RCIFビットのポーリングループで、受信するたびにLCDのカーソルをずらしな
がら1バイト2文字ずつ書き込み処理してます。
プログラムは自分で書きました。
>>385 ビジーチェックというやつが、時間かかるっぽいですね。
データレートは、19.2kbpsで1バイト10ビット(スタート、ストップ、パリティなし)
なので1バイト0.52msだから、1データ10ms〜20msくらいですかね?
データとデータの間の間隔はすいません。ちょっと今わかりません。。。。
RCREGに値がはいったときに、RCIFのフラグがたちますよね?
それを見てるんですが、これも割り込みなんですかね。
強制的に4番地から始まるのが割り込みというイメージです。
答えになってるか分りませんがよろしくお願いします。
389 :
774ワット発電中さん :2011/08/28(日) 00:25:48.79 ID:hMxUy/DD
>>388 シリアル受信に割り込みを使用。リングバッファの実装。
解決。
>>388 私の言いたかったことは、
>>385-389 です。
やっぱり、受信には割り込みを使うのがいいと思います。
食わず嫌いせずに一度チャレンジしてみてください。
割り込みには落とし穴もあるのですが、しっかりマスターすると
病み付きになります。
アセンブラなんて融通の利かない言語を使う時点で。
392 :
774ワット発電中さん :2011/08/28(日) 01:34:06.01 ID:hdL1mSvl
>>388 mainルーチンのなかでRCIFフラグをチェックしてるのなら割り込みではないですね。
割り込みを使う気がないとありますが理由が何かあるのですか?
私も受信に割り込みとリングバッファを使うことをお勧めします。1つのデータ列の受信に
10〜20msということなので受信に割り込みを使えば1パケット受信完了後にデータ処理と
1画面分の表示を行っても次のパケット受信完了までに余裕をもって処理できるのではと思います。
データを取りこぼすこともなさそうに思いますが。
LCD のビジーチェック中にシリアル受信しているか見ればいいと思うが。 まあ、結局割り込みをソフトでやってるようなもんだから、素直に割り込み使うことをお勧めする。
すみません。 質問させてください。 16F88で外部クロック10MHzを接続し、ccsを使用してプログラムしています。 mainに while(1){ output_high(PIN_A1); delay_us(3333); output_low(PIN_A1); delay_us(3333); } このようにして、テスト信号用に、A1ピンからパルスを発信するだけの物を作りました。 3.333ms間ONが続いて、3.333ms間OFFになる、 単純な計算だと、1000/(3.333*2)=150Hzになると思うのですが、 周波数カウンターで計測すると131.5Hzしか出ていません。 outputが処理に時間を食っているとしか思えないのですが、 output_high(low)は使用上何ms食うのでしょうか? 調べても見当たらなかったので、質問させて頂きました。 よろしくお願いいたします。
395 :
774ワット発電中さん :2011/08/28(日) 10:03:36.22 ID:fHFz7Z/x
>383 まず40バイトのRAMエリアを確保しそれをリングバッファとして書き込み、読み出しする サブルーチンを作る。 Cなんかじゃ遅いので勿論アセンブラで。 タイマー0かタイマー1で0.5m秒位の割り込みを起動し、その中でフラグチェックし、データがあれば リングバッファにコピーする。 ベースループの中でリングバッファにデータが有るか調べ、有ればデータを表示する。 これで問題ない筈。 あと、LCDのBUSYチェックをまじめにやってるなら、LCDがBUSYなら表示を保留して他の処理を動かすといい。 余力があるなら、LCDの表示は数十ミリ〜百ミリ秒毎にまとめて一画面表示する位でいい。 一生懸命書き換えてもどうせ見れないから。具体的にはRAM上に仮想VRAMを確保して一定時間毎に表示させる。 リングバッファを確保するのが難しければこちらだけでもいいが、後々の拡張性も考えればリングバッファを 作って置いた方が楽。
396 :
774ワット発電中さん :2011/08/28(日) 10:07:21.80 ID:fHFz7Z/x
シミュレータを起動し、アセンブラ表示にしてストップウォッチ表示を見ながら ステップ実行すると何処で時間が掛かってるかわかる。 Cなんかつかってる時点で…
>394 delay_us(3333) を抜いて動かしてみれば output_high(low) の時間がわかるんじゃね?
>>396 いちいちCだアセンブラだなんつう話しすんなよ、荒れる元だ。
399 :
774ワット発電中さん :2011/08/28(日) 10:35:34.31 ID:hdL1mSvl
>>395 の「Cなんかじゃ遅いので勿論アセンブラで」というのはちょっと違うんじゃないか。
このケースでは全部Cでも十分だと思うけどな。
>>396 の「Cなんかつかってる時点で…」というのはわからなくもない。
Cにおけるディレイ関数などは時間的精度はまったく当てにならないと考えるべきだろう。
好きな言語で作れば良し。どちらの言語でも目標は到達できるはず。 今回のケース(シリアルLCD表示)は処理時間とデバイスの挙動を把握できれば解決するはず。
>>394 CCSの言語仕様は知らないけど、源発振の定義が未定義、もしくは違う値と推測してみた。
マクロ定義を確認。けど、未定義だとコンパイルエラー出る気もするが、省略時の初期値
があるかもしれない。
>>394 コンパイラにPICが何MHzで動いているか指示していますか?
ソースコードの行頭に
#use delay(clock=10000000)
を入れてみてください。
使い方は
#use delay(clock='PICの周波数 単位はHz' )
です。
>>402 行頭ではなく、 #include行の下あたりが正しいです。
>>401 >>402 有難うございました。
解決しました!
定義はちゃんと10MHzでしてありましたが、これが問題でした。
外部クロックに10MHzのセラロックを使用していますが、
この周波数を測ってみると9.95MHzと0.5%ほどの誤差がありました。
#use delay(clock=9950000)
と定義してみると、150.8Hzが出ました!
原クロックの誤差を侮っていました…
まだ、小数点以下の誤差がありますが、仕方のないレベルとします。
ヒントを頂きありがとうございました。
405 :
774ワット発電中さん :2011/08/28(日) 14:10:56.34 ID:hdL1mSvl
Cで自分でディレイ関数を書くと長い時間の精度を優先すると短いディレイで誤差が大きくなり 逆の場合長い時間で誤差が増すといったぐあいになるけど、メーカーから提供されるライブラリ のディレイ関数は時間的なレンジにかかわらず精度がでるのかな? どんなコードになってるのだろう?
>>404 1台だけならいいけど、複数台やる場合は今回の値が当てはまらない場合有ります。
別のセラロックは誤差が逆方向って話もあり、仕様上は前後0.5%の誤差。
数十個に1個の割合でピッタリ。もありそうなので、選別するのも手です。
10MHz目標だけど、内蔵クロックを使ってみるのもあり(88はMax8MHz)。
温度帯域で誤差が出るけど、以外と健闘します。必要であれば微調整もできます。
個別調整は面倒ですけどね。
精度が必要なら、素直に水晶使え。
ですよね。
セラロックの選別とかあまり聞いたことが無いな
セラロックありき。の様子なので、幾つか持っているんじゃないかと思った次第。 実際にはやらないと思うけど、まぁネタとして流して下さい。
量産時、チェッカーで自動校正してEEPROMに書き込ませた事はある。
セラロック安いからついつい選んでしまう。 シリアル転送もクロック同期でやっちゃえば それなりに使えるしね。 非同期では・・・うーーーーー。
調歩同期だってセラロックで問題なかろう
こまけぇこたぁ(ry
>>414 ハードウェアUART使うのなら問題ないけど
任意のポートでソフトで実現すると
結構気になる。私が未熟なだけだろうか?
送信ならポート操作でがんばれるけど、受信ある場合は面倒なのでデバイス変える。ものぐさな俺。 常温範囲内限定になるけど、内蔵発振子でも調歩同期はいけるよ。1byte内で完結する世界だし。 時計とかの大きな時間を管理するなら水晶推奨。
精進します!
暇な時にアセンブラでスケルトン作っとくと良いよ。 >>395にも書いたけど、基本は高速なタイマ割り込みで最低限の処理とタスク管理。 9600BPSなら26μ秒又は34.7μ秒周期の割り込みで送受信可能。
>>382 ありがとうございました。
MPLAB SIMもなかなか便利ですね。
しかし、残念ながらwatchでAdd SFRは登録できるのですが、
Add Symbolが塗りつぶされて使えません。
変数が見れないのが少し残念です。
これは黄色のベータサポートだからという事でしょうか?
内蔵クロックでシリアルは危ないのかな。 9600だと割り込み使って一応エラー無く動いてはいるが。
>>418 たしかに物凄く長いビット長を仮定すると厳しそうだな
1バイト長ならパーセント以内の誤差なら問題なさそうだね
>>421 元382だけど、変数見られるよ。半日前と、そして今見直したけど、大丈夫。
最悪はファイルレジスタ表示かな。マップ利用で大変だけど。
あとはIDEのバージョン関係しそう。
425 :
383 :2011/08/28(日) 20:47:02.06 ID:KSQyke8J
いろいろありがとうございます。 なんとかなく難しそうなんで、割り込みというのを避けようとしてましたが、 使うというのが総じた意見のようなので、勉強してみようと思います。
426 :
774ワット発電中さん :2011/08/28(日) 20:50:26.58 ID:aSu+1u0X
>425 割り込み発生した瞬間と抜けるときの挙動のクセさえ慣れればそんなに難しくない。 2,3個デモプログラム作ればだいたい慣れるよ。
>>422 230400bpsも内蔵でいけるよ。パリティ無し。16F1823、内蔵32M駆動での話。
ビット時間の誤差は-0.79%。室温環境。
>>394 ccsを使ってないから憶測で申し訳ない
コンパイラの展開イメージ(アセンブラ)を見ると答えがありませんか?
仮に関数がマクロ関数だとしてもwhileのループ分の記述を0秒で処理出来ないです
(delay_usをマクロ関数に出来るなら…つかシビアなタイミングは割込みかアセンブラで書くしかない気がする)
連投でごめんなさいよっと
>>404 なーんだ、ccsってそういう仕様なのか〜、勉強になりました
で、最後の誤差の話が私の書いた話でピッタリになるのかな?
セラロックをCXOにして150.000Hz位の精度が出せると面白いが趣味っぽい話だよねw
水晶振動子も中華の安い所なら
ttp://www.goodluckbuy.com/ で"HC-49S"で検索すれば20個 $4.44で出てくる
ついでに"Surface Mount Capacitor"でチップコンデンサ
個人的には0603(1608)サイズ位で22pF前後のやつをそろえておけば
手軽にそこそこ高精度で使える。
送料無料だけど2〜3週間位かかるし、届くかどうか多少不安あり
>>431 そのサイトいいよね
デジタルオシロが安く買えた。
抵抗が一種類だけ欲しかったから送料無料ってことで頼んだけど
頼んだのと違う値が届いて残念だったがw
LCDコントローラどれにしようか悩んでいたら、LCDダイレクトドライブというのを知りました。 LCDコントローラなしで、マイコンで直接駆動するらしいです。 PIC32なら、できる? 重ければ、メインとLCD制御用にPIC32を2つ載せればいいか、と考え中。
434 :
774ワット発電中さん :2011/08/29(月) 00:32:56.48 ID:yGNmobPb
MCLRって「おまじない」で使わなくともプルアップしてるんですけど しておかないとどんな不都合があるのですか? (リセットがらみなのかなぁ) 8ピンPICをよく使うので、ピンを使わないような余裕はあまりないのですが MCLRを入力に使ってて、アクティブHIGHなんかで設計してあるのを見ると どうなんだろうと思って。 具体的にどんな不都合があるのでしょう?
435 :
774ワット発電中さん :2011/08/29(月) 00:44:26.99 ID:UPZaXwpN
常にMCLR内部プルアップで使ってて、外に抵抗付けたこと1度もないけど不具合はないなあ。
MCLRはVPPでもあるからかな?
>432 俺も16x2のキャラクタLCD "JHD659"(バックライト有)が$4.76と安かったので 青地白文字を頼んだら黄地黒文字のが届いた。 さらに基板にJHD 162Aと書いてあるので、それが正しい方向と思って組んだら 上下逆だったw 最近 基板作成も始めたのかな "Soldering Manufacturing Service"
MPLAB SIMのロジアナ機能でSPI通信の波形を見ようと思ったんだけど SSPSTAT,BFが1にならなくてループしちゃうのね・・・・PICに書き込んでオシロで見たらちゃんとSPIの波形出てるんだけど・・・・
>>434 MCLRを入力として使うと内部プルアップされないんじゃないの?
少なくとも俺がよく使う16F690ではそうなってる。
MCLRとして割り当てるとweak pull-upになるけど、データシートではノイズ
による誤動作防止のために外部プルアップが推奨されてる。
>>438 質問に質問ですが、自分も今I2Cやっててうまく行かないのでオシロで波形を見てるんですが上手く見れません。
SEC/DIVはどのくらいにしてますか?
441 :
774ワット発電中さん :2011/08/29(月) 18:08:21.92 ID:X9ZHQxYu
>>440 SPI通信ならCS信号にトリガーをかければ通信の様子が分かると思うけどI2Cは
クロックとデータ線だけだからちょっとやりにくそうかな。クロックに対するトリガー設定で
1バイト長のホールド時間を設定するとうまく波形がとまってくれないかな。
時間軸のレンジはデータレートが400kHzくらいだと思うので25us、50us、
その他知りたい情報により変わると思う。
>>441 ありがとうございました。さっそく試してみます。
今日、秋月でPICkit3を買いました。 まだしっくりと来ないのですがなんとか使ってます。 で質問なのですが、PICkit3 programer で Writeした後、succeedとかの表示が出ないのですがこういう仕様なのでしょうか? それと表示の小窓が1行しかないのですがこれも仕様でしょうか?
>>442 古典的な力業だけどSCを発行する関数で空きポートへパルス出力。それをデバッグ用に使う。
2chオシロ、別枠で外部トリガ入力があればベスト。そこにデバッグ用の信号を突っ込む。
トリガ条件を上手く設定できれば見るべき2つの波形の頭出しができるかなぁと。
空きポートがない場合は…。頑張れ。
力業つーか、普通だよね 逆にSCをトリガにするロジアナ作るのもアリだし
>>439 そのとおりなんだけど、
>>435 と同じく、実働上問題が起きてないのも事実。
シビアコンディションでは問題が起こるかもしれないし、解ってやるのでなければ
「噛ましとけ」が正解なんだけど。
>>444-445 ありがとうございました。
オシロ経験値が低いのでPICkit3を購入しましたが、両方こなせたら鬼に金棒ですね。頑張ってみます。
でもって8ピンで充分だと12F1822でI2Cやろうとしてましたが、SCLと ICSPCLKが同じピンなので諦めて18ピンの16F1827でやることにしました。 初めから素直に18ピンにしておけばよかったのですが、そもそもは12F683から始まった事なので仕方ありません。 でもって質問が続いていて恐縮ですが、SDA1/SDA2とSCL1/SDA2のどちらの組み合わせを使ってI2Cをやるかという設定はどのレジスタで設定するのでしょうか?
>>449 データシート斜め読みだけど、2組あるんじゃね?16F1827の場合。概要でMSSPが2とある。
レジスタもSSPxCONがSSP1CON, SSP2CONと2系統。好きな方の系統に属するレジスタを
IIC有効設定すれば割り付けが自動確定する気がする。
>>450 そうでしたか、いまデータシートを見直したら16F1827は確かに2つ使えるようです。
てっきり1つのみだと思い込んでいました。
ありがとうございました。
452 :
774ワット発電中さん :2011/08/29(月) 23:20:56.77 ID:yGNmobPb
MCLRの件、亀レスでごめんなさい。 ピンに余裕があるときにはMCLRとしてちゃんとプルアップしておくんですけど、 デジタルのInput portとして使う分には気にしなくてもいいんですかね。 ピンがが余ったから何もつながないで宙ぶらりんとか。
>>452 一般論として、未使用の入力端子は論理を固定しておく必要がある。
454 :
774ワット発電中さん :2011/08/29(月) 23:49:48.77 ID:yGNmobPb
>>452 確かにそうですね。
面倒がらずに、ちゃんとGNDに落としておきます。
455 :
774ワット発電中さん :2011/08/29(月) 23:50:40.28 ID:yGNmobPb
456 :
774ワット発電中さん :2011/08/29(月) 23:59:23.21 ID:V3e15XVC
12F509で遊んでいる。50円/個だから遊び甲斐がある。 ところで、この石は割り込み機能が無い。 自分でなんとか等価な機能をプログラミングしたいのだが、良い方法があるだろうか? 教えてクンで恐縮だが、ヒント欲しい。
457 :
774ワット発電中さん :2011/08/30(火) 00:05:01.39 ID:4UK9jzlR
プログラムのループに定期的に(20命令ごととか)、条件満たしてるかチェックする行を追加する。
>>457 それって単なるループの一環の処理じゃん。
割り込み機能が無いんならコードでどうこうなんて無理だろ
>>456 さすがにもう少し具体的に書かないと、レスがつけようが無いです。
>>458 の言うとおり、割り込み機能が無い以上、割り込みと全く同じ事はできません。
(さもなければ、割り込み機能自体が必要ないことになる)
元々無いものをソフトウェアでエミュレートしようとすれば
>>457 みたくなるわな
>>456 sleep 状態から wake up させることは出来るので、条件に
よっては、これを割り込みのように使える場合もある。
>>454 物が~MCLRピンならGNDに落とすよりVCC(VDD?)に上げるべきかもね
>>456 面白い、TMR0もあるのに割込みはない
Lチカにはうってつけじゃないか?w
WDTしかハード要件の因子ないね、
>>461 の方法しかなくね?
464 :
774ワット発電中さん :2011/08/30(火) 07:36:01.70 ID:RziGRCpB
>>456 です。
皆さん、レスありがと。やっぱ、
>>457 さんみたいにやるしかないか。
タイマーとかWDTとかWakeUpとかを利用できないかと思ったけど、
なかなかいい案が出てこなかった。
やりたいのは、Lチカです。3色LED一個に一個のPICが点灯制御。
電源、GND、通信線の3本(場合によっては、電源線に通信信号を入れて2本もあり)で、
これらを250個シリーズに接続。(通信ラインインピーダンスとか通信遅れとかはこれから検討)
3本の通信線の先にはメインCPUがあって、個々のLED+PICに対し、点灯制御信号を送り、
250個のLEDをソフトウエアで自由に点灯制御させる。クリスマスツリー用に検討中、いや妄想中。
通信線の信号で割り込みを掛け、PICに点灯制御信号を送るが、各々のLED+PICには固有の番号を割り当て、
制御信号がどのLED+PIC組合せに対して送っているかを識別させる。
250個ものLED、PICを使うのでできるだけコストは下げたく、12F509を選択。
割り込み機能が必須ではないので、もう少し考えてみる。(割り込みつき8ピンPICもあるのでそれも選択肢の一つだが)
>>464 8x8マトリックスのダイナミック点灯なら、16本の信号で済む。
PIC一個で十分。
それを変な方向に走って、割り込み云々とは本末転倒。
クリスマス用というのがポイントと思った。1個1個のLEDが離れた場所にある。 距離が短ければマトリクスで十分だけど、個々が数cm離れていると配線が大変。 64個、個々が1cm離れてればそれだけで64cm。線材だけで結構な金額になる。 本人は線材節約、通信による送受信を割り込み相当の制御で実現すべく奮闘中。 と、俺なりに解釈してみた。
そういうのだったら低速通信でいいからポーリングでいいと思う WDTで擬似タスクスイッチを実装するほどの事ではないと思う
250個のLEDか…クリスマスツリー用って事は電流余りケチれないと思うのだが、 20mAとしても個別制御だからLEDだけで 250個*3色*20mAの15A。 あまり触りたくねぇなぁ。。。
>>464 見るものが、1本の通信線の状態とタイマーのたった2つ、
オンオフするものがLED の3個のだけなのだから、きちんと
シーケンス組めばポーリングで楽勝でしょう。
#250個の PIC に別の ID 埋めるのがちょっと手間だね。
>>464 18ピンのPICでLED12個ぐらい接続して、
PICのID+ピン番号を通信で渡して制御すれば良いんじゃないの?
250/12=21個のPICで済むじゃん?
PICとLEDが1:1ってなんか意味あんの?
>>470 自己レス
対象は3色LEDか…
18ピンPICで4個制御がいいとこか…
それでも80個ほどで出来るな
ピンの組み合わせで制御するように工夫すればもっといけるけど。
シフトレジスタICは使わないのかね?
これはまた、かゆいところに手が届きそうなデバイス。けど、高い。
フルカラーLEDドットマトリクス表示機の LED部を延長して配置しなおせばいいんじゃね? 16×16で256独立に表示できるでしょ 画像データ作るのがしっちゃかめっちゃかだけど どのみちしっちゃかめっちゃかだろ
>472 いくらシリーズ接続とは言っても一本道の直列接続じゃ自由度が大幅に制限される。 個々にインテリジェントを持たせて、バスにぶら下がるような接続の方が分岐も延長も楽。 PICに余裕あるだろうからソフトPWMで多少明るさを変える事も出来そうだし。 IC 1個で複数制御も配置によっちゃケーブルが無駄に必要になる (家の周り1周25cm間隔でとかだとIC間は普通につないでLEDは別に配線とか) (■)PIC or コントローラ (○)RGB-LED ■=====■=====■===== ○=○―○ ○=○―○ ○=○―○ こっちの方がシンプルにならない Т ̄Т ̄Т ̄Т ̄Т ̄Т ̄Т ̄Т ̄Т ̄ ■ ■ ■ ■ ■ ■ ■ ■ ■ ○ ○ ○ ○ ○ ○ ○ ○ ○
>>471 PIC 1 個で複数の LED をさばくなら
16F57 \100 (外部CR使う) が割安だな
最近24FのPICの話題が多いけど、何か良い方法ない?
>>476 I2Cで出来そうだな。リキ入れればRS-4xxとかCANもあるか。
SPIでチェーンもありだけど、距離が延びないだろうな。
>>478 なんの方法?
スレを分けるとかの話し?
16bit以上と未満で分けるのはいいかもな。
>>464 です。
仕事から戻ったら、たくさんのレス来てました。 ありがとう。
一個の3色LEDに一個のPICは勿体無いのではとありましたが、
まぁ、確かにそうかもしれないけど、以下のような単純構成をたくさんシリーズに並べることで
飾りとしての自由度を確保させることを狙ってます。基本的にバスラインなので、パラに繋いでもOKですし。
―■― ―はバスライン、■はPIC、○は3色LED
○
↑これを250個並べます。電流値が15Aにもなって危険!という指摘ももっともですが、
それならば、一列50個にしてそれを5列にしてもOKと思います。ツリーなので。
電源は、自室に転がっているATX電源を使う予定です。5V出力の電流が取れるので。電源ラインはヒューズは必須ですね。
メインCPUからの制御データは、ポーリングでも良いかもしれませんが、
もっと原始的にCPUからの一方向垂れ流しで考えることにします。大体アイデアができています。
点灯最短制御時間は、0.5秒を考えています。
あまり、高速にちかちかさせるとネオンサインみたいに味気なくなるので、
ゆっくり、カラーグラデュエーションさせたり、いろんな色の組合せでゆっくり、きれいにちかちかさせるつもりです。
とりあえず、20個ぐらいで試してみます。できたらアップします。
ニコニコ技術部にでもうpするのか? それだけ多いと、電流の問題がコネクタで顕著に出るから、それを考慮してがんばって
今日か昨日、誰か「電源に制御信号を載せる」ということを言っていたけど、 DC電源に載せるのって、どうやってやるのだろう。 というのは、DC電源は、パスコンとかがバッチリ入っているので、 制御信号をどうやって取り出すのかに興味がある。 あと、線路上のノイズとの区別はどうやってやるのだろう。 仮に5V電源で行うと、載せる制御信号は、1Vppくらい? つまり5V〜4Vの信号。 S/N上げるために5V〜2Vの信号とかにすると、伝送電力が落ちそうな気もする。
>485 パスコンにフィルタされる前にカップリングコンデンサ付けて取り出せばいいんじゃない? ノイズとは幅で区別。エラー訂正信号付加。 てか、PLCって知らない?
そういえば昔、IBMの人の本でM系列でクリスマス電飾作ったら 良い感じに光るとか見たことあるなあ・・・M系列とは言っても シリアルのバスで通信させればフィードバックかけなくてもいいんじゃね?
LC同調回路+LEDを1ユニットにして、 制御線に流す交流の周波数を変えると 同調して光るLEDが変わってくってのはどうだ?
周辺にゴチャゴチャ回路付けると、安いPIC選んだ意味が無いんじゃね? どうせやるなら、10F200ぐらいまでスペック落としてやった方がチャレンジしがいがあると思うがw
>>489 1票。
振幅で判別するのは、ノイズ除去が困難。
周波数の方がいいね。
>>487 18世紀って? ワケワカラン。
19世紀には既にベルが電話を発明していたというこっちゃろ
>>485 > DC電源は、パスコンとかがバッチリ入っているので、
> 制御信号をどうやって取り出すのかに興味がある。
単純にはHPF,LPFだな。
例えば電話回線、あれは50V?と音声が一緒の信号で一般的にはトランスでDCカットして音声を取り出す。
例えば Power over Ethernet。あれもトランスの直前でDCを分けてる。
> 仮に5V電源で行うと、載せる制御信号は、1Vppくらい? つまり5V〜4Vの信号。
それ、デジタル信号的な発想だなw
>>486 > てか、PLCって知らない?
あれはDCじゃなくてAC。
> 仮に5V電源で行うと、載せる制御信号は、1Vppくらい? つまり5V〜4Vの信号。 トランスもコンデンサも使わず電源ラインに乗せた制御信号を PIC ONLY で 取得しようとすると、この発想になりそうだが、、、さて、実現方法や如何に。
>>489 クリスマスが終わったらスペアナとして売りだす
俺はスペルマを売り出す!
498 :
のうし :2011/08/31(水) 13:41:08.07 ID:LrrEFWpk
風俗と連携すると効率いいんじゃないか
射精の瞬間を見てくれるならボランティアでもかまわん
旧帝大に通っていた頃、精液の買い取りが来てるらしいという噂がたまに流れていた
おまえらちょっと何言ってるかわかんない^^;
504 :
498 :2011/08/31(水) 19:06:11.47 ID:LrrEFWpk
教せーてほすぃーか? ( ̄ー ̄)ニヤリッ
新型の12/16F18xxって少ピンのはしょぼい(特に14pin)と思ってけどラインナップとしては ちゃんとあって秋月に入荷していないだけなのね [20pin] 未 16F1829 ---- 8Kw 1024 I/O18 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 未 16F1828 ---- 4Kw 256 I/O18 ADC12 CapS12 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 [18pin] 未 16F1847 ---- 8Kw 1024 I/O16 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 秋 16F1827 \120 4Kw 384 I/O16 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 未 16F1826 ---- 2Kw 256 I/O16 ADC12 CapS12 Comp2 Timer2/1 MSSP1 ECCP1/- CCP- [14pin] 未 16F1825 ---- 8Kw 1024 I/O12 ADC8 CapS8 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 未 16F1824 ---- 4Kw 256 I/O12 ADC8 CapS8 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 秋 16F1823 \100 2Kw 128 I/O12 ADC8 CapS8 Comp2 Timer2/1 MSSP1 ECCP1/0 CCP- [8pin] 未 12F1840 ---- 4Kw 256 I/O6 ADC4 CapS4 Comp1 Timer2/1 MSSP1 ECCP0/1 CCP- 秋 12F1822 \80 2Kw 128 I/O6 ADC4 CapS4 Comp1 Timer2/1 MSSP1 ECCP0/1 CCP-
久しぶりにPICkit2でICSPしたいのですが、既存の回路を保護するためにダイオードを入れた気がします。 何処にどんなダイオードを入れるち良いのでしょうか?
508 :
774ワット発電中さん :2011/09/01(木) 13:00:52.39 ID:7VDQeo4w
レベル変換について QVGAサイズのカラーLCDモジュールの動作電圧は2.8vとか3.0vとかが最適値らしい。 3.3v動作のマイコンと接続する時どのように接続してますか?3.3v系のIOを3.0v動作中の LCDモジュールに直接接続していいんだろうか?わけあってマイコンの電圧は3.3v固定なので。
>>508 3.3Vを直で入れる。
定格内で趣味の用途ならという条件付きだけど
509同様保護抵抗でおわりじゃね? 面倒なら510の考えもあり 多少無茶したってお遊びならこわれねーべ?
>>508 仕事なら541を噛ませとく。
趣味でも抵抗分圧はやめとけ。
ケーブルで延ばすと浮遊容量が増え、それに抵抗だと波形が鈍る。
インピーダンスも高めになるから、ノイズの影響も受けるしな。
> 509同様保護抵抗でおわりじゃね? 同様ではなさそうだけど。
>>507 ありがとうございます。
そのサイトを見ての質問ですが・・・・
まr@
<CSPDATとICSPCLK
515 :
514 :2011/09/01(木) 21:53:59.30 ID:YrPcEzVM
>507 ありがとうございます。 そのサイトを見ての質問ですが・・・・ まずPIC側のICSPDATとICSPCLKピンはPICkit2のDATとCLK専用にして他の回路と分離する。 同じくPIC側のVppもPICkit2のVpp専用として他の回路と分離する。 そして、Vssはグランドに落す。 ここまでは問題ないと思うのですが、Vddの扱いについてなのですが、 他の回路に影響を与えたくないので、PIC及び周辺回路へは本来の電源から供給して PICからは供給しない事とします。 そうするとPICkit2のVddピンは何処にも接続しなくてよいのでしょうか?
>>回路側からの Vdd への供給電圧が書き込み時の電圧を満足していれば接続しないで良いと思われます。 逆に回路側からの Vdd への供給が電池接続などで電圧が低い場合、PIKkit2 の電源を接続しておくと、 Vdd が低いよ、とワーニングを出してくれるので PICkit2 って結構親切だなあと思ったw。
>>508 ショットキバリアダイオードはさんでみる
はさんでみる → 挿入してみる
519 :
514 :2011/09/02(金) 21:32:25.28 ID:rGuflbi/
PIC12F1822でI2Cをやろうとしています。 >SSPCON2, SEN この命令によってスタートコンディションが発行されるはずなのですが、 オシロで波形を見る限りそんな形跡はありません。 で、MPLAB SIMにてこのレジスタの中身を見ようとして愕然。 Special Function Registersを見てみると、SSPCON2がありません。 SSP1CON2とSSP2CON2なら有ります。 さて、どういう事でしょうかSSPCON2でアセンブルしてhexコードも出力されているというのに そんなレジスタは使われていないようなのですww どなたかよろしくアドバイスの程お願いいたします。
"usbpicprog"っていうライター作った人います? 新PICにも対応してるみたいだし、USB接続だし、オープンソースだし 英語読めないけどorz
>>519 SSPCON2とSSP1CON2は同じ。
SSP2CON2があるのがおかしい。
>519 P12F1822.INCを見ると >SSP1CON2 EQU H'0216' >SSPCON2 EQU H'0216' となっているからどっちでも同じじゃないか
>>519 Configure -> Select Deviceメニューでデバイスを確認すべし。
>>520 18F2550使うなら、PICkit2クローン作ったほうがよくないか?
おまえら電子回路シミュレーションするのにどのソフト使ってるの?
PSPICEとか
529 :
774ワット発電中さん :2011/09/03(土) 07:40:54.68 ID:YrHToOIr
PICの初歩を学ぼうと思うんだけど、ライターはどれがいいかな? PICkit2とPICkit3で悩んでるんだけど どっちがいい? 電子工作は経験あるけど プラグラムは初心者なんで 初歩的なことしかやらないから簡単な方がいいんです
>>529 プラグラムは経験無いけど、PICKit2で充分なんじゃない?
PICKit3は問題というか癖があるらしいから
531 :
774ワット発電中さん :2011/09/03(土) 07:58:24.43 ID:YrHToOIr
>>530 レスありがとうございます
秋月で1000円差
悩みどころですが、PICkit2は日本語マニュアルもネットで拾えるし
ネットでも使用方法の記事が多いのでこっちでもう少し検討してみます
書籍も何冊か買おうと思いますが、初心者が読むような本は少ないですね
PICマイコンの基礎、ライターの使い方
簡単なプログラム例、プログラムの意味
あたりがわかるような本はないでしょうかね
本屋で立ち読みしても欲しくなるようなものが見当たりません
>>529 じゃないけど、今までPICSTART Plusで頑張ってきたけど12F1822とか新しいPICの対応しなさそうなので
PICKIT2とPICKIT3、もしくはICD2かICD3
どれを買うのがいいだろうか?
全部買うのがいい
8ピンごときマイコンのデータシートが4百ページ近くに及ぶ。 いつの日かプリントアウトしてやろうと思ってたがもはや無理なのれす(^p^)
>>531 >書籍も何冊か買おうと思いますが、初心者が読むような本は少ないですね
何冊もで中途半端な理解を積み重ねるくらいなら、ある程度概念を理解したところで、データシートをしっかり読むことをお勧めする。
537 :
774ワット発電中さん :2011/09/03(土) 14:34:57.98 ID:bIBEIPwR
>>534 まともにプリントしたら邪魔になってしょうがないよね。A4に片面4面付けで両面印刷してる。
文字はかなり小さくなるがマイクロチップのデータシートは見やすいほうだな。使うパーツの
データシートはほとんど4面付けでプリントしてる。
538 :
774ワット発電中さん :2011/09/03(土) 14:50:54.55 ID:Nd5CsNj1
すみません。初心者なんですが、データシートを見ながらタイマー0割り込みでポートBの出力をトグルするものを作ったのですが 動いてくれません。IDEのデバッカーでみてみるとmain_loopをずっと回っているだけです。割り込みを許可しましたしなにが原因でしょうか。 お願いします。 __CONFIG _CONFIG1, _CP_OFF & _CCP1_RB3 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_IO __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_ON ORG 0x000 goto main org 0x004 bcf INTCON,TMR0IF goto LED main ; OSCCON, OSCTUNE レジスタのある bank 1 bsf STATUS,RP0 movlw B'01010000' ; 2MHzに設定 movwf OSCCON ;TMR0関係設定 movlw B'11110111' movwf OPTION_REG bcf STATUS,RP0 ;bank 0 movlw 0xc3 movwf TMR0 bsf STATUS,RP0 ;bank 1 clrf TRISB clrf ANSEL ;ワリコミ許可 bsf INTCON,TMR0IE bsf INTCON,GIE main_LOOP nop goto main_LOOP LED bcf STATUS,RP0 COMF PORTB,w movwf PORTB retfie END
>>531 断然、PICKIT2
ICD2もPICKIT3ももってるけれど、一番使いやすい。
特に、PICKIT3は、PICの型番を旨く認識してくれないことが多い
pdfから良く見るレジスタだけテキストファイルがあれば十分だろ? 8pinの1xxx系でも200行にもならんぞ?
ICD3が今一番安いのは、Digikeyですか?
>538 PICの型番書いてないから、あってるかどうかわからないけど(16F88辺り?) >;TMR0関係設定 >movlw B'11110111' >movwf OPTION_REG これだと TMR0のクロックが外部端子にならないか?
>>543 ご指摘のとおりT0CSが外部クロックの設定になっていました
うっかりしてました
本当にありがとうございました
>>535 >>539 おおお、わざわざありがとうございます。
やっぱりPICKIT2ですね、秋月で5千円くらいかと思ってたんですが4千円切ってたので買うことにしました。
546 :
774ワット発電中さん :2011/09/03(土) 21:07:25.63 ID:ZtIpyMSk
AKI-PICプログラマー Ver.4使ってるんですけど、 いつの間にやら完成品販売になってるんですね。 PICKIT2やら3やら、安くて小さいのもたくさんあるし。 新しいPIC使うつもりもないから、今のままでいいや。
547 :
514 :2011/09/03(土) 21:23:32.91 ID:cp/zBQmp
>>521-523 そうでしたか・・・・ありがとうございました。
これでスタートコンディションが発効できるか?と思ったけれど
結局また振り出しに戻ってしまいました。
明日、試験会場が山沿いにあるんだが流石に土砂崩れはないよな
>>547 SCL とSDA ピンに正しい値のプルアップ抵抗をつけること。
I2C モードを選択する前に、
SCL とSDA ピンがA/Dポートと共用の場合は、デジタルポートに設定すること。
SCL とSDA ピンは、TRIS レジスタのビットをセットして、入力設定にすること。
>>546 たまに作る程度だったからVer.4使ってるけど
最近PICKIT2にしようか迷ってる
>>551 抜き差ししなくても済むのは凄く楽。ただピンの割り付けは考慮必要。占有できるならいいけど。
誤爆にレスもなんだが 三重では凄い事になったらしいが気をつけてな
555 :
774ワット発電中さん :2011/09/04(日) 09:54:26.16 ID:Gou2n61m
今から買うのならPICKIT3がいいと思う
もう4が出るまで待つか・・・・
ICD-U64 って安いけど、どう。
スレチかも知れないけど、 12F1822をAKIPICプログラマでかけないものでしょうか? device6.iniファイル書き換えで対応できないか試していますが、 PGM_TYPEに何を指定していいのかわからんです・・・
559 :
774ワット発電中さん :2011/09/04(日) 23:15:42.03 ID:aqVuvs+b
Beta6.72でもサポートしてないからできないんじゃ? 新しいPICは安くていいんだけど機能的にはまだ必要ないし、 PICKIT3買うんならPICそのものがずいぶんと買えちゃうので AKI-PICプログラマで細々やってます。
この前、秋月に言った時に 12F1822の件聞いた。 AKIPICでは対応していない、とのつれない返事だった。 対応予定も不明みたいだった。店員がそこまで把握できているか分からんし。
pickit一択になってから長いしな
ついでに言うなら、その前はWriter509一択だった。 決してAKI-PICではなく。
なんにせよ、ピックやるならゼロプレッシャーソケットだっけ?名前あってるか分からんけどあれあるといいよね
ZIF (Zero Insertion Force socket) 単体で買うと結構高かったような気がする。
さっぱりワカランぽ Error [1347] ; 0. can't find 0x102 words (0x102 withtotal) for psect "swtext1" in segment "CONST" (largest unused contiguous range 0x100)
ちなみに PIC16F687 でMPLAB付属の最近の HI-TECH C です。
567 :
774ワット発電中さん :2011/09/05(月) 02:14:00.47 ID:wmO5npub
最近USBの勉強してるんだがputrsUSBUSARTとputsUSBUSARTを間違ってて3時間ほどムダにしたorz
>>565 Error [1347]か。それ、多分単にプログラムメモリーが上限超えただけかと。
小さくなるように書きなおしてみたら?
秋月のライターのZIFソケットと基板を流用してアダプタにすればいい。
573 :
519 :2011/09/05(月) 08:42:57.05 ID:q6t7Shrx
>>550 >>554 レスありがとうございます。
ご指摘いただいた点は再度確認しましたが問題ないようです。
はじめは手動でI2Cをやろうと考えていたのですが、低価格なPICでMSSPが出来ると知って今に至ります。
今なぜスタートコンディション(SCLが1の間にSDAが1→0に変化)が発効できないかと考えていると、
そもそも入力設定のピンの電圧のオンオフをどのように制御しているのだろう?という疑問が頭を離れません。
I2Cを手動でされている方も多いわけですし、どのような方法で実現しているのか・・そこに何かの答えがあるのでは・・・とか考えています。
出力設定のピンならオンオフの設定は普通に出来ますが、入力設定のピンはオンかオフかは外部回路しだいでPICはタダの受身と思っていたのですが・・・
ここに大きな勘違いがある気がします。
どなたかご指導お願いいたします。
>>573 0を出力する状態と入力のみの状態を切り替えてる。
そのためのプルアップ。
>>573 PORTを0に固定して、TRISを変化させるのと同じだよ。
TRISが0ならポートは0になり、
TRISが1ならポートはオープンになるからプルアップ抵抗で1に引っぱってやる必要がある。
よくわからなかったら、MSSPを使わない方法でポートが制御できるか確かめた方がよいのでは?
できたら、MSSPの設定が間違っている。
できなかったら、ポートの設定が間違っている。
ピンが複数の機能を兼ねている場合は、その全てのモジュールについて設定の優先順位を確認しましょう。
アナログポートは、必ずデジタルポートより優先されます。
例えば、A/Dコンバータを使わない設定であっても、それは変わりません。
アナログポートになっていると、デジタルポートはポートから切り離されてしまいます。
これは、デジタルポートにアナログ信号が加わらないようにするための工夫なのです。
>>565 segment "CONST" だから、static 変数の初期値の部分だと思う。
>>565 ぐーぐるさんの翻訳でも意味わかるんだな
>>>エラー[1347]を、0。セグメント"CONST"のPSECT"swtext1"のための0x102ワード(0x102 withtotalを)(最大未使用の連続した範囲は0x100)を見つけることができません
swtext1変数が0x102バイトの連続領域を要求したのか?
0x100バイト以上の連続領域はないとコンパイラ様が仰せだぞ?
>>570 プログラムサイズなのかね?変数領域を取れなかった感じに読めた
>>576 あぁそれだな
ZIFソケット Aitendoが安い 直営店も復活したし
ICSP の場合、ソース修正後、ビルド→焼きこみ→実行開始 がビルドのクリック一発でできるのが快感です。
ところでデータシートってなんだよ?
データシートはデータシートだ
8pin DIP のZIFやTEXTOOLが欲しいんですが、見つけられません。 ご存じな人、教えてください。
>>582 英語とか読めねーよwww
なにがデータシートだよwww
イングリッシュシートじゃんwww
お、ねだん以上、ユトリ♪
イングリッシュシートいいなwwww
590 :
774ワット発電中さん :2011/09/05(月) 20:03:30.28 ID:mjThiBqd
>>590 個人的には、好きな内容だけど・・・
ATmega644PってAVRでスレチじゃね?
PICで動かして持って来いや〜!www
* *
* うそです +
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
最近中国液晶の話題が多いな?
果たしてシェアを増やすのは、R8かAVRかARMかPICか?
PICは後閑さんが頑張っているな?
日立系のR8・SHとかはモジュールやノウハウを公開しないから
シェアが減る一方の様なきがす。
592 :
591 :2011/09/05(月) 21:11:47.34 ID:titJ4oLH
よく読んだら
>>590 はPICで動かしているのね?
俺は24Fが焼けないから、傍観しているけど
593 :
573 :2011/09/05(月) 21:50:32.60 ID:q6t7Shrx
>>590 データシート読んでガンマ値とか地道に直すしかないと思う。
24FってAD変換・振動子内蔵、その割に安かったりしてすごいらしいけど 製作例などの情報が少ないから手を出しにくいんだよな。 12F、16Fでも十分だし。
596 :
774ワット発電中さん :2011/09/06(火) 07:23:31.76 ID:zCQvkeed
>>590 です。
他の液晶のデータシートを読んでたらRGB独立でガンマ調整可とか書かれているものもあるみたい。
今使ってる液晶はグレイスケールのガンマ調整となってるようだが国産デジカメ等に使われてる液晶
とは性能・機能面で省かれてる部分があるのか?それともレジスタの設定の問題だけなのかな?
デジカメ画像と自作のを見比べてみると鮮やかさが違う。RGBはちゃんと出てるみたいなんだけどな。
液晶の制御は16F88でもできそうなので移植するのもおもしろいと思う。
>>596 自前でγ補正すれば?
ちなみに良い液晶は輝度が高く、安い液晶は輝度が低い。
それが明暗がハッキリしなくなる理由。
それでγ補正する場合、明るい色は潰す処理をする。
18f2550で8個のLED光らせたいだけなんですが このプログラムでRA4ピンのLEDしか光らないんですが何故?故障? void main(void){ unsigned char d,ch,c; int i; OSCCON = 0b01111111; ADCON1 = 0b00001111; TRISA = 0; TRISB = 0; TRISC = 0; PORTA = 0xff; PORTB = 0; PORTC = 0xff; PORTAbits.RA0 = 1; PORTAbits.RA1 = 1; PORTAbits.RA2 = 1; PORTAbits.RA3 = 1; PORTAbits.RA4 = 1; PORTCbits.RC0 = 1; PORTCbits.RC1 = 1; PORTCbits.RC2 = 1; while(1){ } }
>>599 ドキュメント見ないで書く
RA4って~MCLR(?)じゃないか?入力専用ピンだと思うぞ?
601 :
600 :2011/09/06(火) 11:54:58.50 ID:6KeBiUvY
あわてんぼさんでした、ごめんなさいm(__)m RA0〜RA3についてはコンパレータの機能を止めてください CMCON=0x07; でいけるはずです RCもなんらの理由なのでしょうが今からドキュメント100回読んできます
MCLRはRE3だ。 後半のビット操作って必要なくね?
必要ないね。 やっていけないことは無いが。 LEDをどうやってドライブしてるのかわからんが、流す電流によっては定格超えてるかも。 LED点けるだけじゃなくて点滅させたほうがうまくポート制御できてるかどうかわかりやすいと思う。
604 :
600 :2011/09/06(火) 12:12:16.89 ID:6KeBiUvY
ふ、まだ1読途中だぜい、4550買ったままpdf放置してたが どうやって繋いだのか知りたい って既に602,603が書いてた Trでドライブしてるんちゃうん? 28.0 ELECTRICAL CHARACTERISTICS を越えちゃうとよくないよー
I2Cの勉強をしてるんだけどSSPCON2,SENの後、SSPIFが立たないんだけど なんでだろう・・・?誰か助けて・・・ 使用してるPICは16F886 ;********************************************************** ; I2C初期設定 ;********************************************************** I2CSET BANK_0 MOVLW B'00101000' MOVWF SSPCON BANK_1 CLRF SSPCON2 CLRF SSPSTAT BSF SSPSTAT,SMP BANK_1 MOVLW H'31' MOVWF SSPADD BANK_0 I2CSET_END RETURN ;********************************************************** ; Start Condititon ;********************************************************** STCN BANK_0 BCF PIR1,SSPIF BANK_1 BSF SSPCON2,SEN BANK_0 BTFSS PIR1,SSPIF GOTO $-1 BCF PIR1,SSPIF STCN_END RETURN
>>605 1011 = I2C firmware controlled Master mode (Slave idle)
ダイバージェンスメーターの1602版が完成
ダイバージェンスメーターって流行ってるの?なんか別の場所でもそんな名前聞いたような。
そりゃまあ、現在放送中のアニメだし。
PICを簡単に学べるアニメ作れや。
俺も「ダイバージェンスメーター」って何? と思っていた。 ググると、ニキシー管?なにそれ? 世の中には、いろいろな趣味と興味を持っている人がいるものだ・・・ と思った。
612 :
774ワット発電中さん :2011/09/06(火) 18:38:23.90 ID:roS+UG85
ニキシーは某SFモドキエロゲー原作アニメにそれを使ったガジェットが出てきて値段が高騰してるらしいな ほんとクソアニオタ氏ねだわ
ニキシー管が高騰しようが誰も困らんだろうに
あちこちのスレでニキシー管と聞くと同じ書き込みを繰り返しているキチガイです。 相手にしないでください。
アナログちっくなサイバーさが減るけど、PICからの制御なら蛍光表示管のほうが楽でいいよね。
Twitterでもニキシー管、ニキシー管うるさい人がいたわ。 あんまり自分語りと自慢話が多いんでアンフォローした。
>>606 ファームウエア制御のマスターモードにしろという事?
これってマスターモードとどう使い分けるのですか?
>595
24FやdsPICは情報少ないから多機能になったモジュールを使いこなすのは大変だけど
命令セットが大幅に使いやすくなっていてうれしい、アセンブラ限定だろうけどw
以前ココで相談したGPS1Hz使った周波数カウンタは、24Fから変更してなぜか持っていた
dsPIC33FJ12GP201(40MIPS動作)で作りました、速い方がよさそうなので
24F/dsPIC(DSP命令以外)インストラクションを表(エクセルファイル)にまとめたので
アップローダーにあげておきます
ttp://loda.jp/mcnc/?id=276
>>618 > 24FやdsPICは情報少ないから
別スレ立てないか? 12Fとか16Fと混ざって埋もれてしまう。
> 以前ココで相談したGPS1Hz使った周波数カウンタ
外付け回路は結局どうしたの?
わざわざ別スレたてるまでもない。同様に扱えるし違いといっても誤差の範囲。
どうも605です
>>606 設定しましたがSSPIFは動作しませんでした・・
>>619 BANK_0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANK_1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
とマクロ定義してます
12f、16f以外をPICと称して良いものか? 別スレの方がよくね?
>>623 そりゃお前、マイクロチップ社がPICだつってんだから
627 :
618 :2011/09/07(水) 10:34:50.12 ID:6SCIl/xu
>620 前スレの234でも書きましたが、結局外付け回路は無しにしました。 うまく伝えられなかったのですが、元々は2サイクル命令がある為 割込みに対する 応答時間はn(固定)+(0〜2安定せず)サイクルと思っていましたが、リファレンス読むと 24/dsPICは割込み処理までの時間を一定にさせるように1サイクル命令と 2サイクル命令後半での割込み発生の場合NOPを挿入し、2サイクル命令前半で 割込み発生したのと同じタイミングで割込みに入るようです。 結局応答時間はn(固定)+(0〜1安定せず)サイクルと言う事で、これなら 1サイクルを短くすれば(16→40MIPS)問題ないだろう… 別スレ案の件は、今のままが良いかと。24/dsPICの話題は滅多に出ないので 邪魔にはなりにくいし、必要な人は読むだろうし、分けて閑古鳥が鳴くスレじゃ寂しいですし
ゴルア〜秋月っ! PICの24F焼けるようにしろやっ!!ww
>>623 俺も12f,16fがウザい。別スレに一票。
まぁ、建てたもん勝ちだけどねw
>>629 一票とか言ってないで欲しけりゃ立てりゃいいだろ。
俺は移動しないけどw
631 :
のうし :2011/09/07(水) 13:41:12.09 ID:uqjK9/we
>PICの24F焼けるようにしろやっ!!ww マイクロチップのプログラミングリファレンスに焼き方が書いてあるぞ。 16Fなんかは手書き(?)ができるくらい簡単なシリアルのフォーマットだった。
勢いが30未満な過疎スレに別立てるとかないわー 8月15日のこのスレがまだ630程度なんだから我慢しろ 30日で1本消費できない いっそAVRとかも一緒にしちまえよw
A○○厨は口だけだから一緒にされると迷惑
P●C厨もLチカ程度なら大差ないって、一緒でいいじゃない? いっそ過疎ってそうなマイクロデバイスごちゃでもいいんじゃないの? Z180とか来たらそれはそれで面白そうだしw
実際にA○○厨のLチカ動画UPされなかったじゃん。 所詮口だけwww
Lチカだけ優遇するなんてズルい モーターをクリクリ回すモークリ廚も頼む
モーターも面白いね。アセンブラ+DSPICは出来たのだけど MATLAB+DSPICに挑戦中。
>>637 >MATLAB+DSPIC
何それ?
何か豪華そうww
639 :
774ワット発電中さん :2011/09/07(水) 18:40:22.53 ID:d83020+O
RCに使われてるようなサーボとかブラシレスアンプとかを自作するってのも面白そうだね。
簡単なモデルベース設計か?
9.22MHzのセラロックで時計は作れますか?
>>642 精度はどれぐらい必要なの?
普通にタイマー割込で時計作るならかなりズレが出ると思う
精度を出すなら精度のいい水晶、RTC、GPS、NTP、電波、AC電源の周波数とかで出すといいかも
>>637 モーターを回す止める、一定の速さで回すだけの制御なら簡単だが、
エレベーターのような滑らかな位置決め制御なんぞをしようとすると、
難易度が高くなるよ。
>>642 作れるよ。
初期精度はあまり良くないから一日位動かして時報でずれ量を調べて補正してやると
そこそこ使い物になる制度になる。
>>645 その為のMATLABでしょうに。
>>642 時計はおまけ機能と仮定して、9.22Mとは半端な気がするが、用途はなんだろう?
それとも、時計がメインなのか?セラロックという時点でズレは覚悟しないと。
9.22Mは動作のみで、時計はRTC外付けが簡単かな?
>>628 >PICの24F焼けるようにしろやっ!!ww
PIC18F*にpic18spxを焼いて、pic18spxでPIC24Fを焼くという手がある
649 :
774ワット発電中さん :2011/09/07(水) 23:19:35.19 ID:d83020+O
20MHzとかのクリスタルで時間カウントすると1日で0.5秒程度ずれた。 この程度のずれは実用上たいしたことはないし、市販の時計では気に留めることは ないが自作するとものすごく気になるんだよな。
セラロックって温度安定性はどんなもんだっけ?
>>649 市販の時計が気にならないのは調整してあるから。
自作でもちゃんと調整してあれば気にならない。
いくらクリスタル使ったって誤差があるのだから調整しない事には話しにならない。
652 :
774ワット発電中さん :2011/09/07(水) 23:31:37.57 ID:d83020+O
>>651 そういう問題じゃなくて。市販品の誤差が0なわけないし。じっさいはずれてても
ずれてるかどうかを気にすることがないというだけの話だな。まあちゃんとした時計用の
クリスタルはそれ自体の精度が汎用品よりも優れてるかもしれないが。
>>652 >ずれてるかどうかを気にすることがないというだけの話だな。
わかってて突っ込んだ。
昔の時計はクリスタルの発振周波数を調整していたが今の時計はカウント数を変更出来るようになっている。
マイコン用に使われるクリスタルは周波数精度が悪い物が多いから、調整しないとコンビニで売ってる時計にさえかなわない。
洗面所用に買って来た100均のデジタル時計が豪快にどんどん狂っていく
JJYが停波したとき電波時計が一日1秒ずつ進んでいってラジオの時報時に 表示されている秒数が3.11からの日数を示していたときは切なかったな。
>>649 誤差は5.79ppmか。立派なもんだよ。
>>651 その調整が、普通レベルでは無理って事に気がついてほしいもんだ。
>>657 周波数カウンタとか使わないでも24時間での誤差を計測して周波数からズレたカウント数を計算して1秒のカウント数を修正したらそれなりに精度出るんじゃね?
24時間である必要もないがそれなりに長いほうが精度出そう
pickit3を購入しました pickit3ProgrammerでHexファイルをインポートし、writeを押して書きこもうとすると program operation of program memory failed. その下にいっこスクロールすると Address 0x0, read 0x3FFF, expected 0x118A と表示されています 対象PICは16f88でhexはHI-TECH Cでコンパイルしたものです 何も繋がないままwriteするとNo device〜 と表示されますが PICへ繋ぐ表示されます。配線が間違えてるのでしょうか? Readは普通に成功してる? 「Reading device... Program... EEPROM... Config... User(略」とか表示されます 解決策を教えて下さい
>>658 お〜〜〜、ワルぃ。周波数カウンタしか頭に無かった(汗
その手があったな orz
(それでも温度特性による誤差は残ると思うが)
>>659 >Address 0x0, read 0x3FFF, expected 0x118A
アドレス0x0、読まれた0x3FFF、予期されている0x118A
アドレス0x0に0x118Aを書き込んだつもりが0x3FFFになっている。
0x3FFFは初期値だから全く書き込めていない。
Vppの配線がおかしいでのは?
662 :
コンピュータ拷問の仕方 :2011/09/08(木) 02:58:33.23 ID:bCVhIDrE
アセンブラでNANDを入れたら二ーモックのエラーと処理でコンピュータ拷問できる
>649
せっかくの自作なんだから高精度にしたいってその気持ちよくわかるよ。
私も今は亡き秋月の高精度12.8MHzオシレータで時計作ったら、0.5ppm位の
ズレでその値をソフトで補正するようにしたけど、季節によって±0.3ppm位と安定しない。
このページ見て
ttp://www.geocities.jp/ja3npl/gps/counter_11dgt_v1.html 1ppm以下の精度欲しければ温度一定にしないとだめと思い、オシレーターに
直接 熱源としてTrとセンサ(LM35)巻きつけて36℃で温調。
今の所 ソフトの補正値込みで30日で0.1〜0.2秒位のズレ。冬場もこれを維持して
年差2秒以内に収めたいな。
JJYとかGPSやNTPがあるのに何やってるんだと言われそうだけど。
通常の水晶だと常温付近で -0.3ppm/℃位の温度特性なのかな
おー、クロノメーターやねぇ
666 :
774ワット発電中さん :2011/09/08(木) 12:45:17.30 ID:FP36DFEt
>660 やった事無いのバレバレだなw そういう奴に限って声がでかいwww ちなみに温特性も長期間で合わせればかなり相殺される。
>>666 あるわけないだろ、仕事なんだから周波数カウンタを繋げば済む話w
668 :
774ワット発電中さん :2011/09/08(木) 12:59:10.91 ID:FP36DFEt
仕事で時計の校正に周波数カウンタつなぐなら愚かとしか言い様が無いなw
パソコン起動中のみ315MHzに標準時刻(パソコンの)を垂れ流しておいて 離れた場所にある各マイコンで、そのデータが受信できたときに時刻あわせ、が一番安上がりかな
微弱で届く範囲なら繋げちまえって気もするが… 最近は小さいペルチェがあるので温度を若干下げて安定させると 周波数が重要な時には便利。
>>660 温度センサー \100@秋月 を PIC につなぎ、温度(気温)と周波数(時刻)の誤差の関係を丹念にデータ取得
そのデータを元にソフトで補正汁
672 :
774ワット発電中さん :2011/09/08(木) 14:29:33.86 ID:UJwDvSBt
ワイヤレス方式とケーブル接続方式の2つの商品があればワイヤレスのほうがいいよな。 でも個々で議論してるレベルの精度についていうならパソコンの時刻はまったく当てに ならないだろうな。
パソコン、NTPに合わせておけば、ほぼ常に概ね±1秒以内になると思うけど
日時計最強
675 :
774ワット発電中さん :2011/09/08(木) 14:49:03.82 ID:UJwDvSBt
>>673 一般的な用途においては実用上問題ない。でも1秒以内というのはどうなのかな。
PCからリクエストを送信して時刻情報を受信するわけだけど通信にかかる時間は
回線状況に依存するし。さらにウィンドウズではバックグランドでいろんなサービスが
動作してるので処理の順番でずれるケースも出てきそうだけど。
RTC
1秒の誤差が2秒になったとしても、この誤差は蓄積しないんだから、 それはそれで意味あるんじゃないか?
そう。 誤差が累積しない前提なら、外に水晶つけず内部クロックだけで時計やっても大きな問題にならない。 RTCなんて更に要らない。
679 :
774ワット発電中さん :2011/09/08(木) 15:20:58.81 ID:FP36DFEt
>ワイヤレス方式とケーブル接続方式の2つの商品があればワイヤレスのほうがいいよな。 そうとも言い切れない。パソコンのノイズで微弱電波の通信が安定しない事はよくあるし そもそも、時計の時刻あわせなんかよりももっと他のアプリに周波数を割り当てたい事もあるだろう。 まあ、時計さえまともに動くように作れないなら致し方無いが。
680 :
774ワット発電中さん :2011/09/08(木) 15:39:32.50 ID:FP36DFEt
>678 内蔵クロックだけじゃ周波数精度悪すぎてイーサに接続出来なくない?
イーサに直結は厳しいしコストかかるだろう 315MHz帯にシリアル300bpsで時刻たれながし、とかどうだろ
そ、そうなのか、馬鹿だったのか 言うだけじゃダメだろうってことで 315MHzの送受信ともにアイテンドーにポチった後だ
684 :
774ワット発電中さん :2011/09/08(木) 17:07:21.61 ID:FP36DFEt
>681 コスト気にするなら40kJJYでOK ペットボトルにウレタン線巻けばアンテナになる。
おい、クロックってなんだ?
エンコーダ/デコード付きの方を選んだので そのままシリアル垂れ流せると錯覚してるんだが・・・違うのか?
>>684 そのアンテナを直接ポートにつないでソフト処理
だけで 40k JJY を受信できたらすごくね?
>>685 クロックは置時計でウォッチが腕時計って習ったよ
689 :
774ワット発電中さん :2011/09/08(木) 17:43:03.18 ID:4iDG2FaV
>>686 データ(時刻情報)を送受信するのなら、エンコーダ/デコーダなしの方じゃないとだめ。
orz
691 :
774ワット発電中さん :2011/09/08(木) 18:07:25.03 ID:FP36DFEt
>687 送信所に持っていけば逝けるかも
692 :
663 :2011/09/08(木) 18:48:31.91 ID:5svm8lD4
JJYやNTPで補正しろという流れになるのはわかっていたけど こういうのは、無駄にこだわってみたいんだよね。 正確な時計が欲しいわけじゃなくて、正確な時計を作ったという 自己満足が欲しいんだ。チラウラな話でごめん >670 ペルチェを付けて温度下げるのは、経年変化も減るというし良さそうですね。 目標温度にもよるけど夏場に排熱できるかが問題か
>>670 気温以下に冷やすのは大変だけど、加熱は割と容易
65℃辺りで恒温管理すればw
CALL Waitとやったら以下のプログラムは何秒稼げるのでしょうか? Wait movlw D'249' movwf count Wait2 nop nop nop nop nop nop nop decfsz count,F goto Wait2 RETURN countは待ち時間カウントのために予め定義しておく。 ピックは16F84A、MPASM、20MHzのセラロックを使用します
すみません、うまく表示されてませんがWaitとWait2以外の行は最初にタブが入ります
696 :
774ワット発電中さん :2011/09/08(木) 19:42:09.88 ID:aEWt28/M
PICにテンキーとLCD繋げようと思ったら、どういう構成が一番楽だろう? LCDはともかく、テンキーってどう繋げばいいのかサッパリわからない。 USBのテンキーにしてMicrochipのライブラリ使えば簡単に行くんだろうか?
698 :
774ワット発電中さん :2011/09/08(木) 20:10:23.37 ID:aEWt28/M
>>697 I2Cのテンキーなんてのもあるんだ。ちょっと探してみます。
I2Cのテンキーあるのか 入力マトリックスしか思いつかんかったw
>>696 mikroBasicのテンキーライブラリ使え(もちろんLCDもあるでよ)。
すごいこと思いついた。 I2Cの大容量ハードディスクとか I2Cの高詳細ハイリフレッシュレートのディスプレイとか作れば 何でも2線で繋げられて便利じゃね? 専用規格のシリアルとかUSBとかって、もうイラネじゃね?
すぐ特許取らないと真似されるぞ!
703 :
774ワット発電中さん :2011/09/08(木) 21:23:58.44 ID:FP36DFEt
>693 昔ながらのOCXOはそうなんだけどアレニウス則で劣化するし そもそも専用に作って貰った水晶じゃないと周波数がずれる。 一般に安く出回ってる水晶は25℃位にあわせてあるからね。
>>694 20MHzのセラロックつかうなら1クロックあたりかかる時間は
1/20MHz=1/20,000,000=0.00000005(sec)=0.05μs
ここまではわかると思う。
PICアセンブラは1サイクル(1命令)につき4クロックかかるから
1サイクルあたりにかかる時間は4*0.05μs=0.2μsかかることになる。
その後、そのループを抜けるのには何サイクルかかるのかを調べれば良い。
Wait
movlw D'249’・・・1サイクル
movwf count ・・・ 1サイクル、この2行だけで合計2サイクル
Wait2
nop*7 ・・・合計7サイクル、249回ループするので7*249=1743サイクル
decfsz・・・これについてはスキップするときは2サイクル、しないときは1サイクルなので
スキップを行わない最初の248回は1サイクル、最後の249回目は2サイクル必要である。
合計248+2=250サイクル。
goto Wait2・・・これも2サイクルの命令。249ループ中最後の1回だけは実行されないので、合計248回実行される。
2サイクル命令だから2*248=496サイクル。
RETURN・・・これも2サイクルの命令。249ループ目に初めて実行されるので
2サイクル*1回実行=2サイクルかかる。
これまでかかったサイクル数をそれぞれ足すと
(movlw)1+(movwf)1+(nop7個)1743+(decfsz)250+(goto)496+(RETURN)2=2493サイクル。Waitを呼び出すことによって2493サイクルの命令が実行される。
最初に書いたように1サイクルあたり0.2μsかかるので
2493サイクルに0.2μsをかけると2493*0.2μs=0.0004986=0.4986mS≒0.5ms
0.5msじゃないかなとおもったがちょっとおかしいな。
計算ミスがあるかもごめんね誰かに指摘してもらえることを祈る。
優しいな
もとい、親切だな
>>701 > 何でも2線で繋げられて便利じゃね?
USB2.0も2線なんだけど、なにか?
>>674 PIC に光センサーをつないで明るさの変化で時刻を補正する日時計を作ろう。
# 緯度・経度が判っていれば年間の日の出日の入り時刻が予め判るので、
# 2〜3ヶ月の間毎日の,日の出日の入り時刻を明るさから求め、日の出日
# の入り時刻のカーブに最も添う日を求めるようにすること。
>>691 送信所の近隣なら PIC の電源もアンテナから取れるな
715 :
774ワット発電中さん :2011/09/09(金) 07:24:15.29 ID:r8Pj4js7
>>709 USBはHUB要るけど、I2Cはそのままパラってイケるってことじゃね?w
>>708 PS/2のプロトコルわかると、受信は楽よね。
昔、H8で98バスマウスをPS/2マウスに変換したりしたが、いまならPICで十分だな。
サンヨーのモバイルエナジーブースター(モバブー)は5Vが出ています。 これをPICの電源に直接使っている人います? 安定度について評価したことのある人がおられたら教えて下さい。
720 :
774ワット発電中さん :2011/09/09(金) 11:38:56.77 ID:ur1AwJtf
>>690 エンコーダ/デコーダ方式は複数のポートから選んでON/OFFする方式。
データを送れる可能性はあるかも。
721 :
774ワット発電中さん :2011/09/09(金) 12:37:52.21 ID:CA+tTXie
SDカードとのSPI通信用にCRC−7の計算コードを調べてます。
この2つのサイトがコード化しやすそうに書かれています。
1)
http://www.wdic.org/w/WDIC/CRC 2)
http://page.freett.com/seaside/vip/crc/Cal2CRC.htm 以下、サイト1)の計算手順の抜粋です。
大雑把な計算方法は、次のとおり。16ビットCRCを、アセンブラーで処理すると仮定し、
16ビットのCRCを計算するとする。メモリーから1バイト(8ビットとする)を随時読み
計算する方法を述べる。
1)CRC格納レジスタを0クリア
2)計算するメモリー長ループ
2.1)データを1バイト読む
2.2)8回ループ
2.2.1)データを1ビット左シフト (桁溢れ分はキャリーフラグ)
2.2.2)CRC格納レジスタを1ビット左ローテート (LSBには上のキャリーフラグを代入)
2.2.3)16ビットから桁溢れしたら、CRC格納レジスタを多項式でXORする。
3)完成
これを私自身が忠実に再現したつもりのコードが次ですが、正しく計算されません。
どこがおかしいのか、心当たりがあればアドバイスお願いします。
検算用のデータは次のとおり
DATA1: 0x49, 0x00, 0x00, 0x00, 0x00
正しいCRC=0xAF
DATA2: 0x4D, 0x00, 0x00, 0x00, 0x00
正しいCRC=0x0D
*このCRCはストップビットを含むSDカード制御コマンドの6バイト目のデータをあらわす。
722 :
774ワット発電中さん :2011/09/09(金) 12:38:52.46 ID:CA+tTXie
unsigned char calc_crc7(unsigned char* data) { unsigned char CRC_7 = 0x89; //0x0112; // 0x89; unsigned int i, j; unsigned_word c; unsigned_word d; unsigned char cz, dz; c.WORD = 0x0000; for (i=0; i<5; i++) { d.BYTES.L = data[i]; for (j=0; j<8; j++) { d.WORD = d.WORD << 1; dz = d.BYTES.H & 0x01; c.BYTES.L = c.BYTES.L << 1; c.BYTES.L = c.BYTES.L | dz; cz = c.BYTES.L & 0x80; if (cz == 0x80) { c.BYTES.L = c.BYTES.L ^ CRC_7; } } } return ((c.BYTES.L << 1) | 0x01); } <unsigned_word>は次のように定義されています。 typedef union word_data { unsigned short WORD; struct { unsigned char L; unsigned char H; } BYTES; } unsigned_word;
723 :
774ワット発電中さん :2011/09/09(金) 12:41:08.00 ID:JJSjtHnv
>>721 そんな仕様書みたいな文章じゃなくて、コードそのものを出してくれたらいいのに。
ついでにそのコードを通して出てきた間違ったCRCも出してくれたらいいのに。
724 :
774ワット発電中さん :2011/09/09(金) 12:42:50.87 ID:JJSjtHnv
書き込み途中だったのね。こりゃ失礼
725 :
774ワット発電中さん :2011/09/09(金) 12:51:25.82 ID:JJSjtHnv
ビット操作はアセンブラだなぁ
727 :
774ワット発電中さん :2011/09/09(金) 19:33:17.05 ID:CA+tTXie
>>725 情報ありがとう。
なにか自分でミスしてるかもしれないけど、そこのコードも試してみたけど検算用として示した結果が
得られなかった。だれか他に確認できる人はいないかな?
このコードではデータの並びが逆になってるよね?
たとえばDATA1だと{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x49 }みたいな。
自分のテスト環境では次のサイトのコードで検算用データと一致した。
http://bluefish.orz.hm/sdoc/psoc_mmc.html#CRC マイクロチップのライブラリ、チェックしてみたけどCRCに関するコードは計算ルーチンではなく
各コマンドに対するCRCの値がテーブルとして埋め込まれてるね。計算そのものにも興味があって
いろいろ情報を集めてました。
>>722 について、日本語の解釈で勘違いしてるところがあるのか、何か気づいたところありませんか?
>>727 >16ビットのCRCを計算するとする。メモリーから1バイト(8ビットとする)を随時読み
このメモリーってRAM?ROM?SD?
とりあえずCRC計算をする前のデータは正しく読めてる?
SDカードってフォーマットのやり方によってファイルの始まる場所が何バイト目からになるか、変わるらしい
多分インディアンやビットシフト関係じゃないの PCとかの適当な他のCで同じになるか調べれば早い
エンディアン・・・
731 :
774ワット発電中さん :2011/09/09(金) 21:52:42.82 ID:CA+tTXie
>>728 、
>>729 CRC計算ルーチンの単体テストの段階でデータはすべてマイコンのRAM上にあります。
レス内容からコーディングにはあやしいところは見当たらないとみていいのかな?
全然だめです
>>725 を見ながら書き直したもの
unsigned char calc_crc7(unsigned char* data) {
unsigned char CRC_7 = 0x89; //0x0112; // 0x89;
unsigned char i, j, c, d, crc_prev;
c = 0;
for (i=0; i<6; i++) {
if (i<5) d = data[i];
for (j=0; j<8; j++) {
c <<= 1;
crc_prev = c;
c |= (d & 0x80) ? 1 : 0;
d <<= 1;
if (c & 0x80) {
c ^= CRC_7;
}
}
}
return crc_prev | 1;
}
734 :
774ワット発電中さん :2011/09/10(土) 00:49:50.46 ID:UKMdazoa
>>733 とても読みやすいコード、ありがとう。
このコーディングで見ると
>>721 と同じ考え方がベースになっているのがよくわかりますね。
手元の実行環境に移植して試してみましたが正しく計算されました。最初にアップしたコード
のどこが悪かったのかについても違いがわかりました。
C18コンパイラ使用してます 1バイト変数の配列の一部をintやlong型、バイト長の異なる変数に移したいのですが正しく代入できません unsigned char chr[2] = {0xff, 0xff}; unsigned int num; num = chr[0]; USARTでPCに送って確認すると変数numの値は255となっていました 0xffff,65536にしたいのですがどうしたらいいのですか?
num = chr[0]; は、 num = 0xff; なので、 >変数numの値は255となっていました で、OKなんじゃないの? chr[2] = { 0x12, 0x34 }; を、 num = 0x1234 にしたいなら、 計算して代入するしかないよ num = ( (unsigned int) chr[1] ) << 8; num += ( (unsigned int) chr[0] ); とか、 num = ( ( (unsigned int) chr[1] ) << 8 ) + ( (unsigned int) chr[0] ); とか。 (unsigned int) chr[1] → いったん 0x0012 と、int幅にして << 8 → 左に8bit回して、 0x1200にして、 + (unsigned int) chr[0] → さらに、chr[0]をint幅に拡張したもの(0x0034)を加算する
ビット演算を使うんですね ありがとうございます
SPIモードならCRCは省略しても良くなかったっけ?
>>735 代入じゃなくて参照でもいいならint型のポインタ使うのが一番スマートやけどね。
>>735 符号拡張の話かと思いきや、バイト2つの代入ね(確かに文章もそうなってた orz)。
例題的には
>>736 の様に上位、下位と値を変えた方がわかりやすい。
>>739 高速化しようとポインタで4byte操作したらエラーメッセージも出さずコンパイラが落ちた事ある。
一度経験すると疑う箇所が絞り込めるのでいい経験だったけど。当時は悩んだ。
ソースを削って削って、残ったのを見て、おまえか!って感じ。
741 :
774ワット発電中さん :2011/09/10(土) 09:04:28.68 ID:UKMdazoa
>>740 ポインタで処理したらシステムによって結果が違ったりする、つまりバグの原因になる、という意味?
そもそもこんな処理にポインタなんて使うほうがどうかしてる。 せめてアセンブラで組むかCRC用ハード内蔵のPIC使えよ。
同じアドレスを指す、型が違うポインタってのは、C言語の仕様として変なふるまいを しても問題ないことになってるので、そういう手抜きをせずunion使え。
PICド初心者なんですがちょっと質問させて下さい 環境はHI-TECH C lite + PIC16F1827です 内蔵クロックを使って32MHzで動作させるつもりでいたのですが、何故かPLL4xが動かないんです。 OSCCONの設定は SPLLEN = 1; //PLL4x有効 IRCF3 = 1; IRCF2 = 1; IRCF1 = 1; IRCF0 = 0; //割り当て無し SCS1 = 1; SCS0 = 0; となってます、8MHz動作*PLL4xで32MHz動作の筈なんですが・・・。 何かこれが原因じゃないだろうか?という点があったら教えて頂きたいです。 自分はもう何が悪いのか全然分からないので、関係のありそうな設定の行を適当に列挙しときます #define _XTAL_FREQ 32000000 CONFIG内では FOSC_INTOSC IESO_OFF FCMEN_OFF PLLEN_ON ←これだけでもPLL4x有効になるって話なんですが・・・ のように設定しています。
>>741 システム依存になりそうなのは属性。ポインタの存在する場所(ROM/RAM)、
ポインタが指す場所(ROM/RAM)、指す場所が専用か、ROM/RAM共用かにより
展開具合が微妙に違うので注意してる。用途によりポインタ変数のサイズも違う場
合ある。
>>742 普通はunionで対処してるけど、コンパイラ都合、処理速度、容量対策等、
やむを得ない場合はポインタ使うよ。マクロで定義しておけば問題無し。
HL関係もマクロ側で吸収するようにしてる。
748 :
774ワット発電中さん :2011/09/10(土) 09:56:03.46 ID:UKMdazoa
unionだと100%保障されるのかな?自分もよく使うけど バンクの境界とか意図するRAM配置にならないケースがないか不安になることがある。 Cではポインタが難しいとよく言われるがコーディングが難しいというよりシステム依存 があって難しいってことかな。
>>746 ごめんなさい、もうちょっと詳しく教えて下さい・・・・
CONFIG1、CONFIG2の中身は共に
__CONFIG( 〜 & 〜 &・・・・);
といった感じでまとめて突っ込んでますが、そこに問題があるんでしょうか?
pickit2から見る限りconfiguration wordは意図した通りに設定されてる気がするんですが・・・・
F1827は使ったことないのでわかんないが データシートの5.2.2.6 32 MHz Internal Oscillator Frequency Selection を見ると、内部オシレータで4xPLLを使うにはSCS<1:0>は00にしなきゃいけないと 書いてあるけど。
>>750 まさにそれでした、解決しました。
internal oscillator blockってPLL4xを噛ませる前の内部発振だったんですね・・・完全に勘違いしてました。
本当にありがとうございました。
>>748 バイトアライメントがどうなるかなんて、一回デバッグしてみりゃ分かることだしね。
>>753 CONFIGは、0にすることが意味を持つ場合が多いからね。
>>751 俺は使う事は無いが
「具体的に書いて置いてもらう」
と有りがたいと思う。
EPROMが1を0にする名残りなんだろうか
Flashも最初1? とりあえず、PICライターは初期値FFだから1だと思うけど。 そういう意味で、コア繋ぐだけで初期値が完成するからこそ、初期値1かと。
>>756 名残もなにも、消去した時に1になるだけの話。
FUSEを焼き切った時の名残じゃね?
セルは性能のいいNチャネルを使うだろうから、電荷を放電した状態が1になるのでは? その後のセンスアンプは一番単純(=高速)なのはNONインバーティングなアンプだろうし。
FUSEなら焼き切ったらHとかもできるだろうに そもそもHとLのどっちを1と思うかが自由だし
いくら自由とはいえ、1が無いのにHするのもどうかと思うがな
どんなところにも裏と表があるってこった
馬鹿だな。 こんなもん、全部フォトカプラで切ってある出力端子だ。LANでもシリアルでもない。 なので、ついていても何も問題ない。合法だよ。
だいたいRJ11だからLANじゃないことくらい(ry
LANポートやシリアルポートがあれば中身弄れるって飛躍も凄いよな。
>>743 union は、複数のデータ型を同じメモリ領域に格納することができるけど、
それで、データ型を変換できるなんてことはないんだよ。
主基板が入力を受け付けてないんだから、 サブ基板がどう頑張っても演出を組み替えるのが精一杯 CPUのメーカーを変えただけで検定に通らないくらい厳しいのに、 外から線刺しただけでどうにかできる訳ないだろ
773 :
774ワット発電中さん :2011/09/12(月) 01:05:01.77 ID:B4TxcFYS
>>771 、
>>741 このスレの特徴かなとみてるが、それぞれのレスが完全に間違いでもないけど、完全に正しいという
わけでもないということかな。Cをよく使ってるけどデータ型の扱いとかキャストとか正しく使うの
結構難しいと思う。
unionで型変換できるかどうかは実装に依存する話
C言語の規約的には
>>771 が言うように、同じ領域を複数の型で使えるというだけ
だから、
「Cではunionを使えば型変換できる」←完全な間違い
「○○C(ある特定の処理系)ではunionを使えば型変換できる」←正しいかもしれない
(けど、条件によっては試した時と違う振る舞いをするかもしれない)
pic初めて1ヶ月の初心者ですが教えてください EEPROMに書き込んだデータは、新たにプログラムを書き込むと0xFFになるのですか? 例えば、 EEPROMのアドレス0x00に0x17というデータを書き込むプログラムを作る PICに書き込んで実行(pickit2のreadで見たところ、EEPROMへの書き込み成功) その後別の、EEPROMを使用しないプログラムを書き込み 読み込んだところアドレス0x00のデータが0xFFになっている こんなことが起こるのですが、保持したい場合は毎回書き込むしかないのでしょうか? picは16F88、コンパイラはHI-TECH C PRO (Lite mode)を使っています
>>774 volatileがない頃のC言語だとunionのあるデータ型に代入しても
別のデータ型では、それが反映されていないことがあったんだよね。
C言語から見れば、それぞれのデータ型で別々の変数と見てよいから
実際の代入はかなり後にされてしまうことが珍しくなかった。
それを防ぐために何もしない関数を呼び出して、
代入を強制するなんてことをする必要があったんだよね。
unionをアセンブラのイメージで使うならアセンブラの知識と
使っているC言語の詳細な知識が必要になるということだね。
>>775 書き込む前に全てのメモリを消す設定になっているのでは?
Settings...にその設定があるよ。
>>774 コードジェネレーターの結果みればいいじゃないか
それすら手間か?
確かにコンパイラの挙動はブラックボックスだから確証はないだろうけど癖は読み取れると思うぞ?
もっともそこにばかり注視してても目的の開発には有益ではないとは思うがな
でもホビーなら別にそこまで言わなくても…仕事ならなお更アウトプットの確認するだろうし
言語規約上は保証されないことになってても 現実ではunion多用されてるけどなー unionでの型変換なんて エンディアンで順番が変わるくらいだと思うのだけど 同じCPU(同じエンディアン)でもコンパイラによって動作違うの?
> volatileがない頃のC言語だとunionのあるデータ型に代入しても > 別のデータ型では、それが反映されていないことがあったんだよね。 > C言語から見れば、それぞれのデータ型で別々の変数と見てよいから > 実際の代入はかなり後にされてしまうことが珍しくなかった。 > それを防ぐために何もしない関数を呼び出して、 > 代入を強制するなんてことをする必要があったんだよね。 > unionをアセンブラのイメージで使うならアセンブラの知識と > 使っているC言語の詳細な知識が必要になるということだね。 現代のCの規格にちゃんと「strict aliasing rule」があるんだが。
PICって書籍もいっぱいあるし、いったいどこから手をつけていけばいいのか良くわからん。なんか良い入門書とか推薦ない?
つ[データシート]
783 :
774ワット発電中さん :2011/09/12(月) 10:05:54.33 ID:B4TxcFYS
>>779 コンパイラ(リンカかな?)が変数をRAM上に割り付ける時、必ず連続したアドレスに
割り付けるってわけではない場合があったりするんじゃないかな。そうなるとエンディアン
の問題だけじゃなくなる。こんなときはいままで動いてたのに一つの変数をコードの途中に
新しく定義しただけで動作がおかしくなるなんてことになる。
devicefile更新したpickit2で16F18xx系に書き込んでるんだけど 50%ぐらいの確率で失敗する上に失敗箇所が毎回違ってたりして全然原因が分からないんだ 16F648Aとかに書き込んでた時は全然そんなの起こらなかったけど、何が悪いんだろ
GNDが繋がってないのに書けてるとか、そんなんじゃないの
ICSPのGNDは間違いなく繋げてるんですけどねぇ・・・・
16F1827でI2Cをしています。 先週何度か書き込みしてアドバイスを貰った者です。 ようやくオシロで波形が確認できるようになり、PICkit3でのデバックも出来るようになりました。 現在はブレッドボードでテストしているのですが、もしかしてこれが原因ではないかと薄々感じてはいたのですが、 ブレッドボードとACアダプタ間に取り付けたスイッチボタンを触ったりするとリセットされるようです。 原因は空中に張り巡らされた配線とどこかのジャンパ線の接触不良ではないのか? と思いつつ何かの対処方法でブレッドボードでのテストを続けられないか?と思ったりもします。 I2Cの速度は400kbpsですが、ブレッドボードでは限界でしょうか? テスト用の回路なのでブレッドボードで・・・と思いましたが、ユニバーサル基板とすずメッキ線で回路作った途方がはや道でしようか? よろしくお願いいたします。
>>784 もしかしてPICkit2の回路への接続に問題はないでしょうか?
PICkit2と基板との間のケーブルは短いほどよく20cm以下が良いそうです。
自分も前に同じような症状になり秋月などで売ってるピンで直接基板にPICkit2を差し込んだところうまく行くようになりした。
ただ、そのピンは少し短くてPICkit2の差込口にシッカリはまらない事があるので、そうするとやはり上手く動作しません。
>>788 え・・・・全く入れてないんですが、5Vじゃマズイんですかね?
>>789 思いっきり30センチ近くありますね・・・・今度もう一個短いケーブル作ってみます。
791 :
787 :2011/09/12(月) 13:00:04.79 ID:6lzUoAjy
PICKkit3でデバッグも出来るようになり・・・・と書いたとたんにデバックが出来なくなりました。WW
>>787 の質問ですが、PICのVDDへ繋がるジャンパ線の接触が悪かったようで、現在はデータ線もクロック線もひっきりなしに動いています。
やっと次の段階に移れます。
あとは受け取った音声データをPWMでアンプに出力するだけです。
しかし、CCP1のあるRB0のピンがピクリともしません。
そこでデバッグを・・・・と思ったところでバックが出来ません。
ブレークポイントを設定してRUNボタンをクリックすると、数秒の沈黙の後、プログラムの最初の行で停止します。
どこにブレークポイントをつけても同じです。何かでリセットされてまたゼロ番地から開始されているような印象です。
オシロの波形を見るとデバッグなど知ったことかと信号を送っています。
いったい何が悪いのでしょうか?
>>787 PIC使ったことないけどパスコン入れてる?
793 :
787 :2011/09/12(月) 13:04:41.72 ID:6lzUoAjy
>>790 データシートに回路があるよ。
TL431 で VPP の電圧を落としている。
>>790 PICkit2 だと ICD2と違って VPP は可変できるみたいだから必要ないのかも。
でも、サポートするは、PICkit3 でなんだよね。
ファームウェアに問題があるのかもしれない。
>>791 Watchdog Timer がオンになっているとかね。
ステップ実行は試してみた?
797 :
774ワット発電中さん :2011/09/12(月) 15:44:19.45 ID:B4TxcFYS
>>787 接続点の接触不良というのはまったくないわけではないが、400kHz程度でブレッドボードが
使い物にならないということはありません。20MHzクラスのマイコンとブレッドボード上に組んだ
周辺回路を接続してテストすることはよくあるけど、スイッチなど物理的力がかかって接触状態に
変化があるケースを除いて動作不良の経験はバグ以外ではありませんよ。
798 :
787 :2011/09/12(月) 15:58:40.56 ID:6lzUoAjy
>>796 コンフィグ設定で _WDTE_OFF としているのでウォッチドックタイマーの線はなさそうです。
ステップ実行はでは画面が変化せず、プログラムの第1行でカーソルが止まったままです。
まるでデバッガが無視されているようにさえ思います。
>>797 ありがとうございました。安心してこのままテストを続けます。
>>777 ありがとうございます
settingsのprogram loadingタブですか?
>>798 797 が書いてるように、ブレッドボードで400Kbps、I2Cは問題無く動いたよ。源発振は内蔵32MHz。
EEPROMを連続3千万回くらい書き読みテストしたけど、特に問題無し。
>>799 DebuggerやProgrammerにあるSettings...だよ。
PICkit2を選ぶと、メニューの内容が変化するから見落としたのかな?
Preserve device EEPROM にチェックを入れてみて。
>>798 Resetしても変わらないの?
Outputに何かエラーが表示されてない?
>>798 ブレッドボードでも「動かないことはない」ですが、
>>791 の
「PICのVDDへ繋がるジャンパ線の接触が悪かったようで、」という不慮の事故は、
避けられません。
一方、ユニバーサル基板のハンダ面に直接部品を貼り付ける方法は、
ササッと作れて「ほぼ間違いなく動き」ます。
ソフトのデバッグに熱中しているときに
>>791 のような事故があると、
何倍も無駄な時間を費やしてしまうことになります。
慣れない時期こそ、急いでいるときこそ、
わずかでも不安な要素は、捨てる(排除する)べきです。
ハンダ付けが自由自在に使えるようになるのは、意外に簡単です。
いろいろな事情が良くわかってきてから、ブレッドボードを使っても遅くないよ。
オシロやテスターのプローブを引っ張ったら、苦労して差し込んだ線が「バサッ」と抜けるかもしれません。
今からでも全然遅くありません。
ハンダ付けをオススメします。
PICでハッキングツール作る方法教えろ
806 :
787 :2011/09/13(火) 06:24:07.32 ID:RKarddJ6
>>800 ありがとうございます。それにしてもサクサクッっとそこまで出来るレベルに憧れます。
感謝いたします。
>>803 はい変化はありませんし、なんのメッセージも表示されません。
>>804 >ソフトのデバッグに熱中しているときに
>>791 のような事故があると、
>何倍も無駄な時間を費やしてしまうことになります。
そうですね・・・
807 :
774ワット発電中さん :2011/09/13(火) 07:42:28.43 ID:uNM8UmC2
>>805 マヂレス
ハッキングしたいパソコンを考える。
キーボードにPICのデーターロガーを付ける。
シリアルのコードを蓄積
10日置く
回収・解析 そしてその人のパスをゲットする。
記憶容量、滅茶多そうな気がする。 赤外線リモコンをハッキング。なんてのは色々なところで見かける。 学習リモコンは良い例かな。便利という意味で。
プログラムとしては小さいから、余ったフラッシュメモリに書き込んでいけば人間の打つキーボード位余裕で記録できる。
シリアルに噛ませるドングルって、間にPIC入れて信号ぶっこぬいたら 簡単に破られちゃうんじゃないの? って思ったけど、そんな簡単なもんでもないよね。
>>806 Programmerで書き込んでない?
Debuggerと違ってデバッグ用コードが書き込まれないからデバッグができない。
回路図の書き方聞いてもいいか?
テロリストが暗号通信してて、傍受しても解読できないから、 部屋に侵入してキーボードにロガーを設置する許可を裁判所が出してたな
LEDのスイッチ回路にチャタリングを加えるってどうやりますか?
>>815 チャタリングを加えるって何だ?
除去するのならハード的にもソフト的にも対応可能だが
picで試験用のチャタリング発生回路作った事ある。
LED点灯のスイッチ回路にチャタリング防止回路を加えた回路図を書きたいのだが 上手く伝えられずすまない。
819 :
774ワット発電中さん :2011/09/13(火) 14:22:38.31 ID:z0Eees/F
え?チャタリング除去ってプログラムだけでやるものじゃないの? 回路作らないといけないん?(´・ω・`)
>>822 マイコン使うならそれでいいだろうけど、スイッチの質が悪すぎる場合、遅延回路組んだり。
電子工作のほうとマルチってるところを見るに、マイコン使う気ないんだろう。
>>811 USBアナライザで信号見れるけど、毎回違うシードをPCから送ってるでしょ。
解析はPC側のソフトを追わない限り難しいと思うよ。
チャタリング発生装置ってPWM使うとか? プログラムは絶対に要らないぞ マルチを甘やかす必要は無い
>>822 いま書いてるところ。明日デバックして、明後日アップします
待っててね
チャタレイ夫人の変人
830 :
806 :2011/09/13(火) 22:00:24.00 ID:RKarddJ6
>>812 ご指摘の通りでした。debuggerメニューからも書き込みできたとは・・・・
ありがとうございました。
831 :
774ワット発電中さん :2011/09/13(火) 23:44:10.38 ID:uNM8UmC2
>>827 高機能電話の製品化前試験でボタンチャタ除去の妥当性検証用
PWMじゃ無いよ。もっと複雑な波形を生成する。
832 :
774ワット発電中さん :2011/09/14(水) 00:25:45.42 ID:y1mEARnN
腰の横棒はなんでしょうか、 転倒時のクッションなのかな?
スタート時の制御が面白そうだが、きっと中の人が片脚をペダルに乗せているんだろうな。 両脚をおろして停車してからの再スタートができたら凄いが。 というより良くできたトリックムービーのような気がしてきた。
ムラタセイサク君
TRISC = 0b00000000; CCP1CON = 0b00001111; T2CON = 0b00000111; PR2 = 92; CCPR1H = 0x00; CCPR1L = 128; 18f2550 48MHz で8khzのPWM出力するよう設定してるはずなのに テスター、オシロで測ると直流のままになってるんですが何故? ちなみに、PR2 = 255;にすると計算通り2.9KHzで出力されます
データシートも見ずにコメントするけど、ポートの機能設定やconfigを確認すると 何か見つかるかも。プログラムを書いてないってオチは無しね。 端子として機能しているかを見るなら、単に出力ポートにしてソフトでオン、オフを 繰り返すような処理を入れると、物理面や測定器面の切り分けは早いと思うよ。
>>837 CCPR1L > PR2 だからでは?
840 :
774ワット発電中さん :2011/09/14(水) 16:31:15.47 ID:0Sp5ZRAB
SPIモードによるSDカードへのアクセスについての質問です。 コマンドへのレスポンスを受信するとき、1バイトのレスポンスは常に読み取りシーケンスの バイト境界に配置されるのでしょうか? たとえばCMD17(シングルリード)を送ったあとカードからのレスポンスを調べるために 1バイト分のデータを読みにいくと1バイト読み取り中の3つ目のクロックからレスポンスが 返ってくるといったことが起こるのだろうか?もしこんなケースが起こるならハードウェア SPIモジュールを使う場合、レスポンス、データの読み取りがやっかいそう。
841 :
774ワット発電中さん :2011/09/14(水) 19:28:39.42 ID:0Sp5ZRAB
>>840 悩んでて書き込むと直後に解決することって結構多いね。解決済み。
>>841 解決方法がわかったら書いておくほうがいつか自分が見返したときや、誰か同じことで悩んで検索した人が役立つかもしれんから
できたら書いておいたほうがええで
>>841 解決したのなら、何故解決したのか?
を書く事が・・
;**** 変数の定義 TEMP EQU 020H MOVLW 80H MOVWF TEMP MOVF TEMP,W MOVWF CCPR1L というプログラムなのですが、TEMPには80Hが代入されたのは確認しました。 しかし、CCRP1Lには80Hが代入されません。 TEMPという変数の内容をCCPR1Lに代入したいのですが、 文法が間違っているでしょうか?
>>844 >TEMPには80Hが代入されたのは確認しました。
本当に確認したのか疑わしいよ。
>844 問題は無いように見えるけど、MPLABのSIMで試してるの? ありがちなのは バンクが0以外になっているとか step実行で試して見ればわかると思うよ
>>844 恐ろしく基本的な事を聞くが石はどれを使ってるの?
連投になって申し訳ない
>>844 キャプチャモードでもないんだよね?
>>845-848 皆様ありがとうございました。
>>846 さんのご指摘の通りでBANK 0になっていませんでした。
自分で定義した変数はどのバンクでも使えると思い込んでいました。
大変勉強になりました。
>>847 石は16F1827です。
PICkit3でデバッグしていました。
それにしてもプログラムの3割はBANKSELではないか?というほどバンクの切り替えが多すぎで困ります。
なんとかならないものでしょうか?
>>849 >プログラムの3割はBANKSELではないか
レジスタのビットに意味を持たせるとかBANKSELを減らせるように
レジスタアサインを考え直すとか、時間をかければかけたなりには
減らせると思うがかける時間が勿体無いので適当に妥協汁
ADRESLとADRESHが別バンクだった頃に比べたらマシ
852 :
846 :2011/09/15(木) 21:30:44.45 ID:9RGQ+UYy
>849 BANKSELは使わず自分でBANK管理する(BANK0を標準として他BANKを使ったら すぐにBANK0に戻す)とか。メモリマップとにらめっこすることになるけど… BANK0以外のRAMはFSRでのアクセスになるように工夫する。 70H〜7FHまでの各BANK共通RAMを活用する。新16Fだと割込み時レジスタが自動で シャドウレジスタへ保存なのでフルに16バイト使えるのかな 大きなシステムになるようならAVRやPIC24,dsPICを考えてみる PIC24Fのアセンブラは素直で使いやすい、レジスタ16個も使いきれないけどw >618のアップローダーでインストラクション表あげてあるので参考にどうぞ
16F88でMikroCのコンパイラを用いてライブラリ使わずI2Cスレーブの実装したいのですが、 参考になる資料はありますか? I2Cでのレジスタの扱いがいまいちよくわかりません。
>>853 >ライブラリ使わず…
ライブラリ使えば。と答えてしまうが。。
参考になる資料って言っても検索すればいくつも出てくるだろに。
パソコン使えず検索の仕方がわからないというのであれば別だけど。。
正確に言えばMikroC5.01ではi2c.hのライブラリがあるみたいですが、I2Cスレーブとしては使えない見たいなのでネットで調べながら雛形は作ってみましたけどレジスタの扱いがあっているのかどうかがよくわからず… unsigned char i2c_address = 0, i2c_data = 128; void i2c_write(unsigned char buf) { while(SSPSTAT.BF==1){ // wait } for(;;){ SSPCON.WCOL = 0; SSPBUF = buf; if(SSPCON.WCOL == 1){ continue; } SSPCON.CKP = 1; break; } } void i2c_handler() { unsigned char stat; stat = SSPSTAT & 0b00101101; if(stat == 0b00001001){ // Read, Address i2c_address = SSPBUF; // Address?? } else if (stat == 0b00101001){ // Read, Data i2c_data = SSPBUF; // Data?? } else if(stat == 0b00001100){ // Write, Address i2c_write(i2c_address); // Address?? } else if(stat == 0b00101100){ // Write, Address i2c_write(i2c_data); // Data ?? } } void Interrupt() { if(PIR1.SSPIF==1){ PIR1.SSPIF=0; i2c_handler(); } } void main() { // i2c_init SSPADD = 2; // Device Address SSPSTAT.SMP = 0; SSPSTAT.CKE = 0; SSPCON.SSPEN = 1; SSPCON.CKP = 1; SSPCON.SSPM3 = 0; SSPCON.SSPM2 = 1; SSPCON.SSPM1 = 1; SSPCON.SSPM0 = 0; // Interrupt PIR1.SSPIF=0; PIE1.SSPIE=1; INTCON.PEIE=1; INTCON.GIE=1; for(;;){ // loop } }
>>855 何もお役に立てるレスはできませんが、
少なくとも、sspstatは面倒でもビット毎に見て
処理をすべきと思います。
いまのままだと、ビットレスが想定される全てのパターンで
if文を作らなければならず、実用適ではありません。
t est
>>853 おせっかいかも知れませんが、
マスター側は、あなたが意図するデータを送信する事が可能な
装置なのですね?
それができてないと、スレーブの開発は大変かもしれません。
ち●こにPICを埋め込んだらおしっこを制御できますか?
射精の制御もできるようになります
プログラムミスで射精ルーチンに入れずに永久ループを回る悪寒。
dsPIC33なら射精の勢いと質をDSPで制御できます
2色LEDでカソードコモンのとアノードコモンのがあって、 PICで直接光らせるときはカソードコモン使っとけばいいですよね。 逆に、アノードコモンはどんなときに使うんですか?
>>864 どっちでも使える
PICの出力をLowにしたときに光るかHighにしたときに光るかの違い
便乗です。 PICってどれだけ、吸い込めるのだっけ? また吐き出し(出力)はどの位? 例えば 16F628 で・・・ またLEDと470Ωで、どの位の電流で計算しています?
>>866 仕様はデータシートのELECTRICAL SPECIFICATIONSの項目に書いてあった
(電圧 - VF) / 抵抗 = 電流
>>866 16F627A/628A/648A
絶対最大定格
各ピンあたり±25mA。
PORTA、PORTBあたり±200mA
パッケージあたりではVDDから最大300mA、VSSへ最大250mA
さらにパッケージあたりの消費電力が最大800mW
>>867-868 ありがとう
やった事無いけど、A・Bポート合計16本に
LED+470Ω 全て点灯って出来そうですね?
後気になった点は、
>パッケージあたりではVDDから最大300mA、VSSへ最大250mA
これって、吸い込みの方が小さいと言う事?
あとは、無茶を承知で小さいモーターなら動く?
25mAも有れば動きそうなものだけど、
素直にダーリントンを噛ませろと言われそうだけど
仮に動いたとしても、ノイズで誤動作しまくりとかない?w
870 :
869 :2011/09/17(土) 09:39:53.77 ID:KNhSJg1H
あっ 今調べたらどんなに小さいモーターでも動かないね 無かった事にしてw
起動電流は25mAどころじゃないと思うぞ
>>871 頼む!忘れてくれ
頭の中でマイクロモーター位なら
5Vで動くか?と一瞬思った。送信した後、後悔した。
どちらか?と言うと冗談で書いて
「世の中、○○と言うのが有るよ」
と言うのを期待した。
が、余りにも間抜けな質問過ぎたと思っている。
トランジスタで動かしても、電源共通にするとばんばん落ちるぞ
太陽電池向けでも、急激に電圧が立ち上がると突入電流がかかることには変わりない
pickit2でデバックしています。wレジスタの値を確認するにはどうすればいいでしょうか?
878 :
855 :2011/09/17(土) 21:08:37.28 ID:iQwNMBLm
>>858 マスター側はArudinoで2台のArduino間のI2Cは動くのを確認しているのですが、いざPICのスレーブでやると詰まってしまい。
>>856 そもそもの解釈ですが、
割り込みがかかるのはマスター側からのスタートビットが立つ時で、
R/WレジスタのReadは受信、Writeは送信で、
D/AレジスタのアドレスはI2Cデバイスのアドレスでよろしいのでしょうか?
>>878 PIC16F877なら日本語データシートがあるみたいです。
30292A_JP.pdf 71ページ 9.2章から、説明があります。
私が作ったことあるのは、スレーブの受信までで
スレーブが応答を返すところは未経験です。
お役に立てずすみません。
PICを頭に入れたら賢くなれますか?
なる。 おまえなら。
>>881 未書き込みのPICだと変わらない
PICに書き込むプログラム次第
ツマンネ
>883 未書き込みのPICには無限の可能性があるので、 それだけでも881よりはましだと思うがどうよ?
picの使い方を頭に入れたらって言いたいのだろうな
最大電流になるストール時でも25mAしか流れないのか、すごいな。 当然トルクは小さいわけだ。FA130RAの1/10…
電気回路でいう「突入電流」については確かに、モータはインダクタだから流れない、 で正しいが、この場合始動電流が問題なんだな。
いろいろと応用が利きそうなモーターだよね? ドライバ無しで動くと言う所が面白いw
>>889 だったら始動電流って書けば?「急激に電圧が立ち上がる」なんて書くから突っ込まれる。
一時間掛けてゆっくり立ち上がった所で、トルクが発生している間は電流が流れる。
>>877 View -> Special Function Registers の最初にある WREG
>>893 だから何?
ちなみに発注すれば3V用に巻いてくれるよ。そうすれば電流は更に小さくなる。
個人じゃ難しいかもしれないけど、以前、もっと細い線を巻いてももらって量産した事がある。
>>887 に示した資料はあくまで一例で実際は仕様を提示すれば色々作ってくれる。
どうしても個人でやりたければ自分で巻きなおす手もある。
自演?
これはひどい
悔しそうだねw まあ、キモイコテで戯言書いてるとこれからも突っ込みが入ると思うぞw
>>895 もう、本末転倒になっているよね。
ただ回るためだけのモーターを作ってもらってどうするの?
>>899 回る為だけの為に量産してもらうと思う?ちゃんと使い道はあるよ。
キモイ戯れ言書きはおまえだろ。 さきごろツッコミ喰らいまくって自爆してたバカじゃねーの、おまえ。
起動時も25mA超えないモーターがあるよ こう書けば済んだものを・・・
>>900 量産したのだから用途があるのはわかるよ。
最初の質問者も
>>902 みたいな回答を期待したけど、
それでは使い物にならないことにも気がついて撤回したわけだろ。
微弱電流で動くモーターとしては、アナログ時計がある。 これなら簡単に入手できて PIC で制御できるよね。 メカとしては、針がなめらかに動くものと1秒ずつ動くものがあるけど、 どちらが制御しやすいだろうか?
>>904 タイマ割り込みが理解できれば、大して差がない。
まぁ、どちらが難しいというなら割り込みの時間がよりかかる連続秒針だろうね。
なんなら、サイレントステップでも挑戦してみる?
(格段に難易度が上がる)
「割り込みの時間」 じゃなくて「時間あたり割り込み命令で消費する時間の割合」だな 失礼
> 微弱電流で動くモーターとしては、アナログ時計がある。 モータって感じがしないけど、この手のってμAクラスなんだよね、確か。 普通のテスタじゃ測れない。
あんなんでも、秒針を短くするとか、先を細くする、とかの努力で電池の寿命が延びる
秒針を短くするぐらいなら、壁掛け時計みたいにバランス重りつけたほうがよくね?
>909 それだと運動エネルギー的には浪費になるんじゃね? 電池が減った時の秒針の上りでのトルク不足を重りで解消と、 秒針短くして電池の寿命延長、トータルではどっちが良いのかなあ。
そういえば電池が減ってくると37〜8秒あたりから針が上に上がれなくる時計があったなw 連続秒針ならバランス、ステップ秒針なら針を軽くが良い希ガス
>>907 CF5761 series CMOS Analog Clock IC によると、
コイルには数mAの電流を流すらしいです。
ステップ運針だと、針が動くときだけ電流を流すので数十分の一になるみたいで、
平均すると100μA程度になるものと思われます。
スイープ運針だと、電流は流し放しなので、数mAを消費してしまいます。
百均の掛け時計の電池の持ちが悪いのはスイープ運針だからかと考えてしまいましたが、
大昔に買った掛け時計はスイープ運針なのに、そんなことはないので、
それ以外の要素もあるのだろうと思います。
[新シリーズのPIC16F1xxx テンプレ用] ('11/09版) 旧シリーズより機能が大幅にアップしていて値段も下がってる。新規に組むならこちらから選択すべき 秋月に入荷していないラインナップも表記(未)。円高のおかげか若干値下げあり(v) [40pin] 16kwハ必要ナイカモシレナイケド10円差ナラ v◎16F1939 \170 16Kw 1024 I/O36 ADC14 CapS16 Comp2 Timer4/1 MSSP1 ECCP2/1 CCP2 v○16F1937 \160 08Kw 0512 I/O36 ADC14 CapS16 Comp2 Timer4/1 MSSP1 ECCP2/1 CCP2 [28pin] こちらも10円差なら -◎16F1938 \150 16Kw 1024 I/O25 ADC11 CapS-8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 v○16F1936 \140 08Kw 0512 I/O25 ADC11 CapS-8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 v×16F1933 \140 04Kw 0256 I/O25 ADC11 CapS-8 Comp2 Timer4/1 MSSP1 ECCP1/2 CCP2 [20pin] こちらは秋月に無し -未16F1829 ---- 08Kw 1024 I/O18 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 -未16F1828 ---- 04Kw 0256 I/O18 ADC12 CapS12 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 [18pin] 18ピンの割にMSSPが2コ,ADC入力ピン多,タイマーx5,CCPx4と多機能 -未16F1847 ---- 08Kw 1024 I/O16 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 v◎16F1827 \110 04Kw 0384 I/O16 ADC12 CapS12 Comp2 Timer4/1 MSSP2 ECCP1/1 CCP2 -未16F1826 ---- 02Kw 0256 I/O16 ADC12 CapS12 Comp2 Timer2/1 MSSP1 ECCP1/- CCP- [14pin] 下位のチップしかなく機能的に8ピンとあまり変わらないのは残念 -未16F1825 ---- 08Kw 1024 I/O12 ADC-8 CapS-8 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 -未16F1824 ---- 04Kw 0256 I/O12 ADC-8 CapS-8 Comp2 Timer4/1 MSSP1 ECCP1/1 CCP2 v◎16F1823 \090 02Kw 0128 I/O12 ADC-8 CapS-8 Comp2 Timer2/1 MSSP1 ECCP1/0 CCP- [8pin] 8ピンでUSARTもI2Cも使えるってのは大きいね -未12F1840 ---- 04Kw 0256 I/O-6 ADC-4 CapS-4 Comp1 Timer2/1 MSSP1 ECCP0/1 CCP- -◎12F1822 \080 02Kw 0128 I/O-6 ADC-4 CapS-4 Comp1 Timer2/1 MSSP1 ECCP0/1 CCP- 表記 Timer[8bit]/[16bit],ECCP[Full]/[Half],CspS=CapSense,Comp=Comparator 共通 EEPROM256byte,EUSART,SRLatch(555相当?),10bitADC,5bitDAC,1.024V基準電圧,温度計(?) VDD1.8〜5,5V,Max32MHz(Vdd2.5V以上),4xPLL有,内蔵OSCでも32MHz可 プログラム面で新命令追加,bankは32マデ拡張,スタック16レベル,LATが追加,割込時のレジスタ自動保存 16bit幅で2本になったFSRデ連続配置RAMやプログラム領域アクセス可能 追加命令群 ADDWFC,SUBWFB : キャリー,ボローを含んだ加減算 ASRF,LSLF,LSRF : シフト命令 BRA : PCLATHやページ境界に関係なく相対ジャンプ [9bit幅] PC+255〜PC-256へ BRW : PCLATHやページ境界に関係なく前方へのみ相対ジャンプ PC+W(0〜255) ADDWF PCL,f ヨリ便利 CALLW : 上位はPCLATH,下位はWのアドレスにサブルーチンコール MOVLB,MOVLP :バンクセレクト,PCLATHに直接定数入れる TRIS,OPTION :TRIS(A〜C),OPTION_REGにWの値入れる(12bit幅品互換?) RESET : ソフトウェアリセト ADDFSR : FSRに定数(-32〜+31)加減算 MOVIW,MOVWI : INDFガツカイヤスク FSRに対して[PRE/POST][+1/-1]や定数(-32〜+31)offset可能
秋月のPIC12/16F(旧)シリーズ 命令セット14bit幅&DIP品限定ピン数別評価 あくまでも旧シリーズ内での相対評価。新シリーズが使えない場合のみ有効 値下品多数あり(先頭のvは値下げ,-は維持,*は新規)'11/9更新版 40ピンは決まり v◎16F887 \180 40ピン600mil幅が許せるなら 旧シリーズ最強 28ピンはフラッシュとSRAMの差をどうとるか v◎16F886 \170 887よりピン数減ってスリム(400mil幅) v○16F883 \150 886との違い8Kw→4Kw,SRAM368Byte→256Byte ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば20,18ピンよりこちらを 20ピンはF690のバリエーション多,価格差小なのでF690か,OPアンプF785,ポート割りがチョットカオス v◎16F690 \140 ADC有,eCCP有,eUSART有,SSP有,4Kw,内蔵31K-8MHzとバッチリ v○16F689 \130 F690からeCCP機能削られた v△16F687 \120 さらにF689を2Kwと半分に v×16F677 \120 さらにF687からeUSARTも削られた v×16F685 \150 F690からSSP&eUSART機能が削られたのに値段高いとは v◎16F785 \130 ADC有,CCP有,2Kw,内蔵31K-8MHz,OPアンプ搭載が異色(新シリーズにも無) 18ピンは種類は多いけど選択の幅は狭い。値段でF716いっそ20pinにするか -×16F84A \250 機能無,1Kw,新規では不要だけど作例参照用or互換用に v×16F648A \160 CCP有,USART有,4Kw,内蔵4MHz,ADC無同士でF87に軍配 v△16F628A \140 F648Aの2Kw版,売りが値段だけだと厳しいかな v△16F627A \120 F648Aの1Kw版,上に同じ v×16F627 \180 F627Aの改良前Ver,なぜこんな物が・・・ -○16F88 \200 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzと旧18ピンの王者ダガ高い v○16F87 \150 F88のADC無Ver,ADC無が問題なければ v○16F819 \170 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,F88とはROM,USARTの差 v○16F818 \150 F819の1Kw版,多機能なだけに1Kwに不安を感じる v◎16F716 \80 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い,ADC8bit注意 14ピンは10円差ならF688 v◎16F688 \110 ADC有,eUSART有,4Kw,内蔵31K-8MHz,CCPは無が残念 v△16F676 \100 ADC有,1Kw,内蔵4MHz v×16F630 \100 F676のADC無し 無機能で影薄い 8ピンは多機能のF683かEEPROM無くても良いなら\60のF615 v◎12F683 \100 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 v△12F675 \80/90 ADC有,1Kw,内蔵4MHz ,EEPROM必要なら,環境によってはE/P版, v△12F629 \70 675のADC無(機能無しってこと),EEPROM必要で安いの求めるなら v△12F635 \90/100 機能無し,1Kw,内蔵31K-8MHz,31KHz〜必要なら,環境によってはE/P版 v◎12F615 \60 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無さえ問題なければ v×12F609 \60 F615からADC,eCCP機能省かれてる (参考)機能無,EEPROM無,命令セット12bit幅 プログラム組む上で制限多し(割込無イヨ v△16F57 \70 28ピン,2Kw,内蔵CLK無,安くて多くのI/O欲しいなら -△16F54 \60 18ピン,0.5Kw,内蔵CLK無,安いI/O欲しいなら -×12F510 \60 ADC有(8bit),1kw,内蔵4Mor8MHz,EEPROM無し v×12F509 \50 機能無し,1Kw,内蔵4M,EEPROM無し v△10F222 \45 DIP8ピン,1/2Kw,内蔵4Mor8MHz,米粒PICのデバッグ用 v△10F200 \35 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用 マークの意味 ◎お勧め、用途決まっていないならこれ買っとけ ○内蔵モジュール減ってるけど、その分値段も安くなってるから、まあまあ △内蔵モジュール大幅に減ってる、\10でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない
秋月DIP品限定18,24,dsPICシリーズ 18Fシリーズは多いけどUSBが使えるこのあたり(他のは性能の割に高い) v◎40ピン 18F4550 \370 v◎28ピン 18F2550 \350 (v△18F2420 \280 USB無し) -◎20ピン 18F14K50 \170 5V動作,Max48MHz,8Kw,768RAMナラUSBナクテモ 24,dsPICシリーズ(24F,dsPICは品数限られているが値下げでお買い得感向上) 40ピン v○30F4013 \480 16kw 2KB EEPROM1KB v×30F3014 \500 8kw 2KB EEPROM1KB 28ピン v◎24FJ64GA002 \330 21.3kw(64kB) 8KB EEPROM無 リビジョンはイクツカナA3/4ハナイヨナ v◎24HJ12GP202 \260 4kw 1KB EEPROM無 この値段で40MIPSはお得感大きい v○30F4012 \460 16kw 2KB EEPROM1KB 5V動作必須でメモリ大きいのなら v×30F2020 \500 12kw 0.5KB EEPROM無 v△30F2012 \350 4kw 1KB EEPROM無 5V動作必須で安いの欲しいなら v◎33FJ32GP202 \320 11kw弱(32kB) RAM2KB メモリサイズ許容できれば24FJ64より、高速 18ピン v○30F3012 \400 8kw 2KB EEPROM1KB 共通 24Fシリーズ Vdd2.0-3.6V Max16MIPS (一部ピン5V入力可) 24Hシリーズ Vdd3.0-3.6V Max40MIPS 30Fシリーズ Vdd2.5-5.5V Max30MIPS DSP命令有,(5V動作可) 33Fシリーズ Vdd3.0-3.6V Max40MIPS DSP命令有
値下げマークのバーゲンセールや!!
>>910 動く、止まる、で慣性の法則発動か…。
無段階でにゅるにゅる回る秒針とかあるが、アレだと大丈夫かな?
サイレントステップ秒針でスタンダードなデザインの奴があったらほしいと思っているのだが
温度計が標準・・・ダイ温度を確認できそうだな。
まあ、室温を測る用途は想定してないだろうな
>>923 6ピンのパッケージなら室温も測れそう。
ずっとsleepにしないと室温にならんな
6ピンのPIC10F320/322にも温度計があるけど、A/Dが8ビットなんだよな。 何に使えるのかな? オーバーヒート検出とかかな?
温度補償的な用途にも、8bitあれば十分でしょう
温度計はおまけみたいなものでA/Dをフルスケールで使えないからね。
>>917 から推測すると、8ビットA/Dでは、4℃単位でしか測定できないことになる。
WDTとかBOR的な、まさかの為の安全装置として、 温度監視をループのついでに入れておくと、少しは安心かもしれない
930 :
663 :2011/09/21(水) 15:37:49.58 ID:SU1tLwm/
今は亡き秋月の高精度12.8MHzオシレータを温調しても何かイマイチ
(例のGPS1Hz使った周波数カウンタの値と実際に時計に組んだ時の誤差が0.1ppm弱ある)
アルミケース作って中にオシレータと温調用のPIC12F683と3端子レギュレーター78L05等入れて
外は発泡スチロールで包んで、長時間の周波数測定してみた。
ttp://loda.jp/mcnc/?id=282.*** 温度安定したと思っても全然だめなんだな、2万秒位で上昇が緩やかになるけど3万秒経っても
まだ上昇しているような。
途中で温調温度を4℃上げてみたら2Hzほど下がったので計算すると36.4℃位で温調すれば
よい感じかな、チラウラ話でごめん
つ デジキー
934 :
774ワット発電中さん :2011/09/21(水) 20:45:49.53 ID:FgVLp9Z3
C言語の型って難しいな。次のパターン(1)のコードを書いて(c = 0)の結果がほしいのだが結果は (c = 1)となり意図した動作にならない。パターン(2)だと期待している(c = 1)という結果が得られる。 どうなっているのだろう?それぞれのパターンで変数a、bの値をHEX表現の文字列に変換するとどちらも E5となるんだけどな。 パターン(1) char a = 0xE5; unsigned char c; switch(a) { case 0xE5: c = 0; break; default: c = 1; } 結果: c = 1; パターン(2) unsigned char b = 0xE5; unsigned char c; switch(b) { case 0xE5: c = 0; break; default: c = 1; } 結果: c = 0; ちなみにパターン(1)でswitch文を「 swtich( (unsigned char) a ) 」と記述すると意図したとおり (c = 0)という結果になる。
935 :
774ワット発電中さん :2011/09/21(水) 20:58:31.62 ID:ME/QcGjA
switchにマイナス値なんて気持ち悪いじゃないか
定数の0xe5がint扱いじゃなかろうか。 0xe5 = 0x00e5 でプラスの値。パターン1はマイナスの値で一致せず。 違ったかな?
>>930 それはKTXOであってTCXOではない
どこぞのブログに書いてあったぞ?
>>934 基本はunsignedで宣言するクセをつける
939 :
774ワット発電中さん :2011/09/21(水) 23:21:59.54 ID:FgVLp9Z3
レスから判断してswitch文の定数として負の値は取れないということのようだが書籍等で 明示してないですね。例として普通に int a, c; switch(a) { case 1: c = 0; break; case 2: c = 1; break; default: c = 2; } のような書き方をしていて、ただ(負の値)は使ってないという感じですね。 はっきりとした理屈がわからないのでそのうち忘れて同じミスをやりそうだな。
処理系によるのだが、switch 文の引き数は大抵が汎整数、つまり int。 char a = 0xE5; が int に拡張されて 0xFFE5 になるよ。 確かめるには、パターン(1)で case 0xFFE5: とやってみて。
単に switch は int を取るってだけだろ。 char → int 変換は符号拡張し、 unsigned char → int 変換はゼロを埋めて、 unsigned int → int 変換はビットパターン保存 てだけ。
すまん、これは int が2バイトの場合ね。 もう面倒くさいから、考えるのやめてもいいよ。
944 :
774ワット発電中さん :2011/09/22(木) 00:03:45.47 ID:o7EMdLo0
>>941 ここでの変換というのはキャストを意味するのかな?
コンパイラが文句を言わなくなるから、とか計算結果が意図するとおりになるから、とかいう理由で
キャストを後付したりして実際に運用実績のある(趣味でだが)コードを書いてはいるが、キャスト
によって変数の値が具体的にどう変わるのか正直あいまいに済ましてるな。これはやっぱだめかな。
945 :
941 :2011/09/22(木) 00:20:21.38 ID:RL1Tt2mD
>944 キャストという認識がそもそもダメかも… ちゃんと言うなら integral promotion (整数拡張) Cの版によってルールが異なるので、微妙なところでキャストを付けるのは正解。
>>944 暗黙的な変換はキャストとは言わない
整数拡張ね
>>943 15・40度がグラフから読めるね
因みに杓子定規さんの試験では常温から60度まで炙ったら70Hz狂う事もあると言う
でも杓子定規さんの追試って恒温槽でもないみたいだしカウンタは何を使ったのかな?
TCXOといわずあえてKTXOと言うから悩ましい。
ねがてぃぶろぐさんも書いているけどTrによる温度補正(PN接合の温度による変化)を利用して保証回路はできなくない
実は手持ちにKTXOとTCXO(NDK製)があるが、手持ちに精度の良い周波数カウンタがないw
一つ疑問に思ったのはGPSさん?のKTXOのラベルの色
ねがてぃぶさんや杓子定規さん、私の手持ちは黒なのだけど撮影条件の違いか?
(某現在同等品入手可能で紹介されていたところのも黒だよね ロットで緑バージョンあったのかな)
>>947 ヘアドライヤーで加熱したら温度補償が効かなくなるのは当然でしょ。
内部の人しかわからないことですが、 I2C通信って、送受信したビット数を数えるカウンタが必要ですよね。 内部でどこのレジスタ使ってるんですか? わかる人教えてください。わからない人は知るかボケとレスください。
別に名前は付いてないのでは
見られないんじゃね?スタックみたいに
>949 知るかヴォケ
>>949 2行目と3行目の間に飛躍がある。
カウンタが必要なのは確かだけど、レジスタにマッピングする必要は無いでしょ。
picって隠しレジスタあるんだ。
>>954 そうなの?知らなかった。
例えばどんなのがあるの?
>>955 I2C通信の送受信ビット数カウンタとか。
FIFOで十分だろ
>>949 カウンタというよりステートマシンだよ。
ステートマシンは、現在の状態を記憶するレジスタと次の状態を決定する論理回路で構成されている。
入力と現在の状態から次の状態を作りレジスタに記憶するだけのこと。
レジスタの一部から出力を取り出して、例えばシフトレジスタを制御したりするけれど、
そのもずばりを読み出せたりはしないのがふつうだよ。
内部的な存在であるSSP1SRもアクセスできないでしょ。
CPUなんて、レジスタ空間やメモリ空間にマップされてないレジスタはいくらでもあるでしょ。 パイプラインのレジスタとかいちいちマップしても何の意味もない。 タイマのレジスタなんかクロックドメインがCPUと違ったりするからシンクロナイザ要るし。 全レジスタをマップしようとしたら、シンクロナイザのレジスタをマップするためのシンクロナイザが要るようになって収拾付かなくなるぞw
Z80のRは何で見えてたんだろ
リフレッシュか、、、、 内部デコードが余ってたとかハードデバッグ用とか? 疑似乱数ジェネに使った覚えがある。
962 :
774ワット発電中さん :2011/09/22(木) 21:36:33.84 ID:5Yivy6YA
>>959 タイマ1だと外部クロックのシンクロナイザをオフにできるけど、
それでも正しく読めると書かれているんだよね。
どういう仕組みなのかな?
> 内部デコードが余ってたとか 余裕があるなら8bitで作れ、と。
>>964 リフレッシュアドレスを7ビットの値で外部から与える必要があった大昔のDRAM用だからね。
その仮定自体が甘すぎて、すぐに古くさくなるという、技術の進歩の速さを実感させてくれた痕跡器官ということです。
>965 Z80より後にでた 64kbit DRAMが 8bit x2アドレス指定なのに リフレッシュは7bitでいいという、独占は正義というリアルをみせてくれたシステムだったような。
なんだなんだ懐かしいな てかここに集う世代って何年生まれだよw 昭和30年代多そうだなww
microchipの24FC1025というEEPROMからI2Cでデータを読み取ろうと思います。 1025は1Mビットの容量があります。バイトではなくてビットです。 なのでバイトに直すと16384バイトです。ならばアドレスは2バイトで65536バイトまで扱えるのでそれで充分だと思います。 がしかし、2バイト+1ビットを使います。 何故なんでしょうか?
Z380になるとRレジスタは、ただのレジスタになったそうです。 Rレジスタは、あっても互換性なしです。 こういうものを命令セットに組み込むのは考えものですね。
>>971 そうでした。とはいえアドレス指定に何故に2バイト+1ビットが必要なのかわかりません。
>>973 EEPROM使ったことないけど2バイトならメモリアドレス65535までしかアクセスできないからじゃない?
だとすると65535バイトまでしかアクセスできない
17ビットなら131071バイトまでアクセスできて1Mビット=125kバイトまで全部アクセスできる
使ったことないからただの予測だけど
微妙に数字が違っている気がするのだが、125Kバイト?
たぶん 1024*1024bitじゃなくて 1,000,000bit だから
1000000bit ÷ 8 = 125000byte か。 125キロバイトではないな。
125kバイトでは違うな125000バイトが正解だな
>>969 平成でも二十歳以上がいる…と思ったがそんな輩が未だにZ80でリフレッシュなんて話か
懐かしきワンボードやPETで遊んだ日々
>>980 無駄に立てても仕方ないしええんでないの?
実質36って事で次37の人注意ってのといつものテンプレかな?
テンプレの最新版ってどこだっけ?
いつの間に重複したんだ
>>982 立ったときに。
俺はこのスレ使い切って向こうに移行するものと思って、ずっとチェックだけはしてる。
大抵はそんなのは即死するもんだが、わざわざ保守してる馬鹿がいたか
過疎板じゃ即死なんかしないよ。ウザいくらい残る。 この板がどうであるかは知らないけど。
あ、どなた様か存じませぬがテンプレありがとう\(^o^)/ 1スレ1月ちょっとなら保守があってもいいかもね 板内で割りと活況なほうでない?<PIC さて、そろそろ梅か
おいおい。このスレひどいなww 1MbitのEEPROMなら普通は1024*1024だよ。 128KiBが正解。
おいおい。このスレひどいなww ”KiB”って、一体どんな単位なんだよw
キ
>>988 そんなことも知らないヤツはコンピュータやめちゃえよw
うめぇ
>>990 おいおい、ジョークか?
Kiloは"Ki"じゃね〜よ、小文字の"k"だ。
"128kB"と書くのが正しいんだよ、覚えとけks
釣りにマジレスだがキビバイトだろjk
キビバイトとか云われるとサトウキビ畑でバイトしてるのかと思うわよね。
ヲマイ等 きうめぇー
KiB=1024バイト kB=1000バイト と明確になるように新たに定義された単位だよ。
キビ メビ ギビ テビ ペビ エクスビ ゼビ ヨビ ネビかと思ったらマビだったでゴザビ
999
1000ならPICはAVRに完全敗北
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。