【ホビーから】PIC専用のスレPart24【業務まで】
1 :
774ワット発電中さん :
2009/07/04(土) 07:46:40 ID:ZCgFSYuj
参考資料(個人的見解があるので参考までに) 秋月のPIC16シリーズDIP品限定ピン数別評価 40ピンは◎16F887 \250 28ピンは◎16F886 \230で決まり ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHとフルサポート 20ピンはF690のバリエーションモデルが多いけど価格差が小さいからF690でOKかな ◎16F690 \210 ADC有,eCCP有,eUSART有,SSP有,4Kw,内蔵31K-8MHzとバッチリ ○16F689 \180 F690からeCCP機能削られた ×16F687 \180 さらにF689を2Kwと半分に △16F677 \170 さらにF687からeUSARTも削られた ○16F685 \190 F690からSSP&eUSART機能が削られた ◎16F785 \180 ADC有,CCP有,2Kw,内蔵31K-8MHz,OPアンプ搭載ってのはいいね 18ピンは種類は多いけど選択の幅は狭い。F88かいっそ20ピンにするとか ×16F84A \300 機能無,1Kw,いまさら不要 △16F648A \200 CCP有,USART有,4Kw,内蔵4MHz,3.3Vでも動くよ ×16F628A \200 F648Aの2Kw版,16F648に移行 △16F627A \160 F648Aの1Kw版,低コストで勝負 ◎16F88 \230 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood ○16F87 \200 F88にADC無いだけ ×16F819 \250 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,F88に及ばない ○16F818 \200 F819の1Kw版,F87と比べるとROMとUSARTで負け,ADCで勝ち ◎16F716 \110 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い 14ピンはF688だね ◎16F688 \160 ADC有,eUSART有,4Kw,内蔵31K-8MHz,機能的にもマアマア △16F676 \140 ADC有,1Kw,内蔵4MHz,F675の14ピン版か・・・ 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い ◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 ○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 △12F629 \100 675のADC無(機能無しってこと) △12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 ◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し ×12F609 \100 F615からADC,eCCP機能省かれてる (参考)機能無,EEPROM無,12bitコア プログラム組む上で制限多し △16F57 \100 28ピン,2Kw,内蔵CLK無,安くて多くのI/O欲しいなら △16F54 \60 18ピン,0.5Kw,内蔵CLK無,安いI/O欲しいなら △10F200 \70 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用
秋月のPIC16シリーズDIP品限定ピン数別評価(先頭のvは値下げ,-は維持)'09/05更新版 v40ピンは◎16F887 \200 値下げでさらに盤石 v28ピンは◎16F886 \190 こちらも値下げ ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHzとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば20,18ピンよりこちらを 20ピンはF690のバリエーションモデル多.価格差が小さいからF690か,OPアンプのF785 -◎16F690 \210 ADC有,eCCP有,eUSART有,SSP有,4Kw,内蔵31K-8MHzとバッチリ -○16F689 \180 F690からeCCP機能削られた -×16F687 \180 さらにF689を2Kwと半分に -△16F677 \170 さらにF687からeUSARTも削られた -○16F685 \190 F690からSSP&eUSART機能が削られた -◎16F785 \180 ADC有,CCP有,2Kw,内蔵31K-8MHz,OPアンプ搭載ってのはいいね 18ピンは種類は多いけど選択の幅は狭い。F88かいっそ20pinにするとか -×16F84A \300 機能無,1Kw,いまさら不要 v△16F648A \180 CCP有,USART有,4Kw,内蔵4MHz,同じ値下組のF819と比較するとキツイ v△16F628A \160 F648Aの2Kw版,売りが値段だけだと厳しいかな -×16F627A \160 F648Aの1Kw版,売りの低コストで628Aと並ばれると・・・ -◎16F88 \230 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood -○16F87 \200 F88にADC無い,下のF819と比較するとADCで負けフラッシュ4Kwで勝ちダケド v○16F819 \180 ADC有,CCP有,SSP有,2Kw,内蔵31K-8MHz,値下げで価値が急上昇! -×16F818 \200 F819の1Kw版,上位のF819の値下げで不要に -◎16F716 \110 ADC有,eCCP有,2Kw,内蔵CLK無,EEPROM無だけど値段安い,ADC8bit注意 14ピンはF688だね -◎16F688 \160 ADC有,eUSART有,4Kw,内蔵31K-8MHz -△16F676 \140 ADC有,1Kw,内蔵4MHz 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い -◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 -○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 v○12F629 \80 675のADC無(機能無しってこと),この値段ならチョット使うに便利 -△12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 -◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し -×12F609 \100 F615からADC,eCCP機能省かれてる (参考)機能無,EEPROM無,12bitコア プログラム組む上で制限多し -△16F57 \100 28ピン,2Kw,内蔵CLK無,安くて多くのI/O欲しいなら -△16F54 \60 18ピン,0.5Kw,内蔵CLK無,安いI/O欲しいなら -△10F200 \70 DIP8ピン,1/4Kw,内蔵4MHz,米粒PICのデバッグ用 マークの意味 ◎お勧め、用途決まっていないならこれ買っとけ ○内蔵モジュール減ってるけど、その分値段も安くなってるから、まあまあ △内蔵モジュール大幅に減ってる、\10でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない。
とりあえずたてといた テンプレもし漏れがあれば追加よろしく
10 :
Ver.23 でLCDの質問しました。 :2009/07/04(土) 11:21:03 ID:AzeIrdAn
LCDの初期化って自分のプログラムで問題ないでしょうか?? 参考書のプログラムと見比べて、自分では同等と思っているのですが、 うまくいってません。 やろうとしているのは 1行目に”START”と表示し、 2行目は”○○.○s”と100msごとの時間を表示させたいのですが。。 以前だれかに、 ココにソースを載せるのではなくて、 (ソースをそのまま貼ると長いから) アップロードしろって聞いたことあります。 アップロードってどうやるんですかね???
11 :
Ver.23 でLCDの質問しました。 :2009/07/04(土) 11:39:38 ID:AzeIrdAn
>参考書のプログラムと見比べて、自分では同等と思っているのですが、 「同等」って・・PICでLCD動かしている例なんていくらでもあるだろうから まずは同じにすりゃいいじゃん。
13 :
Ver.23 でLCDの質問しました。 :2009/07/04(土) 13:18:33 ID:AzeIrdAn
>>12 完全同じにしたいんですが、
環境がちがったり配線の違いなどにより
完全同じには出来なくて、
その差分を解消したつもりのプログラムで全く同じものをつくったつもりです。
14 :
Ver.23 でLCDの質問しました。 :2009/07/04(土) 13:26:31 ID:AzeIrdAn
>>12 そうですね。
まずは同じにしようと思っています。
ただ、環境の違いやピン配のちがいなどで全く同じにはいかないようです。
なので、そこをカバーしたものにしようと思っています。
15 :
natu :2009/07/04(土) 15:26:53 ID:wK1L34JO
>>11 ポインターと配列をHI-TECH_Cのマニュアルを見て
がんばれば、動くかもしれない。
特に配置される位置(ROM,RAM)に注意してね
char *cs[16];←これと
lcd_puts(const char* s);←これと
*cs="start"←これ(warningが出ると思うけれど..)
16 :
Ver.23 でLCDの質問しました。 :2009/07/04(土) 17:26:45 ID:AzeIrdAn
>>15 ありがとう。
まずは、僕自身ポインタを基礎からやり直さないといけませんね。
位置(ROM,RAM)というのはどういうことでしょう??
下記だと
*s = "start";
で警告がでます。
C言語をポインタなどを調べたところ
ある配列に文字列を入れて、
その配列の先頭アドレスをポインタに記憶させる。
ポインタの中身に文字列を入れる。
ということをしたつもりなのですが。。。
**Variables
char cs[16];
char *s;
**main
s = cs;
*s = "start";
lcd_puts(*s);
lcd_cmd(0xC0);
*s = "NG";
lcd_puts(*s);
17 :
natu :2009/07/04(土) 17:57:34 ID:wK1L34JO
>>16 ポインターや配列は後の楽しみに取って置くとして、まずは
作ったハードでLCD表示が出来るようにしよう。
表示が出来れば、それを使ってデバッグ出来る様になるので
思う存分ソフトを検討すれば良いと思う。
lcd_clear();//__この行の次に
lcd_data('A');//__この行を追加して
実行させると、LCDの左上に"A"が表示されるかな?
Ver.23って何?
19 :
natu :2009/07/04(土) 21:17:41 ID:wK1L34JO
>>18 毎度です。NULLの人かな?
見積ばっかりで早くも『夏休み』状態です。
LCDへの文字出力は問題無さそうな気がするんですけどね。
20 :
774ワット発電中さん :2009/07/04(土) 22:03:20 ID:LQh9zHkD
こんにちは。PIC&2ch初心者です。よろしくお願いします。 私はPICのコンパイラにmikrobasicを使っています。最近出た安い16F887を試してみようと思い、 AD変換をするプログラムを作ったのですが、うまく動きません。プロジェクトの一覧から選択できたし、 バージョンも7.2なので対応しているはずなのですがなぜかうまくいきません。 同じ症状で困っている方や解決策を知っている方はレスお願いします。
エスパーキター
GPIOのリードかライト、またはGPIFのクリアが必要らしいけど 新しい定常値を記憶させろ、ということかな
>>23 ご指摘の通り、GPIFのクリアを怠ってました。
GPIFを全くクリアしていなかったので、常時SLEEP復帰になってました。
SLEEPの直前でGPIFをクリアしたところ、必ず入力変化で復帰するようになりました。
あと、MOVWFやXORWF等でGPIOを叩いた時も
GPIFがSETされるんですね。危うくそこでまたハマりかけました。
25 :
Ver.23 でLCDの質問しました。 :2009/07/05(日) 17:14:52 ID:w/cwcsHK
>>17 こんにちわ。
>lcd_clear();//__この行の次に
>lcd_data('A');//__この行を追加して
試してみましたがうまくいきません。
1行目に■が16個並んで、
2行目は真っ白です。
ちなみに
自分が書いた下記をコメントアウトしたり、
s = cs;
*s = "start";
lcd_puts(s);
lcd_cmd(0xC0);
*s = "NG";
lcd_puts(s);
>lcd_data('A');//__この行を追加して
の'A'を"A"にしてみたり自分で考えれる可能性は試しましたが
うまく結果は同じでした。
質問ですが、 時間待ちルーチンで、2秒と、5秒の待機をさせたいのですがいまいち理解できません。 どなたかご教授願います
>>25 1行目で駄目って事はLCDの初期化が出来ていないんだろ。
配線をチェックするなり初期化ルーチンを見直すのが先決。
そんで'A'と”A"は別物だと解るよな?
*sとsの意味合いもわかるよな?
*s="ABC"は駄目でs="ABC"ならOKなのわかるよな?
解らないならポインタを勉強しなおせ。
>>26 何が理解できないか書き込め。
28 :
Ver.23 でLCDの質問しました。 :2009/07/05(日) 19:09:34 ID:w/cwcsHK
>>26 DelayMS()とかDelayUS()を使えばいいですよ。
DelayMS(2000)で2秒、Delay(5000)で5秒です。
その他は割り込み処理を使うって方法もあります。
型番と使用言語ぐらい書け
>>30 4クロックで1命令。1命令の実行時間が分かれば、何命令実行すれば
2秒になるかは計算できるだろ。
その手の「ルーチン」は、ひたすら無駄に実行し続けるんだよ。
老婆心ながら、とりあえず12F6XXあたりに乗り換えた方が、無駄な手間が省けて
理解のための勉強は進むと思うぞ。
32 :
Ver.23 でLCDの質問しました。 :2009/07/05(日) 22:04:59 ID:w/cwcsHK
>>31 >>30 はせっかく16F84でハードをくみ上げて
さあ、ソフトを動かそうってがんばってるので、
ここはゆっくりこちらからヒントを出していけばいいのではないでしょうか??
彼が理解できる項目に関して細かく説明して、
順を追って進めていけばいいと思います。
最初のうちは色んな石に手を出すよりも自分がこれ使ってみようって思った石を使うのが早道かと。
そして彼の選んだ石は16Fシリーズではもっとも機能が少なく、
これから練習していくには最適だと思います。
>>30 >>27 の言うようにわからないポイントをもうちょっと噛み砕いて
説明するとみんな相談にのりやすいとおもいますよ。
>>32 えっと、クロックは10[MHz]の発振子を利用しているので、1命令あたり、1[μS]なのは
わかっているんです、それで2秒ってことになれば、
2×10^6回命令を行わせれば2秒待機ってことですよね?
ただ、その2×10^6回をどう書けばいいのかわからないんです。
>>33 先に10MHzの場合1クロック0.1us。で、1命令4クロックだから0.4us掛かる。
そこは勘違いしないように。
次にだ50usのウェイトを想像してみなよ。
0.4usの1命令を何回実行すれば50usになる?
次に1msを考えてみる。先ほどの50usのウェイトを何回呼び出せば1msになる?
そんで・・・あとは考えてくれ。
ちなみにPICアセンブラにはdecfszなんていう便利な命令がある。
さらにMPLABにはストップウォッチなる計時機能もあったりする。便利。
35 :
Ver.23 でLCDの質問しました。 :2009/07/05(日) 22:55:47 ID:w/cwcsHK
>>34 >MPLABにはストップウォッチなる計時機能もあったりする。便利。
詳しく教えてほしいです。
気になります。
37 :
Ver.23 でLCDの質問しました。 :2009/07/06(月) 00:44:39 ID:xcSjK53B
>>27 >1行目で駄目って事はLCDの初期化が出来ていないんだろ。
>配線をチェックするなり初期化ルーチンを見直すのが先決。
だと思います。
個人的には初期化が怪しくてそこを直したいのですが、
>>17 の言うことももっともだと思ったんで、
ポインタのところも気にしてます。
>そんで'A'と”A"は別物だと解るよな?
シングルクォーテーションはアスキーを代入処理する際に使用。
ダブルクォーテーションは特殊文字を扱う。
>*sとsの意味合いもわかるよな?
ポインタですね。*sを定義したなら、sにはアドレスが
*sにはその中身が入っています。
>*s="ABC"は駄目でs="ABC"ならOKなのわかるよな?
これはsがアドレスだからですね。
了解です。
>>37 'A' は char 型の定数
"ABC" は文字列「ABC」が置かれたメモリの先頭番地
char *s; で
s="ABC";
としたら
*s は s[0]と同じ意味で 'A'が出てくる
ともかく文字列だのポインタだのは忘れて、1文字出るところまで
やるべし、に賛成。
Input rb.Bit0 'キーを定義 set: a = 0 c=&h00 Initlcd If (rb.Bit0 = 0) Then : a=6 Putlcd "Source" For i = 1 To 7 Lookup i,c,00,58,83,79,&h55,&h52,58'16文字x2列LCDを使用 Setpos i,1 Sleep 321 Putlcd " ",c Serout pb9600,c Next i Else i=0 Endif Homelcd If 1 <= a Then Putlcd "Function" Serout pb9600,70,&H55,78,67,32,67,79,&H52,&H52,59,58 Sleep 1000 Else Putlcd "タイキチュウ" Endif '略--- Goto set
>>25 Ver.23 でLCDの質問しました。
>1行目に■が16個並んで、
>2行目は真っ白です。
これが何を意味しているかというと、LCD 側がコマンドを一切受け付けていない事が分かります。
初期化ルーチンが正常で2行化のコマンドを受け付けていれば、2行目も■が16個並びます。
コマンドを受け付けない理由は、ハードウエアの配線ミス。
ソフトウエアで 8bit → 4bit コマンド変更のミス。
BUSY を 監視していないなら、時間の取り方の不十分が等が考えられます。
ハードのミスかソフトのミスかの切り分けが出来ないなら、教える側も困るんですよ。
近くにオシロ等でハードを確認して貰える人はいないのですか?
41 :
774ワット発電中さん :2009/07/06(月) 06:13:58 ID:oonsHEi1
LCDとの接続程度も自己解決できないようじゃあな いい加減自分には不向きだと理解して別の道に進んだほうがいいんじゃね?
>>25 にゃんこさんが言ってる様に、初期化ルーチンが違うかもしれないよ?
付属のデータシートの初期化チャートと照合するんだ
>>25 のLCDはSC1602Bなのか?
「1行目に■が16個並んで、2行目は真っ白です。」は初期化失敗の症状だった記憶があるね
リニューアル前は秋月ページにデータシートとFAQあったのに・・・、なくなってるな・・・
おまえら親切だなー
初期化のウェイトが足りない症状です。
45 :
natu :2009/07/06(月) 18:11:10 ID:0uHIP+A9
>>25 wait_us、wait_ms関数が誤動作する可能性は有るけれど桁上げの時だけ
なので、治るかどうかは解らんけれど組込みのdelayに変えて見ては?
#define _XTAL_FREQ 20000000 //水晶の周波数、追加
static void wait_us(unsigned char cnt)
{
while(cnt--)
__delay_us(1);
}
static void wait_ms(unsigned char cnt)
{
while(cnt--)
__delay_ms(1);
}
wait_ms(200);
lcd_cmd(0x02);// cursor home
wait_ms(2);//←追加
これでダメならハードを見直したほうが良いと思う。
46 :
774ワット発電中さん :2009/07/06(月) 18:41:26 ID:tcz4GYd+
こんな症状って経験したことありますか? 「内部のプログラムが正常に動作しているのはデバッグ出力から確認できるけど、 一部の出力ポートがHiもしくはLowにスタックして正常に動作しない状態」 再度(ISPではない)プログラミングをおこなうと一応は正常に動作するように戻ります。 原因・対策などありましたら....
初期値不定の変数を使っているところが悪さをしている なーんていうのもありがち
>>33 おまえ、バカそうだからコテ名乗れ。
LCD君が懇切丁寧に教えてくれるはずだ。
49 :
Ver.23 でLCDの質問しました。 :2009/07/06(月) 22:51:00 ID:xcSjK53B
>>33 これつかってみてください。
#include "pic.h"
#include "delay.h"
#define _XTAL_FREQ 10000000 //水晶の周波数10MHz
int i = 0;
while(i++ < 1000){
__delay_ms(2); //2秒待機
}
while(i++ < 1000){
__delay_ms(5); //5秒待機
}
>>49 アセンブラと言っている人にCソース見せて面白いの?
51 :
Ver.23 でLCDの質問しました。 :2009/07/06(月) 23:07:15 ID:xcSjK53B
>>33 &
>>50 すいません。
そうですね。
アセンブラって書いてますね。
見落としていました。
何か役に立てることがあればと思いましたが、
余計に混乱を招いていたらすいません。
52 :
Ver.23 でLCDの質問しました。 :2009/07/06(月) 23:16:43 ID:xcSjK53B
>>38 了解です。
まずは1文字出力ですね。
たぶん皆さんの意見を見ていると初期化のもんだいですね。
>>40 >これが何を意味しているかというと、LCD 側がコマンドを一切受け付けていない事が分かります。
>初期化ルーチンが正常で2行化のコマンドを受け付けていれば、2行目も■が16個並びます。
なるほど、情報ありがとうございます。
オシロはないですが、自分でテスタはあるので敗戦は問題ないことは確認しています。
ソフトのミスはわからないです。
53 :
774ワット発電中さん :2009/07/06(月) 23:29:33 ID:xcSjK53B
>>42 了解です。LCDはSC1602Bのバックライトなしです。
>>44 情報ありがとうございます。
>>45 先ほど試してみましたがNGでした。
待ち時間を増やしてみましたがNGでした。
PICではCしか触ったことなかったが、話の流れ的に気になってググってみた あー、命令スキップで分岐するのか…めどいな
こんばんは。PIC18Fについて質問があります。 現在、後閑氏の「電子工作のためのPIC18F本格活用ガイド」を参考に PIC18F2431を使ってEUSARTを試しているのですが、ピンの入出力の設定についてデータシートと参考にしている本とで食い違いがあり悩んでいます。 参考に使っている本ではRC6を出力に、RC7を入力に設定しろと書いているのですが、データシートでは両方入力にしろと書いています。 これはどちらが正しいのでしょうか? ちなみに動作自体はどちらでもちゃんと動くのですが、なんか気持ち悪くて気になっている状態です。 どうか教えてください。
;************************************************************************************************ ;* wait_5uSEC * ;* ★約5μSEC wait 5.086263020833333333μSEC X'tal 19.6608MHz * ;* wait_1uSEC * ;* ★約5μSEC wait 1.017252604166666667μSEC * ;* 1命令 0.203450520833333333μSEC * ;* * ;* 入力 無し * ;* * ;* 出力 無し * ;* * ;* 使用 無し * ;* 破壊 無し * ;* STACK LEVEL 1 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; call wait_5uSEC ; 2 wait_5uSEC: ;5.086263020833333333μSEC goto $+1 ; 4 goto $+1 ; 6 goto $+1 ; 8 goto $+1 ; 10 goto $+1 ; 12 wait_3uSEC: ;3.0517578125 μSEC goto $+1 ; 14 goto $+1 ; 16 goto $+1 ; 18 goto $+1 ; 20 goto $+1 ; 22 wait_1uSEC: ;1.017252604166666667μSEC wait_5clock: ;call を 含めて 5 命令です nop ; 23 return ; 25 ;----------------------------------------------------------- ;wait_5uSEC: ;5.086263020833333333μSEC ; clrf FSR ; 3 ; bsf FSR, 2 ; 4 ; bsf FSR, 1 ; 5 ;wait_5uSEC_10 decfsz FSR, F ; 1 ; goto wait_1mSEC_10 ; 3*6-1 ; 22 ;wait_1uSEC: ;1.017252604166666667μSEC ;wait_5clock: ;call を 含めて 5 命令です ; nop ; 23 ; return ; 25 #endif #endif
;************************************************************************************************ ;* wait_WuSEC * ;* ★約 WregμSEC wait 1.017252604166666667μSEC X'tal 19.6608MHz * ;* 1命令 0.203450520833333333μSEC * ;* * ;* 入力 Wreg = 000H 255.940755208333333333μSEC * ;* = 001H 〜 002H 2.848307291666666667μSEC * ;* = 003H 3.0517578125 μSEC * ;* | * ;* = 0FFH 259.3994140625 μSEC * ;* * ;* 出力 FSR = 000H * ;* * ;* 使用 FSR,ZF,DC,CY,WREG * ;* 破壊 FSR,ZF,DC,CY,WREG * ;* STACK LEVEL 1 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; movlw 0xXX ; 1 ; call wait_WuSEC ; 3 wait_WuSEC: ;20.000MHz なら正確なんだけどね 大きいと誤差が増えるよ addlw 000H ; 4 @btfsc @ZF ; 5 goto wait_WuSEC_10 ; 7 addlw -3 ; 7 movwf FSR ; 8 @btfsc @ZF ; 9 goto wait_WuSEC_11 ; 11 @btfsc @CY ; 11 goto wait_WuSEC_20 ; 13 return ; 14 ;----------------------------------------------------------- wait_WuSEC_10 ;Wreg = 00H 256uSEC 指定 X'tal 19.6608MHz movlw 249 ; 8 movwf FSR ; 9 goto wait_WuSEC_21 ; 11 ;----------------------------------------------------------- ;wait_WuSEC_10 ;Wreg = 00H 256uSEC 指定 X'tal 20.0000MHz ; movlw 253 ; 8 ; movwf FSR ; 9 ; goto $+2 ; 11 ; goto wait_WuSEC_21 ; 13 ;----------------------------------------------------------- wait_WuSEC_11 ;Wreg = 03H 3uSEC 指定 X'tal 19.6608MHz goto wait_WuSEC_RET ; 13 ; return ; 15 ;----------------------------------------------------------- wait_WuSEC_20 ;Wreg = 04H 〜 0FFH X'tal 20.0000MHz ; return ; 15 wait_WuSEC_21 goto $+1 ;2 decfsz FSR, F ;3 goto wait_WuSEC_21 ;5*(W-3)-1 nop ;+1 wait_WuSEC_RET return ; 15 #endif #endif
;************************************************************************************************ ;* wait_1mSEC * ;* ★約1mSEC wait 1.000162760416666667 mSEC X'tal 19.6608MHz * ;* 1命令 0.203450520833333333μSEC * ;* * ;* 入力 無し * ;* * ;* 出力 FSR = 000H * ;* * ;* 使用 ZF,FSR * ;* 破壊 ZF,FSR * ;* STACK LEVEL 1 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; call wait_1mSEC ; 2 wait_1mSEC: ;1.000162760416666667 mSEC 割り込みは考慮せず 合計 4916 clock nop ; 3 wait_1mSEC_00: ;0.999959309895833333 mSEC 割り込みは考慮せず 合計 4915 clock goto $+1 ; 5 goto $+1 ; 7 wait_1mSEC_01: ;0.9991455078125 mSEC 割り込みは考慮せず 合計 4911 clock clrf FSR ; 8 wait_1mSEC_10 goto $+1 ; 2 goto $+1 ; 4 goto $+1 ; 6 goto $+1 ; 8 goto $+1 ;10 goto $+1 ;12 goto $+1 ;14 goto $+1 ;16 decfsz FSR, F ;17 goto wait_1mSEC_10 ;19*256-1 ;4871 bsf FSR, 3 ;4872 FSR = 08H goto wait_WuSEC_21 ;4874 ; loop ;4914 ; return ;4916 #endif #endif
;************************************************************************************************ ;* wait_WmSEC * ;* ★約 Wreg mSEC wait 0.999959309895833333 mSEC X'tal 19.6608MHz * ;* 1命令 0.203450520833333333μSEC * ;* * ;* 入力 Wreg = 000H 255.990397135416666667 mSEC * ;* = 001H 1.000773111979166667 mSEC * ;* = 002H 2.000732421875 mSEC * ;* | * ;* = 0FFH 254.990437825520833333 mSEC * ;* * ;* 出力 FSR = 000H * ;* * ;* 使用 FSR,ZF,DC,CY,WREG * ;* 破壊 FSR,ZF,DC,CY,WREG * ;* STACK LEVEL 1 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; movlw 0xXX ; 1 ; call wait_WmSEC ; 3 wait_WmSEC: ;20.000MHz なら正確に出来るんだけどね 大きいと誤差が増えるよ clrf FSR ; 1 wait_WmSEC_10 nop ; 1 clrwdt ; 2 goto $+1 ; 4 goto $+1 ; 6 goto $+1 ; 8 goto $+1 ;10 goto $+1 ;12 goto $+1 ;14 goto $+1 ;16 decfsz FSR, F goto wait_WmSEC_10 ;4864 ;----------------------------------------------------------- wait_WmSEC_11 bsf FSR, 3 ;4865 ; bsf FSR, 0 ;4866 ; FSR = 09H wait_WmSEC_12 goto $+1 decfsz FSR, F goto wait_WmSEC_12 ;4910 nop ;4911 ;----------------------------------------------------------- wait_WmSEC_13 movwf FSR ;4912 decfsz FSR, W ;4913 goto wait_WmSEC ;4915 ;4915 * Wreg - 1 return ; 5 #endif #endif
;************************************************************************************************ ;* wait_10mSEC * ;* ★約10mSEC wait 10.00000000000000000 mSEC X'tal 19.6608MHz * ;* 1命令 0.203450520833333333μSEC * ;* * ;* 入力 無し * ;* * ;* 出力 FSR = 000H * ;* PCLATH = 000H * ;* * ;* 使用 PCLATH,FSR,ZF * ;* 破壊 PCLATH,FSR,ZF * ;* STACK LEVEL 1 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; call wait_10mSEC ; 2 wait_10mSEC: ;10.00000000000000000 mSEC 割り込みは考慮せず 合計 49152 clock ; nop ; 3 clrwdt wait_10mSEC_00: ; 9.99979654947916667 mSEC 割り込みは考慮せず 合計 49151 clock goto $+1 ; 5 goto $+1 ; 7 wait_10mSEC_01: ; 9.99898274739583333 mSEC 割り込みは考慮せず 合計 49147 clock clrf FSR ; 8 decf FSR, F ; 9 decf FSR, F ; 10 decf FSR, F ;FSR=253 ; 11 ;----------------------------------------------------------- wait_10mSEC_02 clrf PCLATH ;( 1) bsf PCLATH, 3 ;( 2) decf PCLATH, F ;( 3) ;-----------------------------------------------------------
wait_10mSEC_03 nop ; 1 clrwdt ; 2 goto $+1 ; 4 goto $+1 ; 6 goto $+1 ; 8 goto $+1 ;10 goto $+1 ;12 goto $+1 ;14 goto $+1 ;16 goto $+1 ;18 goto $+1 ;20 goto $+1 ;22 goto $+1 ;24 decfsz PCLATH, F goto wait_10mSEC_03 ;(191) decfsz FSR, F ;(192) ; goto wait_10mSEC_02 ;(194) ;49092 ;----------------------------------------------------------- bsf FSR, 3 ;49093 bsf FSR, 1 ;FSR = 0AH ;49094 goto $+1 ;49096 goto $+1 ;49098 goto wait_WuSEC_21 ;49100 ; loop ;49150 ; return ;49152 ;----------------------------------------------------------- #endif #endif
>>55 俺は両方使えるがアセンブラ派だな
例えばRA1の入力と同等の出力をRB1に行なうサブルーチンてのを作るとすると、
btfss porta,1
bcf portb,1
btfsc porta,1
bsf portb,1
return
分岐命令使わずにたったの5ワードで出来る
条件成立時に次の命令をスキップするって仕様は意外に面白く使えるよ
;************************************************************************************************ ;* wait_Wx100mSEC * ;* ★約 Wx 100mSEC wait 約 100 mSEC X'tal 19.6608MHz * ;* * ;* 入力 Wreg = 000H 約 25600 mSEC * ;* = 001H 約 100 mSEC * ;* = 002H 約 200 mSEC * ;* | * ;* = 0FFH 約 25500 mSEC * ;* * ;* 出力 FSR = 000H * ;* PCLATH = 000H * ;* * ;* 使用 PCLATH,FSR,ZF,WREG * ;* 破壊 PCLATH,FSR,ZF,WREG * ;* STACK LEVEL 2 * ;************************************************************************************************ #ifdef DEBUG_PROG #if DEBUG_PROG == TRUE ; movlw 0xXX ; 1 ; call wait_Wx100mSEC ; 3 ;----------------------------------------------------------- ↑誤差の範囲なので考慮しません wait_Wx100mSEC: ;19.6608MHz call wait_10mSEC_01 ; 1 ; ( -5) call wait_10mSEC ; 2 call wait_10mSEC ; 3 call wait_10mSEC ; 4 call wait_10mSEC ; 5 call wait_10mSEC ; 6 call wait_10mSEC ; 7 call wait_10mSEC ; 8 call wait_10mSEC ; 9 call wait_10mSEC ;10 movwf FSR ; ( -4) decfsz FSR, W ; ( -3) goto wait_Wx100mSEC ; ( -1) return ; 5 #endif #endif
適当に見やすく TAB なり 空白なり を 挿入して下さいませ。 アセンブラが読めない人にとっては『荒らし』以外の何ものでも無いだろうねぇ。
>>65 ダラダラと荒らしの様なリストを立て続けに書き込んでる途中で割り込まれたから怒ってるのか?
それはすまなかったね
67 :
774ワット発電中さん :2009/07/07(火) 02:43:46 ID:yz1WZiOd
>65 CCS-C”だけ”の軽石乙。
>>66 いや、
>>65 は怒ってるんじゃなくて、自嘲してるんだろ。
良く読もうよ…
見やすく自分なりに編集してごらんね。 μ秒〜25.6秒までの単純ウエイトのサンプルだよ。 X'tal はちょっと特殊だがクロックの数え方の基礎が分かるハズだよ。
テキストファイルをアップロードしてアドレス張ればいいのに。
71 :
natu :2009/07/07(火) 08:59:15 ID:hJ90blfH
>>56 TRISCは無視されてEUSARTモジュールが方向を固定するので
ポートの方向設定は意味が無い。
只、EUSARTモジュールとTRISの方向を合せておくと、何となく
爽やかな気持ちになる。私は...
>>70 仕事が変わって 朝05:00〜夜00:30 まで運転手。
そこまで暇が無いのね。ごめんね。
73 :
56 :2009/07/07(火) 19:45:02 ID:kYLbyxmX
>>71 レスありがとうございます。
成る程、どっちでも問題ないんですね。
なんかほっとくと、ポートを触った時に予期しないエラーが起きたりするんじゃないかと思っていたんですが、
何にも関係ないなら安心です。
どうもありがとうございました。
76 :
774ワット発電中さん :2009/07/07(火) 21:27:49 ID:rzwjQB4S
軽石にはあまりにも時間が不足しています>o<
>>56 間違えて入力を出力に設定してしまった場合、
二つのデバイスがH-LやL-Hになった場合出力に電流が流れすぎて壊れる場合がある
だから分からん場合は入力に設定しておけという意味だろ
ちなみに俺は無意味かもしれんが最初は入力で設定して、うまく動いたらI/Oを設定しなおす
第一交通岩国で合田先輩にメガネを壊された。 障害と器物破損に切り替えても良いですか?と聞いたら 国次所長に直ちに保険所と制服を返せと言われた。 生活保護になるかな?
79 :
774ワット発電中さん :2009/07/08(水) 15:15:18 ID:N1LRNYRh
在職証明もらっとけよ。後で取りになったらマンドイ
秋月新商品 18F14K50 (200円)ってなにげに最強…?
81 :
natu :2009/07/08(水) 21:43:05 ID:A96BRFUf
2.7V以上で48MHz動作が保障されているから 200円だとお買い得だと思う。ディープスリープ も私が持ってる激安テスターだと電源電流が 測れないし... 欲を言えば、RAMサイズが、あと256バイト多く 有ればUSB+αが、さらに楽しめるのになぁ
82 :
にゃんにゃんこ :2009/07/08(水) 22:23:12 ID:RkZJLtBF
>>79 生活保護の書類は受け取って貰えました。実際におりるかどうかは不明。
でも一安心。また PIC をさわれますよ。
朝5時〜夜0時まで働いて手取りが 78,000円でした。
>>80 USB は良いけど SDカードも扱おうとすると ROM RAM が苦しいよ。
PIC18F452 で SDカードルーチンを作ったけどメモリー節約に苦労しました。
↑ C18 対応に書き換える自信は無いよ。lfsr と postinc postdec で メモリー節約。
tblrd*- 1命令 カウンター 3byte を dec する裏技。
83 :
にゃんにゃんこ :2009/07/08(水) 23:02:20 ID:RkZJLtBF
>>56 USARTとか内蔵モジュールpinのTRIS指定をどうするかは
PIC device毎に事情が違ったりするから
個別データシートの情報を優先汁
因みにその書籍でのPIC18F2320ならdatasheetに
? TRISC<7> bit must be set (= 1)
? TRISC<6> bit must be cleared (= 0)
とあり、貴方の使用するPIC18F2431ならdatasheetで
? TRISC<6> bit must be set ( = 1), and
? TRISC<7> bit must be set ( = 1).
85 :
>>10 :2009/07/10(金) 07:14:19 ID:q4fJWLA5
自力で調べることができないなら,変なオリジナリティなど出さずに まずは動くことが確実なサンプルの通り作って動かしてから 移植していくというのが常道じゃね?
87 :
natu :2009/07/10(金) 09:59:22 ID:fvy0oWIB
>>85 static void lcd_init(void) {
//wait_ms(2);
int i = 8;//電源ONから15mS以上まつ
__delay_us(200);//100-->200
/* 8 Bit Mode Setting 3 */
__delay_us(100);//100-->200
/* 4 Bit Mode Setting */
これでダメならハードだと思う。R/WはGNDにしてる?
初期化途中の、例えばE=1にした直後に
while(1) ;
を入れて停止させ、LCD側のピンをテスターで計って見ると
どうよ。
>>85 直接問題と関係無いかもしれんが・・・
PICC LiteつうかHI-TECH PICC Pro(lite mode)だよね。
LCDアクセス関数はsamples\LCDemo\ 参考にすればok
そんで、#include "delay.h"要らんよね
#define _XTAL_FREQ 20000000 は
#include "pic.h" の前に書かんと意味無いよね
あと・・・関数引数とか変数型いい加減すぎるよ。
見てないけど酷いな
92 :
にゃんやんこ :2009/07/10(金) 16:59:38 ID:LsBvK2vj
>>85 最初からプログラムを上手に書ける人はいませんよ。
みんな上手な人のテクニックを見て学んで行くんだから、気にしないでいいよ。
サンプルの物まねから少しずつ変えて自分の物にしてみるのが良いと思うよ。
93 :
93 :2009/07/10(金) 23:39:00 ID:xZnyvK5A
入力2つにたいして、出力1つでPWMを出力する場合は12F683で十分ですか?
94 :
にゃんにゃんこ :2009/07/11(土) 03:00:34 ID:gSGLZ63U
>>93 もし、私が依頼を受けて開発する場合でしたら
PIC16F88 で 利用者様の仕様を満足するか実験をして、確認をしてもらった後で
PIC12F683 に 移植し直します。
プログラムに必要な ROM RAM が不足する場合は、お断りするか他の PIC のご利用をお勧めするように努めます。
>>93 どんな入力でその入力をどう処理しPWMを出力したいか書いた方がいいよ。
2入力に対し単純な判定だけなら683で十分だし、複雑な計算を行うなら能力不足。
まぁここで聞くレベルだから683で十分な内容だと思うけど・・・
PICを始めるのにpickit3買って大丈夫だろうか 2のほうがwebや参考書での情報も多いし 性能に大差が無いなら2にしようかと思うんだけど
2で充分だと思いまつ
99 :
ヘビー級 :2009/07/11(土) 11:37:10 ID:kPwhAdEk
はじめまして。16F876 でLEDを点滅させる簡単な回路を組んでみたところですが、 PICkit2でMPLAB-IDEのDebuggerを通して実行させるとちゃんと動くのに、 PICkit2を外して単独でスイッチ入れると動きません。 電源は供給してあります。PGC/PGDはプルダウン、MCLRはプルアップしてあります。 なにかヒントになるような情報ありましたらお願いします。 ↓これはコンフィグレーションビットの状態です。HI-TECH C使ってます。 __CONFIG( HS & PWRTEN & DEBUGEN & WDTDIS & LVPDIS); // Setup the configuration word
>>96 たとえば、一回目の入力があった場合に、二回目の入力を待って、なければ、デューティー比
50%、あれば、出力を0にするとかですね。
103 :
>>10 :2009/07/11(土) 15:54:53 ID:Lmzs37AQ
>>87 ありがとうございます。
結構参考書によって待ち時間の設定が違うみたいで、
待ち時間短すぎると当然駄目だし、
長すぎても駄目なんですよね。。
なかなか難しいです。
>これでダメならハードだと思う。
接触だけの状態ではテスタで計って問題なかったのですが。。。
>R/WはGNDにしてる?
しています。参考書にそうなっていたので。
>初期化途中の、例えばE=1にした直後に
>while(1) ;
>を入れて停止させ、LCD側のピンをテスターで計って見ると どうよ。
やってみます。
>>88 >PICC LiteつうかHI-TECH PICC Pro(lite mode)だよね。
そうですね。
>LCDアクセス関数はsamples\LCDemo\ 参考にすればok
そうですね。
一応ココ参考にしてます。
>そんで、#include "delay.h"要らんよね
そうなんですか??
今は自分で作った割り込みをコメントアウトしているので
"delay.h"つかってますよ??
"pic.h"で読んでるってこと??
>#define _XTAL_FREQ 20000000 は
>#include "pic.h" の前に書かんと意味無いよね
おっしゃるっとおりですね。
修正しておきます。
>あと・・・関数引数とか変数型いい加減すぎるよ。
どのへんですかね??
具体的にピックアップできますか??
気を使ってるつもりなんですが、
レベル低いのかもしれません。
104 :
>>10 :2009/07/11(土) 16:06:45 ID:Lmzs37AQ
>>92 何度もすいません。
なかなかこれらの分野は不案内なもので。
ちょっとづつわかってはきてるんですが、
それでも皆さんと比べるとレベル低いですね。
基本的にはサンプルのマネをしてるんですが、
それ自体がなかなか困難を感じています。
でも、がんばります。
105 :
>>10 :2009/07/11(土) 16:19:39 ID:Lmzs37AQ
>>99 僕も初心者なのでアドバイスになるかわからないですが、
PGC/PGDはプルダウンせずにやってますが、
うまく動作しています。
一番気になったのは
>MCLRはプルアップ
です。
書き込み時はMCLRはプルアップ、動作時はMCLRはVCCをつなげる。
これでやってみても駄目でしょうか??
106 :
>>10 :2009/07/11(土) 16:41:21 ID:Lmzs37AQ
>>87 ハードではなさそうです。
}
/* 8 Bit Mode Setting 1 */
RB4 = 1; //Set 8 Bit U0
RB5 = 1; //Set 8 Bit U1
RB6 = 0; //Set 8 Bit U2
RB7 = 0; //Set 8 Bit U3
LCD_RS = 0; //Control Bit
//wait_us(20);
__delay_us(20);
LCD_E = 1; //Enable 1
の後
while(1) ; を入れてストップさせて計りました。
1 VDD 4.8V
2 VSS 0V(当然)
3 VO 0.1V
4 RS 0V
5 RW 0V(Gと直付けのため)
6 EN 4.5V
7 DB0 0V(Gと直付けのため)
8 DB1 0V(Gと直付けのため)
9 DB2 0V(Gと直付けのため)
10 DB3 0V(Gと直付けのため)
11 DB4 4.6V
12 DB5 4.6V
13 DB6 0.35V
14 DB7 0.35V
107 :
97 :2009/07/11(土) 17:22:00 ID:HUtnZ+sz
直接は関係ないけど、7-10PinはOpen推奨。
109 :
774ワット発電中さん :2009/07/11(土) 22:42:18 ID:sSkM0S28
MPLAB C18について教えて下さい。 私の環境では、MPLAB C18をインストールしても lkrというフォルダができないのです。 その為、コンパイルすると。 Linker Script Files が無いというエラーになってしまいます。 下記の3つのどれで試しても同じです。 MPLAB-C18-Academic-v3_31.exe MPLAB-C18-Evaluation-v3_31.exe MPLAB-C18-v2.20b-demo-win32.exe どなたか、同じ経験をされたかたがいましたら。 解決策を教えて下さい。
>>109 つまらぬ事を聞くが当然MPLAB IDEはインストールしてあるんだよな?
>>99 給電してない訳でなければ、Release modeでBuildしてないとか?
>>109 MCC18\lkr フォルダが無いんでつか?
それともフォルダはあるけど Path通ってない
あるいはProjectで Link Script指定忘れてるとか?
113 :
109 :2009/07/12(日) 00:54:29 ID:QXwVOgLN
>>110 MPLAB IDEはインストールしてありますよ
>>112 MCC18\lkr フォルダが無いんですよ
114 :
109 :2009/07/12(日) 01:05:07 ID:QXwVOgLN
>>113 何時からか MCC18\bin\LKR に移動したみたいな・・・
そちらがあるなら Path修正汁
116 :
109 :2009/07/12(日) 01:39:01 ID:QXwVOgLN
>>115 MCC18\bin\LKR にあるファイルは 18f4550_g.lkr とかで
_g という変なものが付いてます。
パスを MCC18\bin\LKR に修正しても、コンパイル時にエラーになります
>>99 DEBUGENにしながら単独で動くか?ってところなんだけど。
あとは
>>111 か。
俺もつい最近始めたところで、自信満々には答えられないのが情けないが。
>>99 >>117 >DEBUGENにしながら単独で動くか?ってところなんだけど。
動きません。
理由は DEBUG モードでは ICD2 又は PICkit2 とブレークポイントの位置や
変更された RAM の内容を PIC に教える為に通信する必要が有り、そこで停止します。
コンフィグのデバッグモードを使用しない状態で MAKE しなおす必要がありますよ。
Release mode と Debug mode でのビルドの違いは、特定の文字列 が定義されるかどうかの違いだけです。
プログラムで #ifdefine DEBUG だったかな? を 使わない場合は生成される *.HEX は全く同じものになります。
>>116 過去の *.lkr ファイルは XINST拡張モード(*_e.lkr) や ICD2使用のデバッグモード(*_i.lkr) でファイルが分かれていました。
リンカースクリプトの文法が変更されて、#IF 文が使えるようになっていて供用できるように変更されていました。
18f4550_g.lkr を 使えば問題無い様ですね。
↑ を 自分の開発中のフォルダーにコピーしてリネームするのが良いと思いますよ。
>>103 > 4 RS 0V
>13 DB6 0.35V
>14 DB7 0.35V
4も13/14と同じようにポート制御なんじゃねぇの?
120 :
109 :2009/07/12(日) 06:34:12 ID:QXwVOgLN
>>118 さん
C:\MCC18\bin\LKR にパスを設定して、
linker script のファイル名を、 18f4550.lkr →18f4550_g.lkr に変えたらうまくコンパイルできました。
本当に助かりました。
ありがとうございます。
122 :
109 :2009/07/12(日) 07:38:04 ID:QXwVOgLN
>The Microchip Application Libraries v2009-03-24 above is temporarily unavailable.
124 :
natu :2009/07/12(日) 09:21:31 ID:/yIx3vFE
>>99 です。
動きました!!\(^_^)/ どうもみなさんありがとうございます。
>>105 PGC/PGDはプルダウンしなきゃいけないとどっかで読んだ気がするんですが、大丈夫ですか。
>>111 給電してない訳でなければ、Release modeでBuildしてないとか?
>>117 DEBUGENにしながら単独で動くか?ってところなんだけど。
>>118 動きません。
↑
このへんのところがダメだったみたいです。
コンフィグをこう変えました↓
#ifdef __DEBUG
__CONFIG( HS & PWRTEN & DEBUGEN & WDTDIS & LVPDIS);
#else
__CONFIG( HS & PWRTEN & DEBUGDIS & WDTDIS & LVPDIS);
#endif
DebuggerでProgramすると必ず
Programming Debug Executive (0x-1F00 - 0x1FFF)
Programming Debug Vector
というメッセージが出るのでこのへんがDEBUG用コードなんですね?
で、Programmer でProgramすると↑これが出なくなったので、試してみたらそれで単独動作しました!!
どうもどうもありがとうございます!!
リセット回路もうまく動きましたワーイ
pickit3には、PICKIT2 ProgrammerのPickit3版がないようですが、 ひょっとしてPICKIT2 Programmerで pickit3 も認識されて使えたりしますか?
127 :
109 :2009/07/12(日) 17:23:39 ID:QXwVOgLN
>>124 ありがとうございます。
これで試してみます。
128 :
774ワット発電中さん :2009/07/12(日) 22:26:05 ID:ywWytavd
はじめまして。 picを最近始めましたが、わからないことがありますので 質問させていただきます。 #include <16f690.h> #fuses HS,NOWDT,PUT,NOPROTECT #use delay(CLOCK=20000000) int count; void main(){ count=0; while(1){ while(count < 10){ if (input(PIN_C4) == 0){ delay_us(200); if(input(PIN_C4) == 1){ count++; } } else{ delay_us(100); } } output_low(PIN_C7); count=0; delay_ms(※※); output_high(PIN_C7); } } 以上のようなプログラムを組んだのですが ※※の部分の数値が12以下だと、出力がlowのままになってしまいます。 13以上ですと、low→highと正常に動作します。 理由がわかる方、お願いいたします。
テスターで確認しています。 ※※が12以下だと、5vのままでとまってしまいます,.....
>>131 > ※※の部分の数値が12以下だと、出力がlowのままになってしまいます。
> ※※が12以下だと、5vのままでとまってしまいます,.....
矛盾してるよ!
5VならHigh
テスタじゃ変動早すぎて見れないからオシロが必要になるんちゃうかな
LEDつなげてみて※※の値いじって明るさ変わったら正常
簡易ではあるが確認できると思う
あ!すいません。間違えてました。 5Vだからhighのままでとまってしまうんです。 10回入力したら1回出力 を延々と繰り返したいのですが、最初の1回だけしか正常に動作しません...
>>133 10回入力されたら、出力をHighとLow切り替えたいの?
いまのプログラムだと10回入力があったらLow→Highをするだけだと思う
output_low(PIN_C7);
count=0;
delay_ms(※※);
output_high(PIN_C7);
を
count=0;
if(flag==0){
output_low(PIN_C7);
flag=1;}
else if(flag==1){
output_high(PIN_C7);
flag=0;}
にしてみたらどうじゃろ
int flag=0;も追加
>>133 PIC16F690の場合、ポートをデジタルで使う時は、アナログインプットのレジスタ(ANSELとANSELH)を
適宜OFFの設定にしてやらんと、出力がうまくいかないぞ。
そのへん、ちゃんと設定してる?
>>136 あらま本当?
やるねCCS。
input();とかoutput_xxx();のときに勝手に設定されるということかな。よく知らんが。
お布施の高価な CCS-C は、所持していませんのでお任せしますね。
わたしも回答しませんのでお任せしますねw
140 :
774ワット発電中さん :2009/07/13(月) 08:06:59 ID:b+1xX4fl
CCS-Cといったら、軽石さん?近藤さん?ですね。
141 :
774ワット発電中さん :2009/07/13(月) 17:33:00 ID:jZLMUv0l
>>129 PIN_C4 に10回入力されるLow--High--low 信号の
変化の速さが判らないので、何とも答えようないと思う。
それと、PIN_C4 が、Low--> High の変化を見てるようだけど、
死角があるよ。(取りこぼし)
ポートの立ち上がりを確実に(と言ってもソフトで判る速さまでだが)
判定するには、
int c4buf,c4buf2;
c4buf=c4buf2=0;
count=0;
while(count<10)
{
c4buf2 = c4buf;
c4buf = input(PIN_C4);
if((c4buf != c4buf2) && (c4buf2 == 0))
count++;
}
CCS-Cなんか Bittorrentで流れているじゃないか〜って、流れているのは Ver4.088が最新かな?まあいいや。
PICに圧電サウンダを1個だけ接続して和音を出したいんですが
色々調べてもアルゴリズムがいまいち理解できません。
「単音が出る」波形の様子は想像できるんですが
「和音が出る」波形をHI/LOのみでどうやって出力しているのか
様子がまったく想像できません。
(ネットでの作例を見ると、どうやら皆さんPWMを使用しているようですが・・・)
ttp://www.geocities.jp/kwhr0/hard/orgel/ このへんの公開されてるコードを読んでみました。
Digital I/O 1本だけでいかにして和音を出すか
理解が進む良いページなどあれば教えて頂けないでしょうか。
デバイスは12F683や16F88を有る程度扱えます。
>>143 PWMを応用してアナログ的レベル出力をするやり方はおk?
まずはこれが理解できないとダメ。
次に、単音をアナログレベルで表現する方法を理解すること。
その次に、複数音をアナログレベルで表現する方法を理解すること。
これに加えて、アナログレベルをPWMで表現する「うまい方法」(DAA等)が
理解できればなお良い。
>>143 少々音が汚くなるけど、時分割する方法がてっとりばやい。
例えば、ド・ミ・ソ で構成される和音なら、
ド→ミ→ソ→ド→ミ→ソ→ド→ミ→ソ→・・・
と高速で繰り返す・・・
音源が1個しかついてない80年代のパソコンゲームでよく使われた手法・・・
147 :
143 :2009/07/14(火) 10:32:30 ID:JK4mXkHm
>>144 のPWMをD/A的に利用する概念自体は理解しています。
ラ(440Hz)の音を出したいなら、PWMのデューティ比を毎秒440回増減する
和音ならそれを複数重畳する
ということでしょうか。
頑張り次第では三角波くらいはちゃんと出せそうですね。
PIC12や16でサイン波はきつそう。
>>145 は複数の方形波のANDを取る方法
>>146 は複数の方形波を時分割し、単音の考え方そのままでいく方法
と思います。
>>144 のアドバイスのおかげで、例示した12和音のコードをなんとか読み解けそうです
>>147 12F683でDTMF(正弦波の2重和音)は出来ましたよ
>>143 >>147 >>145 は複数の方形波のANDを取る方法
↑おしい!! ちょこっと違う。
人間の音声は複数のsin波の和音ですよ。
方形波(矩形波)は奇数次のsin波の和音になります。
>>148 さんは sinテーブルの作り方と、波の合成(和音)が単なる足し算である事を理解しているようですね。
和音出力で真っ先に考えるのは 2pinそれぞれに単音出力して 2pin間に圧電スピーカ接続 同じように 1pinでやるなら 2音のduty値差分演算して PWMにぶち込めば隠者ね? (和でも差でもチョットした演算処理でok)
はいはい、自分の功績を見せたいわけね
8ピンAVRを真似てwavetable音源に挑戦してみるのもいいカモ
155 :
774ワット発電中さん :2009/07/14(火) 21:56:45 ID:wIsQcIZp
PICを使用した電流計なのですが、表示は7セグで精度は特に問いません。 交流100V最大20Aですが、可能でしょうか。 小電流のは知っているのですが、どうでしょう。
○○計の話は、周波数とかポートに直接入れて何とかなるもの以外は そとに付けるセンサーの話になる気がする
158 :
774ワット発電中さん :2009/07/14(火) 23:52:07 ID:wIsQcIZp
機器組み込みのため、作る方向でお願いします。
161 :
774ワット発電中さん :2009/07/15(水) 01:21:17 ID:ezdcQtDh
LM60を使用して温度センサーを作りたいのですが、 どんなプログラムを組めばいいですか? 中身は40度未満で全端子未出力、40度超えでA端子出力、 75度超えでB端子出力、90度超えでAB両端子出力というようにしたいです。
>>161 センサ出力をアナログ入力に入れてA/D変換して然るべき定数と比較して結果によって
然るべき出力値を設定する。
センサ出力のレベルが合わない場合はアナログ入力の前にレベル変換なり増幅なりを
行う。
課題丸投げか・・・やれやれ
なんか夏休みの宿題請け負いますとか看板立ちそうな勢いだw
>>164 あっ!それで質問が多いのね。
猫は気まぐれな動物なもんで、ドラゴンクエスト9に集中しよっとw
>>161 簡単です。
float temp;
void main(){
temp = get_LM60();
if( temp > 90 ){ A=on; B=on; }
else if( temp > 75 ){ A=off; B=on; }
else if( temp > 40 ){ A=on; B=off; }
else { A=off; B=off; }
}
丸投げ厨のパターン ○○を使って○○を作りたいのですが 1)可能でしょうか? 2)どんな風に作れば良いでしょうか? 3)詳しく書いてあるサイト等は無いでしょうか?
>>167 質問に対し的確に答えていると思うが・・・
170 :
774ワット発電中さん :2009/07/15(水) 11:40:42 ID:g+ul5Aj3
いやいや、そんな質問するような奴に電灯線と絶縁されない回路を勧められるか? 単体で完結するものならまだしも、機器組み込みだと言うから他にどこに繋ぐかも わかったものじゃない。 良くても確実に壊し、悪ければ他の機器も巻き込んで破壊しあるいは感電するぞ。
>>170 さん ありがとう
今度まねをして、実験して見ますね。
LM60は単体で既に温度センサーだろw
PICでもできるぞ。
8PinPICはI/Oが5つしかないのが
PICはAVRほどPWMのクロックを速くすることが出来ないので難しい
178 :
natu :2009/07/16(木) 09:24:38 ID:yS4lnEuK
8bit掛算命令も無い品。 PICだと難しいぞ
AVR も結構使えるんですね。 現在所有の ChipMax では書けない、しかも 5V デバイスのみ(涙) ChipMax2 か TopMax2 が欲しくなった。
180 :
774ワット発電中さん :2009/07/16(木) 12:05:10 ID:DbfooaTZ
4年くらい前に秋月のPIC書き込みキットを買ったときにおまけで 12C509Aが1個付いてきました。 同じ経験した人も多いと思うんですが、 これって何かいい使い道ありますか?お勧めのもの(URL)があれば教えて下さい。 ライトワンスじゃ自分で開発できないですもんね。
>>180 使わないでコレクションとして保管する。
>>178 AVRのTinyシリーズには8bit掛算命令は無かったはず、あるのはmegaシリーズだと思う。
それでも命令豊富だから問題ないんだけどね、フリーのCもあるし。
182 :
natu :2009/07/16(木) 14:08:45 ID:yS4lnEuK
>>181 ほんとだね。掛算ないね
やっぱり少ないステップ数と元からの実行速度で
段違いなんだね。
値の範囲が決まってたら返り血のテーブルつくるほうがいいのかねぇ 掛け算。
>>183 どうだろう? クロック数を比べてみた事は無いけど、
私なら 0〜F * 0〜F の 256byte のテーブルを作って演算するだろうねぇ。
CRC16・CRC32 の演算も同様にしてテーブル ROM を 節約した記憶があるよ。
(0x00〜0xFF) * (0x00〜0xFF)の組み合わせは何通りだろう 結果は65536通りより少なそうだけど
>>185 2x8と8x2が一緒という判断付きなら
256x(256+1)/2=32896通りです。
さらにx0はゼロ、x1はそのまんまという判断付きなら32385通りになります。
3x8と4x6なんかも結果は一緒なんだけど
bcf STATUS,C rlf 掛ける数,w addwf PCL,f call 0の段 goto next call 1の段 goto next ・ call 9の段 return 1の段 movfw 掛けられる数 addwf PCL,f retlw 0 retlw 1 ・ ・ retlw 9 0xf * 0xf、ベタに作ると256byte越えちゃいそうですね 0の時、掛ける・掛けられるが同じの時、掛ける数が大きくなるように処理、 とすればもっと小さくなるのかも 俺ではこのぐらいしか思いつかず。
かけ算のテーブルROMよりもsin・cos・tanのテーブルROMをだな(ry
>>189 即席で作ったよ。はいどーぞ
sin2Wreg: ;Wreg (00~FFH)を sin値 に 変換 値がマイナスの場合 CY=1
movwf FSR
movlw HIGH (tbl_sin)
movwf PCLATH
movf FSR, W
andlw 7FH
addlw LOW (tbl_sin)
btfsc STATUS, C
incf PCLATH, F
bcf STATUS, C
btfsc FSR, 7
bsf STATUS, C
movwf PCL
tbl_sin: ;sin テーブル
DT 000H,006H,00DH,013H,019H,01FH,025H,02CH
DT 032H,038H,03EH,044H,04AH,050H,056H,05CH
DT 062H,067H,06DH,073H,078H,07EH,083H,088H
DT 08EH,093H,098H,09DH,0A2H,0A7H,0ABH,0B0H
DT 0B4H,0B9H,0BDH,0C1H,0C5H,0C9H,0CDH,0D0H
DT 0D4H,0D7H,0DBH,0DEH,0E1H,0E4H,0E7H,0E9H
DT 0ECH,0EEH,0F0H,0F2H,0F4H,0F6H,0F7H,0F9H
DT 0FAH,0FBH,0FCH,0FDH,0FEH,0FEH,0FFH,0FFH
DT 0FFH,0FFH,0FFH,0FEH,0FEH,0FDH,0FCH,0FBH
DT 0FAH,0F9H,0F7H,0F6H,0F4H,0F2H,0F0H,0EEH
DT 0ECH,0E9H,0E7H,0E4H,0E1H,0DEH,0DBH,0D7H
DT 0D4H,0D0H,0CDH,0C9H,0C5H,0C1H,0BDH,0B9H
DT 0B4H,0B0H,0ABH,0A7H,0A2H,09DH,098H,093H
DT 08EH,088H,083H,07EH,078H,073H,06DH,067H
DT 062H,05CH,056H,050H,04AH,044H,03EH,038H
DT 032H,02CH,025H,01FH,019H,013H,00DH,006H
なんてこった、言うだけで誰も作らないのがPICスレなのにw
>>190 すごいけどsinは0〜90度を入れるんじゃないんですか。
(00~FFH)ってどういう意味?
>>192 sin(0度〜360度)=sin(00H〜0FFH)
mul2Wreg: ;符号無し Wreg 上位 4bit x 下位 4bit を Wreg に返す #PCLATH HIGH (tbl_mul) addlw LOW (tbl_mul) btfsc STATUS, C incf PCLATH, F movwf PCL tbl_mul: ;掛け算 テーブル DT 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H DT 000H,001H,002H,003H,004H,005H,006H,007H,008H,009H,00AH,00BH,00CH,00DH,00EH,00FH DT 000H,002H,004H,006H,008H,00AH,00CH,00EH,010H,012H,014H,016H,018H,01AH,01CH,01EH DT 000H,003H,006H,009H,00CH,00FH,012H,015H,018H,01BH,01EH,021H,024H,027H,02AH,02DH DT 000H,004H,008H,00CH,010H,014H,018H,01CH,020H,024H,028H,02CH,030H,034H,038H,03CH DT 000H,005H,00AH,00FH,014H,019H,01EH,023H,028H,02DH,032H,037H,03CH,041H,046H,04BH DT 000H,006H,00CH,012H,018H,01EH,024H,02AH,030H,036H,03CH,042H,048H,04EH,054H,05AH DT 000H,007H,00EH,015H,01CH,023H,02AH,031H,038H,03FH,046H,04DH,054H,05BH,062H,069H DT 000H,008H,010H,018H,020H,028H,030H,038H,040H,048H,050H,058H,060H,068H,070H,078H DT 000H,009H,012H,01BH,024H,02DH,036H,03FH,048H,051H,05AH,063H,06CH,075H,07EH,087H DT 000H,00AH,014H,01EH,028H,032H,03CH,046H,050H,05AH,064H,06EH,078H,082H,08CH,096H DT 000H,00BH,016H,021H,02CH,037H,042H,04DH,058H,063H,06EH,079H,084H,08FH,09AH,0A5H DT 000H,00CH,018H,024H,030H,03CH,048H,054H,060H,06CH,078H,084H,090H,09CH,0A8H,0B4H DT 000H,00DH,01AH,027H,034H,041H,04EH,05BH,068H,075H,082H,08FH,09CH,0A9H,0B6H,0C3H DT 000H,00EH,01CH,02AH,038H,046H,054H,062H,070H,07EH,08CH,09AH,0A8H,0B6H,0C4H,0D2H DT 000H,00FH,01EH,02DH,03CH,04BH,05AH,069H,078H,087H,096H,0A5H,0B4H,0C3H,0D2H,0E1H
#PCLATH MACRO rom_high LIST X=ON clrf PCLATH LIST X=OFF IF (rom_high & 0x01) != 0 LIST X=ON bsf PCLATH, 0 LIST X=OFF ENDIF IF (rom_high & 0x02) != 0 LIST X=ON bsf PCLATH, 1 LIST X=OFF ENDIF IF (rom_high & 0x04) != 0 LIST X=ON bsf PCLATH, 2 LIST X=OFF ENDIF IF (rom_high & 0x08) != 0 LIST X=ON bsf PCLATH, 3 LIST X=OFF ENDIF IF (rom_high & 0x10) != 0 LIST X=ON bsf PCLATH, 4 LIST X=OFF ENDIF IF (rom_high & 0x20) != 0 LIST X=ON bsf PCLATH, 5 LIST X=OFF ENDIF IF (rom_high & 0x40) != 0 LIST X=ON bsf PCLATH, 6 LIST X=OFF ENDIF IF (rom_high & 0x80) != 0 LIST X=ON bsf PCLATH, 7 LIST X=OFF ENDIF IF (rom_high) >= 0x20 LIST X=ON RROR "ERROR ROM ADDRESS >= 2000H " LIST X=OFF ENDIF ENDM
196 :
192 :2009/07/17(金) 01:46:50 ID:JRASCH3e
>>193 sin(0度〜360度)=sin(00H〜0FFH) 了解です。
角度からsin値を求めようとすると0.71倍(256/360)しないといけないので
面倒だと思ったけど
D/Aでsin波を作るときは 00H〜0FFHの方が便利ですね。
>>196 >>192 そこまで理解できているなら、他の人が質問していた和音の作り方も分かるでしょうね。
単純に足し算すれば良いだけですよ。
また DTMF を 合成する場合、高群は低群より 3dB 多めが求められます。
この場合、掛け算が必要になりますね。
高群用テーブルと低群用テーブル
電圧で3dB差なら1ビットシフトだけで済むんでないかね。
>>198 >>199 やり方は人それぞれで、決まった方法はありません。
PIC18F だと掛け算命令があるので1クロックで解決しますが、
PIC16F シリーズだと ROM 容量と実行時間でどちらを選択する事になるでしょう。
ちなみに認定機種を取ったハードウエアでは、高群 0xFF 低群 0xC4 ダイヤル時
回線接続後の通話状態では、高群 0xFF 低群 0xA4 でないと認定がおりませんでした。
>>199 1ビットシフトしたら電圧は6dB差では?
>>200 そのとおりだね。
>この場合、掛け算が必要になりますね。
なのに
>やり方は人それぞれで、決まった方法はありません。
はどうかと思うけど。
>>201 1ベルは10倍。3デシベルは約2倍。
203 :
774ワット発電中さん :2009/07/17(金) 09:50:48 ID:oM+MtP5/
>3デシベルは約2倍。 電圧比
>>202 さん
×この場合、掛け算が必要になりますね。
○この場合、掛け算と同様の処理が必要になりますね。
>>198 >>199 さんは ↑ の言い間違いを理解されていたようですが、
>>202 さん用に訂正させて頂きます。
言い間違いを指摘するより、テーブルが 256byte の境界を跨いでも平気な処理方法を読み取って欲しい物ですね。
間違いを認めるだけにしておけば潔いのになぁ・・・
で、3dBは2倍は変でしょ?
なんで? 3dBは10^0.3倍、つまりほぼ2倍だよ。
208 :
774ワット発電中さん :2009/07/17(金) 14:34:20 ID:cV8WhcyU
電圧では6dbで約2倍 電力では3dbで約2倍だろ >1ビットシフトしたら電圧は6dB差 は正しい
>>208 知らないなら無理しないで調べればいいのに。
10dB(=1B)は10倍。これがベルという単位の定義だよ。
211 :
774ワット発電中さん :2009/07/17(金) 15:35:47 ID:wmxO34lk
そのページを読んでそんな理解になるキミに幸アレ。 これ以上恥を晒すのは止めた方がいいですよ。
ゲインとエネルギーごちゃまぜ
>>211 ,212
たぶんID:fRIxppdzは電圧比と電力比を覚えたばかりなのでうれしく仕方が無いんだよ。
おそらくdBmとかdBvとか後ろの文字が見えるんだよ。
愚か者のわれわれには見えない、たぶん裸の王様と同じなんだよ。
普通一般的には電圧比をdBであらわす事の方が多いと思うけどどうなんだろうか?
電力比で扱う時には前提条件としてあらわされている必要があると思う。今回はそういった話はなかったと思う。
気になる人は
http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%B7%E3%83%99%E3%83%AB を見てください。
電力比をdBで話し合うケースは今まで経験ありませんでした。
どんな仕事をやると電力比をdBでやり取りするのか、詳しい人教えてください。
高周波領域ではそこそこ使うよ 増幅器とか
ああでもmは付けるよ、当然dBm
線路インピーダンスが600とか75とか50Ω固定にしてるから 電力比で話が通じる世界なんだけどね インピーダンス不定な回路での話ならふつーに電圧比使うんじゃないかな
ID:ezuDxF96さんthx
なるほど、インピーダンスが固定な世界では使われるのか。
勉強になりますわ。
ID:fRIxppdzも
>>214 さんと同じ世界の人なのかもしれないですな。
たまたま間違えただけなんですよね。
どこの人かわからないけど、関東近郊でない事を祈っています。
218 :
774ワット発電中さん :2009/07/17(金) 19:56:06 ID:oM+MtP5/
脇からすまん・・ >オペアンプなど増幅器の、入力と出力の電圧比(利得、ゲイン)をあらわす単位としても用い・・ の時は20log(Vout/Vin).一方で電圧比は10log(Vout/Vin)だとかいうと, 10dBvから20dBvにするための増幅器の利得は10dBではないってことになって なんだかややこしい?
OPアンプでフォトダイオード使うとき、1Mの抵抗つかうけど、あれ、どれぐらいまで上げていいんですか? 全然感度が足りなくて、どうしたものか悩んでいます。
低雑音のPDを選べば感度を上げられる。
>194 tbl_mulを256バイト境界に置けばもう少し簡単になりますね。
>>221 さん
そこまで読み取ってくれて、ありがとうございます。
開始アドレスが 256byte 境界になるようなマクロも作ってあります。
LINKER を使う場合でもデーターテーブルをきちんと指定すれば 256byte 境界に置けます。
今回は 256byte を超えるデーターテーブルも作れるよって意味も含めて書いて見ました。
>>213 大学で電子工学やってるけど普通は電力比を基準にする.
G = 10log_10(P_2/P_1)
電圧比を求めるときは,
P=IV ⇔P=V^2/Rより上の式は,
G = 20log_10(V_2/V_1)
dBmは1mWを基準としてるから分母は1mWで固定.dBvはwikiをみたところ0.775Vが同様に基準.
電光掲示板で8×8サイズくらいの英数字やひらがなカタカナを出したいんですけど、 どこかにデータありませんか? あとこれら全部PICのメモリに格納して瞬時に取り出したり出来ますかね?
>>224 8×8じゃひらがな無理。
それとプログラム組めるならPCのフォントから簡単に作れる。
ちなみに英数カナは8×5
ひらがなは16×14くらいかな
>>それとプログラム組めるならPCのフォントから簡単に作れる。 すいません参考サイトとか無いですか? 一応アセンブラなら組めますが、やり方わかんないです… あと昔のファミコンとかは8×8でひらがな表示してませんでしたっけ?
>>226 今時PCでアセンブラ使う奴なんていないと思うが…
EXCELでもワードでもペイントでも何でも良いがフォント張り付け希望のドットサイズにスケーリングしビットマップを作る。
それのドット単位で色を読み取り白は0、黒は1としてこれをバイト配列に直す。そんだけ
ひらがな8×8がよめるか試してみれば?
>>227 そういう意味でしたか
PICのアセンブラなら組めるって意味です
Cとかでビットマップを変換するプログラムを自分で作るって事ですね
なんかフリーソフトとかで無いですかね?
探してみます
> 6sfA8Ipm おい、若いの。 8*8もあればひらがなは楽勝だ。 実際には文字間を取るために7*7で作るんだがな。英数カナは5*7。 > ひらがな8×8がよめるか試してみれば? もう少し歴史を勉強してみれば? ドット画なんぞ、想像もつかんと思うが、
>>227 昔8x8で2ビットで「愛」って書いてくれたデザイナーが居たw
すごかったな
ドット職人懐かしいな
MSXは8*8でひらがな出た
>>233 そして高解像度モードでは6ドットフォントという奇っ怪な仕様のせいで欠けた…
>>235 ちょっと前に流行った、↓みたいだな
こんちには みさなん おんげき ですか? わしたは げんき です。
この ぶんょしう は いりぎす の ケブンッリジ だがいく の けゅきんう の けっか
にんんげは たごんを にしんき する ときに その さしいょ と さいご の もさじえ あいてっれば
じばんゅん は めくちちゃゃ でも ちんゃと よめる という けゅきんう に もづいとて
わざと もじの じんばゅん を いかれえて あまりす。
どでうす? ちんゃと よゃちめう でしょ?
PIC18F2550のSPIってバグあるっぽいな。
なんか1ビットずれるなと思ってオシったら、SSPEN=1したときに1クロック出てきてしまうようだ。
SPIクロック下げてもこの1クロックの幅は変わらないからPICkit2ロジアナでも見られない。
オシロ無かったらこんなの気づかないぜ。SPIはMPLABSIM出来ないし。
対症療法的にSPI起動ルーチンはこうしてみた。
TRISBbits.TRISB1=1;
SSPCON1bits.SSPEN=1;
TRISBbits.TRISB1=0;
>>235 ひらがななら読めるだろと思っていたがこれは驚いた
>>238 サンクス。やっぱりTRISで回避か…
根本的なやり方はないわけねw
でもSCKはTRISのほうが優先度高くて良かったな。
SDIピンはTRISの設定無視らしい。
240 :
774ワット発電中さん :2009/07/19(日) 18:34:47 ID:kNrSUjqz
>>238 PIC18F2550 使ってるが、
errata の設定、SSPSTAT の、CKE = 1 だと、
SSPEN = 1 (CKP は 0)にしたとき、短いHighグリッジが出るようだ。Fosc/2
ただし、CLK ポートの出力ポートが0に設定されているとき
という条件もある。(電源ONでは0みたい)
1だと、TRISB のbit1 = 0 にしたとき、Highになって、
SSPEN = 1 にしたとき、立ち下がるので、グリッジではなく、
ポートの初期設定操作による、 CLK の初期動作となる。
ここで、PORTB = 0x7, PORTC = 0x79, としておいて、ポートI/O設定を
TRISC = 0x79, TRISB = 0xF9 などとすると、CLK はHighになるが、
クロックのアイドル状態をHighでSPIを使う設定だと、
SSPTSAT = 0, SSPCON1 = 0x32 となり、ちょうど逆の使い方だが、
グリッジは出てこない
ttp://bitcraft.web.fc2.com/embedded/microchip/microchip.html#ctlsdcard1
おいら結構年配で、ドットフォントも知ってるつもりだったが、 最近、ここのスレッドの話題はためになると思う。
ここで質問することか微妙だけど、PICでやった人もいそうなんで。 一列に並べたLEDを直角方向に動かすと、残像効果で平面に文字が 浮かんで見える・・・アレってなんて呼ぶんでしょう。
残像発生器・・・・?
バーサライト
マトリクスLEDの面を往復運動させて立体に見せるのもあったな。
秋月で売られているUSB搭載のPIC18F14K50について質問させてください。 USB送受信時のVDDはどこまで下げられますでしょうか? FOSC=48MHzでのVDDの動作範囲が2.7〜3.6Vになっていますが、2.7Vじゃ無理ですよね。 VUSBに3.3Vを供給すればVDDが2.7Vとかの逆ザヤでも動作するのでしょうか。
>246 データシートの ELECTRICAL SPECIFICATIONS の Absolute Maximum Ratings の note 2 に Vusb must always be < Vdd + 0.3V とある。 18LF2550では本文中にあった注意書きの位置が変わったんだな。 わかりやすくなったから良いんだけど、ちょっと迷ったわ。
>247 ありがとうございます。 つまり、最低VUSBの3.0Vを外部供給して、VDD=2.7Vが最低動作条件なのですね。 LなしシリーズのLDO通してもこれでOKなのか不安だにゃあ。 さすがにUSBをLowSpeedで動作させても 2.5Vや1.8VでI2Cインターフェースとか無理なんですね。
> 2.5Vや1.8VでI2Cインターフェースとか無理なんですね。 3端レギュと、レベルシフタとかFETとか使えば十分だ
251 :
natu :2009/07/20(月) 09:19:14 ID:SICEHhlo
>>249 3V電源があればVCCとVUSBをショートして使用すればOK。
2.7Vしか無いのなら、ちょぴり早いPICで...
VDD<VUSBは、個人的にはお勧めしないなぁ。個人的には
PIC18F14K50 安くて小ピンでUSB搭載とはすばらしい。 Freescaleの石買っちゃったからもっと早く出してほしかった。 VDD3V系いけるのはありがたい。18F2550だとVDD下げれなかったから。
Freescaleはライタ不要なのとオンチップデバッガ内蔵なのが美味だね
>250 3端レギュと、レベルシフタとかFETとか使えば十分だ I2Cでどうやって電圧シフトするのかやりかた教えてくれ。 双方向、しかもハイインピーダンス状態をも伝送する必要があって なかなかむずい。
256 :
natu :2009/07/20(月) 13:14:01 ID:SICEHhlo
>255,256 なるほど。だんけ。 しかして使えるFETに心当たりが無い ... 2Vでスイッチできる高速MOS FETをそのへんで売ってるのから探すと 2SK1062, 2SK1847, 2SK2009 くらい? ほとんど話に聞かないFETだ。
>>257 VGS=2.5V, ID=3mAでRDS(on)が100Ω以下ってことは、低VTHタイプでなくても、
たいていの小容量パワーMOS FETでOKなんでないかね。
たとえば秋月にある2SK1772(15個200円)
http://akizukidenshi.com/catalog/g/gI-00737/ 4V駆動と書いてあるが、データシートの特性表を見るとVGS=2VでIDが0.1A弱取れる。
ということは、VDS=5Vとして等価RDS(on)が50Ω強。同じくデータシートから、Cissは85pFで
100pF以下をクリア、ton,toffも50ns以下をクリア。
大容量のパワーMOS FETだとCissがクリアできないけどね。
260 :
774ワット発電中さん :2009/07/21(火) 15:24:55 ID:+NHyhifT
突然の質問失礼致します. PIC18F8720で内部発振させるにはどのようにしたら良いのでしょうか? OSCCONはあるのですが,OSCのコンフィグのところで 「LP,XT,HS,HS+PLL,RC,RCIO,EC,ECIO」しかなく,どのように設定して良いのか わかりません. ちなみにコンパイラはMPLAB C18 C Compilerです. 教えていただけると幸いです.
>>260 18F8720には内部発振(INTOSC)無いよ。WDTは別として
OSCCONは1bitだけだしな
18F8722あたりに置き換えたらどう?
262 :
774ワット発電中さん :2009/07/21(火) 16:50:04 ID:+NHyhifT
>>261 774ワット発電中さん,ご回答いただきありがとうございました.
CCS社のコンパイラの方で
use delay(CLOCK=2000000)
が使用できたので内部発振できると思っていたのですが,出来ないのですね..
ttp://www.picfun.com/pic18/mod1804.html 現在,1.25MHzで動作しているのですが,
上記のページを見て,2400bpsで読み込みたかったので,
内部発振できたらなぁと思ったのですが...
263 :
774ワット発電中さん :2009/07/21(火) 20:16:10 ID:+cvp/0z6
がちで困ってる。PICアセンブラでスイッチPORTB,0長押しで電源OFFというプログラム。 割り込み時に判別したいんだがアイデアくだぱい。
264 :
242 :2009/07/21(火) 20:20:35 ID:3rsooWgR
レスありがとう。 バーサライト or バーサライタ ね。 ところで「バーサ」ってどういう綴り?
versa light
>>263 タイマーで一定時間ごとにスイッチをチェックにいって長押しの時間を計ればいいじゃないか。
>>263 個人的には電源をきれる回路の方を知りたいがw
タイマ割り込み時にボタンが押されてなかったらカウンタをリセット、
押されてたらカウンタを加算、
一定値を超えたら長押しした、
でいいじゃん
>>265 ググっても、それっぽいのがぜんぜんかからないんだけど・・・
>>266 キーボードなんかはそうやってるよね。
POV じゃだめか
270 :
774ワット発電中さん :2009/07/21(火) 21:01:51 ID:+cvp/0z6
263だが返事ありがとう。
初心者過ぎて分からないことがいっぱい。
>>267 押されてる間のカウント加算てどうやるんだ?
ごめん、電源オフ言うかスリープってことw
271 :
774ワット発電中さん :2009/07/21(火) 21:04:06 ID:+cvp/0z6
263だが返事ありがとう。
初心者過ぎて分からないことがいっぱい。
>>267 押されてる間のカウント加算てどうやるんだ?
ごめん、電源オフ言うかスリープってことw
質問があるんですが。 PIC18F2550にはVss端子が2つありますが、 そのうちひとつだけしかGndに接続しなくても大丈夫でしょうか?
>>272 どうして2つともGNDにしたくないの?
なぜ2本出ているのかを考えてみて欲しい。
2本出ているというところに、メーカーの気持ち(お願い)が読み取れない?
>>270 if(SW==ON) count++;
else count = 0;
じゃね?
>>273 PICはいろいろ親切なので、
配線を回せないときのために、設計者が上からでも下からでも
GND線を接続できるようにしてあるメーカの心遣いが読みとれます。
>>275 じゃ、片方のGNDだけで動作させてみれば良いじゃん
簡単に実験できるでしょ?
VddもVssも複数あるタイプのがあるけれど、負担を分担しているとか、使いやすいのを1つだけでいいとか、本当はどうなんでしょうか?
最近、RCサーボ弄り出したのですが、貧乏性なせいか8ピンの12F683で丁度良いと思いまして、 そうなると、PICkit2は不便だし、未だに売っている秋月ライターでは対応していないし、結局マルツライターを使っています。 みんなはどうですか?そういや、この前秋月でPICkit3を見てきた。
12F615と683両方ストックして使い分けてるけど 趣味工作で月に一個くらいしか使わないから、 683に統一した方がかえって面倒が無いと最近思い始めた。 初期化手順微妙に違うから、いちいち過去のコード見返すのマンドクセ
12F629と12F675を昔使い分けてたときは、両対応の初期化コードを書いて使いまわしてた
PIC12Fガイドブックがどうしてないのですか?
必要ないからじゃないかね
必要なくてもつい買っちゃう俺みたいな人がいるというのに。
すると、そのうち PIC10Fガイドブックがどうしてないのですか? PIC18Fガイドブックがどうしてないのですか? とかドンドン増えてくる予感
18Fは後閑氏のがあるね。 12Fは16Fの本があれば困らない。 とmjrs
>>272 >>275 >>277 PICにVssが2つあるものは、両方ともGNDにつなぐべきだと理解してます。
回路面積の広いPICは、多数のGND接続で設計し、安定稼働をする様にしているのだと
理解してます。
288 :
774ワット発電中さん :2009/07/22(水) 19:30:01 ID:GFjxe4OU
無線で信号を受信したらLEDを点灯させようとプログラムを作成したのですが, コンパイルできません. なぜ出来ないのか,分かる方教えていただけないでしょうか? -------------------------------------------------------------------- #include <p18f8720.h> #include <config.h> #include <usart.h> //***Configuration Bit の設定 (省略) ***// //***プロトタイプ void init_io(void); char getcUSART(void); char DataRdyUSART(void); void main(void) { char cmnd; TRISC = 0x80; //configure USART OpenUSART(USART_TX_INT_OFF & //送信割り込みの禁止 USART_RX_INT_OFF & //受信割り込みの禁止 USART_ASYNCH_MODE & //非同期(調歩)モード USART_EIGHT_BIT & //8ビットモード USART_CONT_RX & //連続受信モード USART_BRGH_LOW, //ボーレート:低伝送速度モード 129 ); //20MHz,2400bps while (1) { while (!DataRdyUSART()); //RC7に1バイトのデータが受信完了となるのを待つ cmnd = getcUSART(); //受信データを読み込む if(cmnd!=0) PORTD=0xFF; //LED1〜8 点灯 } CloseUSART(); } --------------------------------------------------------------------
12F全般ではないが「おもしろいPICマイコン PIC12F675を使いこなす」はわかりやすかった。 厨房の時にこのスレで紹介してもらって、読んだらすぐにPIC使えた。
>>288 > #include <usart.h>
>
> //***Configuration Bit の設定
> (省略)
> ***// <<--------------- ここでシンタックスエラーになるな
291 :
774ワット発電中さん :2009/07/22(水) 20:23:40 ID:GFjxe4OU
>>290 ご回答いただき,ありがとうございます.
「***//」これを普通のコメント「*/」にしたのですが,
だめでした...
どの行でなんというエラーになるか位書くべきだと思うが
>>291 釣り?とも思うが、それを書くなら
//***Configuration Bit の設定
を
/***Configuration Bit の設定
ってのも書いてくれよな。
>>291 どこでコンパイルエラーが出るのか書いたら?
8720は usart1/2 あるから区別しないとな
というかコンパイルエラーを書けよ
>>282 教材探してるなら、Gooligum Electronicsでぐぐると幸せになれるかも
>>291 「***//」の一行を削除
が、いいんじゃないかなぁ。
299 :
774ワット発電中さん :2009/07/23(木) 10:00:41 ID:jIhokw30
おはようございます.
皆様ご指摘ありがとうございます.
そうですよね,コンパイルエラーを書かないといけませんよね…
すみません
>>295 さんのおっしゃる通りUSART1,2がありましたので,
とりあえず今から調べてみたいと思います.ありがとうございました.
300 :
774ワット発電中さん :2009/07/23(木) 10:02:53 ID:jIhokw30
>>299 プログラムは以下のようにしました↓
#include <p18f8720.h>
#include <config.h>
#include <delays.h>
#include <timers.h>
#include <usart.h>
//Configuration Bit Settings
#pragma romdata CONFIG=0x300001
unsigned char rom _CONFIG1 = OSCSEN_OFF_1H & HS_OSC_1H;
unsigned char rom _CONFIG2 = BORV_42_2L & BOR_ON_2L & PWRT_ON_2L;
unsigned char rom _CONFIG3 = WDTPS_16_2H & WDT_ON_2H;
unsigned char rom _CONFIG4 = 0x83;
unsigned char rom _CONFIG5 = CCP2MX_RC1_3H;
unsigned char rom _CONFIG6 = DEBUG_OFF_4L & LVP_OFF_4L & STVR_ON_4L;
unsigned char rom _CONFIG7 = 0x00;
unsigned char rom _CONFIG8 = 0xff;
unsigned char rom _CONFIG9 = 0xc0;
unsigned char rom _CONFIG10 = 0xff;
unsigned char rom _CONFIG11 = 0xe0;
unsigned char rom _CONFIG12 = 0xff;
unsigned char rom _CONFIG13 = 0x40;
//Configuration Bit Setttings END
//プロトタイプ
void init_io(void);
char getcUSART(void);
char DataRdyUSART(void);
void main(void)
{
char cmnd;
TRISC=0x80;
TRISD=0x00;
//configure USART
OpenUSART(USART_TX_INT_OFF & //送信割り込みの禁止
USART_RX_INT_OFF & //受信割り込みの禁止
USART_ASYNCH_MODE & //非同期(調歩)モード
USART_EIGHT_BIT & //8ビットモード
USART_CONT_RX & //連続受信モード
@→ USART_BRGH_LOW, //ボーレート:低伝送速度モード
129 ); //20MHz,2400bps
while (1)
{
while (!DataRdyUSART()); //RC7に1バイトのデータが受信完了となるのを待つ
cmnd = getcUSART(); //受信データを読み込む
if(cmnd!=0)
PORTD=0xFF; //LED 点灯
}
A→ CloseUSART();
}
301 :
774ワット発電中さん :2009/07/23(木) 10:03:35 ID:jIhokw30
>>299 コンパイルエラーは以下のようになりました
@→…Warning [2058] call of function without prototype
A→…Warning [2058] call of function without prototype
Error - could not find definition of symbol 'CloseUSART' in file 'Z:\(保存先)\test_usart.o'.
302 :
774ワット発電中さん :2009/07/23(木) 10:06:03 ID:jIhokw30
>>299 コンパイルエラーは以下のようになりました
@→…Warning [2058] call of function without prototype
A→…Warning [2058] call of function without prototype
Error - could not find definition of symbol 'CloseUSART' in file 'Z:\(保存先)\test_usart.o'.
303 :
natu :2009/07/23(木) 10:32:11 ID:oYTBX0wb
>>301 エラーメッセージに『こんなの、初めて!』と書いてある。
あなの使っているPICは、AUSART_V2のタイプだから
もう一度"usart.h"を読んで正しい関数名を探しましょう。
304 :
774ワット発電中さん :2009/07/23(木) 10:53:42 ID:jIhokw30
>>303 さん
ご回答,ありがとうございます.
今"usart.h"を読んでプログラムを直したところ,
見事コンパイルすることが出来ました!
今度からヘッダファイルの中身もきちんと確認したいと思います.
皆様本当にありがとうございました.
さっそくPICに焼いて試してみたいと思います.
プログラムは以下のようになりました.
#include <p18f8720.h>
#include <config.h>
#include <delays.h>
#include <timers.h>
#include <usart.h>
//Configuration Bit Settings
(同じなので省略)
//Configuration Bit Setttings END
//プロトタイプ
void init_io(void);
void main(void)
{
char cmnd;
TRISC=0x80;
TRISD=0x00;
//configure USART
Open1USART(USART_TX_INT_OFF & //送信割り込みの禁止
USART_RX_INT_OFF & //受信割り込みの禁止
USART_ASYNCH_MODE & //非同期(調歩)モード
USART_EIGHT_BIT & //8ビットモード
USART_CONT_RX & //連続受信モード
USART_BRGH_LOW, //ボーレート:低伝送速度モード
129 ); //20MHz,2400bps
while (1)
{
while (!DataRdy1USART()); //RC7(RX1)に1バイトのデータが受信完了となるのを待つ
cmnd = getc1USART(); //受信データを読み込む
if(cmnd!=0)
PORTD=0xFF; //LED 点灯
}
Close1USART();
}
305 :
774ワット発電中さん :2009/07/23(木) 15:21:49 ID:OTJoRiWi
タイマー0での割り込み中にタイマーを止めて 長い処理をこなす正しい方法を教えて下さい。 メインループは無限ループするだけなので、 一時的にタイマー0を止めるだけでいいのかなと思い、 割り込みルーチン内で bcf INITCON,GIE 長い処理 bsf INTCON,GIE とか bcf INITCON,GIE bcf INTCON,T0IE 長い処理 bsf INTCON,T0IE bsf INTCON,GIE とか書いてみたんですが、長い処理がある場合はうまく動きません。
その長い処理のときに、他の割り込みを監視しなくても良いのなら、 その方法でいいんでないかな。 でも複数種類の割り込みを取りたければ、mainで処理するしかないと思うけど。
>>305 GIEとめてるってことは、割り込みの禁止よね?
タイマーは止まってないから
割り込みから抜ける寸前にT0IF消さないと、割り込み止めてる間に立ったT0IFで
割り込み許可した瞬間上からもういっかい割り込むんでねかな?
割り込み止めないで、多重割り込みにして、処理中フラグ1つ持って…とかは変態か
>>310 それで悩んだことあるなぁ
デバッガのWatchかなにかでフラグやカウンタを見つめてて
やっと気付いた
つか、せっかくタイマー使って周期的に割込みかけてんのに 長い処理で規則的な割込みを間引いちゃっていいのか? 割込みタイミングに時間的な規則性を求めないなら処理中にカウントクリアすれば? もしくはプリスケーラ上げてカウントアップを伸ばすとか
313 :
774ワット発電中さん :2009/07/23(木) 20:20:17 ID:OTJoRiWi
>>310 bcf INTCON,T0IE してもT0IEは立ってしまうんですか?
うまく動かないってどうなるの? 何も考えずにその長い処理とやらを進めればいいのでは? 割り込みルーチン中ではGIEはクリアされてるんじゃなかった? RETURNとRETFIEの違いをもう一度確認してみ
ところで 周期割り込みのなかで周期を超える処理をするってのは、普通はやっちゃいけないこと。 という認識はあるのだろうか。
度々スマン。他のマイコンの感覚でカウンタスタートレジスタって書いたけど、PICには無かったっけか。
>>315 そういうことなんですね。動かしたつもりではなくてもT0IFのクリアは忘れずにってことですね。
>>316 フラグが溜まらないように気をつけて、尚且つ仕様が許せばやってもいいような気がするんですが
>>318 それだったら最初から割り込み周期をもっと長くする方が何かと楽
割り込みルーチン内で処理せずに割り込みで適当な変数フラグ立てれば良いじゃん。 その変数フラグをメインループ内でポーリングして処理すれば良いんでねぇの。 何処までリアルタイム性を求めるか知らんが・・・
>>318 プログラムの思想としてね。
やってもいいし実際動くけど、もう少し凝ったことしようとしたとき、多分さばききれなくなる。
あと
わざわざ作った周期を破壊してまで周期割り込みの中でやるのって矛盾してない?
>>321 処理のリアルタイム性が欲しい部分っていうのは出力(結果)だから
ポーリングで処理をして、割り込みで最終最後の処理と出力を出せばいいかと。
出力自体はリアルタイム性を保てるし、割り込み待たさないし、
間に合わなくても1回休み(前回値)なだけだし。
>>305 『船頭多くして船山に登る』になると困るけど・・・
長い処理 = (短い処理 + 変化待ち + 時間待ち)* n 回
↑のように分解できるなら、 n = 処理ステップ番号 として
短い処理だけ済ませて、他の処理のために CPU を明け渡す方法もあるよ。
次回 CPU の処理順番が回ってきたら n で何をすれば良いか判断するのね。
目的がなんなのかわかりませんが、アセンブラなら
>>321 さんの手法がPICでは一番良いかと。
アーキテクチャの話になり、長くなるので…。
16系しか使った事がないですが、割込みルーチン内では
「要因を調べる」という視点に変えてみてはどうでしょう。
意図的に別のフラグを利用して、多重(という意味より、抜けた直後に
また割込みにひっかける)にする事もありますが…。
>>322 さんの志向もわかりますが、間に合わなくても〜という
のはちょっと危険な気がします。なので前回値という表現を
したんだとは思いますが。
(前回値が連続するとわかっているなら、受け側との相対性は
保たれるという事でしょう。業務レベルならリトライ・タイムアウト
の処理は必須ですね。)
>>315 さんの「ANDを取って〜」というのがポイントかと思います。
データシートに割込みをロジック図で表したページがあると
思います。PICの周辺IFを活用する場合は押えておきたい所かと。
長文スマソ。
結論ですが、なんとなくTMR1のほうが適しているような気がします。
タイマーではなく、長い処理を主役にするという考えです。
秋月のpickit2互換のライターってどうですか?
どうって何が?
秋月ライターの4.0持っているのですが、今は6.0辺りまであるそうです。 バージョンアップするか、pickit2互換ライターを新たに買うか迷っています。
pickit2買った方が早いw
>>325 ZIFソケット付いてるけどPIC24やdsPICとは合わない。
あと、ターゲットをソケットに挿して焼くよりICSPの方が楽だし安全だよね。
>>325 akipic2のことか?
使っているが高いだけじゃね。
ISPとゼロプレシャーとどっちも使えるってだけがとりえ(オレ的には)
マルチはしないように!
偉そうな書き方してたスマソ
PIC18F2550でSPI使おうとしているんだけど、SSPBUFにmovffで書き込むのは駄目なのかな? クロックは出るんだけどデータが出たり出なかったりする。 movffをmovf→movwfに置き換えたらちゃんとデータ出てきた。
教えてください MPLAB SIMの使い方で、 出力のPORTAや変数の値は可能なのですが、 入力に設定したPORTBの値が変更できません PORTBはスイッチに接続予定でONOFFのシミュレートをしたいのです よろしくお願いします
336 :
natu :2009/07/26(日) 10:13:08 ID:Q9LlNEHE
>>333 high priorityの割込み使ってる?
337 :
334 :2009/07/26(日) 10:23:15 ID:kfFBGTJZ
>>336 使ってない
Wレジスタを保持する必要もないからmovf→movwfにしておく
ちなみにデータが出ないというのはちょっと語弊があって、0x00が出てくるという意味でつ
339 :
774ワット発電中さん :2009/07/26(日) 12:21:14 ID:jS8HFu6q
>>338 moveff regxx,SSPBUF で送信のあと、
movef SSPBUF,w などで読んでる?
読まないと正しく送信できないことある。
340 :
774ワット発電中さん :2009/07/26(日) 12:25:02 ID:jS8HFu6q
339 moveff --> movff movef -->movf の誤り。スマン
>>333 >>338 SCK出力あるなら SSPBUF writeしてるんだろうし
データが0x00なら movff fs,SSPBUFのfsアドレス指定がおかしいとか
それ以前にfsへのデータ代入が間違ってるとか・・・??
>>339 今度弄るときにやってみる
>>341 こんな感じでmovの方法変えるだけで動くから読むレジスタがおかしいってことはないと思う
FSR0にはUSBバッファの0x500を入れてます。
問題のコード
btfss SSPSTAT,0,ACCESS
bra $-1
movff POSTINC0,SSPBUF
decf cnt,F,ACCESS
bc -6
問題ないコード
btfss SSPSTAT,0,ACCESS
bra $-1
movf POSTINC0,W,ACCESS
movwf SSPBUF,ACCESS
decf cnt,F,ACCESS
bc -6
>>342 × bra $-1 と bc -6 は
○ bra $-2 と bc $-6 の 間違いでしょうね。
DS39632D-page 332 に PCL, TOSU, TOSH または TOSL は、destination register に使えませんの
解説があるけど これにも該当しない。Errata にも記載は、ありませんでした。
moveff の ソースとディストネーションが同時に SFR 領域だと誤動作するのかな?
CPU の隠れバグだとすると POSTINC0 が間接指定で両方が SFR 領域だからかな?
深く見てないが bra $-1 って拙くないか? bc -6 は抜け出せんの? decfsz なの?
345 :
774ワット発電中さん :2009/07/26(日) 16:04:04 ID:jS8HFu6q
>>342 コード見ました。
2点注意あります。
1、SSPSTAT のビットテストは、直接しない。Wに読んで、btfss WREG,0
2、SSPSTAT の BF bit は、SSPBUF を読まないとクリアできない。
よって、次のポーリングで、すぐに1を検出するのでは?
SSPBUF に送信するとき、まだ送信中に書くと、SSPCON1 のbit 7 が
1になってるはず。(data sheet 39632D page 196)
以上、実際のソフトで確かめたよ。アプリは、SDカードだけど、
以下に確かめたソースを載せておきます。
http://bitcraft.web.fc2.com/embedded/microchip/pic18fsdt2.asm chksdcardcc 223行の場合、送れないのでSDカードが応答しない。
chksdcardc 251行の場合、送れるので、SDカードが返答する。
だが、movf --> movwf で送信すると、読まなくても送れるのは
なんでだろうね?よくわからん。これも確かめて、SD読めた
今、一番熱いPICは何かな?
>>346 現行品で損失(発熱)の大きい奴って事か?
dsPIC30Fあたりがいちばん発熱するんでないかね。
349 :
774ワット発電中さん :2009/07/27(月) 23:43:15 ID:phJ0XqXe
押しボタンスイッチ押してスリープでPWRオフにしら次の瞬間割込みでPWRオンになてなけます 助けてくだせえ
+−逆に繋いだPICが一番熱いんじゃない?
>>346-350 ワロタ
>>349 状態変化割り込みならスリープする前にチャタリングは、取ろうね。
ソフトで取れないなら CR のハードウエアでも可。
>>349 見た目は押したらスリープでも、実装上はスイッチが確実に離れたことを確認してからスリープに入るのだ。
353 :
774ワット発電中さん :2009/07/28(火) 00:06:25 ID:czVBKGy3
349だが説明が不足していた、押したらSLEEPしてLEDやら消えるのだが 放したら放した時の割り込みでPWR ONしてLED点灯するんだ。 BTFSSやら駆使しても上手くいかない。
で、本当はどうしたいの?
>>353 今見たばかりだし、特に詳しい俺は詳しいわけではないが、
ふつーに考えて、
スイッチはチャタリングがあるんだから、
変化割り込みなんかでスイッチを扱うのは邪道中の邪道。
mainでのポーリングもしくはタイマ割り込みでのポーリングに変更して、
普通にチャタリング除去処理した上でHiかLoを見るようにするか、
ハードでチャタリング除去した上で外部割込みを使うか
でしょ。
ソフトが面倒ならとりあえずスイッチと並列に0.1〜0.01uFいれてみて スイッチの挙動に変化がでるかを見れば、チャタリングかは分かるだろ 部品点数が増えるのがヤなら皆が言うようにソフト側でスイッチの不応期間を 設定するのが吉かと
あとINTEDGを立ち下がりにするとか
>>353 > 放したら放した時の割り込みでPWR ONしてLED点灯するんだ。
>>352 は、放した時の割り込みでsleepしろと言ってるのでは?
PIC18F2550のEUSARTを同期送信に使う時、データシートではSPBRG=0で使えるように書いてあるけど、SPBRGが1以上じゃないと正常に送信できないんだが。
回路図とソース出して聞かないあたりPICスレらしさが出てるね
とりあえず、アレか?とみんな同一のものを頭に描いたから簡単にレスがもらえた。
会社でPICの勉強を始めたとこだけど、 趣味で作るのに良さそうな例って何かない? 温度計とか作っても仕方ないし
7セグLEDで時計
時計もわざわざ作らなくても安く売ってるしなあ
ラーメンタイマー。 時間が来ると鳴るやつ。
>>362 最近暑かったので今、秋月の温度計キットを組み立てている。
もちろんPICはない。しかし、どうしてこれが楽しいものだ。
とりあえず、この温度計キットをPICでやるには、
LM35 温度センサ
ADC付のPIC
C552-SR キットに入っていた2桁LED 別に何でもいい。
他に必要なものは、LM35のデータシートとかLEDのデータシートとか
PICのデータシートとかで抵抗やコンデンサや3端子レギュレーターやらを揃えるといい。
どうだい?楽しそうになってきただろ?
ちなみに、秋月のはブレッドボード仕様だが、5×8センチくらいのユニバーサル基板で作った。 作ってみると狭かった。しかし、配線パターン見てると幸せな気分になってくる。
368 :
359 :2009/07/29(水) 01:53:09 ID:sLQ0b8lO
検証用に以下のソースで調べたところSPBRGの値を0に変えた時に挙動がおかしい。 SPBRG=1でCK6MHz、DT3MHz(10101010)、RC2が8CK毎にトグルする正常動作を確認。 SPBRG=0とすると、CK12MHz、DT1.5MHz(0111111)、RC2はトグルしない。 ここからわかることは、 ・永遠にTXIFフラグが立たない ・TXREGには一回しか書き込んでいないのにずっと送信が続く ・送信されるデータはTXREGに書き込んだ値と全く異なる TRISCbits.TRISC6=1; TRISCbits.TRISC7=1; BAUDCON=0b00010000; SPBRG=1; TXSTA=0b10110000; RCSTA=0b10000000; while(1){ LATCbits.LATC2^=1; TXREG=0xAA; while(!PIR1bits.TXIF){}; }
>362 PICライター。 これ基本。
>>362 なぜ温度計がしかたないの?
勉強中なら、どんなテーマでも勉強だと思うけど。
もしかしたら、やりたくないんじゃない?
>>371 実用性を求めてるんじゃないの?
0.1℃単位の温度計が1000円でお釣りが来るから割に合わないとか。
そういう意味であれば周波数カウンタはお勧め。
市販品は安いものだと素のクリスタルらしいから秋月のTCXO使えば安くて高精度なものが作れる。
正確な周波数カウンタなんて自分で高精度な水晶発振回路を作りたいとかでもないと必要なものではないんだけどね。
373 :
natu :2009/07/29(水) 19:00:56 ID:sN+qqyZx
>>368 TXIF=1の時、TXREGへデータが書かれるのは、そのサイクルのQ4ステート。
TXREGへデータが書かれたのでTXIF=0になるのは次のサイクルのQ4ステート。
TXIFを読み出すのは、サイクルのQ2ステートになる。
>TXREG=0xAA;
>while(!PIR1bits.TXIF){};
コンパイル結果は、フリー版でも
movwf TXREG...1
btfss PIR1,...2
こんな感じ。
1でTXREGに書込んだ結果、TXIF=0になるのは、2のQ4ステートだけど
btfssでビットを読むのは、そのサイクルのQ2なので、TXIF=1を読む。
1と2の間に、
Nop();
を入れると12MHzで動くような気がする。
これは、クロック6MHzでも同じなので旨く行っているのは、??わからん。
>>369 確かに
PICライターは会社にはあるけど個人でも欲しいので、こっそり焼こう
マニュアル読んでたけど、キャリーフラグはなんでこんな仕様なんだ?
375 :
359 :2009/07/29(水) 21:51:45 ID:sLQ0b8lO
>>373 どうもです。
確かにNop入れないとまずそう。でもNop入れても改善せず…
TXIFが立たないようなのでSPBRG=0でループを以下のようにしてみた。
while(1){
LATCbits.LATC2^=1;
TXREG=0xAA;
Nop();Nop();Nop();Nop();
Nop();Nop();Nop();Nop();
}
8個のNOPがあるので、転送は間欠になるはず。ところがこんな感じになった。
http://sa89a.net/up/src/up0129.jpg ちなみに波形が鈍ってるのは19年物のプローブのせい。CKのプローブだけは新品。
>>374 >マニュアル読んでたけど、キャリーフラグはなんでこんな仕様なんだ?
「CARRYが正論理でBORROWが負論理」のことなら、よくある仕様だよ。
SPARCだったかMIPSだったかもそういう仕様じゃなかったかな。
>>374 引き算をしていないだけで、
2の補数の足し算で代用しているからですよ。
大昔の PIC16C 時代の2桁型番の時、Wreg=0x00 の時 CY フラグが誤動作したのはナイショなのだ。(笑)
おお、判りやすい やっぱり利便性とかじゃなくて手抜きか
引き算という概念は存在しないのだがな。
>>379 引き算の概念が存在しないとしても構わない、
Z80 では、DAA 命令において直前の命令が引き算だったかどうかのフラグを保持しており
足し算時と引き算時とで補正のアルゴリズムが異なるのをちゃんと理解して補正演算してくれるよ。
PIC の場合は 18シリーズでも加算命令後しか使えません。
結局不便なので、私は全て 16進で加減乗除演算させておいてから 10進に変換してまする。
381 :
FR :2009/07/30(木) 07:05:34 ID:duGvDXBa
Pic初心者です。Picは12F675でコンパイラはHI-TECH PIC C Compilerを 使って10分たったらブザーがなるようなプログラムを作りたいんですが どうやって作るんですか??アドバイスお願いします。
この板はわざわざソースコードや回路図までupしてまで教えてくれるほど親切ではないのでい。ググレばいくらでもあります、 それで判らないところは、ご自身でソースなり回路図をupすればアドバイスいただけるでしょう
384 :
natu :2009/07/30(木) 09:57:10 ID:dk/dZ0CV
>>375 手元のロガーが2550を使っていたので試してみた。
http://sa89a.net/up/src/up0130.jpg 上が
>>368 のプログラム、下が
>>375 のプログラム
それ以外は、共通で↓
#include <p18cxxx.h>
#pragma config PLLDIV=1, CPUDIV=OSC1_PLL2, USBDIV=2, FOSC=XTPLL_XT, FCMEN = OFF
#pragma config IESO=OFF, PWRT=OFF, BOR=ON, BORV=2, VREGEN=ON, WDT=OFF, WDTPS=32768
#pragma config MCLRE=ON, LPT1OSC=ON, PBADEN=OFF, CCP2MX=OFF, STVREN=ON, LVP=OFF
#pragma config XINST=OFF
void main( void )
{
TRISCbits.TRISC6=1;
TRISCbits.TRISC7=1;
TRISCbits.TRISC2=0;
BAUDCON=0b00010000;
SPBRG=0;
TXSTA=0b10110000;
RCSTA=0b10000000;
while(1){
下のは正常に送信してると思う。
385 :
natu :2009/07/30(木) 09:59:41 ID:dk/dZ0CV
連投ごめん revision=a3 のPIC18F2550だ。
>>381 エディタでソースコードを打ち込むんだよ。
エディタが無ければnotepadでもOK。
コメント以外での漢字とかの全角コードはコンパイルでエラーになるからね。
ヘッダファイルのパスを指定するのを忘れずに。
>>381 PICkit2を使った簡単な実験用回路はこんなんで
ttp://www5.uploda.tv/v/uptv0036097.png プログラムはこんな感じで
#include<pic.h>
#define _XTAL_FREQ 4000000
__CONFIG(INTIO & WDTDIS & PWRTDIS & MCLREN & BORDIS & UNPROTECT);
void main()
{
TRISIO = 0x3E;
GPIO = 0;
int i;
for(i=6000;i>0;i--){
__delay_ms(100);
}
GPIO = 0x01;
while(1);
}
MPLABとかPICkit2の使い方はトラ技の2009年4月号を読めばおk
388 :
359 :2009/07/30(木) 18:53:07 ID:+04ezCEU
>>384 確認サンクスです。
新品のPICが届いたから確認してみたが、相変わらず
>>375 の状態。
念のためプロジェクトを作り直し、提示していただいた初期化部のみを使ってみたけど同様。
一年前に買ったPICと、今回届いたPICは両方ともB5。
Erattaに載ってるわけでもないし…なんだろう。
> 12F675でコンパイラはHI-TECH PIC C Compiler こういうやつは、どMなんだから、一人でとことん苦しめ
390 :
359 :2009/07/30(木) 19:29:45 ID:+04ezCEU
>>384 連投スマソ。そちらの波形で一つ気にになったので。
CKの立ち上がりでDTが変化しているように見えるけど、これはデータシートと矛盾している。
B5ではSPBRG=1の正常送信時には、データシートどおりCKの立下りでDTが変化している模様。
さらにマニュアル読んでる 退避させたWをフラグを変化させずに戻す方法が swapしか無いというのがすげー
>>7-8 のPICの価格は秋月価格かな?
それにしても、マルツは高いな〜
PICもPickitも高い。
>>392 その上、品揃えも大した事がない。
商売も汚い。特価「JTAGケーブル」。みたらフラットパラを10極ボックスコネクタ
にした、本当にただのケーブル。ICなどついてない。1000円くらいだったかな。
勘違いして、汎用ライタだと買っちゃう人がいるだろう。
マルツで買う(買わないといけない)理由がわからない。
一部のブレッドボードは秋月よりも安く買えた(ただしジャンパなし。板だけ欲しかった) あの界隈の中でマルツから買うことはあんまないけど一応覗いてる。 電子部品に特化した東急ハンズみたいな。
なるほど。ハンズか。 意味が違うかも知れんが、電子工作入門の人にとっては お店もきれいで、整頓されてるから入り易いかもね。 ラジオセンター・デパートは、職人(適当)気質、 秋月・千石は、つかみどころが良くわからん。 いかん。眠くなってきた。今日はペルチェ素子を3枚程、 アルミ板とジャンクファンを買いに行って、ケース冷却の実験したいのだ。 Pen4HT3Gのオレには、CPUクーラーだけでは厳しい季節なのだよ。(2GHzに落としてる) 制御には大量に余っている16F873を使おうかと。
396 :
natu :2009/07/31(金) 11:27:47 ID:P3M3V9mT
>>390 おー、ほんとだ。試しにTXCKP=0にして見るとクロック出っ放しで
TXIFがセットされない。
>>368 の症状かな?
USARTのライブラリ使っても同じ状態になるようだし、エラッタも
見つからないし...クロック落とすかSPIで騙すしか無さそうだね
『出来の悪い子ほどかわいい』って事かな。
>>396 そのような誤動作をマイクロチップに報告した場合、よくやる手法。
Errata として認めずに Dataシートの誤記でしたと誤魔化すのが得意(困惑)
SPBRG が 0x00 の場合の動作は保証しませんが 落ちかな?
398 :
359 :2009/07/31(金) 14:06:06 ID:yRu5qccu
SPIだと間欠送信で遅いし、双方向通信できない。 EUSARTでクロック下げると転送がおっつかない。 どうしようもなさそうだなorz Rev.B5だとTXCKPに関わらずCK出っ放しのよう。 Rev.A3だとTXCKP=1ならエッジがずれるけど送信できるってことだよね… A3の石ほしぃぃぃぃぃぃぃ 趣味だからいいけど、業務だったら訴訟もんじゃないのかな
399 :
natu :2009/07/31(金) 14:50:16 ID:P3M3V9mT
別のPIC18だと、こんなエラッタがあるんだけど In Synchronous mode, EUSART baud rates using SPBRGx values of ‘0’ and ‘1’ may not function correctly. Work around(笑) Use another baud rate configuration to generate the desired baud rate. SPBRG=1も怪しい。
>>398 >SPIだと間欠送信で遅いし、双方向通信できない。
うひゃー
「間欠送信で遅い」を見て「あれ、SPIもダブルバッファだったはず」と思って
データシート見直したら、SPIは受信だけダブルバッファなんだな。
勉強になった。
>>398 その昔 MAXLINK と言うソフトありけり。(PC-9801 max 9600bps の頃)
i8251 使用の RS-232C ポートで超高速通信を行っていました。(もう特許切れだと思われる)
特殊仕様の RS-232C クロスケーブルだった。(何本も複製したのはナイショ)
不思議な事に TxD RxD の線を切断しても通信速度は変わらなかった。
つまり i8251 を UART で使わずに i8255 等の単純入出力ポートで高速通信を実現していました。
いまだにどんな方法で実現していたのかは調べていません。
逆アセンブルしようにも そのデバイスドライバーは 今は手元に無い。(残念)
402 :
FR :2009/07/31(金) 23:09:35 ID:fWYmQ+OD
Picc Liteでかいたプログラムを12f675から12f509に移したんですが TRISのところでエラーがでるんですが509にはTRISEレジスタがないんですか? 初心者なので教えてください。
>>402 ポートEがないんだからTRISEだってないさ
マジレスすると509はTRIS命令があったはず
>>404 それを言うなら、12F675にもポートEはないからTRISEもないはずだけど。
元の質問が適当すぎる。
ただの打ち間違いちゃうか?
データシートを読めば済む話 ってかデータシート見ないでPICさわるかな?
TRISの無いPICって、あるの?
>>402 Picc Lite が吐き出したエラーの内容と
そのエラーの発生した場所のソースを晒してごらん。
もっとちゃんとした回答が貰えると思うよ。
もっともちゃんとデーターシートを読まないとだめだけど、
何ページを読めば良いかは教えてあげられるよ。ガンガレ
TRISの設定が専用の命令になってる物と TRISレジスタに書き込む物がある。
Baseline PICな12F509ではTRISレジスタ アクセスに専用TRIS命令を使う。 でも PICCでは そんなこと関係なく TRIS = 0xff; って感じでok HI-TECH PICC のManual 3.2.7.2章を参照 TRISIO とか TRISE じゃないよ。
>>391 ソフト屋にとっての利便性を無視したらCPU設計はどこまで手を抜けるかっていう
気分で眺めると確かにそういう風に設計するよなあと思う
PICへの考え方を変えたほうがいいぞ。
例えばUARTは、
「ボーレートジェネレータを機能させる事が出来る」
に留め、付随する振舞はオマケ。
多数ある技術資料(テクニック集)は、PICの問題点を
回避するためで、「資料が多くて親切だな」などと
思ってはいけない。
>>400 さん、「勉強になった」なんて感覚は持たないほうがいい。
PICはそういうものだで、終わりにしる。
そうだったのか。 勉強になった。
いや全然不便じゃない。
正論理だと、逆につじつまが合わなくなるだろう。 条件判断命令が、そうなっている事から推測できる。 演算部(CPU)は、NANDとシフトレジスタとFFで 等価的に構成を見なせる。何かを優先させたために OFが発生した時に、ビットと論理と取ると反転する ロジックになっているのであろう。
418 :
774ワット発電中さん :2009/08/01(土) 12:10:22 ID:f4OE/wp9
秋月で売り出された18F14K50のデータシート眺めてるんだが、PGC/DがUSBのD+/-と共用されてる これはUSB機能使いながらのオンチップデバッグは出来ないってこと?そうだったら使いにくいな
それ以前に18F14K50は電源5Vで書き込もうとするとD+/-も5Vになってしまう。 ICSPするためには電源を3V系にしないとダメ。
D+/-カットした専用給電ケーブルで書き込み後にUSB経由のDebugPrint();作ってデバッグか USBつながるまでが大変そうだな
USB付きのPIC知らないんだけど、USBブートローダーって作れそう?
>>421 「USBブートローダー PIC」でググったら腐るほど出るわけだが・・・
あいまいな書き方しちゃった。18F14K50はPGC/D自身が3.3Vなので 電源5Vだとレベルシフタ付きのライターがいるってこと。 完成品は14K50内蔵のレギュレータでOKだが 開発は3.3V電源付きの別ハードで開発した方が楽。
>>421 わざわざ作らなくてもMicrochipのUSBファームウェアにプロジェクト一式付いてる
>>423 何言ってんだかわかんね、と思いながらデータシート見直したらD+/-ピンの定格はVUSB+0.3Vって書いてあった
何も考えずに5V供給してICSPしようとしたらD+/-ピンは定格オーバーか
クランプ電流±20mAのようだし直列に1kΩぐらい入れるだけじゃだめかな
教えてください。割り込みを使ってLEDを制御するプログラムです。16F84aでは動作したんですが、16F88に移行させて同じように動作させようとしてるんですがうまくいきません。 電源オン時にウェイクアップモーション、PORTA == 0b00000 の時にLEDが左右に行ったりきたりしていて、PORTAが0b00001や0b00010になった時に強制的に動作が 入るようにしたいです。 以下の内容でビルドしようとするとBuild failedになってビルドできません。 ----------------------------------------------- エラー文 Error [314] C:\Documents and Settings\PICC\stop16f88kai.c; 3.8 ";" expected Error [192] C:\Documents and Settings\PICC\stop16f88kai.c; 24.1 undefined identifier "T0IE" Error [192] C:\Documents and Settings\PICC\stop16f88kai.c; 25.1 undefined identifier "T0IF"
428 :
427 :2009/08/01(土) 21:31:31 ID:9gZFsCAW
>>426 > クランプ電流±20mAのようだし直列に1kΩぐらい入れるだけじゃだめかな
USB製品として使えるなら保護回路が内蔵されているはずなので大丈夫
...だと思う。
デジタル入力もしくはアナログ入力に指定したポートに対してbsfやbcfの操作を行った場合、 何か影響などはあるのでしょうか?それとも無意味なだけで全く問題はないのでしょうか?
>>431 結論を先に言うと何の問題も発生しませんよ。回路図が読める様になれば理解が深まるでしょう。
本当は使おうとする PIC の データーシートを見るのが望ましいが、
↓ は、日本語で書かれているので代用しますね。
http://ww1.microchip.com/downloads/en/devicedoc/16c7xbj0.pdf DS30390B-J00 - page 43 〜 DS30390B-J00 - page 54 までに 各ポートの等価回路が記載されています。
TRIS Latch の D-FF( 単純な Dフリップフロップ) の Q出力は 入力の場合 "1" (Inpiut の I と覚えるそうだ) になります。
bsf や bcf で書き込むと Data Latch の Q出力には反映されますが、↑ の 出力が 3ステートバッファーを OFF にして出力を遮断します。
ソフトだけしか判らないじゃなくて、回路図も読める様になるとソフトを組むスキル(能力)もアップしますよ。
皆さんに質問です。 ライターはどんなのを使っていますか? ちなみにお約束のようなボケは飛ばします。
Hi-Loシステムズのユニバーサルプログラマ
PICKit2 やっぱりデバッガが便利 通信に使う場合はMPLABSIMではどうにもならんからね
2年前の2007年1月19日から禁煙してまして、今はライターを必要としていません。(違) ちなみにマイクロチップの見解は PRO MATEU と PM3 以外のライターは試作用であり量産に使用した場合責任を持ちませんと仰っていますよ。(笑) PICkit2 ICD2 ChipMax を 使用してますが内容が消えた等の クレームを受けたことはありません。
438 :
774ワット発電中さん :2009/08/02(日) 12:25:31 ID:eimzL6+5
ICD2で入門してからずっとこれ。 でも丸である必然性がまるでわからない。
まぁ、あの2店は近いから安いほうの秋月がいいと思われ。
441 :
774ワット発電中さん :2009/08/02(日) 19:03:55 ID:ANJRka65
PIC16F88でINTRCに設定してRA6・RA7をI/Oに設定しました。 RA6・RA7を入力に設定してしても外部信号の変化が読めません。 出力に設定してON/OFFしても出力に現れません。(入力に成ったまま) 他のピンは正常に動作してます。 何でしょうか?
回路図とconfigを書け
RA7は入力専用じゃなかったっけか
一応 INTRC_IOに設定汁。
例によってアナログ入力モードのままなじゃね?
PIC16F88でAN0とAN1を使うようにしていますが、AN1がNCだとAN0の精度が非常に悪くなり、AN1も不定です こーゆー物でしょうか? リファレンスはRef+とGNDを使うようにして、別途作った2Vを入れています アドバイス願います
>>446 入力切り替えてから電荷がたまるまでウェイト入れてる?
448 :
FR :2009/08/02(日) 23:33:53 ID:Kk8sk1TN
12f509のデータシート見たんですが Address Name Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 N/A TRISGPIO ? ? I/O Control Register となっているんですが、どのようにして入出力を設定するんですか?? I/O Control Registerというのがあるのかと思いデータシートを 見たんですがなくて・・・ ちなみにPICC Liteでプログラムを書きたいです。
> 12f509 > ちなみにPICC Liteで 苦しむのが好きなんだから、もっと苦悩しろ
>どのようにして入出力を設定するんですか?? データシートを100回読み直す
>>448 PICC Liteにサンプルはないの?
>>448 TRIS=0x00;見たいな感じでやってみな。
453 :
431 :2009/08/03(月) 01:08:46 ID:OzWoLXaT
>>432 ご回答ありがとうございました。データシート確認の必要性を再認識いたしました。
>>453 >>431 また、いつでも質問すれば良いですよ。
お礼は、いつか回答できるようになったら他の人にも教えてあげて下さいね。
生半可な知識で間違ったことを教えるのもいるからきちんと裏は取っておくこと・・だな
456 :
軽石 :2009/08/03(月) 01:59:27 ID:EYbuRzrg
結局頼りになるのはゴーグル先生です。(^。^)
>>448 12F509は初心者が使うんじゃなくて、プロが使う廉価チップ。
12F509を使う場合は、HITECH PICC Pro Liteモードで書いても
結構変態的な制約がまっているお。
せめて12F629か12F675くらいを使った方がいい。
それでも良いなら止めないが。
> せめて12F629か12F675くらいを使った方がいい。 これでも十分Mの素質あり
普通AVR使うよね
秋月雷太が683に対応するのが早ければ、675は使わなかっただろうな〜
8pinを個人で使うなら683だろ。
>>462 サンクス
完全に想定外だった
3V給電でUSBブートローダー書き込んでUSB経由でデバッグしながら開発するのがいいのかな
ちょうど回路図描きあがったところなんで、これから基板の設計に入ります
こんな建て増しにつぐ建て増しみたいな悲惨な仕様じゃなくて、 すっきり使いやすくてかつ安い同種の石はないの?
PIC18系はかなりスッキリだけど PIC24系はもっとスッキリ
>>463 自分はヘッダーを買うか、18F2550でデバッグ終えてから移行するかを検討中。
2550からは、ほぼ変更なしで移行できる気がしている。
ヘッダーを買うのであれば、AC244023よりDM164127が良いみたい。
評価ボード+簡易ヘッダーの組み合わせで、ヘッダー単体より$10安いよ。
>>464 8ビット系なら8051コア品が一番普及してるかな?
8051互換コア使った製品は色々なところが出しているし
もちろんフリーのコンパイラもある
16ビットクラスで他を探すならARMのCotex-M3コアあたりにした方が
いいかもしれない.250円くらいのSOP品もある
あたりまえだけどgccはじめフリーな環境もある(Linuxも)
ありゃ・・「r」が抜けた.Cortexな
SRAMとクロックが内蔵じゃないと使う気がしねぇ。
PIC以外は入って無いと思ってるのか?
>>471 だれもPIC以外は使う気がしねぇとは言って無いが。
誰もPIC以外は使う気がしないのかとは聞いてないが?
>>464 > 同種の石はないの?
それを言うから、メーカは建て増しでやってるんだろ。
>>474 AVRに行けば?と思う俺の心の内は秘密です。
フラッシュメモリーが高いので、とにかくフラッシュの使用量を減らそう、 というのが基本の設計思想でしょ それで1ワードのビット数を圧縮してあちこちに歪が出る もうフラッシュなんて湯水のごとく使って、 広大なデータと大量のレジスタが素直に使えればいいのに
> フラッシュメモリーが高いので、とにかくフラッシュの使用量を減らそう、 > というのが基本の設計思想でしょ 別チップで載せてるのか!?
こんにちは。PIC&2ch初心者です。よろしくお願いします。 同じ症状で困っている方や解決策を知っている方はレスお願いします。
480 :
774ワット発電中さん :2009/08/06(木) 23:54:18 ID:aXuRc93E
エスパー召喚きたーwwwwww 中間が完全に抜けてるww さあどう答えるエスパーwwwwwww
解析班ッ!!
こ、これは深刻な問題だな・・・ もう末期です。諦めてください。
>>479 つまり部品と道具一式そろえたけど、何をしていいのかわからないんですね。
俺も、もう何年もPICでわけのわからんもの作って遊んでるけど、いよいよ
ネタが切れて困ってますよ。
解決策は常識を覆すということですね。固定観念を捨てることです。
>>479 1つ目の問題は、たぶんTXとRXがテレコになっていると思います。
オシロがあれば、スグにわかりますけどね。
2つ目は、みなさんよく間違えますね。RA4端子はオープンドレインといって、
ドレインがオープンになっていますので、外部に抵抗でプルアップしないと。
3つ目は、結構高いレベルでの間違いですね。リードモディファイライトと言って、
リードしてモディファイしてライトするワケですので、前回のピンの電圧が
落ち切っていないのに読むと、間違えて読んでしまうことが原因です。
2clock程度待ってから読みに行くようにすれば良いと思います。
しかし、文面からだけですが、面白そうな物を作っているんですね。
回路図も拝見しましたが、レベルが高くてまだまだ私には良くわかりません。
でも電子工作、特にPICは面白いので、いろいろ作ると面白いと思います。
PICで電子ホタル、PICで電子睡眠器、PICでお風呂ブザー、PICで電子びっくり箱、
PICで2石トランジスターラジオ、PICで断線報知器、PICでシグナルトレーサー、
PICでラブラブテスター、PICで電子メトロノーム・・・・まだまだありますよね。
お互い頑張ってやっていきましょう。
後半ワラタ それ何て初歩のラジオwww
テレコワラタ PICで2石トランジスターラジオだけ想像できんw
PICでVCXO選局でもやるんですね。わかります。
テレコって何? 現場のオッサンがよく口走っているけど。 PICで2石トランジスターラジオ 電池電圧モニタの制御じゃないか? 1.2V以上は、緑 1.0〜1.2Vは、緑+赤 0.9〜1.0Vは、赤 それ以下は、赤点滅
おっちゃんは リャンコとか言うときがある
>>488 もう会社を辞めたけど元上司は、dsPIC で 直接 RF 電波を FFT 解析して電波時計を作れと言っていたなぁ。
FFTしなくても40kHzのサイン波と混ぜてLPF掛けるだけで良さそうな気はするが
>>493 40KHz と 60KHz の両方自動対応で、電源投入(リセット)直後から 60秒で時計を確実に合わせろ。
↑の条件付き。私は出来ませんとお断り致しました。
市販品の電波時計でも時計が合うまでに 10分程度必要としてるんですけど・・・
495 :
774ワット発電中さん :2009/08/07(金) 17:27:48 ID:iAY2f6/m
>電源投入(リセット)直後から 60秒で時計を確実に合わせろ。 できるわけがない
>電源投入(リセット)直後から 60秒で時計を確実に合わせろ。 んー。どんなに頑張っても確実にあわせるには61秒必要だと思うんだ。
ボトムであわせるのなら作った
いくらでも居そうだが… 自分は8pin用だけ丸ピンソケットで作った
PICの8ピン用と、 dsPICの18ピン用を作った。 複数対応のを一個作るより、普通のICソケットを使ってそれぞれに対応したのを作る方がミスが少ない気がする…
>497 その手のソケットって、できあいのプログラムを焼いて回路に乗せるだけとか 完全にデバッグが終わっているプログラムじゃないとメリット無いんだよね。
8ピンくらいなら簡単に抜き差しできるからありだと思うけど。 これお勧め。 DIPソケットのメス側にケーブルつけて6ピンヘッダに繋ぎ、足のほうを基板上のPICにかぶせる。 PICの上に何かある回路でない限りICSPできるから便利だ。
暇なときに作らせてもらいます。 8ピンPICの時は重宝しそうです。
P16F88でRA2,RA3,RA4を使ってA/D変換をしようとしています。 条件により値が変化してしまうのですがなぜでしょうか? 具体的には Vdd,VssをつかってA/D変換すると 入力 RA2:Vdd RA3:Vss RA4:Vss 変換後 RA2:Vdd/2 RA3:Vss RA4:Vss とか 入力 RA2:Vdd RA3:Vss RA4:Vdd 変換後 RA2:Vdd RA3:Vss RA4:Vdd/2 と変換後が入力の1/2になるものがあったりします。なぜでしょうか? ちなみに VCFGは00で設定しています。
変換クロックの設定をミスってるとか
>>506 ご指摘の通りでした。ありがとうございます!
他のPICで使っていたA/D変換プログラムを移植しただけなんですけどねー。
PICってプログラムの流用が難しいですね。。。
トラブったらまずプログラムとデータシートを読むという習慣が無いのだな
授業では習いませんから。
>>510 ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な!
>>511 あなたに 質問者がどのぐらいの実力があって、ピンポイントで何を伝えれば良いかを見抜けますか?
軽石対良心にゃんこさんの戦いかなぁ。 がんばんれにゃんこさん。
>>510 みたいなことを突然言われたら普通引くけどね。
にゃんにゃんこさんのことに言及すると、必ず単発IDで
>>514 のような煽りがつく。
流石にそこまで酷い人間じゃないとは思ってるけど、自演じゃないと言うならID:IXn56ZW6
のうちにレスが欲しいです。
自分は
>>512 のようなエスパーじみたことはできないが、PICスレでは分かる限り質問に
答えてきたつもりです。
もし本当に
>>512 で言っている様なことができるのなら、そのコツを教えていただきたいです。
何この流れ
>>516 過去に同じ事を経験した苦労があるからですよ。
どこで間違えたかのか、同じ間違いを犯したくないだけで
これからの人にはちゃんと正しい道を進んで欲しい。
だからいつも直接答えを書いていないでしょ。
必ずデーターシートの読み方に留めて、答えの書いてある場所で残りは自分で解決しましょうね にしてあるでしょ。
良心??????
>>518 ありがとうございます。
まあ、そうですね。私は「質問者がどのぐらいの実力があって、
ピンポイントで何を伝えれば良いかを見抜ける」と言えるほど
の自信はありませんが。
今後もPICスレの回答者を頑張ってください。
おまけ 私がソフトの Ver を 聞かかったのは、質問者の書き方で Ver を推定して回答いましたね。 アセンブラは比較的大きな変更は少ないですが、C言語は日進月歩なので微妙な違いで推定してましたよ。 OS は無指定であれば MPLAB が動作保障している範囲であるのと、現在流通している XP だろうと。 異なればちゃんと Win98 〜 Vista までの環境は整えてありそ、ちらでの実験も可能でしたよ。
>>521 最近はMPLABにHITECHが付属されるようになったので、コンパイラの違いは
減りましたね。逆にチップのコアの種類は増えました。
数年前までPICといえば16Fでアセンブラだったのですが、今では化石を見る
かのような顔をされます。
コテハンはそのうち荒れる。 そろそろその時が来たようだな
だから何?て話で、何が言いたいのかさっぱり分からん 日本語の不自由な方に見える
要は空気読めってことだろ
LEDを徐々に消灯や点灯をやりたいんですが PWMを使わずにできますか? パルス幅を変えるようにON、OFFの間にディレイをいれればいいと思ったんですがうまくできませんでした…
>>527 キミがどこまでどれぐらい理解できてる人なのか判らん
例えば失敗例でも回路図あげるとかアクションしろ
俺が翻訳すると、PWMを使わないというのは、PICのPWM機能を使わないという意味で PWMの原理で作ってみたが、ソフトにバグがあるんだと思われます。
>>530 が正解だろうな
パルス幅を変えるように…ってそれPWMやん…
実はPFMかもしれん。
>>530 で正解だろうけど。
実際のところ、LEDを制御するだけだったら簡単に実現できるな。
他の処理も同時にってことだと面倒くさくなるが
ON/OFFの間にディレイとかいってるから 周波数も変えてしまって目視できる点滅になって、あれー?とか言ってるとエスパってみる。
PWMじゃなくてPDMだっていいんだぜ
>>533 そこは気合で、5秒ぐらいを脳内平均化するとか。
薄目にするとか、うんと遠くから眺めるとか、ティッシュでくるんでみるとか
したら、なんとなくイケてるように思いこめるかも。
おいおい、本人置いてきぼりになってるよ
内蔵CCP(PWM mode)を使わずに・・・delay処理で・・・という意味かな?
538 :
774ワット発電中さん :2009/08/11(火) 00:43:37 ID:tz48ENZb
>529 あんたが何ぼのもんか知らんが、態度がでかい。軽石め。 大体、なんで今回路図(ry
おっさん同士みっともないぜ
軽石軽石って言ってる人はなんなの?同一人物?
>>540 専用ブラウザをつかって「軽石」をNGワードにするとスレのS/Nがあがるよ。
>>541 ありがとう。そういう役に立つtipは次スレのテンプレにも入れるべきだな。
>>538 お前がナンボもしない人間であろうことは容易に想像できるが、
>>529 も態度がデカくて悪い奴に言われたく(ry
2chで「ですます調」とか必要ないし、このくらいの質問でケンカするとか理解できん。
軽石って言ってる人オーディオ関連のスレでも見たけど 2ch語?方言かなんか?
荒らしとか池沼と同義だな。実質。
近頃はむしろ荒らしが使う言葉だね。 正当な指摘に対して使われることが多い。
PIC18F14K50のSSOP買おうと思ってMicrochipDirectチェックしたら売り切れ状態 それはよくあることなんでいいんだが、データシートに載ってないQFNパッケージがリストされてる こういうことって普通にあるの?
>>546 数人の池沼が叫ぶ、雄叫びみたいな物だよ。
以前はあちこちで見られたけどみんなにウザがられて、最近じゃ単発が多い。
時々奇声を上げないと発狂してしまうかわいそうな輩だからそっとしておいてあげるのが武士の情け。
もう2chくらいでしか生息できない絶滅危惧種だけど、生態は未だ謎に包まれている。
チラ裏だが 最近HI-TECH C でPIC工作してばかりいたんだけど 必要に迫られて久々にPCのC++を書いたら 関数の再帰呼び出しとか、float型変数を見てビクッとしてしまった。 あと標準入出力の便利さを今更思い知らされた。 PICやってるとハードウェアリソースの有難味が身に染みるね。
>PICやってるとハードウェアリソースの有難味が身に染みるね。 同感。ポインタとかガンガン使っても遅くならないPCの性能には驚いた。 ラッパなんて使おうものならPICは遅さが気になってしまう。
ラーはラッパのラー♪
PIC16を使ってて動作速度等に不満が出始めたので
PIC18やPIC24、dsPICを検討したいのですが
>>8 みたいな選定の目安ってありませんか?
印刷の紙代も馬鹿にならないので、ある程度品種を絞ってからデータシートを読みたいです。
(データシートなんて画面上だと読む気にならないorz)
>>555 どこまで他力本願なんだ。
お前シッコする時も他人に○ンポ出してもらうのか?
PIC16以外は入手が容易な品種がすくないから悩むこたぁねぇ。
秋月の販売リストから使えるピンリストと値段とクロックスピード、メモリサイズをまとめればすぐ終わる。
>印刷の紙代も馬鹿にならないので、ある程度品種を絞ってからデータシートを読みたいです。
いかにも自分はデータシートの隅々まで読むような雰囲気を出しているが、印刷して安心するタイプだろう。
紙のデータシートをちゃんと読むやつが、リストを作るのを面倒くさがる訳はない。
PIC18ならとりあえずPIC18F2550 400円 ピン数欲しいなら PIC18F4550 400円 安いのがいいなら PIC18F14K50 200円 このクラスならgccで開発できるAVRに移行するという手も 16bitなら最初からdsPICでいいんじゃね?
>>556 にケツ叩かれたので、Device Overviewを全種読んでみた
自分用にまとめた物だけど、誰かの役に立つかもしれないので参考に晒してみる
秋月のPIC18FシリーズDIP品限定
○18,20pinはこれしかない。14K50は3.2V LDO搭載、しかも電圧リファレンス内蔵でADC楽々って凄ぇ・・・
18F1320-I/P \400 18 DIP 4kW .256byte 256byte 7ch 31k-8M 40MHz 4.2-5.5V
18F14K50-I/P \200 20 DIP 8kW .768byte 256byte 9ch 31k-32M 48MHz 1.8-5.5V あり
○28pinは4種売ってるけど、実質2550一択。
18F2320-I/SP \500 28 DIP 4kW .512byte 256byte 10ch 31k-8M 40MHz 4.2-5.5V
18F2450-I/SP \450 28 DIP 8kW .768byte 0byte 10ch 31k 48MHz 4.2-5.5V あり
18F2455-I/SP \600 28 DIP .12kW 2048byte 256byte 10ch 31k-8M 48MHz 4.2-5.5V あり
18F2550-I/SP \400 28 DIP .16kW 2048byte 256byte 10ch 31k-8M 48MHz 4.2-5.5V あり
○USB使うなら、40pinも4550一択だね。
18F4520-I/P \420 40 DIP .16kW 1536byte 256byte 13ch 31k-32M 40MHz 4.2-5.5V
18F4550-I/P \400 40 DIP .16kW 2048byte 256byte 13ch 31k-8M 48MHz 4.2-5.5V あり
価格 pin パッケージ FLASH SRAM EEPROM 10bit ADC 内蔵CLK MaxCLK 動作電圧 USB
ここまで調べてみたけど、
>>557 でFAだった。
400円超えると、PIC24とdsPICも候補に…とケツつねってみる。 混沌といえるほどのバリエーションがPICの命なのか仇なのか…。
なんだこの200円野郎。16Fを一掃する気か。
1.8Vってのが良いな。早く0.9Vで動くの出して欲しい。 電池一本とコイルでLEDチカチカ出来る。
16kWの発電量か
18Fもここまで安くなると16F要らなくなっちゃうな 20pinのICソケット買い損ねた…
データシートって印刷して使うもんなの?
>>565 そんなわけないだろ
地球を壊したいのか
567 :
軽石 :2009/08/15(土) 02:03:42 ID:ifsBQPpg
そんな簡単に壊れません。(^o^) データシートを見なくても、ゴーグル先生に聞いたり掲示板で聞けばいいみたいです。
よく使うデバイスは印刷してる。 AdobeReaderの、A4一枚に2ページ収めてくれる機能使えば枚数半減。 厚みも半減だから普通のA4横綴じファイルに綴じられる。 あとはコッソリ私用に使っても問題にならないレーザプリンタがあればベストw
レーザープリンタはあるけどDSは滅多に印刷しない。PDFの方が検索できるし便利。 ディスプレイに30インチを使ってる。 DSだけじゃ無く、ソースも見やすいしエロ動画も迫力で一石3丁
印刷するのは、レジスタマップと、ピン配置図ぐらいかな あとはPDFのまま読んでる。 その方が検索楽だし。
18F の J K シリーズ(低電圧製品)は、ポートによって耐圧と電流が異なるから その辺りが DS 1枚で見れたら良いのにね。 複数枚に渡るから結局ソースリストにメモ書きで残すのよね。
572 :
軽石 :2009/08/15(土) 08:19:29 ID:ifsBQPpg
> AdobeReaderの、A4一枚に2ページ収めてくれる機能使えば枚数半減。 それはプリンタドライバの機能みたいです。(^o^)
>>572 プリンタドライバにその機能が無くてもAdbeReaderの印刷設定で出来るからAdobeReaderの機能だろう。
最近はプリンタドライバに割付は標準でついてるけどな。両方で2ページ/枚の設定をすると4ページ/枚になる。
574 :
軽石 :2009/08/15(土) 12:56:16 ID:ifsBQPpg
> AdbeReaderの印刷設定で出来るからAdobeReaderの機能だろう。 それがプリンタドライバの機能みたいです。(^o^)
>>574 ほんとにプリンタドライバの機能かな?
Adobe Reaer 9.1.3を使ってますが、
印刷ダイアログの「プリンタ」グループの「プロパティ」ボタンで、
割り付け印刷が選べないプリンタでも、
同じ印刷ダイアログの「ページ処理」グループの「ページの拡大/縮小」でなら
「1枚に複数ページを印刷」が設定できるみたいですけど。
>573 コンパイラやソフトの話をするときは、バージョンを必ず書きましょう。 みんなが最新を使っているとは限りません。(>o<)
577 :
軽石 :2009/08/15(土) 13:45:21 ID:ifsBQPpg
名前書き忘れました、軽石です。
>割り付け印刷が選べないプリンタでも、 どんなプリンタですか?型名を書いてもらわないと、軽石には判りません(>o<)
579 :
575 :2009/08/15(土) 16:53:27 ID:BsQnfiIH
や、しまったな。>574にコメントしたのは間違いだったな。
なによりも、
>>573 に良いこと教えてもらったと礼を書くべきだったのに。
騙りの人。アクがなさ過ぎでつまんない。所詮は騙り。
>581 重石さん、そういうフォローをすると、またFPGAインフォメーションみたいになります。(>o<) >575 そろそろ機種名が判ったでしょうか。 URLとか示していただけるとわかりやすいです。(^o^)
Adobe Reaer 9.1.2で
>>575 さんの方法で一枚の紙に複数のページの印刷ができましたー
使用したプリンタドライバはEPSON PM-A850とCANON PIXUS 560iです。
軽石は、腹を切って死ぬべきだ。また、彼らはただ死んで終わるものではない。 唯一神又吉イエスが地獄の火の中に投げ込む者達だ。 彼らの支持者も同様だ。理由は他人にスレ違いな要求するなら自分が該当スレに移動すべきだからだ。 詳しい理由はAdobeReaderのヘルプにて熟知すべし。
585 :
軽 石 :2009/08/16(日) 02:43:42 ID:5m60t18z
>583 ドライバーのバージョンは幾つでしたか? >584 Readerのヘルプには軽石が切腹しなければならない理由は書いていないみたいです。(>o<) どの辺に書いてあるのでしょうか。検索ワードなどを示してもらえると、手間が省けます。(^o^)
586 :
がとおりすがし :2009/08/16(日) 03:30:31 ID:WYoFDXzy
で
>>575 うちのリーダーにはそんなのないぞ。
Windows版での話か
Wndows以外はPCじゃないのか。
軽石もうざいが、俺が言うことが常識ってやつも害悪だ。
>>584 軽石以上に何言ってるかわからないぞ。腹切の理由がReaderのHelpに書いてるみたいだ。
小難しい単語並べりゃいいってもんじゃないぞ>両人。
>>586 > Wndows以外はPCじゃないのか。
圧倒的にユーザーが多いから仕方がないんじゃね?
質問した奴もWindowsユーザーらしいし
Linux版だとNGなのかなと思って(PICの開発をLinuxでやってる人って どれぐらい居るのかな? MPLAB自体が完全にWindows前提っぽいよね? という話は置いておいて) Ubuntu 8.04を起動してAdobeReader 9.1.2をインストールしてみたよ。 ちゃんと複数ページ印刷できた。
荒らしに反応イクナイ!
Adobe Reader 7.0でもその機能あるよ。確か、6.0や5.0の頃にも既にあった 気がする。 ただ、自分はいつもプリンタドライバ側の割付機能の方を使っている。 昔、両面印刷ONなどと併用して複数ドキュメントを印刷すると、2つ目の ドキュメントが、前のドキュメントの最終ページの裏に印刷されたりと、 いろいろ不都合があったので、ページサイズの拡大/縮小だけで、Acrobat Readerの集約機能する機能を使うのはやめた。
18Fってアセンブラレベルでは16Fとどの程度互換性があるんだろう。 と、データシート読まずに聞いてみる。
>>593 i8080とi8086の互換性と同じくらいじゃね?
>>593 互換性というか全然違うね。
16Fのアセンブラは読む気になるけど 18Fのアセンブラはちょっと勘弁。
でも 18Fの方がずっと高機能になっているみたい。
互換性と言ったら「ない」が答えだろうか。そのままでは動かないと言う意味で。 ただ、基本的なスタイルは継承してるから、16Fのアセンブラ読めれば、命令表見なくてもなんとなく読める。 movf、movlw、bcfとかの根本の命令の名前は同じだし、使い方もACCESSフラグが一個増えてるだけでそれ以外は同じ。 ジャンプ命令はかなり増えてるから流石に命令表見ないとわからんね。
>>593 割り込みは HIGH LOW グループの2段構えで便利。retfie FAST が使えるのは HIGH 側のみ。
でも SFR も 2byte 以上に拡張されてるので保存に注意してね。
FSR1 を 使わないでプログラムしておくと C言語併用時に移行が楽です。(FSR1 = stack)
incf decf では STATUS,C も変化するので注意してね。
> ジャンプ命令はかなり増えてるから 「STATUS」と書かないで条件分岐できるなら惚れそうだ。 何度も何度も何度も書く必要があるのに6文字もあるレジスタ名・・・・ > incf decf では STATUS,C も変化 キャリー/ボローは、16Fでも鬼門だったw これで8ピン150円とか出たら、本当に一掃されちゃいそう。
16Fでもマクロに登録しておけば普通に bz、bnz、bc、bnc、beq なんて使えるから、不便な思いをした事が無い。
600 :
natu :2009/08/17(月) 20:47:55 ID:03/fwUrB
MPASMだと、デフォルトで登録済み
STATUSなんてヘッダで定義されてるだけの文字列だからSTに変えてしまえ
話、ぶった切りですみません、教えてください。 PICでCで開発するとき、デバッグ環境に、オススメは何か教えてください。 というか、一般的に多くの人は○○と○○の組合せ使ってるよ、みたいな話が聞きたいです。 宜しくお願いします。
605 :
karuishifactory :2009/08/18(火) 12:33:33 ID:d6ctyKgh
CCS-CとMPLAB ICD2です(^o^)
MPLAB IDEと統合できるCなら隠者ね? 純正C18,C30の他、HI-TECH PICC, CCS-C・・・とか使える MPLAB IDEでは純正デバッガ PICkit2/3やICD2/ICD3など使える 趣味でやってる人では自作ライタが多いかもしれないけど 今ではPICkit2多機能で安いからオヌヌメ
MPLAB + C18 + PICKit2で快適なデバッグライフを送っております。 C18は評価版の期限が切れる前に新しいバージョンが出てくるから困らんな。 すでに2回先の期限切れまで新バージョンのストックがある俺。
>>607 C18 C30 共に 期限が切れたらレジストリを消せば何度でも使えます。
C18 の正規版は有るんだけど、最適化はデフォルトの無しでしか使っていません。
HI-TECH C の解説のいいサイトはない? ad変換がしたいんだけど。
PICにCはいるのかしらん? 確かにアセンブラは面倒くさいのだが・・・。 Cがあると便利なのでしょうかね?
>>610 俺も最初は PIC10F200用のプログラムを書くのにアセンブラでバリバリ書いてやろうと思っていたけど、
やっぱり PICのアセンブラはちょっと使いにくいので Cで書いてみたら、簡単なプログラムが さらに簡単に
書けたので Cを使う事にした。確かに多少リソースを多めに食うだろうけど、開発効率が違ってくる。
612 :
軽 石 :2009/08/19(水) 02:16:02 ID:Q7Ty6ye5
次々と新手を考えるもんだな。 今度は「軽 石」をNGワード登録せんといかん。
相変わらず、騙りは騙りレベルw
HI-TECH C は、あまりメジャーじゃない? CCSは、いっぱいあるけど・・・
>>615 マイクロチップ社は、HI-TECH C の会社を 丸ごと買収しましたので
今では PIC16F・PIC12F・PIC10F シリーズの純正コンパイラに昇格しました。
617 :
8080A :2009/08/19(水) 22:59:40 ID:K1RENTcQ
はじめまして どうぞよろしくお願いします 35年くらい前にTK-80をしたことがあります。ずーーっとブランクがあって PICに出会いました。簡単にできるので気に入っています。 今は、16F629をアセンブラでプログラミングしています。 よくわからないところがあります。 bsf GPIO,0 bsf GPIO,1 bsf GPIO,2 とすると、いつのまにかGPIO,0 がクリアされています。 それで、解決方法としてはまとめて movlw B'00000111' movwf GPIO というようにまとめて書き込んでいるのですが、 IOはビットごとに操作すると不安定なのでしょうか? 何か、いい解決策はないでしょうか? よろしくお願いします。
今から始めるとしたらどれがいい?
619 :
774ワット発電中さん :2009/08/19(水) 23:32:52 ID:YWO238J4
はじめまして 今PIC16F84aを使って赤外線通信をしようとしているのですがエラーが出て困っています。 MPLABv8.10とHI-TECH C PROのライト版を使っています。 コンパイルをするとエラーのとこに Error [237] G:\09_ROBOCON\delay.c; 12. function "_DelayMs" redefined とでてきます。 HI-TECHについてたdelay.hを同じディレクトリとプロジェクトに入れてるのにこのようになってしまいます。 なにがいけないのでしょうか? よろしくお願いします。
redefined って書いてるじゃん
622 :
774ワット発電中さん :2009/08/19(水) 23:51:30 ID:YWO238J4
>>620 redefinde=再定義・・・
2回定義してるってことでしょうか?・・・
すいません、こんなエラー初めてで・・・
>>622 そういう時は、コンパイラのユーザーマニュアルをどうぞ。
(237) function "*" redefined
More than one definition for a function has been encountered in this module. Function overloading
is illegal
625 :
774ワット発電中さん :2009/08/20(木) 00:13:35 ID:IxS87Ho0
626 :
軽 石 :2009/08/20(木) 00:38:23 ID:9kxE3uu5
> delay.hを同じディレクトリ"と"プロジェクト"に" > "_DelayMs" redefined redefinedの意味を調べましょう。
628 :
774ワット発電中さん :2009/08/20(木) 01:42:26 ID:IxS87Ho0
redefineは二重定義という意味なので delay.hをincludeに移してやれば消えました ありがとうございました。 ここって玄人板だったんですね・・・
>>627 両方じゃないかな。
負荷が重いと、"Read-Modify-Write"の問題が出る。
で、I/Oの出力の立ち上がり(または立下がり)が、命令サイクルと比較して遅いと、
"Read-Modify-Write"の問題が出ると言うのが"SUCCESSIVE OPERATIONSON
I/O PORTS"の話だとおもう。
>>628 > ここって玄人板だったんですね・・・
そんなこと無いと思いますけど・・・
>>628 過去ログ読めばわかるけど別に玄人向けではない。ただあんたの姿勢がよくなかっただけ
そもそも _DelayMs なんて・・・変 delay.c の関数なら _の付かない DelayMsだし それに delay.h delay.c自体 非PRO版 Liteの名残で PRO(lite)では無用の存在。 __delay_us() __delay_ms() を使おぅ
敬語使えとか素人お断りとかそんな高飛車ではないと思うけど、・・・とかwwwとか あまり使わないほうがいいね。心象はよくない。
玄人板ではないがジジイ板ではある。
>玄人板ではないがジジイ板ではある。 6.3V を 直流で与えると音が良く・・・ 僕はナウなヤングだから分からなぃ〜(笑)
>>634 ここはお前の日記帳じゃないんだ、チラシの裏にでも書いてろ、な!
>653 年寄りがどなり散らすスレでもないんだYO!
>>612 ゴーグル先生?暑い夏でもスキーウェア着てそしてゴーグルを付けているのか?
なんだ、軽石という偏屈がいると思ったら、五十歩百歩でおまえらみんな嫌な奴だな。
>>637 ヽ~ノ´Д`) いえいえ、夏はプールでゴーグル付けて泳いでます。
軽石は偏屈じゃなくて、ただの高卒就職浪人でコンプレックス持ちの粘着バカだよ。 ゴーグル先生、捨てハンだめよ、そればっかり。 なんか作ってみろて。子供でもいいぞ。既婚43歳
641 :
774ワット発電中さん :2009/08/20(木) 21:16:56 ID:40FoDmV5
畜生、アゲテやる!
642 :
8080A :2009/08/20(木) 21:22:53 ID:Tlt5awLY
みんなおせっかいなくらい良いやつだと思うけどなあ。 ブツブツ言いながら結局ヒントとか答え書いてるし。
644 :
774ワット発電中さん :2009/08/20(木) 22:45:33 ID:Wge3gXTo
軽石はじめ、コンプレックスが原動力じゃね? 初心者相手に、俺の方がなんぼかましって、会社じゃお荷物だけど俺だって役に立つことがあると。 問題は居心地良くて、初心者粘着になり果ててしまうことだね。 別件、せっかく会社辞めてPICの呪縛から逃れたんだから、PSoCのスレに来てくださいよnyannyannyanko様。
645 :
774ワット発電中さん :2009/08/20(木) 22:46:18 ID:Wge3gXTo
軽石はじめ、コンプレックスが原動力じゃね? 初心者相手に、俺の方がなんぼかましって、会社じゃお荷物だけど俺だって役に立つことがあると。 問題は居心地良くて、初心者粘着になり果ててしまうことだね。 別件、せっかく会社辞めてPICの呪縛から逃れたんだから、PSoCのスレに来てくださいよnyannyannyanko様。
HI-Tech買収したMicrochipなんか大っきらいだ!
dsPIC33FJ256GP506使ってるんだが、意味不明のアドレスエラーで起動直後に止まってしまう エラータにも同様の症状載ってて、回避方法としてコンパイル時のコマンドラインオプション指定すればよいとのことなんだが なぜか効かず、やっぱり止まる しかも、毎回じゃない 数回に一回は動作する 回避方法色々試したんだが、エラー割り込みで引っ掛けて即ソフトウェアリセットすれば動作することが分かった 今のところ順調だが、なんかの拍子に止まるんじゃないかと不安だ なんか情報ないかな?
電源腐っているんじゃないの? それともオーバークロック状態でアドレスカウンターが吹っ飛んでいるとかね。
リセットピンオープンとか、パスコンまるでなしとか。 電解のみで積セラなしとか。 初期の後閑さんは基板はじに100uF一個で他まるでなしってあったな。 さすがソフト系の人。 > 意味不明のアドレスエラー なんで判るの?
PIC18F2550のEUSARTがSPBRG=0で正常に動作しない件で質問した者だけど、 Microchipに問い合わせたら、既存のエラッタを確認しろの一点張り。 バグと認めたくないのか。
>>650 ネット経由か何かでメーカーに直接問い合わせしたとしたら、
面倒だから相手にされていない可能性が高い。
商社経由で今後の取引量を人質にすれば動いてくれるが、
商社自体が対応を嫌がる時もある。
>>648 > 電源腐っているんじゃないの?
> それともオーバークロック状態でアドレスカウンターが吹っ飛んでいるとかね。
電源をシンクロで見ながらやってるが、普通に安定している。電源とMCLR端子は特に問題ないように見える
が、MCLRに入れてるコンデンサ定数変えると不具合発生頻度が変わるので、電源まわりの可能性は捨てきれない
UART使ってるんで、クロックが正常なのは確認済みと思っている
>>649 > リセットピンオープンとか、パスコンまるでなしとか。
> 電解のみで積セラなしとか。
すべての電源ピンに0.1uセラコン付き
> > 意味不明のアドレスエラー
> なんで判るの?
デバッグでも、書き込み直後のみ同様の症状が出る
エラー割り込みで引っ掛けたら大体このエラーに引っかかる
たまにどこにも引っかからずにリセットかかる
>>652 何V、何MHzで動かしているか判らないけど、ストレージオシロ使わないとダメだよ。
シンクロって事はアナログオシロ使っているんでしょう。
突然リセットが掛かる動作は電源の瞬断も考えられる。
アナログオシロとかでは見えないから判らない。
MCR周りで変わるとすればリセットがうまく効いていないってのもあるね。
電源の立ち上がりがだらーとしている場合におかしな動きする場合がある。
以前PICを使っている時に電源ラインにちょっと大きめの電解コンデンサを入れないとうまく動かないって話を聞いた事がある。
セラミックコンデンサ0.1uFを入れたら安心ってもんじゃないぞ。
もしかしたらリセットICを使えば安定するかもよ。
>>650 >Microchipに問い合わせたら、既存のエラッタを確認しろの一点張り。
以前Microchipのサポートを利用したときは、かなり親切に対応してくれたけどな。
質が変わったんだろうか。
656 :
natu :2009/08/21(金) 18:56:34 ID:/UP6CDRw
>>647 >エラータにも同様の症状載ってて、回避方法...
C30のコマンドオプションが回避方法ってことは、デバイスのエラッタじゃ無いよね?どんなエラッタ?
> 650がモンスターなだけだろ。 あの小池は良かった。
>>656 デバイスのですね
PSVの最初の4バイトに特定のアドレッシングモードでアクセスするとアドレスエラーが起こる、と書いてある
C30のreadmeみると、アドレスエラー、またはリセットって書いてあるんで、状況と一致する
C30の3.11以降で、コマンドライン指定により、そういう命令を作らないようにコンパイルしてくれるみたいだけど、
指定してもまだ発生するので困ってます。最初は起動時だけだったけど、ファームウェアが大きくなってきたら
別の場所でも発生するようになった。いや、困った。
最終的には、コンパイル後の命令を一個ずつチェックするしかないかな。
いや、PSVの最初に、絶対使わないconst long入れとけば良いのか?
来週試してみよう
659 :
natu :2009/08/21(金) 21:09:19 ID:/UP6CDRw
CMOSセンサー買ってPICで画像処理しようと思ったら、画像が1.3Mあるのですよ。 で、2MB位のSRAMに記憶して処理したいのでけれど、 CMOS→SRAM→PICかな?それとも、CMOS→PIC→SRAMかな? というかPICで外部のSRAMって扱えますか? いよいよ、俺もPIC卒業か?どのマイコンならいいの?
CMOSによると思うけど、直接SRAMを扱えるインターフェイスが付いたCMOSセンサじゃないとたぶんデータ格納できんぞ? CMOSセンサ側からマイコン相手にSPIかなにかで情報を送れるようになっていれば、あとはマイコン側では外部パス付きで接続したSRAMで処理するんじゃないかと。 H8ならタイニー以外なら外部パスが有るけど、PICにも外部パス付ってあったっけ? むしろ1.3Mモノ情報をどんだけ時間を掛けて処理させるつもりなのかが気になるところだが。 SRAM2MBって小さい組み込みリナックス動いちゃうんじゃね? 処理速度から言ってH8かSHが良いと思うけどなぁ、PICから見ても3倍速どころじゃないし。
>処理速度から言ってH8かSHが良いと思うけどなぁ、PICから見ても3倍速どころじゃないし。 無知は恥ずかしいな。
663 :
647 :2009/08/22(土) 00:04:41 ID:IpWm7je0
コンパイラのメッセージをよくよく見たら、 pic30-coff-cc1.exe: warning: Options have been disabled due to expired license だって そりゃオプション入れてるのに効かないはずだわ もうちょっとあがいてみて、それでもだめなら購入か いくらだったっけ?社長買ってくれるかな?
つ アセンブラ
>>660 CMOSセンサーの読み込み速度がわからんけど
速度が重要でないなら512バイトのバッファ用意して
SDカードにその都度書き込むとか。
PICからSRAM2MB扱うのはしんどいよ。
アドレス線がとりあえず21本分いる。
少ピンでやるならラッチとシフトレジスタやデコーダでなんとかするとか。
アドレス決め打ちならCMOS→SRAM→PICという順にもできるけど
もはやPICで処理する意味があるのか疑問。
>>660 かなりの大掛かりな物を処理するようですね。
もう PIC より Blackfin の方がお勧めかな?
VisualDSP++ の C言語の最適化は凄かったよ、アルゴリズムを大きく変えても出来上がる HEX は同一だったなぁ。
プロテクトは掛けられないけど、ROM から逆アセンブルしたところで C言語まで持って行けないから、デッドコピーまでしか作れない。
↑を参考に応用しようは無理だと思われる。
市販品では H.264 の画像処理を行っている物もあるよ。
PICをAVRとか他のマイコンに置換して、 他のマイコンスレにマルチしてるかと思ったらしてないなw
世の中どんどんシリアルだな 7セグですらうざい
>>669 だな。
俺の学生時代の知識ではシリアルなんて超低速デバイスだと思ってたが今は逆だもんな。
昔と違い簡単になったし。
671 :
774ワット発電中さん :2009/08/22(土) 09:59:37 ID:aK/7Z9zY
MPLAB SIM でシュミレーションを実行すると CORE-W0014: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero このようなメッセージがでて実行できません。 ver8.3です。ご教授お願いします。
メッセージの意味通りじゃないのか
674 :
774ワット発電中さん :2009/08/22(土) 10:05:22 ID:UGA2tPyd
676 :
774ワット発電中さん :2009/08/22(土) 11:03:24 ID:sE74mars
まさ英語は読めません、とかいって辞書を引くことさえ放棄してここに丸投げするわけじゃないよね? そのエラーメッセージの日本語訳(正確でなくても読めた範囲内でよい)と そのメッセージ内容の何が分からないのか書いてみ?
まあ、辞書引いて意味を見ればわかりそうだな。 俺予想では単純にプログラムが終わってない。
>日本語訳(正確でなくても読めた範囲内でよい)と >そのメッセージ内容の何が分からないのか書いてみ? 停止した、due PCへ、増やしている、超え、最大のPCアドレスとラッピング、後ろへ、ゼロへ。
>>678 ロボット翻訳にしては性能悪すぎじゃねえのw dueとか日本語になってねーしw
プログラムが暴走して割込みベクタ踏んだ、ところまで読んだ
>>668 256byteが1ms以上掛かるなら、SDカードと大して変わらない。
やっぱり何かしらの方法でバス接続でRAMに書き込んだ方がいい。
DMAでもないと画像処理どころではないけど。
MOSセンサなら、読み出しクロック落としてたらたら読んでもおk。 シリアルフラッシュがお手軽。
上の人とは別人なのだが、 MPLAB 8.33 + Hitech C 9.65PL1 lite 、デバイスは12F675に設定して MPLAB SIM で debugすると、 CORE-W0014: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero が出る。なにか設定が足りないのか・・・? 今までアセンブラしか使ったことがなく、Hitech Cを使うのは初めてです。 ググってたらこのスレを見つけた次第です。 なにか気づいた点があったら教えてください。 #include <pic.h> __CONFIG(UNPROTECT & BORDIS & MCLRDIS & PWRTEN & WDTDIS & INTIO); void main(void){ while(1){ GPIO = 0; } }
>>687 MPLAB SIM の状態で
Debugger → Clear Memory → All Memory
Debugger → Run F9 を 選択
690 :
natu :2009/08/23(日) 22:22:21 ID:jr/BwP4J
>>687 アセンブラでもステップじゃなく実行すれば"call 0x3ff"の行で出るでしょ。
retlwだと先読みした"wrapping back to Zero"の命令は捨てるので
気にせずに次のステップへ進もうぜ!
質問者とは別人だが CORE-W0014: Halted due to PC incrementing over the Maximum PC address and wrapping back to Zero のPCってプログラムカウンタのことか。
PICでSDか・・・ おれならSHに走るな。
>694 最低クロック周波数があるからPICじゃ_。 今度質問するときは、用途とPICの型番書きましょう。
>>696 直接は無理だがFPGAを介すればできるので全く無理ってわけではない。
>697 責任もってFPGAもフォローしてやってくれw。
PICでロボットアーム動かしてそいつで扱えばいいよ。
PICの先にPCをつないでやればOKさ
おまえらって奴は・・・
メモリはPCに乗せて、PICとシリアルケーブルでつなぐのが一番楽。
>701 余計なこと言ってないで、ソースコードつきで答えてやれよ。
>>697-698 それ、PICもFPGAに取り込めね?
しかし…何を思ってPICにSDRAMなんだろうか…
>>703 なに苛立ってんの?
質問者は解決の方策を聞いているんであって具体的な方法を説明する段階ではない。
FPGAというヒントからその方向に進むのであればヒントを出す。
いまは数ある方策から選択する段階。
>>696 マジレスだが、SDRAMの最低クロック周波数は使用デバイスによって1MHz〜数MHz程度だから、
PICでも何とかなる。
どうなんだろう、プリチャージとかリフレッシュとかが忙しそうな気もする・・・ メモリコントローラでも作るのかなあ
SDRAMは色々めんどくさすぎる…
どうせならPICで、SDRAMをSRAMのように 振舞わせる回路を作ってくれればおもしろいのに
DRAM特有の動作をチップ内でやっちゃって、I/FはSRAM互換みたいな容量メモリ欲しいなぁ。
>>711 それ何てPsuedo SRAM
20年以上前からあるよ。
× Psuedo ○ Pseudo くそー
>>706 今、向こうのスレを見てびっくりしたところです。
悪意の第三者のいたずらです。
俺はPIC一筋300年。AVRは使い方も分らないのです。
どうしてそんな嫌がらせをする人がいるのか困ったものです。
>>696 とそのほかをスルーしてなおイヤガラセだとだけ書きに来るアナタ〜
>>716 ってかDRAM使って何やりたいの?
目的書くと別の解決方法があるかもよ。
http://www.softech.co.jp/mm_080206_firm.htm こんなの発見。
>>717 え、そんな・・・上のほうでPICで画像処理したいと言った奴です。
会社で使用している機械が2秒に1個製品を作ります。
その製品の外観検査をしたいのです。
現在の機械は使用していると仕上がりの寸法にずれが生じるので、
画像を解析して機械の制御にフィードバックさせる事で、オートパイロットを実現したいと考えています。
そのズレは一定方向に少しずつ進行するので、マイコンの処理時間が掛かるようでしたら、
2個に1個検査とか、10個に1個検査とかでも何とかなるとは思います。
CMOSセンサ→PIC→SRAM/SDRAM7→画像解析→モーター制御
こんな風にしたいなと思います。
719 :
774ワット発電中さん :2009/08/24(月) 15:39:27 ID:bK6Nct7F
30pinSIMM使うぐらいなら、大容量のSRAM使った方が良くね?
>>718 なんでPCで直接やらないの?
なんでPICを介する必要があるの?
>>695 どうもです。SHの意味が分りました。もう少し調べてみます。
>>720 PC買う金が無いんだろ。
そもそも寸法まで認識しなければいけないような処理はPICでは無理。
>>720 PCならお金も掛かるし場所もとる。
あとは会社の自作PCマニアへの対抗心があるな。
これが一番大きいかもな。
>>724 2秒毎の寸法認識くらいならネットブック程度でも十分でねぇか?
30fpsの処理なら厳しいと思うけど。
SHに手を出したりしたら数万程度は軽く掛かるし・・・
>>718 >>CMOSセンサ→PIC→SRAM/SDRAM7→画像解析→モーター制御
すると、CMOSセンサーの走査線を読みつつ、SDRAMに書きつつ
隙をみてSDに貯めた画像を画像解析に回す…でいいのかな?
まー無理だな。
画像解析とモーター出力は何でやるんだろうか?
>>727 @ CMOSセンサーの走査線を読みつつ、SDRAMに書く
A SDに貯めた画像を画像解析しサーボへパルス出力。
@の後Aをやり@へ戻るの繰り返しになります。
731 :
774ワット発電中さん :2009/08/24(月) 16:26:14 ID:9yyd91R4
ID:zQVqa8Cs なんだ、FPGAうってつけのアプリケーションじゃん。 がんばってフォローしてやれー。 そういえば、トラ技に差分検出の記事あったな。PICだかAVRでやるやつ。
>>731 AVRのスレッドに・・・オシロに時計表示させる話が出ている。確かに、このアプリはFPGAでも出来るな。
>>734 簡単なネットワークアナライザーを作るのに向いているらしい。いろいろ遊べる。
以下、PICに話を戻そう。
>>736 こんなんで、どうやってネットアナ作れっていうんだ?
>>737 「高速ネットワークアナライザー」は無理だ。だから、簡単な・・・という形容詞をつけている。
ちょっとした実験やTCP/TPプロトコルでのデータ転送などの実験用。普通、そうやって使う。
>>738 そういうのは、ネットワークアナライザって言わない。
ネットワークアナライザーでググってみ?
画像とかログとして保存しておかなくていいのかな
>>742 まず元レスとそれに対する自分のレスを読み直せこのトンチンカン。
認識の前提として、PC≠ネットブックとか、PC≒ネットブック…でないこととか、そういうのを確認しないと… 最近ネットブックのメリット無いほど、据え置き機が安いよね…
network analyzerで画像検索したらトップ画面の15/20がRFだな。
>>718 なぜPICにこだわる?
PICなら自分でも使えるという安直な理由ならやめたほうがいい。
自分でそのデバイスで実現できるかどうかすらわからない人が、画像処理なんか実装できるとは思えない。
PIC礫300年だよ
>>746 そうですね自分は勤め先の機械をハイテク化したいという夢があるのですが、
もちろん高額の既製品と買い換えるのではなく、自分で作りたいと思っています。
昔、パソコンがオフィスに入り込んできた時、様々な中小ソフト会社が乱立して淘汰されてゆきました。
それと同じ事がこれから製造現場でも起こると考えています。
そんな訳でH8やSHの方が自分のやりたい事に近そうだと思いました。
>>748 やってみて、ダメだった、も経験だと思うが。
ID:YaoQsdq8 レスどうもです。秋月のリンクのやつ面白そうですね。
>>748 どうもです。
という訳でこれからはH8暦300年で行きます。
USBのカメラと小型PC使う方がコストパフォーマンス良い気がするんだけどね。
USBカメラ(WEbカメラは基本圧縮画像を送ってくるから止めといた方がいくね? YUVorRGBで送ってくるカメラが処理しやすい。
俺はそういう人好きだけどな
>>757 うん、物とモードによるね。
USB対応の最近のWEBカメラで圧縮無しで送ってくる奴教えてよ。
先に圧縮タイプを示してもらおうか。 >705 > >質問者は解決の方策を聞いているんであって具体的な方法を説明する段階ではない。 >FPGAというヒントからその方向に進むのであればヒントを出す。 >いまは数ある方策から選択する段階。 さあ、数ある方策中からFPGAがいい感じになったみたいだがw。 どうする>705 しっかし、PIC+FPGAとかPIC+SDRAMなんて、軽石ふぁくとりぃこと日シ相テクニカしかやんないだろw。
760 :
774ワット発電中さん :2009/08/24(月) 23:27:19 ID:553dnspn
PICにFPGAは無いよな。 軽石以外は。
>>750 その作ったものが仮に動いたとして君が死ぬまで面倒を見る気なの?
運用始まってトラブルが発生したとして短時間に校正して動作保証できる仕組みを作るのは困難でしょ
マジレスすると画像解析なんてオーバースペック
できるだけ単純な仕様で要件を満たしたほうが運用上有利になる
しきい値制御でも良さそうだしアナログ制御したければ
単位個数当りの時間制御とか、センサ1つで実現できる
ホビーとして楽しむのか、プロとしての仕事をするのかの判断を見誤ると悲惨だよね。 本人以上に周りが・・・
他の人間が触れないほうが自分の価値があがっていい!
複雑で面倒でトラブル対処困難なほうが当人的には得なんじゃね? 会社員なら。 構築もトラブル対処中も給料は出るんだからね。
FPGAって面白そうだね。
>>761-764 マイコンを生かすフィールドを持っている人は幸せだと思うよ。
技術はあってもライターしか思い浮かばない人よりはね。
>>759 本人はサラッとしか触れていないけど画像認識にこそFPGAって向いてそうですね。
10万回路辺りのFPGAで処理できるなら、ああいう演算処理はまさにFPGAの得意中の得意って所でしょうかね?
失敗した方が記憶に残るから若いうちは何でもチャレンジした方が良いでしょうね。 ジジイになると冒険は冒さずに可能な選択枝の方に逃げてしまう。ふぅ
CMUCAMと言う手もある。
>>759 普通にJPEGだが?
てか質問に質問で返すって馬鹿?
773 :
774ワット発電中さん :2009/08/25(火) 19:18:40 ID:pP/rwjCI
>722 世間知らずがww。 さくっと3つくらい型名あげれw
774 :
774ワット発電中さん :2009/08/25(火) 19:32:20 ID:L2DNFIQk
776 :
774ワット発電中さん :2009/08/25(火) 22:55:24 ID:DD9XCFvm
webカメラ用ってYUV/RGBでない? センサでJPEG圧縮する意味が....。 携帯用はわかるけど
>776 USBのデータ転送量の制限から、画素数、フレームレートなど トレードオフの関係になる。圧縮する意味がある。
>>776 俺もそう思って3種類ほど買ったけどJPEGだった。
分解して信号処理LSIの仕様を探してみたんだけど、確かにYUVでも出せるモードはブロック図に乗ってるが、どう設定すればそのモードになるかは書かれてなかった。
SDRAMのキャパシタもすぐに消えるわけじゃないらしく、 規格外だが低クロックから扱う方法も一応あるらしい
780 :
774ワット発電中さん :2009/08/26(水) 08:29:19 ID:JY+DBh46
外形寸法計るだけなら、 NTSC−→コンパレータで白黒2値化 同期信号とパルス幅カウントして・・・ という手もあるのでは? ただ、こういう画像処理製品を買った方が 早くて確実で結果が出ると思う。 他に工夫しなきゃイカン所も多いし。
Webカメラ付属のソフトや、Windows標準のユーティリティがファイルに
保存する際に使う画像形式がJPEGというだけで、USBバス上でのデータ
転送はYUV/RGBがフツーじゃないの?
最近の製品は、USB 2.0ハイスピードに対応だから、VGA(640x480)程度の
解像度で30fpsだと、非圧縮でもなんら問題と思うけど? しかも、専用
ドライバを必要とせず、Windows標準カメラデバイスとして認識される
製品がほとんどでは?
そもそも、Direct-X(Direct Show)等で直接カメラから画像取り込むのに、
途中のバス上でデータが圧縮されているかどうかなんて関係ないだろうに。
>>777-778 具体的に、どこのメーカー製で、どの型番の製品で、どうやってJPEG圧縮
した画像をUSB転送していると判断したの?
WebカメラからMotion JPEG動画を保存しようとした場合、前後フレームの
差分圧縮処理は、PC側でWebカメラの前後フレーム画像を展開した上で、
画像の差分を取ってあらためて圧縮するの?
>>780 NTSCカメラからの映像でどんな精度を期待しているのか知らないけど、
単に寸法(2点間の距離)を測るだけなら、キーエンスやオムロンあたりの
距測センサやフォトカプラで事足りるのでは?
途中のバス上でデータが非可逆圧縮されてたり、最終出力が非可逆圧縮されたファイルだと計測には不適なんじゃない?
Ubuntu+OpenCV最強伝説
>>782 脳内までアニメ絵のトレス線で侵されたデジタルゆとり脳か?
非圧縮で取り込まれた静止画像なら、アニメのセルみたいに綺麗な輪郭線が
抽出できるとでも思っているのかな?
視野角60°の標準レンズで対象物から10cmの距離から撮影して映る範囲は
水平方向で約11.5cm。
水平解像度を640ドットとして1ドットあたり約0.2mm。 まさか、非圧縮
の画像であれば、こんな精度で測定可能なんて考えていないよな?
>>782 また、呼んでもないオープン房が湧いて出たか。通信仕様が変わらない
のに、ドライバやアプリを変えたところで意味ないだろ。
>>781 MotionJPEGならJPEGを並べてコンテナに格納するだけだからそんな面倒な処理いらないよ
>>784 ちょっと落ち着け
どうしてもPICを使うというなら、レーザーをサーボ制御で照射して測定するってのはどうだろうか。
検出に主眼があるけど適切にフィードバックかけれれるのか? 目標値にあわせるなら比例制御じゃオフセット出るので、PID制御が必要とか知らなさそう・・・
>>781 USB.orgでVideo Class見たらわかるんだけど
USB_Video_Payload_DV_1.1
USB_Video_Payload_Frame_Based_1.1
USB_Video_Payload_MJPEG_1.1
USB_Video_Payload_MPEG-2_TS_1.1
USB_Video_Payload_Uncompressed_1.1
USB_Video_Payload_Stream_Based_1.1
送られるデータの規格はこれだけ定義されてる。
製品レンジ/用途によって色々あるとしか言えないと思うよ。
790 :
774ワット発電中さん :2009/08/26(水) 16:17:36 ID:UPzXiavl
間違っている自分とだねw
791 :
784 :2009/08/26(水) 18:03:10 ID:aISmXDZt
>>788 将来を見通して規格上で定義されていることと、現実に製品が存在するか
どうかはまったく別だろう。
>>778 が『3つほど買って試した』という具体的な製品名の1つでも知りたい
ものだ。
Windows 7対応の最新WDKを落として、付属ツール(UVCview.exe)で、手持ちの
130万画素を謳ったバッファローコクヨサプライ製USBウェブカメラのディス
クリプタを表示させてみたが、予想通りJPEGではなかったな。(w
===>Video Streaming Uncompressed Format Type Descriptor<===
bLength: 0x1B
bDescriptorType: 0x24
bDescriptorSubtype: 0x04
bFormatIndex: 0x01
bNumFrameDescriptors: 0x07
guidFormat: {32595559-0000-0010-8000-00AA00389B71} = YUY2 Format
bBitsPerPixel: 0x10
bDefaultFrameIndex: 0x01
bAspectRatioX: 0x00
bAspectRatioY: 0x00
bmInterlaceFlags: 0x00
D0 = 0x00 Interlaced stream or variable: No
D1 = 0x00 Fields per frame: 2 fields
D2 = 0x00 Field 1 first: No
D3 = 0x00 Reserved
D4..5 = 0x00 Field patterns -> Field 1 only
D6..7 = 0x00 Display Mode -> Bob only
bCopyProtect: 0x00 -> Duplication Unrestricted
ちなみに製品の型名は「BSW13K05H」な。
792 :
774ワット発電中さん :2009/08/26(水) 19:19:04 ID:UPzXiavl
馬鹿はこいつww
型名挙げれー
> 名前:774ワット発電中さん[sage] 投稿日:2009/08/25(火) 19:01:04 ID:kVpLgCeM
>
>>759 >普通にJPEGだが?
>てか質問に質問で返すって馬鹿?
>>781 logcoolの製品で、中身ばらして、石の仕様書見て判断した。
>>791 logcool QV30SV だったと思う。
何て言ったらいいか・・・ ひ ど い 流 れ で す ね!
予想外の大漁で、694はホクホク顔だろうなw
797 :
774ワット発電中さん :2009/08/26(水) 21:20:57 ID:UPzXiavl
> 書いた通り、製品によって選択肢があるから「普通」の定義は > 出来ようが無いんじゃないの?って話なんだがね。 これが?? >普通にJPEGだが? >てか質問に質問で返すって馬鹿?
ID:UPzXiavlは頭悪すぎて誰が誰かも分かって無さそうだな。
800 :
774ワット発電中さん :2009/08/26(水) 23:22:59 ID:siBrPgz4
>YUVでも出せるモードはブロック図に乗ってるが、どう設定すればそのモードになるかは書かれてなかった。 これだけだったら、JPEGだって言うことにはならないじゃん。 頭悪すぎて(ry
くやしそw。
803 :
774ワット発電中さん :2009/08/27(木) 01:39:08 ID:YGjsx0Eg
本格的にC言語での開発に取り組みたいのですが、CでPICをされている方達は結局どの開発環境が多い(おすすめ)なのでしょうか? C18, mikroC PRO,PICC, CCSなどいっぱいあるようですが、個人の趣味レベルで幅広く開発を楽しみたいという場合で、できれば無償、有償であっても対応や開発範囲の広さ•効率が割合的に良いものが良いと思っています。 どうぞよろしくお願いいたします。
後閑さんの解説本があるCCS-Cがいいな。 組み込み関数豊富。 でも高いかも
CCS-Cが いくら高いからといって、"ccs 4.088 torrent"で Googleして、 BitTorrentで DLして使うなんて、凄くイケナイことだと思う。イケナイ… イケナイ…
>>803 PIC18Fシリーズなら、数年前は組み込み関数が豊富な CCS-C の方が良かったけど、
今では Microchip 純正の C18 の方が良いですね。
LAN (TCP/IPスタック) や USB 関連も Microchip の HP からダウンロードして
MPLINK で組み込んで使えます。
>>803 C18の無料バージョンを使うっていうのが、一番正しい。
最適化に関しては、気にしなくてヨロシ。
そもそもgccベースなのに金取るっていうのが気に食わん。
gccベースってことは、GPLの派生物にならないの? 金取るのは良いけどソース公開が義務とかなんとか
>>807 C30はgccベースだけど、C18はgccベースじゃないでしょ?
gccベースならソース公開せんといかんはずだし。
(C30はソース公開されてたはず。)
なるほど じゃあとっととC30の使える環境に移行した方がいいのね
16FだったらCCSは選択肢としては良いね。 PICC-Liteの無料版があるけど、無駄にGOTO入れて遅くしてくれるから用途が限られる。 趣味レベルなら18Fとの価格差が小さいから18FでC18使うのが良いと思う。
C18 なら得意分野だから、ここでも良いし、air_variableさんの所でも良いから 分からなかったら質問においでね。
>>812 ここはお前の私有スレッドじゃないんだ、自分のホームページでやってろ、な!
814 :
774ワット発電中さん :2009/08/27(木) 16:06:24 ID:42lZeaMR
>813 うぜーよ、マナー教室軽石!
815 :
774ワット発電中さん :2009/08/27(木) 17:07:29 ID:P91A9oiT
全然うるさくないと思うけど?
USBやらEthernetやら弄るんじゃなければ、24FでC30が一番悩まなくていいと思うんだけどなあ。
にゃん腰は呼ばれた気がしたので北人手あって学問板にこそアリだと思ったが 検索TOPを2ちゃんが〆てた頃の印象から比べるとコテもだいぶ様変わったのかもな
「分からなかったら質問においでね。」とかコテが言ったら 他の人たちは「コテがスレに私物化意識を持っている」 という印象を抱いても仕方無いだろう。 結局、コテは荒れるという当たり前の結論に行き着く。
>>818 > という印象を抱いても仕方無いだろう。
無いわ。
どういう論理でそこへ行き着くんだw
「初心者は出て行け」
というのなら、それは
>>1 に反してるわけで、私物化と取られても
仕方ないだろうけどな。
820 :
774ワット発電中さん :2009/08/28(金) 00:25:08 ID:Gkoz3rct
自分よりまともな回答できる人にやっかむ軽石大杉。 そういうやつに限って、"世の中のUSB接続の撮像素子はみんなJPEGだ"みたいな誤った認識を開陳するんだな。 FPGA+PICの素敵なセンスを持った人は、ふぁくとりぃにこもったままか?
>>820 お前まともに一度も回答してないだろ?
まぁキチガイはほっとこ。
>821 いちいち反応すんなチンカス低能。 webカメラはYUVだJK。
お前もいちいち反応するな、チンカス以下
馬鹿がアイデンティティーを守ろうとすると大抵こうなるw
おかげで馬鹿をアイデンティファイしやすくなると
827 :
774ワット発電中さん :2009/08/28(金) 03:13:19 ID:Gkoz3rct
>相手が誰かすら分かって無さそう。 これしか言えなさそう。 ぼきゃ(ry
軽石って何?
829 :
774ワット発電中さん :2009/08/28(金) 09:25:41 ID:nZQ+gl7K
>>818 シャブ中でもあるまいに、見るものみな敵、みたいな思想はやめたほうがいいよ。
のりぴー起訴されたね。
831 :
774ワット発電中さん :2009/08/28(金) 19:47:53 ID:HWnmlPz8
> 軽石って何? 日湘何とかなる零細企業に勤める、近藤なんとかって言うおっさん。 PIC-MLや、後閑さん、なひたふさん、バサロさんの掲示板に終日居座り、初心者を見るとマナーがなってないとカラむ。 嫁は重石と言うハンドルで口汚く荒らしていた。 > 見るものみな敵、みたいな思想 Microchipが手当たり次第に買収するもんで、リアルに敵が増えてる悪寒。
>>831 HI-TECH C の開発チームも Microchip 社の居心地が悪ければ退社するでしょうね。
できれば新会社を立ち上げて今まで通りに各種の CPU 用の C言語を作り続けて欲しいですね。
ですねー。そういう国ですからね。 向上心あるプログラマなら飽きちゃうと思う。
プリプロセッサで逃げれる部分と、根幹から作らないとだめな部分とあるな
ラジコンを作ってみたいんだけど無線通信について詳しい説明があるサイトってない? 送信機や受信機の回路図だけでなくて説明が欲しい
PICで作るの?
指紋センサーを売っている所って誰かご存じですか?
>838 証明する手段がなければ、違反と同じ。 スピードメータがない車と同じ状態。
お前の脳からも電波が出てるぞ
50mW以下はok
いいえ。たとえ1mWでもアマチュア帯なら免許が必要 逆に別帯域なら別に規定が。 一般的に数mも飛ばない。 世界的に一般的な包括免許制度が日本にもあればアマチュアの範囲で いろいろ実験できて面白いのだけれどね;; デジタル通信とか面白そう。
微弱無線とか特定小電力無線(1mW/10mW)とか免許不要のもあるよ。
免許と電波法は別だろ。
電子ブロックも登録されてたんだろうか
最近のやつはハムの免許ももってないのか…
免許が必要という意味では、携帯電話だって免許は必要だ。 問題は「使用者が」免許取得手続きを行う必要があるか否かなのに、 わざと一般論と混同してるやつがいるな。
853 :
839 :2009/08/30(日) 16:07:54 ID:GM8D4JD/
>>840 うぉ!一応探してはいたのですが、まだ探したり無かったですね。
ありがとうございます。
う〜ん・・・。気楽に「指紋センサー」使えたら遊べるかな〜と軽く考えれるレベルでは無いですね。
く・・・。ネタとして面白いかな?と思ったのに・・・。
別なネタを考えます。
ありがとうございました。
半可通軽石共め。 どうやって何mで何μVと50mWとか証明するんだよ。 証明できなきゃ違法だよ。 技適取ってるやつをつかうならおk。 免許不要レベルの出力、2.4Gだと数センチが精いっぱい。
>>854 証明できなきゃ違法って…悪魔の証明じゃん・・・
お前の作ってる軽石回路からでてるノイズも
微弱電波だって証明できないから違法だなw
FMトランスミッターだって局の免許も従事者免許もいらない
微弱電波使ってるわけだが10mくらいは届くぞ
>免許不要レベルの出力、2.4Gだと数センチが精いっぱい 安物のHubとかだと軽く越えてるんだよねw
857 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 18:23:46 ID:0dSIHVN4
>お前の作ってる軽石回路からでてるノイズも
>微弱電波だって証明できないから違法だな
マジレスすると,それは「無線機」じゃないからOKっていう妙なことに
なっている.
実際に,微弱電波の規制値は、PCなんかの不要輻射の業界自主規制値より
厳しいという不可思議なことになってたりするんだよね
微弱電波の規制値は周波数で変わっていて
http://www.tele.soumu.go.jp/j/ref/material/rule/index.htm 322MHz以上という比較的美味しい周波数でいきなり1/15程度と
厳しくなっている.ちなみに,この35μV/mっていうのは各都道府県レベルで
持っている工業技術センターのシールドルーム程度ではフロアレベル
(シールドルーム内に入り込んでくるノイズレベル)に埋もれてしまう
くらいの低いレベルなんで,TELECとかのご大層な設備を持っているところ
でないと測定できないという・・・なんだか天下り先を食わせるための
ようないやーな値
FMトランスミッターの場合にはFM放送周波数がずっと低い(70MHzとかだからね)
ので,緩い方の規制値になるんで,結構飛ばせる.
>>844 PSoCの無線内蔵のやつ(PROC)を使ったボードで2.4GHzの
アマチュア無線機器として保証認定取れたらしい。
>>857 ラジコンって普通40MHz帯とかだろ…?
普通に電界強度計つくって適当に合わせとけば問題ないと思うけど
PIC16F84Aを今回初めて使ったのですが思ったように動作しません。原因の特定に皆様の力をお借りできないでしょうか。 20MHzのセラロックを使っています。該当ポートの監視を続けても出力がHになりませんでした。 list p=16F84A #include <p16F84A.inc> __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC w_temp EQU 0x0C status_temp EQU 0x0D ORG 0x000 goto main ORG 0x004 movwf w_temp movf STATUS,w movwf status_temp movf status_temp,w movwf STATUS swapf w_temp,f swapf w_temp,w retfie main bcf STATUS,RP0 clrf INTCON bsf STATUS,RP0 clrf TRISA clrf TRISB bcf STATUS,RP0 clrf PORTA clrf PORTB bsf PORTA,1 main_loop nop goto main_loop END
>>859 ざっと見ただけですが、プログラムは間違ってないように見えます。
開発環境か回路か測定方法のどれかがまずいのでしょう。
もう一度順に確認してみてはどうでしょうか。
どこもおかしくなさそうだけど。 一応 bsf portA,1をmain_loopの中に入れてみてくれ。 それと不具合の原因とは関係ないけど、割り込みに飛んでこないときは04番地は書かなくてもOK。 mainの1行目と2行目も不要。わざわざセットしなくてもリセット後の初期値が決まってるから。
ID:jIwZIfv3=ID:Gkoz3rct つまりキチガイだから相手しなくておk
863 :
859 :2009/08/30(日) 19:52:55 ID:vf4CRhlV
>>860 ,861
数々のアドバイスありがとうございます。別種類のPICも用意して測定周りのチェックも行いましたが
そちらには異常ありませんでした。原因の検討を続けてみます。
864 :
名無しさん@そうだ選挙に行こう :2009/08/30(日) 19:56:08 ID:0dSIHVN4
>>858 >普通に電界強度計つくって適当に合わせとけば問題ないと思うけど
校正されてない電界強度計なんて何の意味もないという扱いだから
「問題ない」とは言えないだろうなぁ・・
ちなみに,微弱機器とするにはスプリアスまで含めて規制値を満たさないと
いけないんで,322MHz以上の高調波が規制値を超えていても駄目という
うっとおしいことになってる.
ラジコン機器はラジコンでまた別にあって
http://www.rck.or.jp/contents/rc_denpa/rc_denpa0110.html このあたりがいいかな?ギョーカイ団体で適合証明を出すという形で
微弱に入っていることをシールドルーム借りて確認するか
ギョーカイ団体で認証受けないと駄目ということだな
とにかく日本は無線の実験をことごとく拒絶する方向になっていて
やりにくくて仕方ない.船乗って公海上でやれっていうのかよ!って感じ
アマチュアが合法的に楽しむなら周波数がアマチュア無線バンドの
全電波形式にうまくはまるようにして保証認定を受けてしまうという
手くらいしか無さそうだね.
お仕事で使うならアマチュア無線業務にはならないんで,会社にスリスリ
してがんばってくれたまえ
アマチュア無線の無線機器のお仕事は?
やっぱ包括免許(アマチュア)だな;;
製作者のバックグラウンドは不明なのだから 技適とか免許とか考えずにPICに関連した技術の 話にすりゃいいのに
基地外は放置が一番だぜ
このスレでいう事ではないが、やっぱり安全性と胸を張って外でも運用できるような無線のシステムというとUSBドングルタイプの無線LANかブルートゥースが良いと思う。 その辺りなら認証済みの製品だけがPCショップに並んでいるはずだし、好きなものを選べるし、なにより安い。 という訳で個人的にはH8辺りの組み込みリナックスボード(USBホスト機能つき)をお勧めします。 値段も認証品で組み込み用と向けボードの送受信機どちらかだけを買うのと大体同じくらいだし。(秋月H8USBホスト+USBドングルで6000円ぐらい?) ……PIC関係ない流れだな、すまん
>>863 ふと気になったのは、PORTA、1を違うので試してみてどうなるのか?
というのを試してみるのも一興かと。
ほいで、18F452と混同しているので間違っているのかもしれんけど、最初のプログラムの0番地には、NOPっていらなくて良かったけ?
>>870 1.
しっかり出力を計算してラジコンの回路を作る。
→電界強度計を作る(秋月のキットでもなんでもPICを使うとスレ的にウマー)
→ラジコンの微弱電波認証済みプロポの電界強度を測る
→自分で作ったものと比較
2.
それなりの知識をもった人が作った合法な作例がころがってるってこと。
3.
40MHz 54dBuV/m (3m法) でいいじゃん。出力なんて設計する段階でわかるし
1. 秋月の電界強度計、微弱なんか測れませんよ。 やり方はいいと思うけど。 2. 例を示して。自称は沢山見るけど...。 3. 空中線を失念してない?微弱レベルだと、実装も効いてくるのはご存知の通り。 北摂電子さん、もう帰ってこないんだろうなぁ。
普通にXBeeでいいじゃん。
最近のラジコンはデジタル通信してたりするのか?
>873 >最初のプログラムの0番地には、NOPっていらなくて良かったけ? もしそんな仕様があるなら、俺が今までに作ったプログラム全部不良品だな…
R-1とかの無線って電波法で言うとどうなっているのかな?
>>878 PIC18Fでも同様かどうか分からんが、PIC16Fではデバッガのステップ実行の制限で
ゼロ番地の実行前に止めることができない(必ずゼロ番地の命令は実行される)ので、
ゼロ番地にはNOPを書いておくことが推奨されている。
別にNOPでなくても実行に支障はないけどね。
秋月の電界強度計って30dBμV/m〜だしいけるんじゃね
882 :
774ワット発電中さん :2009/08/31(月) 00:24:52 ID:uPIFq3Gy
>市販品の定数パクれば問題のある出力出すほうが難しいとおもうが…
「思う」のは勝手だけど現実はそんなに甘くない.
水晶発信器の端子にちょっと電線つけただけでも超えたりするから
>>874 スプリアスも含めての規制でしかも322MHz以上で急に厳しくなってる
ところが特にネックなんだよね.
高調波やらの不要輻射も含めての規制だから中で使ってるクロックの
高調波なんかが漏れていてもアウトだから「電界強度計で見たからOK」
なんて簡単にはいかない.
配線のインピーダンスで出力が設計の最大より上がるなんてなさそうだけど そんなに心配ならFMトランスミッタキットでも使ってラジコン作ればいいんじゃね 制御信号をPICで音声に変調して送受信すれば面白そう それか超強力な赤外線・・・?超音波とかも面白そう
dspicのuartなんですが、タイマー1の割り込みを有効にすると UR1DAが見れなくなってしまうみたいなのですが、仕様? それとも使い方がまずいだけ?
UR1DAってなに? あと、エラッタかもだから、機種まで書いて
>>885 × UR1DA
○ URXDA
の間違いでした。
機種はdspic33F256GP710です。UART割り込みを使わずに
タイマの割り込みで処理するつもりです。
>>876 俺もそう思う、ラジコンの真似事ならXBeeで十分。
見通しさえあれば100mは余裕で届く。
>>887 エラッタには無いので仕様ではなさそう。
URXDAのチェックはUART使えばほぼ必須だし、T1割り込みもよく使われると思うんで、未知のデバイスエラーとは考えにくい
たぶんソフトのどっか間違いがあると思うが、これ以上はわからんね。
いまちょうど33Fで開発中のもんあるし、T1使ってないからちょっと割り込み有効にしてみる
UARTにはOERRがバッファあふれる前に立つエラッタ出てるけど、これで割り込みかかってURXDAはほんとにデータ来てない
から立ってないとかあるかも
890 :
774ワット発電中さん :2009/09/01(火) 02:02:36 ID:ysYkl9/K
PIC初心者なのですが、PIC16F628A の RB4 が何故か点灯しません。 新品チップでも同じ症状です。抵抗とLED付けて確認してます。RB4以外はプログラム通り動くのですが・・。 どなたか原因が解る方いらっしゃるでしょうか。
>>889 ありがとうございます。全部、一から書き直したら動くようになりました。
なぜ動くようになったかは調査中ですが、プログラムの書き方がまずかったようです。
お騒がせしました。
>>892 > DS40044F-page 96 ここを よく見れば何か気が付くよ
page 98の方がわかりやすい気がする
…単にRB4の出力がODだからじゃねえのか?
あ、あれはRA4か 失礼
>894 二人とも同じページを指していると思う
898 :
774ワット発電中さん :2009/09/01(火) 22:49:19 ID:8lKcuAlG
pickit2で16F883をいじっているのですが、CPかけたら解けなくなってしまいました。 秋月ライタだとイレースできた記憶があるんですが、どうしたらいいんでしょう?
>>898 操作を間違っているだけ。
PICkit2でも当然イレースできる。
ROM の書き込みor消去時には薄い絶縁層に無理やり電気を流します。
何回も書き込み消去を繰り返すと ↑ が壊れて書け(消せ)なくなります。
絶縁層の破壊は簡単で Vdd 5V の PIC なら Vdd 9V ぐらいで簡単に壊れちゃいます。
>>898 さんの場合は操作ミスの可能性の方が高いけど電源電圧は大丈夫かな?
3端子 REG OUT ピンの隣にブリッジ平滑コンデンサの+端子が・・・(涙)
誰よ〜こんなアートワークするの・・・
>>900 なんというか、ぜんぜん的外れだよ、あんた。
それから日記はここには書くな。
WRITE/ERASE何回かで壊れちゃったらフラッシュの意味がない。
>>898 が投げやりな質問するから荒れる
低脳質問には「純正ライタ買え」でいいじゃないか
>>903 秋月のライタではできるけど、純正ライタで出来ないって言ってるように見えるんだが
>898です。 追加でいろいろやってみました。 16F819でプロテクトかけて焼いてイレース、読み込み→正常に出来る 16F883で以下略→CP解けていなくてエラー 新品の883でプロテクトかけずに書き、読みは正常にできたので回路や手順違い等では無いと思う。 環境はwinXP、PICKIT2ver5.51 ブレッドボード使用で、VddVss間に0.1uのセラコン、PGM端子10kでプルダウン、他の足は接続なし。 88X固有の問題を疑ってるんですが、だれか経験者はいませんか?
エラーって何だい?
訂正。イレース後はREADじゃなくてBLANKCHECKやってます。 >906 アドレス00で読み込みエラーがうんたらって内容でした。 819でもCPかけたままブランクチェックやると同じエラーがでてくるので883のCPが解けてないと判断しました。
一度、Tools - Use VPP First Program Entryにチェック入れて Eraseしてみ。 尚 最新版ver2.61推奨な
すぐに壊れるのはクラッシュメモリです。
悔しい。ちょっとニヤッとしてしまった。
その手があったか
>>909 フラッシュメモリなんか全然大丈夫とか思ってたけど、最近の安いSDカード
なんかはわりと頻繁にクラッシュする。pqiとか
スレ違いすみません。
913 :
774ワット発電中さん :2009/09/03(木) 12:06:15 ID:06VyEhaP
アホか逆だろ USBメモリなんか静電気で何回死んだことか!
914 :
774ワット発電中さん :2009/09/03(木) 21:04:26 ID:Ejg+ZZPz
最近、PIC10F200を始めたのですが 『パワーアップ・タイマー』が無い為 電源投入直後は不安定って事で良いでしょうか??
916 :
774ワット発電中さん :2009/09/03(木) 22:09:56 ID:Ejg+ZZPz
>>915 さん、レスありがとうです。
LEDが、●○○⇒○●○⇒○○●⇒最初に戻る
って感じのプログラムを書いたのですが、
電源投入直後は、●●●⇒●●○⇒●○○⇒上記の
点灯を繰り返すといった感じで作動しています。
回路はブレットボード・9V電池・3端子レギュレタ(5V)
PIC直近に小さな青いコンデンサです。
難しいですね!
>898です。 >907 ども。今日はヒマがなかったので明日試してみます。
918 :
774ワット発電中さん :2009/09/03(木) 22:16:28 ID:8K/0nPAA
>静電気で何回死んだことか! 何を根拠に。 休みたくてハード壊すソフト屋だな。 静電気で死にました。 次の週は開発機のハードディスクがくらss(ry
USBメモリは消えるよ
消えるはお化け。
お化けは白い。
白いはうさぎ。
うさぎはオヤジの剥げ頭
924 :
774ワット発電中さん :2009/09/03(木) 23:46:34 ID:fe0rfABP
ウサギハハネル!
うさぎは死ぬ
926 :
774ワット発電中さん :2009/09/04(金) 00:01:56 ID:NR+/C2vO
うさぎは碧じゃないの?
>うさぎは碧じゃないの? 白いクスリ〜♪
こんなところまでその話題か
P16F84AのCプログラムで DelayMs()てのと_delay_ms()てのがあるんですが バージョンとかで文法が違うんでしょうか?
__delay_ms(x)がHTCに用意されてる奴でDelayMs()が自作見たいな感じちゃう?
934 :
932 :2009/09/05(土) 08:24:58 ID:U0dwLB0k
ありがとうございます 実際のプログラムは__delay_ms()で動きましたが、 本屋で立ち読みするとDelayMs()と書いてあったりして謎でした
>>935 モーターのリップルノイズでしょ?
モーター内のブラシが切り替わる際に出るノイズ。
PICのAD変換結果をある程度の時間貯めて平均化すれば収まると思うよ。
デジタルテスタもそんな制御になってる。
trisって何の略?
940 :
軽石 :2009/09/05(土) 16:02:50 ID:Qte5DEvN
トライステートの略です。 でも軽石は、トライステートの意味をわかりません(>O<)
トライステートは、工作キットを作ってる会社だにゃ。 秋月で買えるにゃ。
よく判った
TristateでTRISってのはホントだよ。
877Aを使って基板起こしましたが、もっと小さくしたいとのことで877A-I/PTを 使おうと考えているのですが、如何せん書き込みをどうしようかと思いまして。 SOPなら変換基板も多数出ていますし、ピン数も少ないので… どのような方法が一番良いでしょうか?ジュンフロン線で必要なピンだけを 取り出して、ICソケットなどにハンダつげするとかでしょうか…
標準的な方法、すなわちICSPヘッダを経由した書き込みが良いでしょう。
トライステート=入力・出力・ハイインピーダンスの3つ 後はググるがよろし。
3ステートとも。
LVPとリセットって両立しないの?
C-MOSの場合、入力=灰隠避ー箪笥だよな。 Tristateは出力'H'/'L'とHi-Zの3状態
クリティカルな条件下で使用するtrisを、cri-trisと呼ぶ
sowrdfishの事が詳しく書いてあるHPもしくは本ありませんか? 英語は苦手なので、出来れば日本語が良いのですが。
>>950 LVP(低電圧書き込み)は、リセット端子(/MCLR・Vpp)に高電圧を必要としない書き込み方法です。
この場合 PGM ピンをオープンにされると誤って書き込みモードに突入する可能性があります。
LVPを使わない場合は、Vpp(リセット端子)に 13V の高電圧を加えない限り、書き込みモードに入る事はありません。
Vdd 最大 3.6V の PIC だと Vpp が最初から必要無い物もあるので、
書き込み方法の詳細は PIC1xFxxx Flash MCU Programming Specification を見てね。
別にグロくはないがw ファッション系の会社のようですた。
PICの出力は、HとLで、どちらが低インピーダンスなのでしょうか? あと、a_port = 0xff; とか実行した場合、a[7]〜a[0]が、同時にHになるのでしょうか? それとも、a[7]=H; a[6]=H; 〜a[0]=H; と順番に・・・なのでしょうか? それと、PICが一番安く買えるのは、どこでしょうか? やっぱり秋月でしょうか?
>>959 >PICの出力は、HとLで、どちらが低インピーダンスなのでしょうか?
データシートからHL各々の最大電流値を読み取って比較せよ。
>あと、a_port = 0xff; とか実行した場合、〜(略)〜; と順番に・・・なのでしょうか?
通常の使い方では「同時」とみなして無問題。
厳密に言えばスキューは必ずあるが無意味。
>それと、PICが一番安く買えるのは、どこでしょうか? やっぱり秋月でしょうか?
ググレカス
>>960 ありがとうございました。
>データシートからHL各々の最大電流値を読み取って比較せよ。
とても詳しい説明、ありがとうございました。
実際のPICの出力ポートに、50Ω程度の抵抗を直列に入れて、
その両端の電圧と電流から、内部抵抗を算出するんですね。
大変よくわかりました。
>通常の使い方では「同時」とみなして無問題。
これは、予想通りで良かったです。
>ググレカス
これは店の名前でしょうか?
「ググレカスパーツセンター」
「ググレパーツ」
「ググレカス電子通商」
「ググレカス電波」などのキーワードでGoogleで調べてみましたが、それらしい名前の店は無いみたいでした。
どうも古代ローマ帝国の人の名前のようです。
みなさんの参考になればと思い、わかった内容を下に貼り付けておきます。
>ググレカス(Gugulecus 紀元一世紀頃)とは、真性ローマ帝国の元老院議員であり、
>ウァッロ以降のローマの図書館行政に深く関与し、当時最高の知識人と称えられたとされる。
どうもありがとうございました。
つマンネ
善部町の重石乙。
> PICの出力は、HとLで、どちらが低インピーダンスなのでしょうか? L > あと、a_port = 0xff; とか実行した場合、a[7]〜a[0]が、同時にHになるのでしょうか? > それとも、a[7]=H; a[6]=H; 〜a[0]=H; と順番に・・・なのでしょうか? ほぼ同時 > それと、PICが一番安く買えるのは、どこでしょうか? やっぱり秋月でしょうか? 秋月にあるものは秋月が一番安い
秋月にあるPICを秋月以上に安く買いたい場合。 1、どこかの格安セールを狙う。 2、デジキーで単品で100個以上買う(と秋月価格よりも単価が安くなる場合もある、かねがね数円から十数円だけど) 俺の短い趣味の時間ではコレくらいしかない。 よって普通の感覚ではない。
ステッピングモータ回る?
回らないステッピングモータに意味はあるのでしょうか?
>>964 ありがとうございます。
>> PICの出力は、HとLで、どちらが低インピーダンスなのでしょうか
>L
そうなんですか。それはなぜでしょうか?
データシートにし「上下対称インピーダンス」などと書かれていたような
(16F84当時の古い記憶ですので、現在は違うのかもしれませんね)
>>965 ありがとうございます。
ですよね。
趣味レベルの数量で、いまのところ秋月より安いところを見たことがないのです。
なぜ秋月は安いのでしょうね。
・購入数量が半端じゃなく多い
・入手ルートが違う
・倒産会社の在庫をダラ安で買ってくる。
・自分とこで作ってる
自分のところで作ってるって・・・
・他が高い ・秋月が良心価格
971 :
774ワット発電中さん :2009/09/09(水) 22:17:49 ID:RlUazzgi
・他が普通。 ・秋月が異常価格。 バッタ品を安く仕入れて販売した利益で、通常品を大量購入でコストダウンできた。 珈琲の自家焙煎のお店がある程度繁盛すると豆の販売価格が安くなるのと同じ理論。
974 :
プセル :2009/09/10(木) 00:16:53 ID:4y1DLGuT
2C
秋月は基本的に「屑屋」だからね。 売ってるものは基本的にゴミとして破棄されるような運命だったものが大半で 当然品質は二の次(間違いだらけの秋月キットなんかにも良く表れてる) もともと買う側もジャンク品から部品取りして組み立ててしまう くらいのレベルが前提だからそれでもかまわないんだけど 最近はあれを正規ルート品と同じつもりになっているのがいるみたいなのが ちょっち心配
極小ロットの特注品は秋月部品使う場合も実際にはある
納品制作物の部品に、秋月の部品を常用してますが、何か。
>975 千葉から出てくるな。氏ね。
>975 まだ生きていたのか、屑が。 電子楽器の下敷きになって市ね。
984 :
ハリコイ :2009/09/10(木) 13:40:23 ID:4y1DLGuT
985 :
よさこい :2009/09/10(木) 13:42:36 ID:4y1DLGuT
かねがね たかだか
HITECH-C使うとき、いちいちunsigned charって書いてる?
>>987 直列共振回路なのか並列なのか書いてないね
>>989 typedef unsigned char uint8;
とやると
uint8 i;
で宣言できる。
uint8が、unsigned charが表す型の別名として使えるようになる。
この方法はCCSに限らず、ANSIに準拠したC/C++なら使える。
っていうか、intで書いても動いてしまう 容量に困ってなければ、これでいっか、と
梅
ウメ
うめ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。