1 :
774ワット発電中さん :
2010/11/23(火) 22:14:39 ID:SnCq4TRB
おつかれ3
3 :
774ワット発電中さん :2010/11/24(水) 14:43:10 ID:wtSfIAgw
4 :
774ワット発電中さん :2010/11/24(水) 15:39:18 ID:83koZN1q
前回のスレでコンパイルについていろいろと教えていただいた方々ありがとうございました。 何とかhexファイル作成までたどり着くことができました。 次は,秋月のpicプログラマー(既製品)を用いてマイコンへの書き込みを考えています。 それにあたり,comm portのドライバをインストールしたのですが,ライターを検出できません。 となってしまいます。 既製品でも何か半田付けを行う必要があるのでしょうか? また,なぜドライバをインストールし通信ポートを指定しているのにライターが認識されないのでしょうか?
今どきそんなの使うなよ
秋月のPIC16シリーズDIP品限定ピン数別評価(先頭のvは値下げ,-は維持)'2010年4月24日更新版 v40ピンは-◎16F887 \200 v28ピンは◎16F886 \190 ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHzとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば20,18ピンよりこちらを 20ピンはF690のバリエーションモデル多.価格差が小さいからF690か,OPアンプのF785.スキルあるなら18F14K50も検討しては? -◎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にするとか v×16F84A \250 機能無,1Kw,いまさら不要 10個以上なら1個¥220 -△16F648A \180 CCP有,USART有,4Kw,内蔵4MHz,同じ値下組のF819と比較するとキツイ -△16F628A \160 F648Aの2Kw版,売りが値段だけだと厳しいかな -×16F627A \160 F648Aの1Kw版,売りの低コストで628Aと並ばれると・・・ v◎16F88 \200 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood -○16F87 \200 F88にADC無い,下のF819と比較するとADCで負けフラッシュ4Kwで勝ちダケド -○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 -△16F630 \110 676のADC無 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い -◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 -○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 -○12F629 \80 675のADC無(機能無しってこと),この値段ならチョット使うに便利 -△12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 -◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し -×12F609 \100 F615からADC,eCCP機能省かれてる -◯12F510 \60 ADC有(8bit),1kw,内蔵4Mor8MHz,EEPROM無し -×12F509 \60 機能無し,1Kw,,内蔵4M,EEPROM無し (参考)機能無,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でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない。
>>4 >また,なぜドライバをインストールし通信ポートを指定しているのにライターが認識されないのでしょうか?
ライターがPCの信号を認識していないか、
PCがライターの信号を認識していないから
>既製品でも何か半田付けを行う必要があるのでしょうか?
ケーブル選定が間違っていなければ、そのままつかえる
PICKIT2かPICKIT3使いなさい
秋月のPIC18シリーズDIP品限定ピン数別評価 工事中
>>4 単にポート番号が違う場所。と推測。
XPならデバイスマネージャーで有効なポート番号を確認できるよ。
Vista/7系はしらね
232のステータス確認
14 :
774ワット発電中さん :2010/11/26(金) 23:20:35 ID:zQAQDGPE
>>8 値下げしてその価格なのか。
本家、元祖、老舗、84は強気だなw
クロック内蔵品に一度触れたら、もう戻れないわ。
>>14 何が動かないのかわからんよ ライター?プログラム?
17 :
774ワット発電中さん :2010/11/27(土) 00:45:29 ID:llqo523I
>>16 さん
実装した回路です。リモコンでアンプの音量制御しようとしてるのですが
動かないんです。
>>14 このコンパイラーは使ったことないけど、RB0 IN VSの所はコメントになってるね
プログラムじゃない
プログラムか電子工作の経験はある?
あまりにも漠然としてるからな
ちゃんと動く懐炉なのか切り分け出来てないと、懐炉が悪いのかソフトが悪いのか判断不能。 自分で調べられないと作るの無謀過ぎるw
>>14 C言語も知らずにプログラムしようとしてるのかw
22 :
774ワット発電中さん :2010/11/27(土) 11:50:39 ID:llqo523I
電子工作の経験はあります。 コメント表記なのも理解できますが,RB0が何を入力信号としているのかわからないのです。
小中学生?
24 :
774ワット発電中さん :2010/11/27(土) 12:11:12 ID:llqo523I
現在高1です。
>>14 このブロック図と解説から回路作れるなら自分でなんとかできるんじゃね?
まさかとは思うがネット上の参考情報の赤外線リモコンの音量制御ユニット
ってのをそのまま組んだんじゃないよな?
参考のは入出力がプログラムとあわないし
ハード、ソフト どこに問題があるか 切り分けていかないと これ以上進まんと思うよ
27 :
774ワット発電中さん :2010/11/27(土) 13:23:28 ID:llqo523I
>>25 さん
プログラムと対応させて回路は組んでますが,リセット信号あたりの内容が良くわからなくて
悩んでいます。
>>27 元の回路と違うなら変更した回路を出す
まずはそれからだ
みんなの手元に同じものが有る訳じゃないしな。訊かれても何も出来ない。
16F84AのCCSにて時計を作ろうとしています。 時計はLCDに出力するつもりなのですが、クロックを水晶振動子の32.768kHzを使用した時に、 LCDに文字を表示出来ませんでした。クロックをセラロック8MHzにしたところ、普通に表示出来ました。 コンフィグは水晶の時はLPに、セラロックのときはHSにしています。 水晶で、LEDを1秒毎にON・OFFをするプログラムだと、腕時計のストップウォッチですが一応1秒出来ていました。 やはりC言語だとその辺厳しいのでしょうか? 長くて申し訳ありませんが、水晶の時のプログラムを下記に載せます。 #include <16f84a.h> #fuses LP,NOWDT,NOPUT,NOPROTECT #use delay(clock=32768) #use fast_io(a) #use fast_io(b) #define pin_db4 pin_b0 #define pin_db5 pin_b1 #define pin_db6 pin_b2 #define pin_db7 pin_b3 #define rs pin_a2 #define stb pin_a3 #define sw1 pin_b4 #define sw2 pin_b5 #define sw3 pin_a1 #define led pin_a0 #include <lcd_lib2.c> void main() { set_tris_a(0x00); set_tris_b(0x00); output_a(0x00); output_b(0x00); lcd_init(); lcd_clear(); lcd_cmd(0x0c); for(;;){ lcd_cmd(0x80); printf(lcd_data,"Test"); lcd_cmd(0xc0); printf(lcd_data,"テスト"); } }
多分だけど、lcdライブラリ内部でdelayしてるところで すげー待たされてるんだと思う…。 かなり放置したら表示されたりしないかな。
>>33 文字を表示出来ないと書きましたが、厳密には文字化けが起こっているのか、
;ワEFW7L と表示されています。ずっと付けていますが目的の文字が表示されませんでした…。
一応LCDライブラリの方も記載しておきます。
void lcd_out(int code, int flag) {
int i;
if(code & 0x01)
output_high(pin_db4);
else
output_low(pin_db4);
if(code & 0x02)
output_high(pin_db5);
else
output_low(pin_db5);
if(code & 0x04)
output_high(pin_db6);
else
output_low(pin_db6);
if(code & 0x08)
output_high(pin_db7);
else
output_low(pin_db7);
if(flag == 0)
output_high(rs);
else
output_low(rs);
delay_cycles(1);
output_high(stb);
delay_cycles(2);
output_low(stb); }
void lcd_data(int asci) {
swap(asci);
lcd_out(asci,0);
lcd_out(asci
>>4 ,0);
delay_us(50); }
void lcd_cmd(int cmd) {
swap(cmd);
lcd_out(cmd,1);
lcd_out(cmd
>>4 ,1);
delay_ms(2); }
void lcd_clear() {
lcd_cmd(0x01);
delay_ms(15); }
void lcd_init() {
delay_ms(15);
lcd_out(0x30,1);
delay_ms(5);
lcd_out(0x30,1);
delay_ms(5);
lcd_out(0x30,1);
delay_ms(1);
lcd_out(0x20,1);
delay_ms(1);
lcd_cmd(0x2E);
lcd_cmd(0x08);
lcd_cmd(0x0D);
lcd_cmd(0x06);
lcd_cmd(0x02); }
>>34 組み込み関数のdelayを使わないようにしてみたらいいんじゃない?
クロックで変わるところと言ったらそれしかないわけだし。
>>35 for(;;)以降でのdelay関数が何故使えるか分かりませんが、
delayくらいしか影響ないですもんね…。
待ち時間をアセンブラで作るときみたいな感じでやってみます。
複数のPICから1つのEEPROMに接続するのを 試された方いらっしゃいますか? 複数の18Fから24LC64にアクセスしようと思っているのですが・・・。
>>37 IICでできそうな気がするが、マスタ複数存在するので排他制御が必要になりそう。
実績無いから推測だけど。
>>38 もちろんアクセスはI2Cでやるつもりだったけど、
問題は、ROM側のSCL/SDAに複数繋いでいいかってこと。
この際、24LCに拘らないので、
SRAM、EEPROMなどで複数のPICでアクセスする方法を・・・。
皆さんの知恵をください。
まずI2Cの仕様書を読め どうみても読まずに質問してるだろ
マルチマスターで ggl
>>40 そんな英語のマニュアルなんか読んでねーよ!!!
でも、マルチマスタってのがあるのか。
ヒントくれて、ありがとう!!!
日本語もあるだろ 探す努力も読む努力もしない屑野郎が
敷居が低いって事は良い事なんだろうけれど、 あいかわらずレベル低いな
ということを書かずにおれないぐらい過疎ってるんだから 賑やかしと見ておけ。
I2Cで排他処理するには ハードウエアの支援が無いと難しい ただ、複数のマスターが全部PICなら SDAの立ち上がりと立下りで割り込みをかけてその時 SCLがLであれば StartまたはStop でもいけるかもしれない。
>そんな英語のマニュアルなんか読んでねーよ!!! 英文マニュアル読む気がないなら、この世界から足洗ったほうがいいよ。 日本語ONLYでも、もっと幸せになれる趣味なんていくらでもあるだろ。
>>44 敷居が低いって、使い方間違えてるからな…
49 :
774ワット発電中さん :2010/11/28(日) 17:55:25 ID:SQNa3BVA
>>31 さん
とりあえず回路図をアップしました。
TC9210PのGNDピンの接続先を書き忘れましたが設置しています。
デジタル側とアナログ側のGNDを同じにしていないとノイズがすごかったので
どちらのGNDも一緒にしました。
音声は流れるのですが,リモコンやLEDは反応しません。
>>49 あの回路で、質問があるんだ。よかったら教えてくれないですか?
・この状態で、RA4からデータ入力できる理由を知りたいです。
・RB0の先につながっている抵抗1.5kの役目を説明してくれない?。
・PHA, PHBの部分は、この部品は何? どんな動きをするの?
・TC9210の下にある、VSSにつながっている抵抗、となりの12Vにつながっている抵抗の、働きを説明して。
・0Vならアースだと思うが、TC9210の1ピン?の行き先だけ、0Vと書かれている理由を教えて。
・TC9210の1ピン?とGND間に入っている47uFのコンデンサの役目は何?
・そのコンデンサ、GND側がマイナスになっているのはなぜ?
・PICの「MCLR」と書かれたピンは何をするピンなの?、教えて欲しい。
・2つのIC、ともにピンに番号が書いてないけど、なぜ書かないのか教えて欲しい。
>>49 これだと RB0はずっとLのままですねえ…
53 :
774ワット発電中さん :2010/11/28(日) 20:34:04 ID:SQNa3BVA
これ無謀すぎるだろ PIC 単体で動作できるレベルになってから書いてくれよ up load file も無駄に 4.2M もあるし
ロータリエンコーダを9210に直結しても駄目なんじゃないでしょうか。 0Vはアースではないですね。 多分この回路図にないところに0−12Vからアナログのレベル(まぁ中点の6Vくらい?)を決める物があるはずです。 9210の電源回りのC(47uF 0.1uF)は↑で書いたアナロググラウンドと+B/−B間とのフィルタです。 アナログGNDとデジタルGNDは最短でつなぎます。 とにかく、もうすこし勉強した方が良いと思います
>>49 とりあえずMCLRに何も繋がってないのが動かない原因と思われる
ソフトでMCLRを無効にできる設定のPICもあるが(CCSならNOMCLRとかの設定)
RA4に付いてる受光素子は受光してない時はLかHになってる?
>・RB0の先につながっている抵抗1.5kの役目を説明してくれない?。 >→プルアップしようと思いつけました。しかし,SWをつけてなく常に0なので意味ないですね。。。 GNDに落とさなきゃプルアップになるのに…
>>53 さっそく、ありがとう。
仕事で時間がないので、要点だけ書くので、自分で調べてほしい。
・PICマイコンのMCLRは、マスタークリア=リセット端子=開放は絶対だめ。
・光受光部の出力はオープンコレクタで、さらにPICのRA4はオープンドレイン端子。
どちらも、Lにはできても、Hにできない。→Hにする人が必要。
・意味のない抵抗は書かない。混乱するだけ。自分のため。
・ICのピン番号は必ず書く。自分のため。ピン番号を書く癖をつけること。
・TC9210の周辺は、東芝のデータシートの応用例とちがってる。
応用例ではマイナス電源を使っている。
Vssというのは、Vddに対して負の電圧という意味であり、
Vss=0Vという意味ではない。
自分で調べて、ここまで回路を書いて、そして製作するのは、
なかなかセンスがいいと思います。
もっともっと、たくさん経験して、たくさんバグ取りに悩んでください。
きっと、いい技術者になれると思いますよ。
59 :
774ワット発電中さん :2010/11/28(日) 22:17:41 ID:SQNa3BVA
>>56 さん
とりあえずMCLRは5Vに接続しました。
RA4に繋がっている受光素子はGNDを基準にするとHになってます。一応リモコンにも反応はします。
>>57 さん
GNDに落とさないようにしました。
>>58 さん
いろいろとありがとうございます。
お仕事がんばってください。
>>58 >・光受光部の出力はオープンコレクタで、さらにPICのRA4はオープンドレイン端子。
> どちらも、Lにはできても、Hにできない。→Hにする人が必要。
IRM-36xxのH出力は、2.7V(Vcc=3V時)を保証しています。
まぁ、10KΩ以上のプルアップ抵抗なら付けても問題ないようですが。
個別の案件はそろそろ ほかでやってくれるか コテいれてくれよ
アセンブラを書いているときに bsf PORTA,0 では無く bsf LED みたいに名前を付けることは出来ないでしょか?
#defineで出来るでしょ
>>37 ROM制御用のPICにMAX232とか複数つければ、
できるんじゃないかな。
65 :
64 :2010/11/30(火) 00:45:02 ID:2NRQNux1
もうちょっと詳しく書きます。 1個ROM制御用のPIC用意して、そいつとI2CでEEPROMに繋ぐ。 ROM制御用に232Cインタフェース(max232とか)を複数つけておく。 ROMにアクセスしたいPIC達は、232CでROM制御用PICと通信。 どうでしょう?
マルチマスターだといってるだろ
マルチマスターって、DataLineとAddressLineをみんなで使うってヤツ? なら、イーサネットみたくCSMA/CD組めば? マスターにIDふって、バス見に行って、使ってなかったら使用宣言して、誰も文句言わない場合に開始、文句が出たらIDミリ秒後にもっかいバス見にいくってやつ。 PICよりバスバッファのがチップ数多くなりそ(^p^;)
トークン でも ポーリングでも好きなの使ってくれ
>>63 うまく出来ました!ありがとうございます!
>>65 まぁ、やりたいようにやってみりゃいいんじゃねぇの?
誰に迷惑かけるわけでもないし。
>>69 へーそうなんだ・・・
63にそれはCだろって突っ込み入れなくて良かった
HiTech-C Liteの配列の件で教えて下さい。 RGB-LEDを16f88を使って色々な配色で点灯させて遊んでたんですが、配列を利用して 配色のパターンを複雑に変化させようとしてたら、配列がだんだん長くなって しまいには「配列の長さには制限があるんじゃゴルァ」ってエラーが出てコンパイラから 怒られてしまいました。 配列を使わないか、短い配列で複雑な配色を表現する知恵がありましたら教えて下さい。
( ・∀・)つ 乱数
>>72 Constが多いんかな。
文字テキストとかだと、ど〜にもならんけど、LEDの配色なら、圧縮と展開でやれんかな。
88って、配列データで使うとちょっと狭いけど、外部に記憶域もつものなんだなって量の時って、みなはどうしてんの?
>72 const前提で大きな配列が必要なら、案は以下の2通りくらいかな。 1. 内部EEPROMを使う。 メリット:初期化が容易。 デメリット:容量が少ない 2. I2CなどでアクセスできるEEPROMを外付けし、それを使う。 メリット;大きな容量を実現できる。 デメリット:初期化に工夫が必要。 どちらも読み出し用の関数さえ用意すれば、プログラムの実装は 容易だと思います。
>配列を使わないか、短い配列で複雑な配色を表現する知恵がありましたら教えて下さい。 そんなに自分の脳味噌を使うのが嫌か? 自分で考えてみようと思わないなら、とっととやめて、別の趣味なり仕事を 探したほうがいいんじゃね?
1byte a = 0:0:R2:G2:B2:R1:G1:B1 とすれば、1byteで2パターン記憶できる。 使うときは、 R = ( (a & 0b00000100)!=0 ) ? 1 : 0; // 1回目のパターン G = ( (a & 0b00000010)!=0 ) ? 1 : 0; B = ( (a & 0b00000001)!=0 ) ? 1 : 0; a >>= 3; R = ( (a & 0b00000100)!=0 ) ? 1 : 0; // 2回目のパターン G = ( (a & 0b00000010)!=0 ) ? 1 : 0; B = ( (a & 0b00000001)!=0 ) ? 1 : 0;
なんかPICじゃないレベルのお話があって驚いた。 前スレで232Cにゴミが乗る件で書いたものです。 (パワーオン周りは結局555で周辺回路と同調してリセット突っ込みました。) いよいよUSBデバイスに行きます。 また何かあったらよろしくお願いします。 しかしプルアップをそのままGNDに落とす…何がしたいんだ?
PICでMCLRをGNDに落とすとリセットが掛かると思っていましたが、 掛かりません。 MPLABのC言語で使用していますが、なにか指定がいるのでしょうか?
色々調べて、コンフィグを設定しました。 #pragma config MCLRE = ON MCLRは5Vにプルアップしています。 スイッチを押下すると、MCLRがGNDに接地します。 しかしリセットは相変わらずかかりません。 プログラム中からReset()を呼ぶとリセットはかかっています。
>MCLRは5Vにプルアップしています。 MCLRは抵抗を入れて5Vにプルアップしています。 です。
>>81 取り敢えずテスターで導通と電圧をチェック。
>80 >MCLRE=ON それは内部プルアップON。ピンを読まなくなる。 外にリセット付けたいならOFF
>>83 ん?なんかおかしくないか?
MCLRE=ONが内部プルアップONなら
× 読まなくなる
○ 外部にプルアップがいらなくなる
じゃないのか?その場合スイッチでGNDに落とすだけでリセット動作って事じゃないの?
>>80 82の言うとおり電圧はかってみ。プルアップ抵抗なんぼにしたん?
18F2620のデータシートの記述は以下。 the MCLR input can be disabled with the MCLRE Configurationbit. When MCLR is disabled, the pin becomes a digital input. で、MCC18付属のhlpPIC18ConfigSetでは以下になっている。 MCLR Enable: MCLRE = OFF Disabled MCLRE = ON Enabled
86 :
84 :2010/12/01(水) 20:27:24 ID:fgjDqV+e
気になったのでデータシートを見た。(84A使ったこと無いんだよね。あれ機能の割りに高いし 内部プルアップじゃなくてやはりMCLRピンの有効/無効だと思うのだが? という事でONでよいと思うがC18も使ってないのでわからず VDD±0.3Vに落ちていれば問題ないようだ。 内部回路も親切にシュミットトリガで組まれてるのね。ありがたい世の中だ。 スイッチのチャタリグを考えて並列に0.1uF程度のセラコンでもいれた方が良いかも程度かな〜
232Cにゴミが乗るなんてPICじゃないレベルのお話だという自覚はないわけね。
ありませんが、何か?
PIC18F2550とC18で、プログラム実行中にEPROMの 書き込みと、読み込みを行いたいのですが、 参考になるページがどこかあれば教えてください。
>>88 >>87 の文章が、良く理解できるね。たいしたもんだ。
>232Cにゴミが乗るなんてPICじゃないレベルのお話だという自覚はないわけね。
どこで区切ればいいんだ。
91 :
83 :2010/12/02(木) 00:32:45 ID:p+8XyMRe
ゴメン俺が悪かった。逆だ。 MCLREはリセットピンとして使う/わない だからONでリセットスイッチ用だった。 長年使ってるのになんでボケたんだ・・・
>>88 なんか代わりに答えて貰った。ありがと
まさか起こった事象と起こした対象の話もわからない文盲が居るとは。恐れ入った。
>>91 いや、お陰で84Aのデータシートを見ていろいろ勉強になった。85氏の説明で明確になったし。
>>89 c18のヘルプに、組み込み関数として載ってる気がする
94 :
唯 :2010/12/03(金) 12:16:00 ID:l/nS+m9i
**********************************************
**********************************************
**********************************************
My site open. It is a nasm design data
http://sky.geocities.jp/flora_mellisa_flora/ NASM設計手順資料
モジュールの開発方法
割り込みの設計手順
開発手順をまとめたソースの設計資料
**********************************************
**********************************************
**********************************************
>>65 単純に共有メモリとして使いたいわけ?
そんなややこしい事するなら優先順さえ付ければいいんだからもっと簡単に
1個 PIC を調停用に確保して 各pic と1本のポートで接続
調停者は
プルアップしておいて、 L は禁止 H は許可として、
順に 1個だけ H にする=入力ポートにする
H(入力ポート)にしたポートがLになったら、Hになるまで待つ
各PIC は そのポートを普段は入力ポートとしておく
EE-PROMを使いたいなら Hを確認した直後一定期間内にL 出力にする
そして使い終ったら元に戻す
96 :
774ワット発電中さん :2010/12/03(金) 15:53:57 ID:ju+7+sbw
こんにちわ。
初めて投稿します。よろしくお願いします。
dsPIC30を使わせて頂いています。
下記現象の対処方法をご存知の方がいらっしゃいましたら教えてください。
コードプロテクトを実施したところ、解除ができなくなり再度書き込みができなくなりました。
ICD2ではプロテクトをかけることができなかったため、
コード上でプロテクトをかけるルーチンを作成し、プロテクトを実施しました。
(環境:MPLAB IDE8.56、ICD2、Vdd=5V)
下記URLに「dsPIC30固有の問題」「仕様ではVdd=4.5V以上でプロテクトを含めたチップイレースをできることになっていますが実際にはできません」となっています。
http://einstlab.web.fc2.com/dsPICer/dsPICerSW.html どなたかよい方法を教えてください。
よろしくお願いします。
>>90 確かに日本人でないと、理解しにくいかもしれないね
使わせて頂いていますは敬語の使いどころがおかしいな。別に許可制じゃないんだからw そのページ見ると4.8V以上のVddならイレースできる、とあるけど とりあえずPICの足の所で電圧測って電圧が足りてるか確認。 可能なら5.5Vくらいにすると安心なのかも。
>>98 同感だな。
「このスレを使わせていただく」なら理解だし、
メーカー(MC)が「PICを使って頂き」なら理解だな。
「dsPIC30を使ってやってます。」なら理解だな。
コンパイラを無断使用させて頂いてますに1ペリカ
で、文章添削して終わりかよ・・・・(ー。ー;) なんか、気の毒になってきた
103 :
774ワット発電中さん :2010/12/04(土) 06:08:47 ID:XDcYw3C4
言葉の使い方が変なのは、他にもたくさんあるよね。 〜になります。 ○○円からいただきます。とか。 最近気になっているのが、新聞チラシの所在地の地図で、他の店を 「○○さん」と書いてあるやつ。
朝鮮人がおかしな日本語の覚え方をし、それをそのまま マスゴミが垂れ流すシステムが出来上がってしまっている。 そのシステムで日本人の脳は蹂躙され、結果今の状況にある。 本来、極左政権のおかげで右傾倒が進むはずが、 マスゴミの元締めが既に朝鮮人では、もはや正攻法では改善せず、 朝鮮人を「悪」として扱い、国土を浄化するしかない。
朝鮮人は日本のものは向こうで朝鮮読みするくせに 朝鮮のもんを日本でなんて言うかはあくまで朝鮮読みをゴリ押ししてくるからな
頭が悪い証拠ですね
>>103 1万円から(商品代金分をこちらが)頂戴いたします、を省略しただけだろが
>>107 そんな都合のいい省略って、あるか?
そんなこと言い出したら、どんな省略だって有りじゃん。
普通に「○○円お預かりします」でいいじゃん。文字数もかわらないし。
16F88でAD変換の結果を7セグに表示しているのですが、変換結果の10ビットの値を 7セグの数値に置き換える部分で時間がかかりすぎて表示がちらついてしまうのですが 10ビットを4桁のデシマルに変換する方法で1023回のループを使わないで変換する方法はありますか? 現在、上位2桁、下位8桁の2重ループで桁用の変数に下位から1つずつINCFして9を超えたら 次の桁をINCFするということで1023回のループ無いにいくつもの命令があって遅くなってしまいます。
>>109 だいたい1023回のループで変換するなんて幼稚な方法をなぜ使うんだ?
少しは自分の脳味噌を使え。
といっても、どうせ>110みたいに見つけてきてパクるだけか。
112 :
のうし :2010/12/05(日) 06:57:53 ID:pA3LuyEQ
クロックが早いやつだったら気にならなかっただろう。 えっ、dsPIC使うって? w‥
>>109 それ、ちらついてる原因は 10Bit → 4桁デシマル変換 の遅さのせいじゃないと思うよ。
>10ビットを4桁のデシマルに変換する方法
アセンブラなの? まー、なんでもいいけど。
Seg[3]は、AD変換値を1000で割った商。
Seg[2]は、AD変換値から1000xSeg[3]を引いて、100で割った商
Seg[1]は、AD変換値から1000xSeg[3]+100xSeg[2]を引いて、10で割った商
Seg[0]は、AD変換値を10で割った余り
でいんでない?
>現在、上位2桁、下位8桁の2重ループで
どういう意味?10Bit A/Dの結果が10桁ってコト? 16bitで扱えば、二重ループにする必要ないし、逆にそのやり方のメリットが分からない。
>>109 表示をタイマー割り込みでやるようにすれば変換にいくら時間がかかっても、
ちらつかないようにできるのに。
PICで携帯の3Gとかに繋げないかな? mini-PCIとかを利用して。
チラつくの意味が 甲.数字が変わる 乙.表示が点滅 のどっち?
>>117 表示が点滅します。
>>114 現在はタイマーでAD変換をしてそれ以外の時はダイナミック点灯のループを実行しています。
タイマーのところで変換をしたのですが、その処理中はダイナミック点灯が出来なくなるので消えてしまい
ちらつきに見えるようです。
>>113 ,110,111
命令に割り算がないのでこうやってやるものだと思っていました。
調べてみます。
どうもありがとー
119 :
のうし :2010/12/05(日) 21:25:13 ID:pA3LuyEQ
つうか、ライブラリにないのか? 『nビットを〇桁のLEDにBCD表示させる‥』 たしかTIの対抗(?)マイコンはLCDドライバでもハード的に備わってたな。
>>118 > タイマーのところで変換をしたのですが
タイマーのところで変換をしなけりゃいいじゃん。
市販の自転車用のテール用LEDライトが高いからPICで自作したいんだけどよさげなキットとかないですか?
122 :
774ワット発電中さん :2010/12/05(日) 22:36:09 ID:DfU3F4QB
>118 ダイナミック点灯でちらつくのなら 消えてる最中じゃなく、点けてる最中に変換すれば解決するだろ
飛行機のラジコンにつけるような 50-100b先に障害物がないか調べるようなセンサーと 風向センサーってないかな??
>>121 ダイソーとかに100円で自転車用LEDテールランプ売ってるでしょ。
>>120 ,122
変換のところにダイナミック点灯のルーチンのcallを入れてもできるかな?
でもこの場合割り算の方法1択っぽいので今回はそれでやることにします
126 :
774ワット発電中さん :2010/12/05(日) 23:36:12 ID:DfU3F4QB
ダイナミック点灯ってどうやってるの? 結構多岐に渡る計算やAD変換しながらでも 表示がちらつくなんてことないけどな AD変換1回で50μ秒程度だし BCD変換なんて長くても5ミリ秒位だろ その程度の遅延なら最初から織り込んでおけば良いだけではないのか
いみふ
ダイナミック点灯の切り替え周期何ms取ってるの? 1文字あたり5msくらいにすればどんな演算でも入りきるだろ。
>>126 ,128
ダイナミック点灯は点灯期間が1つあたり32ミリ秒でそれが4桁の繰り返しでやっています。
このルーチン自体ではちらついてはいないのですが、割り込みが発生してここから
抜けてしまった後の処理が重いのでその間に消えてしまいます。
ループを使ったBCD変換だと相当時間がかかるみたいです。
あと割り込み入ってから演算初めてないか? メインループでA/Dと演算済ませてデータ作っといて、割り込み処理では出力ポートにデータコピーするだけですぐ抜けるもんだぞ。 〜割りこみ〜 A/D開始(数回に1回にした方が良い) データをポートにコピー 割り込み終了 〜メイン〜 A/D終了確認までループ A/Dデータ読み込み BCD変換してどっかにデータ保管 メイン最初へ
あ、下から2行目訂正。 10bit to BCD変換 BCDの各桁をポート用データに変換、どっかに保存 BCDを出力ポート用に変換するサブルーチンは自作してね。 テーブル処理でもいいし、10種しか無いから地道に比較繰り返しでもいいや。
C18使いたいんですけどLABのウィザードでMicrochip C18 Toolsuite〜 C:\Program Files\Microchip\mplabc18\v3.37\bin\mcc18.exe指定しても one or more ofうんちゃらと出て指定できないんですけど
picに固執して柔軟な発想が出来ない香具師が多いな。
固執しているから米を食うわけではない。そこに米があるから、勢いで食ってる。
ひょんなコトから長粒米が手に入って、ジャンバラヤでも作ってみようかと、
ターメリックはカレー粉で代用出来るかと聞いたところで、それは米に固執し
ているコトにはならんと思うが・・・
>>134 ウィザードの前に環境設定が要る。
Projectメニュー の set LanguageTool あたり
137 :
774ワット発電中さん :2010/12/10(金) 19:14:40 ID:VJJYE0Ix
Error - Device not specified. Use /p option to specify a device. このエラー何? 同対処すればいの
Google翻訳さんを通してみる デバイスが指定されていません。デバイスを指定するには、/ pオプションを使用してください。
でそのオプションはどうやって附加するのさMPLABのログ見ると リンクじゃなくコンパイル時には自動で\mcc18.exe" -p=18F2550 となるけど
>>139 MPLABのバージョンが古いんじゃね?
古いMPLINKは、プロジェクトの'Linker Script'へLKRファイルの登録が必要だぞ
\Microchip\MPASM Suite\LKR ←ここにあるやつ
PIC24FでGCCを使いたいんだけど、 どこでダウソしてくればいいのでしょうか。
JDMプログラマで16F785を焼こうとすると失敗する。 うまく焼けてる方います?
143 :
774ワット発電中さん :2010/12/11(土) 22:38:33 ID:FeMnYOnj
144 :
774ワット発電中さん :2010/12/11(土) 22:39:38 ID:FeMnYOnj
スマン。 143訂正 ×RCD ○JDM
さっき、LED大量に使ったクリスマス・イルミネーション作ったが、 点滅の間隔が計算通り行かないな。
RC発振?
・割り込み処理の所要時間がタイマー周期より長いのでタイマー割り込みを取りこぼしている ・発振(クロック周期)設定の設定ミス ・USB通信でPCから制御しているから など、いろんな理由が考えられるけど、自分ではどれが怪しいと思う? >145
計算以前の、何秒で点滅させるかの構想が間違ってるとおもわら
そもそもled大量駆動ってpicで出来るの? 普通に脚が足りないw 8x20のledディスプレイ作りたいが160品のpicなんて無いしw
ダイナミック駆動すれば??
IOなんて増やせばいいじゃん
ハイホー!
クリスマスツリー用のイルミネーションなら同時点滅するグループを3つか4つ作ればいいので、 それぞれ系統ごとに多数のLEDを直列接続して、 PICではドライブ能力が足りなくなるからMOS FETを使って駆動したらいい。 数系統なら16Fでも18Fでも好きなように使える。 12Fでは、ひょっとするとピン数が厳しいかもしれないが。
155 :
774ワット発電中さん :2010/12/12(日) 18:25:24 ID:7X8fXMCD
>8x20のledディスプレイ作りたいが160品のpicなんて無いしw 何で160本も要るの? PICの駆動力なら28本で行けるだろ やる気出せば14本位でも行けるんじゃないか
13本ぐらいでも可能性はある。 実用にはならないかも。
157 :
142 :2010/12/12(日) 20:16:16 ID:sYNz+W6I
ミスマッチってことは単に書き込み時のデバイス設定がおかしいだけじゃないの
159 :
774ワット発電中さん :2010/12/13(月) 20:52:00 ID:HyPIl54N
単純にDATとCLKが逆とか
配線ミスに1000点
RCDとかJDMは不安定だからなぁ。 正常に作っててもPCのシリアルポート次第。
PICKIT2が\3000とかなのに、なんで買おうとしないのか不思議。
はらたいらに3000点
はたらいたらまけ
PICKIT2を2年くらい使ってきて、コネクタが緩くなってきたので、そろそろ新しいものと思い PICKIT3を買ったが PICKIT 2 Programmer は 使えなかった。 PIKKIT3用のものをインストールしたがいまいちだったので 当分 PICKIT2 を使ってる。
>>157 16F84の書き込みがおkって事でマジレス
多分チャージポンプの電圧不足が出ていると思う
回路図どおりなら足りない可能性は「ケーブル長」だと思う
<< 後は232Cのドライブ側の問題もありえるが84が書けているなら一定値は出ていると思う。
実は私もRCDライターだけど同じ事で悩んだ
この手の回路だとありがちなので一度試してみると良いと思う、やることはコード切って繋ぐだけだし
ケーブル長が1m以下だと正常なんて事もあるからがんばってちょ
<< 特に1Kまではかける、それ以上でダメとかのケースはこれが顕著
<< チャージポンプの容量を変えたりする方法で凌ぐ場合もあるが「大きくする」「小さくする」どっちのケースもある
<< 本当にテストする気があるならプログラム電圧を安定化電源から別引で試してみるのもお勧め
RCDライタでシリアルポート死んだなぁ、懐かしい
逆流無視するとすっとぶよね。
>165 うちのはPICKIT側をオスのLピンヘッダに替えた。
> ケーブル長が1m以下だと正常なんて事もあるからがんばってちょ これ、どんな意味があるのかなぁ。 シリアルでしょ。
電圧降下、信号遅延、ノイズ等の理由から ケーブルは極力短い方がいい。 シリアルとか関係ないよ。
>170 たしか、元のシリアル(≒RS-232C)も長さ制限はある。 それを拡張した高速版は長さ制限が厳しかったしな。 そういや、SCSIもパラレルのシングルエンドのは高速化されるたびに長さ制限が厳しくなって、 最末期には内蔵ドライブしか無理と思えるレベルだったっけ?
>>171 信号線のノイズ耐性的にはシリアルのほうが優位とか、そこだけを見て、シリアルならOkと思ってるんじゃなかろうか。
しかしまあ凄い時代だ… SCSI出始めはパラレルの速度なんか超えられないと思ってたのに…
おはよう
175 :
774ワット発電中さん :2010/12/15(水) 06:08:09 ID:3wzrRTr9
おはよう 6Km走ってきた。
PICは、16F88で時代が止まっている者ですが、教えてください。 今のPICでは、すでにこんなのは普通になっているのでしょうか? 1) 16bitで 2) メモリは、ROM RAMがリニアに並んでいて、 3) 水晶のクロック周波数が、そのまま動作クロック周波数になって、 4) クロック用PLL内蔵で、 5) DSPが複数入っていて 6) UARTが3chくらいあって、 7) ADが10bit超えて12,14,16bitだったりして、 8) Cコンパイラーが無料か超安くて、 9) ROMが32k, RAMが8kとか16kあって、 10) CANが入っていたり、USBコントローラが内蔵されていたり、 11) そしてDIPパッケージがあったり すみません、好き放題書いちゃいいました。
>>176 1)知らん
2)知らん
3)未だに1/4じゃなかったっけ?
4)ここ意味不明だが?クロック用ってどないな意味だ?高精度オッシレーター内蔵って事?
5)知らん
6)シリアルしたいなら速度にもよるが2ピン使えば1ポートつくれるべ?
7)10ビットまでのインプリメントしかしらん
8)制限つきなら以前からタダだと思ったけど?SDCCがあるから無料があるっちゃあるが。。。
9)今のヤツは容量もっとでかくないか?
10)USBコントローラーはぐぐれ、なんぼかある
11)これはむしろ時代への逆行なので今後はドンドンへるのでは?変換基板に乗せて売っているお店へいけばよい
178 :
のうし :2010/12/15(水) 16:11:46 ID:zrKFO1HJ
そして初心者に冷たくなった。とか
今実験中のPIC32は 32bitでRISC ROM512kb RAM128kb 外部8MHzクロックで80MHz動作 CAN*1 USB*1 64TQFPだがな
>>176 全部満たしたのは無いだろうけど、dsPIC30Fとか24Fあたりはかなり条件満たしてる気がする。
1)24F、dsPIC30F
2)ハーバードアーキテクチャは変わってないけど、18F以上はリニアだよ
3)PLLと組み合わせて可
4)18F以上にはPLLあるのが多い
5)複数はないんじゃね
6)流石に無いかと
7)あった気がする。パラメトリック検索してみ。
8)無料版Cコンパイラあるよ
9)あるある
10)あるある
11)あるある
PICは特に一点特化みたいな用途のほうがメインな気がするから、全部ってのは流石に考えにくいな。
16系から久々に18系にと試してた 何をやっても動かない マイコン自体が動作開始しないが、あるIOピンをプルダウンすると動く それはPGC端子。ひょっとしてとLVPを無効にしたらサクッと。 MCLRもIOにしてるし念のためプルアップも。書込み出来て外部クロック。 それでプログラミングモードになっちゃうってどういう事なの?
秋月ライターの16F819書き込み時の注意書きでそんなのあったな。 PGM端子プルダウンしておかないとダメなんだっけか。 I/Oが初期値でインプットだから、PGM端子が浮いてて電圧貯まってた時に 最初にプログラムモードに行っちまうんだな。
いまだに16Fや18Fつかっている人は 1:5V電源が便利 2:C言語わからへんねん 3:8bitPIC在庫ありまくり 4:PICKIT2買うお金がないのですよ 5:アセンブラ最高 6:書籍のサンプルしか利用できないのです 7:情弱
いまだに16Fや18Fの新製品が出てくるのをどう説明するんだ?
中国のお客さんが指定してくるので仕方なく
プルダウンって何ですか?
>>188 信号を抵抗でGNDに接続しすること
配線されない状態はLレベルになる
>>189 > 配線されない状態はLレベルになる
Hi-Zではないか?
配線されない状態でHi-ZにならないようにプルダウンしてLレベルにするのではないか?
>>185 18FでバリバリC使ってるけど。
安くて必要十分な機能・性能があるから使ってるだけ。
足りなければ24Fとかも使うし。
18fって今どんな用途で使ってるの? 用途は昔から変化してないのかな?
2550だけ、USB目当てで使い始めた。
>>184 どうもです
そんな事があるんですね
AKIライターとPICKIT2を気分で使ってるので
気をつけます。
(秋月のはちょっと改造も…)
>>185 わざわざ箇条書きお手数おかけしました
コピペですか?
PICな日曜日の16F877のプログラムを真似てモーター回しながら液晶を表示してます。 タイマ0割り込み入ったらモーターに次の励磁パターンを送り、90度回転したら反転するように 改造しました。 更に液晶が16桁あるので、単順にコピーして16文字表示しようとしたらモーターが回らなくなってしまいます。 もしかして、液晶の表示に時間がかかりすぎてタイマ0がうまく機能していないのでしょうか?
16F877のプログラム ってなんだよ
なぜ「PICな日曜日」と「モーター回しながら液晶を表示してます」をシカトして 「16F877」だけをとりあげるんだ?
先にもーたまわして後で液晶表示すればいいだけじゃないの?
>>185 って釣り??
みんな24とかds使ってんの??単価高いよ。
あんな高いの買うやついるのかよって思ってたけど、違ったの?
気になって眠れんわ。
それから、CもPICKITも使えるよ!!
連投ごめん。 みんなのお気に入りPIC教えてください。 ベスト3ぐらいで。
>197 液晶のデータ送信中にタイマ0割り込みがあっても無視されてるって事?
なんでテメーが作ったソフトが糞だと疑わないのか?
test
すまん、アク禁だったので・・・
>>202 1位、12F1822 やっと8ピンにもURATが、ソフトUARTでキャラクター単位で送信しなくて済む
2位、16F1827 プロダクツガイドから88が消えるわけだ、さすがF1シリーズ
3位、18F8722 フラットパッケージじゃなければいいのに・・・、16ビットを喰いそう
ホビー用途だと、このあたりかな。
>>197 「単順」ってプログラミング用語みたいでかっこいい
明日動くんじゃないのか?
ダイナミック点灯の7セグ(既製品)の値をPICで読み取りたいのですが どんな流れの処理をプログラムするのが良いでしょうか?
制御してる側の信号は横取り出来る が前提でいいの? それなら自分の中にある構想でいいと思う 制御信号がn個目に相当するから分岐 効率良くしたいならn個で一周ってわかってる シフトレジスタとかかまして割込みかけるとか
ちょっと質問です。 余ってる銅線(細い銅線が4本がねじってる)で有線内線をつくろうかと思ってます。 アナログで銅線に音声を乗せる場合、何チャネル同時に出来ますかね?
TDM FDM どっちでやるの?
>(細い銅線が4本がねじってる) の意味がよくわからん。 >有線内線 って何?
細い銅線が四本のより線の銅線って意味 有線で内線(インターホンみたいなやつ)
UTPとの違いを詳しくplz
車の電源ケーブルで使う2スケのやつなんだけど・・・ 本来は通信するようなケーブルではない
>>209 レスありがとうです。
横取りしても大丈夫かはやってみないとわかりませんが、
まずは実験で表示と読み取りの2つを作って一方が追従するように作ってみたいと思います。
>>213 カッド線か?
ここは場違いな気がするが・・
>>213 >細い銅線が四本のより線の銅線って意味
それは1回目の書き込みでわかるんだけど、その4本は
・被服をかぶった線が4本撚り合わさって、1つの外皮に包まれている電線(4芯ケーブル) なのか
・4本は全て裸線であり、絶縁されていない線なので、都合1本とおなじ
の、どちらなのか?ということ。あえて4本と言うくらいだから、前者かな?とは思うけど。
>有線で内線(インターホンみたいなやつ)
????
>アナログで銅線に音声を乗せる場合、何チャネル同時に出来ますかね?
デジタル信号ではなくて、アナログでやるとすれば、個人のレベルでは、多重化は困難と思う。
デジタルでやるなら、音声帯域を制限すれば、頑張れば個人でも実現できると思われる。
何せ質問内容がアバウト、かつ曖昧なので、よくわかりません。
何から書いていいかわからず、ずっと見守ってた
疑問に思ったレスが投下されつつあるので、別視点から一言
PICスレに書いた
>>210 はPLCと勘違いしているのでは?の件
MIDIキーボードのキーを押された時にLEDが光るプログラムを書いているのですが、 MIDIメッセージは3バイトで送信されてくるので3バイト目が0x00の場合LEDを点灯するように書いたのですが、 ゆっくりキーボードを押すと問題なく点灯するのですが1秒間隔でキーを押すとLEDが点灯せずMIDIを取りこぼしているように見えます。 8MHz駆動では処理し切れていないということでしょうか?
>>220 LEDを点灯してる間はMIDIを受信できないようなプログラムを書いてるんじゃ
ないの?
>>220 MIDIの事は全然わかりませんがちょっと見てみました
ゆっくりの時は、ランニングステータス?で00Hをたまたま
拾ってるんじゃないでしょうか?
全然知らないのでスルーして下さい
Pickit2のlogic tool 初めて使ってみたけど3ch同時は便利だね でも波形のエクスポートのやり方がわからん・・ やっぱり画面コピーだけなのかな
225 :
774ワット発電中さん :2010/12/20(月) 10:50:48 ID:QfY+GqmJ
SDだと時々容量がいっぱいになるから SATAのHDDに書き込もうかと思うのだが 参考になるサイトとかってない?
ATAPIならありそうだからSATA変換でもしたらいいんでね?
SDカードに書き込んだWAVファイルを読み出して音声を再生したいのですが 良い参考サイトあったら教えて下さい
>>228 こんなに安いんだ
部品取りにも良いくらい
これを改造してPICで再生停止すればいいかな
でも瞬時に発音して貰いたいんだけど再生まで数秒かかるだろうからなー
>>229 ほしい機能を具体的に書いたほうがいいんでないの。
再生する音の長さとかなんでWAVファイルでないとだめなのかとか。
音を出すのも簡単なのならPICでもOKかもしれんけど、複雑なのだと専用ICとかdsPICとかが必要になるんでねーの?
232 :
:2010/12/20(月) 18:05:02 ID:xe+9nkAp
>>221 >>222 ありがとうございます。
ソースはこんな感じです↓
main_loop
call RXCHR ;MIDI受信
note_on
movlw 0x90 ;ノートON
subwf RCV,W
btfss STATUS,Z
goto note_off
call note_on_send
note_off
movlw 0x00 ;ノートOFF、ベロシティ0
subwf RCV,W
btfss STATUS,Z
goto note_off80
call note_off_send
note_off80
movlw 0x80 ;ノートOFF、頭80
subwf RCV,W
btfss STATUS,Z
goto main_loop
call note_off_send
;-----------
;ノート処理
;-----------
note_on_send
bsf PORTC,0
bsf PORTA,4
goto main_loop
note_off_send
bcf PORTC,0
bcf PORTA,4
goto main_loop
MIDIキーを押した時に1バイト目に90が送信されるので、それを拾ってLED点灯させてます。
キーを離した時に1バイト目に80を送信するキーボードと、3バイト目が0x00を送信する2タイプあって、
そのどちらも対応したいので、どっちが来てもLEDを消灯させるようにしています。
ですが、80が来たときの反応は良好で連打してもLEDがチカチカしてちゃんと受信しているようなんですが、
3バイト目が0x00タイプのキーボードの場合どうも取りこぼしているらしく連打できない状況です。
なんとか1バイト目と3バイト目を取りこぼし無く処理できる方法はないでしょうか?
>>230 ,231
レスありがとー
どんな機能かですがPICでの動作をその都度音声で発生させたいというものです。
「点灯しました」「消灯しました」「設定値1234です」とかです。
WAVファイルがいい理由は読み出して音声にするまで簡単そうだからです。
(メモリも安いし、音声もそれほど大量にないのでがんばってMP3とかにして詰め込む必要がない)
読み出しは一個の大きなWAVファイルでプログラム内で既定のアドレスを指定して再生できればいいです。
SDカード使う以外で単体のメモリとかでも良いのですが、入手とか考えるとSDがいいかな?と思っています。
>>232 call RXCHRでどのレジスタに何が入って返ってくるのかさっぱり分からないけど、
1バイト目の比較と3バイト目の比較で同じオペランドというのは?
235 :
774ワット発電中さん :2010/12/20(月) 22:00:39 ID:NtuVucQU
>>232 90h以外のメッセージなら消すってするのはダメなの?
誰かがダメな理由を説明しなきゃならんのか
>>232 call命令をgoto代わりに使ってるのでRXCHRサブルーチンからちゃんとreturn
で戻ってきてるのか心配になるな。
note_on_sendとnote_off_sendをgoto main_loopで戻すならgoto note_on_send、
goto note_off_sendとすべきだし、callで呼び出すならgoto main_loopの代わり
にreturnで戻して、call命令の後にgoto main_loopとすべき。
リストを見る限りではプログラムに時間がかかっている部分はないので、内蔵
USARTを使ってるとすれば8MHzクロックなら楽勝のはず。
このままでも動かないこともないので
>>223 の言うようにMIDIの理解が間違って
いるのかもしれん。
ラジコンのジェットエンジンの回転計と温度センサーが壊れたので 修理費を見積もってもらったら、10万もするらしいので 回転センサーと温度センサーを探したのだがなかなかいいのが見つからん。 回転センサーは、MAX11.5万回転なので15万回転ぐらいまで測定出来るセンサーと 580°C-690°Cぐらいにはなるので800度ぐらいまで測定出来るセンサーを探しているのですが 個人で買えるようなサイトってありますか??
239 :
774ワット発電中さん :2010/12/21(火) 09:38:35 ID:A+zyuWAk
秋月電子で見たような。 温度は熱電対つかえば楽勝でしょ。 回転センサもあったと思うけど自分で探して。
>>239 秋月の熱電対は売り切れで仕入れが未定らしい・・・
回転センサは見つからん
241 :
774ワット発電中さん :2010/12/21(火) 10:11:53 ID:A+zyuWAk
非接触回転センサってのがあったけどだめかい?
MLPAB X ってどない?
245 :
232 :2010/12/21(火) 15:26:43 ID:b07ddZZ0
みなさんありがとうございます。
>>234 受信したデータをどうバッファしていいのかわからず受信したらとり合えずレジスタに入れてまして。。。
>>235 90hのあとにどこのキーボードがどのくらいの強さで押されたか、
というデータも入ってくるので90と80と00でキッチリ判別しないとLEDの動きがメチャメチャになってしまうんです。
>>237 前に作った自分のソースからコピペしていたのでgotoもcallもメチャメチャになってしまいました。
参考にさせていただき修正しました。
いろいろいじっていて気がついたのですが、
どうもmidimanというメーカーのキーボードでのみLEDの動きが怪しくなるみたいで
ヤマハとかローランドとかPCのシーケンサーを繋ぐと0x00でもうまく受信できました。
説明書のMIDI仕様は他のメーカーとほぼ変わらないので不思議です・・・。
どうもありがとうございました。
>>232 ソースも流れも見ずにレスする
「ランニングステータス」考慮してる?
PICでMIDIいじってるけどFIFO入れないと結構しんどいよ
callで呼んでgotoで戻るわ、 1バイト目、2バイト目、3バイト目の区別なくデータ比較してしまってるわ だけど、いいのかいな?
いいんじゃね?
ベンドデータが来ない限りいけるんじゃないかな? 来たらしらん
無茶苦茶だな 見てて気分悪くなるコード
エレガントさを求めるならPIC自体使わないからいいんじゃないの
その場停止で時間待ちみたいなソースが標準だったしなあ。今は知らないが。
おまえらが気持ち悪いわ
>>252 他人もそんな素人っぽい組み方をしてると思ってる?
PICなんていうマイコンモドキが流行ったことと、理系離れ×工学部離れ×電子系離れ なおかげもあってか、恐ろしいほどの勢いでレベルダウンしてしまっている。 >254もびっくり!な、ド素人みたいなのが給料貰ってプログラム組んでたり。
畑のボイラーの燃料がどれぐらい入ってるかっていつもわからないんで どれぐらい入ってるかによって青黄赤のLEDを点灯させようかと思ってるのだが 燃料がどれぐらい入ってるかわかるようなセンサーってどんなのがありますか?
フロート センサー
PICは割り込み持ってないバージョンがあったりして、 あれで入門したらかなり間違った方向にいけるなとか思った。
えっ、CPU? PICってPLDの一種なんでしょ。
割り込み持っていても、スタック領域をデータとしてアクセスできなかったりな
>>254 俺が入門したころのPIC入門書は大抵、その場停止の関数を最初に紹介しよった。
キモいから、C言語でタイマー割り込みで周期処理をさせようとしたら、ソース本体がほとんど書けなくなって吹いた。
でもPICのアセンブラは何とも使いづらいから必死こいてロジックをシェイプアップしたさ。
とりあえずマイコンの入門にPICは微妙だと思った。
>>258 PICの種類と言語のチョイスができるレベルになってないとダメよね。
>>260 なのでアドレスとして飛ばしてそっちで拾うwwww
上のレスでCALLでGOTO戻りとかあったけど全然ありwwww
FSR使って増減の値入れ子にしてswich文wwwww
ダミーDTでPUSH/POPもどきwwwwwwwwwww
PICはおもしれーぜwwwwwwwwww!!!
そういう意味では…
燃料タンクの重さがわからないが、 体重計にタンクを乗せるというソリューションもある。 それにPICをどう絡めるかがこのスレ的には問題だが。
ボイラーとかいってるから浮かせるのは消防法のからみでだめだと思うよ
農家が少危とかちゃんとやってるてるわけないじゃんw 燃えても類焼はそのハウスだけだろうしwwwww
やっぱり弱電だとどうしてもイメージが甘くなるな。 一歩間違えば怪我したり死んだりするのが当たり前の業界に対して 知ったかぶりをしているのは憐みを誘う。
ボイラーというと、福岡のほうで400kgのボイラーが100mほど吹っ飛んだのを思い出す
ソリューション(笑)
エボリューション(笑)
寧ろ、超音波にて油面の距離を測るとよい。 若しくは、タンクの底面にストレンゲージ付けてみる。 究極は、ピンク色した耐油ホースを、その油で満たし、 片方をタンク内の油の底へ、もう一端側は中央を油の満ちたままタンクの底の位置まで下げ、 端をタンク上面まで持ち上げる。 すると、PIC無しで油面が分る。 耐油ホースの裏側からLEDで照らすと色気があってよいだろう。
久しぶりにPICしようかと思ったら、相当忘れてる(汗 電気二重層コンデンサー2300F 2.5V っていうのは、コンデンサに2.5Vかかるようにしないといけないんだっけ?
274 :
774ワット発電中さん :2010/12/23(木) 23:41:06 ID:PFDmTjy8
2.5V以上掛けちゃ駄目ってこと
農民はなんらかのレスもまともにできないのかね
タンクを叩いて、振動波形をFFT解析して油のレベルを知るとかね。
PICでキネクトを作ってみたい
>>277 おれも思ったんだが
例えば石油ファンヒーターってさ・・・
それが想像の限界か。
農家のボイラー用燃料タンクって、満タンの表示なんかしたら、ソッコー盗まれるんじゃねぇの?
284 :
227 :2010/12/25(土) 09:29:36 ID:PVOwOTvd
またすみません。 PICでデータを読み出すにはUSBメモリとSDカード、どちらがハードルが低いでしょうか? (ネットで部品や資料が集めやすいなど)
キネクトって赤外レーザー照射してカメラで読んでるんだよね、 一台のカメラだけで深度得られる仕組みがイマイチ理解できない。
287 :
285 :2010/12/25(土) 10:10:23 ID:uG2fDd4e
あぁ、照射側と受像カメラの位置がちょっとずれてるから それぞれの点が距離に応じて多少左右にブレるのか、理解理解。 水平解像度がかなり高いカメラじゃないと精度得られないのか。
>>284 資料はどっちもどっち。
USBだとUSBホスト機能が要るからPICが限られる(24Fじゃないとない)
SDならSPIがあればいいから、16F18FクラスでOK
289 :
774ワット発電中さん :2010/12/25(土) 13:23:29 ID:ARleJrDA
いや、PIOが4本あればSPIさえいらない。が、しかし、 ファイルシステムを含めた汎用性が必要となるとPIC24クラスは欲しい。
どちらがハードルが低いでしょうか? 大好きな子と過ごしたかったけど 妥協したような哀愁を感じた…
MikroC v8.2.0.0を使ってプログラミングをしていますがタクトスイッチによる 入力が安定せず困っています。チャタリングのせいかと思い色々と パラメターをいじってみたのですがいくらかましになる程度で完璧とまではいきません。 main部のボタン処理の部分は下記の通りでもちろんconfig wordsや入出力ポートの 設定もちゃんとやっているつもりです… 中身は単にスイッチを押すたびに2個のLEDがそれぞれ点灯/消灯するというものです。 while(1) { if(flag !=1 && Button(&PORTA, 0, 20, 1)) { flag = 1; } if(flag !=0 && Button(&PORTA, 0, 20, 1)) { flag = 0; } if(flag == 1) { PORTA.F5 = 1; PORTA.F4 = 0; } if(flag ==0) { PORTA.F5 = 0; PORTA.F4 = 1; } } いったいどこでこけているのでしょうか?チャタリング対策として1msから30msまで 試してみました。
>>291 何が1msから30msなのか書いてないけど、
プログラムとポートの状態がごっちゃだから、
何の対策にもなってないんじゃないのかね。
即興で書いてみたよ。
#define BLOCK_COUNT 10
for (;;) {
if (status == 0) {
if (!Button(&PORTA, 0, 20, 1)) {
ch_counter = 0;
} else {
/* 必要ならここにwaitを入れる */
if (++ch_counter >= BLOCK_COUNT) { /* 連続してBLOCK_COUNT回押された */
PORTA.F5 = 1; PORTA.F4 = 0;
ch_counter = 0;
status = 1; /* 次の状態へ */
}
}
} else {
if (!Button(&PORTA, 0, 20, 1)) {
ch_counter = 0;
} else {
/* 必要ならここにwaitを入れる */
if (++ch_counter >= BLOCK_COUNT) {
PORTA.F5 = 0; PORTA.F4 = 1;
ch_counter = 0;
status = 0; /* 次の状態へ */
}
}
}
}
あ。離した時の状態考えてなかった。 次の状態に移る前に、ボタンを離したかどうかの判定がいる。 上のだと押しっぱなしで交互に状態が変わってしまう。
つまり状態はボタンを押した時、離した時に分けて4つになる for (;;) { if (state == 0) { // 押した (省略) state = 1; } else if (state == 1) { // 離した state = 2; } else if (state == 2) { // 押した state = 3; } else { // 離した state = 0; } } やや冗長かな
>>288 USBホスト機能があったとしても、マスストレージプロトコルしゃべるのは
自分だからSDの方が楽じゃないか?
0.01uFを追加する。
>>292 unsigned char SW_in; // SWからの生信号(チャタリングあり)
unsigned char SW_buff; // SW buffer
unsigned char SW; // 処理後のSW信号(チャタリング無し)
SW_buff = (SW_buff<<1) + SW_in;
if ( SW_buff == 0b01111111 ){ SW = on; }
else if( SW_buff == 0b10000000 ){ SW = off; }
>>289 さすがにPIOじゃ遅くて使い物にならない気がする
>>295 SDのプロトコルしゃべる代わりにUSBのプロトコルしゃべるだけでしょ
>>299 デジカメに入れるのは無理だろう
自作カメラだったらARMくらいのマイコンかFPGAでやればできるかと
どっちにしろPICじゃ無理
>>291 flag = 0;
while(1) {
if(Button(&PORTA, 0, 20, 1))
{
if (!(flag & 0x2))
{
if((flag & 0xc)==0xc)
{
PORTA.F5 = flag & 1;
PORTA.F4 = (flag & 1)^1;
flag |= 2;
flag ^= 1;
} else {
flag =(flag+0x4)&0xf;
}
}
} else {
flag &= ~2;
}
delay();
}
崩れちまった・・すまん
24Fならできるんじゃないのかねぇ
>>291 ではなぜダメなのか
Button()は現在ボタンが押されているか(離されているか)どうかの
状態を得るための関数だということ。それも単にポートの状態を得る
のではなく、チャタリング処理のためのdelayも含んでいる。
active_stateが1でポートの状態が1、delay後も1ならButton()は1
active_stateが0でポートの状態が0、delay後も0ならButton()は1
>>291 がやりたいことは、ボタンが押されたことを知りたいんだよね?
(現在ボタンが押されているかではなく)。
なので他の人の説明のように、1回前の状態でボタンが押されていなくて
今回ボタンが押されたという状態を検出しなければならない。
皆さんありがとうございます。プログラムを見ただけでは理解できないレベルなので 1つずつ実際に試してみたいと思います。 >ボタンが押されたことを知りたい まさにその通りです。 時計(兼ストップウォッチ)を作ってみたものの、 肝心のスタートボタンが安定せず、スタートしたりしなかったりで困ったので LEDを2個使って実際に入力に対して何が起きているのか試してみたところでして。 更に時計の時刻調整をするのにもButton関数を使ったのですが 1押ししている間にいくつも数が進んでしまうので何とかして1押しにつき 1カウントする方法を考えねばと思っているところでした。 状態変化を検出しなければならないというのはすごく大きなヒントのような気がします。 Button関数についても誤解していました。
ボタンなどの取り込み、使用は、組み込み系ソフトでは必須だと思います。
1) チャタリングを除去する方法
2) off→onを、変化を知る方法
3) on→offを、変化を知る方法
4) 現在のon/off状態を知る方法
>>298 に書いた方法は、上記がすべてできる書き方です。
変化したことを知る方法は、過去の状態を知らないとできませんので、
1つ前を記憶しておく必要があります。
しかし1つ前の記憶だけでは、偶然OKになってしまうかもしれないので不安です。
かといって、複数の過去を取ろうとすると、たくさんの変数が必要で、
それだけで煩雑ですし、間違いの元です。
上記
>>298 の方法はタイマー割り込みとセットで使用しますが、
1byteしか使いませんので、経済的です。
一般的に1msのタイマー割り込みはよく使われるので、それとセットで使うと、
7ms以上連続して1ならonと判定、とか できます。
>>310 解説スゴい。ソンケーします。ぱっと見で
>>298 わからんかった。そ〜か、割り込みでそ〜やんのね。
SW_inとSWは、unsigned char 要ります?bit でよくないですか?
で・・・・
SW入力のチャタリングって、7msで取れます? Z80の頃に50ms〜80msくらいとれって言われて、そのまんま盲信してた。
いまも、普通に40ms〜60ms取ってて、連打とかでも問題なく動作してるんで、30msか7msなんて試したコトすらないん
だけど、C対策いっさいなしの生SW接続の時って、どれくらい取るのが普通なんでしょ。
業界第一人者の名人は超高速で1と0を伝達しようとします。 名人は1秒間に16連打すると言われており、1打あたり62.5msの速さです。 名人に敬意を表すとサンプリング分解能はその1/16の4msが妥当でしょう。
なんで唐突に「その1/16」なんだよ。
>>311 スイッチによってチャタリングの時間は変わるから実測するべし。
まあ、2ミリ秒周期で取り込んで3回分の多数決で十分取れる事が多い。
スイッチの問題なので、別にz80の時代から大して変わってる訳じゃ無いから
80m秒取れと言った奴も真に受ける奴も…
物や使用者の鈍感さによるけど、80m秒も判定に時間が掛かったら反応が遅く感じられる。
>>311 >SW_inとSWは、unsigned char 要ります?bit でよくないですか?
もちろんbitでOKです。
構造体定義するとかが面倒なので、一般的にはcharで取ります。
SW_inとSWの「上位7bitさん、一生使わないでごめんなさい」という感じです。
>SW入力のチャタリングって、7msで取れます?
>Z80の頃に50ms〜80msくらいとれって言われて、
本当ですか?
50ms〜80msというのは、何があっても大丈夫なように、設計目安でしょう。
そんな長い時間のチャタリングには、お目にかかった事がありません。
もっとも、
>連打とかでも問題なく動作してるんで、
など、評価して機能上の問題が無ければ長めの方がいいですね。
>C対策いっさいなしの生SW接続の時って、どれくらい取るのが普通なんでしょ。
OMRONのMY4などの制御盤リレー系は、機会的な「腕の長さ」が長いので、
かなり取る必要がありますが、そうでなければ、5msも取ればいいと思います。
接点信号を、そのまま生でつなげばOK! なんてのは、チャタの電圧や時間が既知のときだけです。
接点入力方法における「あるべき論」でいうならば、
・実際の接点のチャタリング時間をオシロで実測して、その○○倍かの時間を使用する
・回路構成は、
入力→過電圧保護→CRフィルタ→PIC(シュミット入力の端子)→
→チャタリングフィルタプログラム→完成品のon/off情報
となるべきです。が、程度と場合によって取捨選択して使います。
私の定番は、
入力→1kプルダウン→33k→0.1uFでGND→74HC14→PICという感じです。
プルダウンが1k程度にするのがポイントです。
使いたいスイッチのデータシート嫁
ウェイト・ディレイを一切使わないおれがきましたよ
318 :
774ワット発電中さん :2010/12/26(日) 16:57:42 ID:hMy5ehge
IOポート2個使って、交互にプルアップして2-3回連続で読めたらOKにするとか decfszでカウントダウンして連続〇〇回LowになったらOKにするとか チャタリングの除去は、最近これのどちらかだな どんな接点でも取りこぼしとか取り過ぎとかは起こらないみたいだし
押しボタンスイッチで接点に押し付けるだけの品物だと、 接点のバウンスの問題じゃないから厄介だけどね。
↑その手のスイッチは押し加減でも勝手にON/OFFするし、 接点が劣化してたりすればもうどんな高度な処理でも無理ぽ。
一瞬でもONになればそのあとの入力を一定時間弾けばいいんだろ。 何度も見に行くってのはなにか回路に不具合がある事前提だろ。
単なるチャタリングだけじゃなくて、いろいろと使用条件もあるから
気をつけねーとな。
実測してOKなんて能天気なことやってると、痛い目にあう。
>>320 シナ製スイッチなんか使うと、新品でも問題になるわな。
>>321 おまいとは話が合いそうだ
ただ弾いている訳ではないけどな
結果としてそうなってるけど
324 :
774ワット発電中さん :2010/12/26(日) 18:29:15 ID:hMy5ehge
>>321 一瞬でもボタンに触れたらONっていう
処理がしたかったらそれでいいんじゃない
チャタリングがどうとか思ってる人は
確実に押された場合のみに反応して
それ以外は弾きたいんじゃないかな
>>324 スイッチってのはな、もっと殺伐としてるべきなんだよ。
ブレッドボードの向かいに座った奴にいつブッシュされてもおかしくない、
押すか押されるか、そんな雰囲気がいいんじゃねーか。女子供は、すっこんでろ。
326 :
774ワット発電中さん :2010/12/26(日) 18:58:33 ID:hMy5ehge
そもそも、そういうやり方だと 少し長い目にボタンを押した後 指を離した時に反応しちゃうんじゃない?
>>324 「チャタリング」と「確実に押された」違いを教えて下さい
>>315 氏を待ってるんだけど
スイッチという「デバイス」でプルダウンで14かますって、そういうものなの?
抵抗の定数(5V系と判断)まで出してるから、天秤にかけたんだろうけど教えて欲しい
それとも正負どっち論理で取るかっていう判断も含めて?
1Kって強めだと思うけど、保険分で確実に引いておきたいって事でいいのかな?
で33KでRCって何の意図があって定数出してるの?なんかバランスが…
(さらに14の意味があんまない気が)
シュミットトリガ・FFを使うのは、広く使われている「手法」で
「こうすべき」と言い切るのは危ないと思う
>>327 >スイッチという「デバイス」でプルダウンで14かますって、そういうものなの?
>天秤にかけたんだろうけど教えて欲しい
天秤って.....、pull-downと74HC14の組み合わせは、だめなんでしょうか?
すみません、勉強不足です。
>それとも正負どっち論理で取るかっていう判断も含めて?
pull-downですので、正論理です。+5V-----SW-----+---1k---GND。
TTL全盛でもないので、負論理でSW取り込みする理由はないと思いまして。
>1Kって強めだと思うけど、保険分で確実に引いておきたいって事でいいのかな?
5V/1k=5mAだと、多すぎでしょうか? 接点保護にならないでしょうか。
>33KでRCって何の意図があって定数出してるの?
3msくらいの時定数と、汎用の0.1uFコンデンサを使いたいからです。
>なんかバランスが…
行きと帰りをなるたけバランスよくしたいと思うのです。10kだと遅くなりますよね。
>(さらに14の意味があんまない気が)
そうですか?
CRでジワーッと上がるのをシュミット入力で受ける、
いったんon(off)になったら、ちょっとやそっとじゃoff(on)にしてあげないよ!
気持ちいい回路構成と思いますが、NGでしょうか。
>シュミットトリガ・FF
FFってフリップフロップのことでしょうか?
理解が悪くて、すみません。
チャッタ待った。
330 :
774ワット発電中さん :2010/12/26(日) 20:35:34 ID:hMy5ehge
>>327 押すときのことだけじゃなくて
離す時、例えば>326のような時誤動作しない?
これもチャタリングだよ
しかも複数回チェックしに行かないで、時間だけで処理すれば
現在の状態が確定できないから
ボタンが離れた直後に起こるチャタリングを弾けないでしょ
クイズの早押しボタンみたいに押されてから次に反応するのが
相当遅くても大丈夫ならなんの問題もないだろうけど
ゲームのボタンみたいな使い方なら常に待ち受けなければならないから
無理でしょ、こういうのそのやり方で弾けるの?
そんなにチャタリングが問題なら、防止回路いれとけば? トランジスタとコンデンサ一個ずついれるだけで幸せになれるでしょ?
>>315 >・回路構成は、
> 入力→過電圧保護→CRフィルタ→PIC(シュミット入力の端子)→
> →チャタリングフィルタプログラム→完成品のon/off情報
>となるべきです。が、程度と場合によって取捨選択して使います。
やりすぎというか、CR+シュミットで取りきれないなら、むしろソフト
だけの方が良いと思うけど。
ソフトだけで取りきれないと言うことはあり得ないし。
>>328 あとでちゃんと読みかえします
なぜ聞いたのかというと組込系だとと、言っていたので
プラス特殊な何かがあるのかと思ったからです。
>>330 チャタリング対策をソフト側でなしにするのは、そのやり方じゃないよ
端折って書くけど、スイッチのラインと別にワイアードANDして
割込みと同時に165ラッチするんだよw
メカニカルロータリースイッチも混ぜて、どっち相いいからやっぱり
ワイアードにして一方を165に突っ込んで読むと位相がどうのとかそんな処理が不要
555ワンショットかますとか、色んなやり方あるから面白いぞ
でも何をやっても制限って絶対出てくるものだから万能な方法などない
>>329 がいい事いった!
仕事でたまにタクトSWの銀接点見てるけど、S成分って結構どこかからやってくるのな。
で、結構接触不良になる。
その波形を観察すると結構時間的には長い。
だから理想の数ミリ秒程度で収束するとかんがえないほうがいい。
汗っかきが使うとこうなるんかいな。。。
コードを追加するのは無料 部品を追加するのは有料 なんでわざわざハードで?
>>335 適材適所
「時間軸に依存」っていうのが基本的に気持ち悪い
何が起きるがわからない。出来るだけそういう要素は減らしたい。
といっても、8割くらいカバー出来ればまあ問題ないでしょって時は
ソフト側に実装するし、どっかのレスであるけどスイッチによる訳で
何も考えずルーチン使いまわしにしたら怖いだろ
より精度を上げたい場合、外側でもイレギュラーな因子を減らしておきたい。
ロッカータイプとか混在してたら、ソフトであの場合・この場合ってやるのと
ハード側である程度揃えておくのと、どうしよっていう、手間とコストの兼ね合い
好み
オレの場合、チャタは基本的にソフト処理だな。 ハード上はESDとかRFI対策といった最低限の回路だけ(でも結構な量になる)。
>>321 そんなど素人丸出しのプログラムは製品には使えない。リコールの山だな。
ど素人が遊びで使う分にはなんの問題も無いけど。
定期的にボタンの状態をポーリングじゃダメだということか?w
>>339 そうでは無くて
>> 一瞬でもONになればそのあとの入力を一定時間弾けばいいんだろ。
ってのがどうしようもなく駄目って事。
ソフト処理なら一定間隔ごとにサンプリングして 判定するのが普通ですよ。 ・8回連続したらON 00000000010001001010111111111?????????? ↑押した |12345678|ON→ ・多数決で8回のうち6回ならON 000000000100010010101111???????????????? ↑押した |1 2 3456|ON→ どちらも判定で遅延が発生するので、 あまり長い時間掛けると反応が悪いとか、 16連打できないなどのクレームが付きます。
>>328 レス遅れましてすみません
偉そうなレスをしましたが、実はそんなに深く考えてなくて…
で、回路って全体の話になってくるので、ここだけこうすればって
いうものでもないですよね。
それは
>>332 のレスに繋がるのかと。(そういう意図ですねよ?)
で、プルダウン(プルアップでもそうですが)の1Kですね。
もうちょっと大きいほうがいいと思います。
メカニカルは、完全なオープンから、いきなりショートというスイッチです。
抵抗値が小さくなれば、流したくなるので反発のエネルギーも来ます。(
>>337 突っ込むなよ)
5mAですが大きいと思います。
(スイッチ部はパネルに行っててとか抜きに。そうするとオープンコレクタだろとかキリがない…)
で5mAが「保護」という表現は、もしかしたらおれがそもそも何か勘違いをしている気がしてきた。
定番のディスクリートは入ってての話ですけど、なのかと…
実はもうちょっと書いていたのですが、赤くなる前に一旦やめます…
>>342 なんか全体的に理解力がなさそう。
315のレス読んだら解説されなくても設計意図を理解できるのが普通。
スイッチは酸化膜を破るために数mA流れるようにしたほうが良いって言われるよね。
接点保護ってのは電流流しすぎて接点を劣化させないってことでしょ。
ちょっとチャタリングと話がずれるかも知れないけど、家の東芝製のエアコン のリモコンがうまく反応しないときがあって、おかしいと思ってた。 いろいろ試していて、ボタンを離したときに赤外線が発射されているというこ とが分かった。 ボタンを押したら用済みと思ってリモコンの向きを変えちゃうから赤外線が届 かないわけで、なんでこんな仕様にしたんだろ。 家にある他の家電のリモコンで、こんな仕様の物はひとつもない。
346 :
311 :2010/12/27(月) 13:58:25 ID:4sUnAwUP
(@_@;)なんか、ちょっとしたコトがスゴいコトになってて、ちょっと反省。
>>314 >実測するべし。
御意。言われてれば、実測して45msくらいのバタつきで決めた数値だったのを思い出しますた orz
なんとなく数字だけが頭に残ってたみたい。
>80m秒も判定に時間が掛かったら反応が遅く感じられる。
たしかに。時計の時刻調整ボタンで、初長押しで AjstMode その後に同じボタン入力でタッチインクリメント
長押しで連続インクリメントとかだったので、連打はロストしてもオケだった。結局、仕様次第だったわけす
ね。
>>315 >接点信号を、そのまま生でつなげばOK! なんてのは、
まーそうですね。やってるのは、自家工作なんで、製品とかみたいにシュミットや04で入力受けるとかまでする
コトに意味がないので、じか入れSWの話をしました。全体としてちっちゃくする方を好むので、SWの為だけにIC
一個載せるとかよりもソフトでなんとかする方が作り貝があるっしょ。
>>321 それだと、長押しとかが拾えない。
>>331 それを言ったら実もふたもって・・・ 交通事故が怖いなら運転手雇えって言う?
>>344 それって、長押し機能のせいじゃない? なんかのリモコンでそういうのあった気がする。
>>343 そういう意味なのか
そうでなくてさ、具体的な数字を出してくれてもらってるから
その根拠はなんだろうっていう…
ちなみなんだが「酸化膜」と「劣化」と「保護」と、
mAオーダー流す事とは卵と鶏の話で、そのレス読んだら
5mAくらい流せば劣化しないって誤解する人が出ちゃうだろ
新品に一旦電流流すと、その時点から酸化(膜)が進んで行く
(接点の物理的な劣化とは切り分けとく)
スイッチは常に通電状態ではない
mA流した「ほうがいい」っていうのは、しばらく使ってない場合
スイッチが入りにくくなるから、特攻かけて突破し、「なかった事にする」って事だぞ
だからリレーとかも通常時ONで使うんだよ
(逆だとリレーアクティブでOFF状態だから、いざという時固着が怖い)
「保護」っていう言葉なんだよ、悪いのは…
普通に使ってる分には5mAもいらないし、2個並べただけで10mAも食う
だから5mA=保護ってどういう事だろって思ったんだよ
って書いてたら
>>345 さんこんにちは
348 :
311 :2010/12/27(月) 14:36:49 ID:kWgnYaMk
>>346 >
>>331 > それを言ったら実もふたもって・・・ 交通事故が怖いなら運転手雇えって言う?
そうかい?
自分で解決できもしない、仮免許以前の状態で大きく出たね。
ま、運転手雇えじゃなく、保険に入れば?くらいなんだが。
トランジスタもコンデンサも高いもんじゃないし場所も食わないし。
何より、問題が早く解決できるし。
まあ、しばらく仮免許運転にむけて頑張りなよ。
製品には使えないとか、バカじゃねえのw PICを製品に組み込んでる時点で低レベルだっつーの アホ丸出しwww
全板強制IDでいいと思うわ 自演ばっかりうっとおしい
もうおれ必死だろ
だから1Kでプルダウンしてるのは「保険」?って聞いたんだよ
誤動作防止で強めにローに引っ張ってるのかなって
だとしたらそもそも…ってなると思ったのっ
>>349 PICどうのとかじゃなくて、突き詰めたら
コントロール側は分離するし、チャタ云々ならメカニカル使うなで終わるだろw
そしたらホストになる側はSHもARMもPICも関係ない
でもPICスレなんだよここはw
>>350 久々に来たんだから頼むよ
過疎ったらいつものPICすれになるだろ
>>348 こら。
>>311 は俺だ!勝手に名乗るな。
そいことするから、自演とか言われる。どっちが仮免なんだか。
そもそもなんで食い付いたかって 「ボタン関数」 ってのがあるという現実に感動しただけなんだよ…
>>349 おいおい。マイクロチップはアマチュア向けにPICを作ってるのかよ。
なんかないのかよ…
>>346 >ソフトでなんとかする方が作り貝があるっしょ
ICいっぱい載ってたほうがかっこいいだろ
>それだと、長押しとかが拾えない
チャタリング判定出来て、長押しが判定出来ない不思議
レスいらないよ…
チャタリングは友達なんだぞ。「ノイズ」じゃないんだぞ
起きなきゃ困るんだぞ…
>>347 なんで揚げ足取ったように逆の意味で解釈するのかな。
「酸化膜を破るため」って言ってるんだから、劣化防止の設計じゃなくて、劣化するのが前提の文になってると思うけど。
保護の件は、何十mAも流したら接点が悪くなるから数mA程度に抑えて保護するって意味じゃないか?
>>328 で「5mAだと多すぎでしょうか? 接点保護にならないでしょうか。」って聞いてるんだから明らかでしょ。
スルーできねえ
だったら
>>343 投げんじゃねーよ
だから
>>351 投げて33K0.1uってのは
>>332 になるんだよ
だけど1Kで33KでCRでHC14ってバランスが
あんまよくないんじゃないのってなってんだよ
それは意図的なのかって始まってて
(スイッチ側は)10Kくらいでいいと思うって書いてんだよ
そこで保護とか言われたら?になるだろ
で
>>343 食らったら
>>347 になるだろ
またパラレル逆印加してもう30Ωしかないよ…
360 :
774ワット発電中さん :2010/12/27(月) 18:49:44 ID:SbmM29bi
PICのスレなのに、何で外付けのICやら部品やらの話をしたがるの? PICの内蔵デバイスやプログラムで何とかする話をするのが ココなんじゃないか、スレ違いだよ
>>359 1kでも10kでもどっちでも良いよ。
一般的にはSWにはある程度電流を流したいし、プルダウンの抵抗は
余り大きくしたくないし。
あとは設計者の好みだろう。
電流の最大/最小値はSWにより決まるし。
SWに5mAは特に大きいとも思わんけど。
>>360 PICはプログラムだけじゃないぞ、回路を含めての設計だろ。中心がPICのスレってだけだ。
あと、なんで長押しだと検出できないとか言い出してる奴いんだw
364 :
774ワット発電中さん :2010/12/27(月) 19:28:18 ID:SbmM29bi
>一瞬でもONになればそのあとの入力を一定時間弾けばいいんだろ。 >何度も見に行くってのはなにか回路に不具合がある事前提だろ。 >321のこれはプログラムの話だから、考えられないやり方だけど このスレ的には良い方向だと思うけどさ >あと、なんで長押しだと検出できないとか言い出してる奴いんだw この>321のやり方で長押し検出する方法があるなら言って見なよ 何度も見ないって言ってるんだからよ お前さんはこういうのでも検出できるICの情報でも持ってるんだろうけど
いや、できない理由をせつめいしてみ。
>>361 それだけなのです
いい悪いじゃなくて、「そうした理由」って知識になる
なので
>>327 を投げた
プルダウンなので、IC側はON時Vccー抵抗ー入力…単純に大きく出来ない
「定数」は色々テストしたとの事なので、それで1K・33Kになったんだろうと…
正負論理の処理まで含めてのことだったのか
それは関係なくSWをアナログと見立て、単にバッファとして切り離す意図だけなのかなとか
たまたまHC14が目に付いただけなのか…
色々想像してて、「これに落ち着いた」という理由を事を知りたかっただけなのです
あちこちから投げられ、そもそも的になりもう自己破たん
揚げ足食らって、言い切るしかない…
何度も書いてるけど、状況にもよるし「好み」ってある
こうしないといけないって考えたら、面白くない
だから定数含め「そうした理由」を知りたかっただけ…
おしまい
367 :
774ワット発電中さん :2010/12/27(月) 20:20:02 ID:SbmM29bi
>>365 出来ない理由なんて、単純に一瞬の1回こっきりしだけ検出して
その後見に行かないんだから、長押しなんて分からないだろ
長押しの判断をしようとしたら、複数回見にいかにと行けないからな
分かる理由を言えよ、中に超能力者でも入ってるのか?
368 :
仮免 :2010/12/27(月) 20:25:30 ID:kWgnYaMk
学生の長期休み時期になると空気が悪くなる件。
長く押す事に何の意義があるのか。 それをON/OFF以外のステートとして使うのは別の話だ。 詭弁だな。
何度も見に行きたくない場合 キーチェック→状態1 キーチェック→状態2XOR状態1 これを長押し判定とみなしたい分ループ その間に真になったら抜け出し(長押しではない) SW入力が正負どっち論理でもおk
371 :
774ワット発電中さん :2010/12/27(月) 21:03:20 ID:SbmM29bi
そのキーチェックを最初の1回だけやって 長押し判定できるって言ってるんでしょ、一つ上の人は 出来ない理由書いたんだから、出来る理由書けって言ってるんだけど 口だけ君は「なんのために長押し」とか「詭弁」だとか言い出す始末 あほらしいので僕はもうやめます
無理やりこじつけて逃げたなw
>>371 IC使っていいなら出来るよ
でもPICすれでICの話すんなって怒られたので
元々チャタ除去の話だから、チャタ除去するくらいの時間 ボタンの状態見なくても、もっと長い時間の長押しくらい 判定出来るだろ… って事だよなきっとw
sw_scan: ; ポート状態取得 clrf sw_now_port ; 最新状態入力 btfss PI_SW0 ; 0なら次実行 bsf fSW0_NOW ; btfss PI_SW1 ; 0なら次実行 bsf fSW1_NOW ; btfss PI_SW2 ; 0なら次実行 bsf fSW2_NOW ; btfss PI_SW3 ; 0なら次実行 bsf fSW3_NOW ; ; btfss PI_SW4 ; 0なら次実行 ; bsf fSW4_NOW ; ; btfss PI_SW5 ; 0なら次実行 ; bsf fSW5_NOW ; ; btfss PI_SW6 ; 0なら次実行 ; bsf fSW6_NOW ; ; btfss PI_SW7 ; 0なら次実行 ; bsf fSW7_NOW ; ; 2回連続ONでON確定 movlw 0xFF ; 1111_1111 andwf sw_old_port,w ; OFFのbitが0になる andwf sw_now_port,w ; OFFのbitが0になる iorwf sw_on_flag,f ; 1のbitのみ SWON確定フラグに設定 ; 2回連続OFFでOFF確定 movlw 0x00 ; 0000_0000 iorwf sw_old_port,w ; ONのbitが1になる iorwf sw_now_port,w ; ONのbitが1になる andwf sw_on_flag,f ; 0のbitのみ SWON確定フラグに設定 movff sw_now_port,sw_old_port ; 前回状態更新 return
>370 俺もそのロジックを使ってる。 チャタリング除去の処理って、基本的にON/OFF時に発生する短時間の不安定状態の対策だろ。 安定する(同じ状態が続く)まで待って、状態を取得するのが妥当だと思うが・・・
ID:6IAidyGN は感情が不安定なのか? 言いたいこと整理して書いてくれ。 長文なのに言いたいことが纏まってなくて読みづらい。 アナログとかバッファとか正負論理の処理とか複雑な話抜きにして、 チャタリングをCRでなまらせてシュミットで整形するのはよくやる手法だし。 0.1uFのコンデンサと時定数から33kが出たって言ってたし。 プルダウンが10kだとOnとOffで時定数が30%も変わるから1k選びたくなるし。 別に定数に疑問持ったり突っ込み入れるような事無いと思うけど。 バランス悪いってどういうこと?
>>372 371ではないが、とうやったらできるの?
意義なんて用途によるんで出来る方法を参考までに教えてくれ
チャタリング対策って、状況やら個人の好みで色々な方法や 考え方があって興味深いね。お前らもっといっぱい語り合ってください
落ち着いた ただの「印象」なんだよ。なぜこのキーワードが出てこなかったのか… 以下、おれの中の気持ち 「その表現をすると質問者は、プル○○○するのが一般的って 思っちゃったりしないかなー でもここでプル○○○のほうが…とかカキコしたら戦争が勃発するよな 絶対こういう単語に食いつくからな…」 伏字の意味ないけど、おまえらやめろよ…
スレに活気があると思えば、納得した
>>381 まじで思い込み乙だw
上に引っ張るか下に引っ張るかの議論なんて一切してない。
バタついた入力をどう処理するかの議論をしてるだけだ。
ここまでチャタリング
これからもチャタリング
GP3で全て解決
心配なら2接点SW使えよって感じだな
>>355 >ICいっぱい載ってたほうがかっこいいだろ
ちっちゃくしたいって言ってるのに・・・ ひらがなも読めんのか
>チャタリング判定出来て、長押しが判定出来ない不思議
チャタリング判定て、なんですか?
「長押しでリピート」とかしか使ったことないんでしょ。
1〜2発見たらしばらく見ないって手法だけで、ワンタッチ時は表示切り替え/長押し時モード切り替えとか、できますか?
>チャタリングは友達なんだぞ。
ほぉ。
知ってるだけで、付き合ったコトも呑みに行ったこともないヤツが言うな。
オメ、アンカミス多すぎ。かなりメイワク。
PoEで受電する側の回路図ってどこかない? 給電側はたくさん見つかるんだけど・・・
392 :
774ワット発電中さん :2010/12/28(火) 13:25:35 ID:ZZ8ulZLm
PIC16F1827-I/SOが100個位必要なんだけど、買い占めた人譲ってください。
>>389 >心配なら2接点SW使えよって感じだな
2接点SWって、何でしょうか?
2回路入りという意味でしょうか
395 :
774ワット発電中さん :2010/12/28(火) 17:08:43 ID:9oCMTGx9
電池BOXと基板を繋ぐ線って 秋月売ってないみたいなんだが 名前なんて言うの?
006Pとかのタイプの? 電池スナップの事?
>393 マイクロスイッチみたいに、COM/NC/NOの3端子でNC/NOの2接点という意味 じゃね?RS-FFと組み合わせれば確実にチャタリングは抑えられるし。
>>390 だから「友達」だって…言ってんだろ…
あ、安価ミスだと?
そんな事より
>>392 大丈夫か?
不安な年越しを迎えそうだ
>>391 ストレートケーブルならそのまま受ければオケ。
クロスケーブルなら対応するピンが調べて繋げばオケ。
電圧をどうこうしたい場合はデコデコでオケ。
>>398 なるほど、納得です。ありがとう。
うちでは「C接点」という言葉を使うので、わかりませんでした。
どうもありがとう。
>PICを製品に組み込んでる時点で低レベルだっつーの そうなんだ知りませんでした ではなぜPICはいまだに製造されているんでしょうか? まさか全てがホビー用なんでしょうか? ド素人なので教えて欲しいです><
>>404 他社さんの関係者の性根が腐ってるように見せかける自演系、もしくは自虐系か、
もしかしたらホンマモンのAVR厨レスです、相手にしてはいけません。
>>403 なるほど。で?
答えは あるけど教えない になりますか?
さて、ようやく休みに入れるので何作ろう。 とりあえず明日は餅搗きだけど。
>>407 何作ろうっていうより年の瀬だし…
餅搗きとかどうかな?
休みはdspic用の自作ライブラリを整理する予定。 なのでdspicを大量に仕入れてきた。
天高く 在庫積みあがる お正月
餅搗きは、みんなで大勢でやるからいいんだよ。 大根おろしの、美味かった。
PICの三相PWMで誘導モータを制御して餅をつけ
独立16チャンネル32bitのA/Dモジュールで 餅の重さや水分量、気温湿度気圧などを測定して 搗き方を制御するのも忘れずにね。
>32bitのA/Dモジュール そんなもん、あるのか? 32bitだぞ、32bit!
415 :
774ワット発電中さん :2010/12/31(金) 00:45:01 ID:uf/ITUP5
ブレッドボードの代わりに餅を使う予定です
>>414 二重積分型 A/D なら、32bit行けそうな気がする。
32bitのD/Aがあれば、逐次比較型も作れるし。
ただ、32bitフルに精度を出すのはかなり困難だけどな。
417 :
774ワット発電中さん :2010/12/31(金) 03:06:47 ID:XyzoXh1L
32bit = 4294967295 = 4294.96kmを1mm分解能で補足できる細かさ。 札幌〜鹿児島間を往復する距離を1mm単位で測定・・・・・。
418 :
774ワット発電中さん :2010/12/31(金) 04:32:34 ID:+HhQUE6H
>>417 すると、
16bit = 65mを1mm分解
なんかショボイ
富士山の上の小石の例だとどのくらい?
32bit精度 = 1/2^32 = 0.000233ppm
電子を1個ずつ数えられたりして
ちなみに >三相PWMで誘導モータ は突っ込むところじゃないの?
424 :
774ワット発電中さん :2010/12/31(金) 17:25:50 ID:uf/ITUP5
>>423 俗に言うインバーターってことで納得してました
>32bit = 4294967295 = 4294.96kmを1mm分解能で補足できる細かさ。 2^32=4294967296
>>425 4294967296段階だから、1mm分解能で0mm〜4294967295mmしか表現できないでしょ
サンプルレートとかLSB誤差抜きに、単純に「分解能」だけ考えると 4系統独立でオペアンプかまして、8ビットADモジュール独立して 4つ使えば32ビットにはならないの? 分離しなくても10ビットADで2MSBを上位バイト2LSBと… そもそも10ビット・12ビットが多い理由ってさ… でビット数を増やしたところで「分解能」と「精度」は違う話で… それとも大晦日ってことで乗っからないおれがバカでいいの?
この勘違いする人って大晦日にかぎらずなんか多いな。 脳内シミュでもその方法で話が簡単になったりしないことは すぐわかると思うがどうよ。
picは裾野が広いからな。 小学生、幼稚園生が居るのだから仕方が無い。
>>428 これ読んだらそう思うよな…
オペアンプの手前の回路をどうしといてってAGNDを…とか省略してる
擬似的にならそう出来るだろ?って事なんだが
おまえら真面目過ぎだろ…
独立って書いたのが悪かったのか
バカにされるだろうなーと思いつつ、こうすればって意見も期待してた。
それがPICスレだと思う
そんな事より、おまえらあけおめ〜
431 :
【大吉】 :2011/01/01(土) 02:34:55 ID:Z+XoKiSQ
あけおめ〜
あけましておめでとうございます 今年はこのレベルの低いスレを高くする所存でございます そこらへんよろしくね 簡単な質問だけレスする馬鹿は死んで下さい つり針↓
J
>>427 単純に並列にしても分解能は上がらない。
独立だとしてもせいぜい√に比例するだけ。 つまり4個の独立入力で1bit精度が上がる程度
分解能を上げるなら、4入力使うより、ひとつの入力ポートにノイズを入れてサンプルレートを上げて
時間軸上で平均を取る方がいい。
たとえば12bitADCで16bit精度とするには 6bit精度を上げるためにノイズを入れた上で
2^6^2=4096点の平均を取ればいい。
ノイズの代わりに制御された三角波なら2乗の必要がないが、実現は困難だ
435 :
774ワット発電中さん :2011/01/03(月) 23:10:24 ID:PwrYiTcw
自分で作った時計が動かなくなったので 久しぶりにテスター使おうしたら使い方忘れた 電圧計が並列 電流計が直列 抵抗計はどうだっけ?
437 :
774ワット発電中さん :2011/01/04(火) 07:17:49 ID:VMUZB3Dp
誰か教えて頂戴、PIC18F14K50のECCPのハーフブリッジモードを使って相補のPWM信号を作ってるんだが デッドタイムがなぜか逆になってしまう・・・ 具体的に言うと、片方のポートが確実にOFFしてから設定したデッドタイム経過後に もう片方のポートがONするようにデッドタイムが挿入されるはずなんだが この動作がさかさまになってしまうんだよ。 最初PIC16F886で作ったんだが、遅いんで18F14K50に移植してるんだが なぜか16F886の場合と逆になってしまう。 データシート見てるんだけど、それらしい事が書いてなさげだし 誰か経験ある人教えてください。
439 :
774ワット発電中さん :2011/01/04(火) 07:22:55 ID:VMUZB3Dp
>>438 レスありがと
PWM1CONの0から6Bitでデッドタイムを設定するようになってるらしいんだが
それ以外何にもないしなぁ
値変えるとデッドタイムは変化するんだけど、上下アームが短絡する側に動くんだよw
負のデッドタイム?
440 :
774ワット発電中さん :2011/01/04(火) 07:29:50 ID:VMUZB3Dp
すいません、CCP1CON の設定が違ってましたw 2つのポートが共に負論理になってました・・・ 以前作った16F886用のが、出力ポートがシンクだったんですが いまブレッドボードで組んでたのがただ単にポートのL/Hをシンクロで見てたんで 論理を反対にしないと駄目なんですね CCP1CON = 0b10111100; にしたら直りました・・・ すいません。
441 :
774ワット発電中さん :2011/01/04(火) 08:10:23 ID:CY3X1whM
よかったね
PICKIT2でPICと接続して、PCでpickit2プログラム(アプリケーション)のイレースを行えば 消去できるよ。
>>109 商を使うやりかたは、計算に時間とられるからシフト演算子を使って、
量子処理した方がはやい。
てか、なんで1023回ループをつかうのか
>>115 Microchip社の公式で携帯との連動を扱っていたような・・・
ごめん正確じゃない。
亀杉ないか?
まあ、いいんじゃない? 検索して辿り着く人もいるだろうし。 俺なら、ADCの値はそんな突然変わるわけじゃないから 一度計算した値を保存しておいて、それからいくら変化したかで処理させるな 一回のループで 10bitの値同士を比較して変化があれば1だけ上下させるだけ
赤外線カメラの映る距離を長くしたいので 近赤外線LEDの高出力なやつを探してるんだけど どれぐらいが個人で買える最高レベルなの??
PICとなにか関連あるのかい?
THX
451 :
774ワット発電中さん :2011/01/08(土) 21:35:15 ID:ufAPFzGI
お尋ねします。 PIC BASIC Proでタイマーもどきを作るんですが、 DIPSWの値の処理の仕方を教えていただけないでしょうか。 SW var byte TRISA = %11111111 SW.0 = PORTA.0 SW.1 = PORTA.1 SW.2 = PORTA.2 でSWに例えば010が代入された場合、これは2進数ですよね? これを10進数で扱いたいのですが、方法を教えてください。 (プログラムはあっているのかな)
TRISA = 255
あ、違った まあ進数とか見た目なんてどうでもいいんだよ
454 :
774ワット発電中さん :2011/01/08(土) 22:03:10 ID:ufAPFzGI
PAUSE SW なんて書いた場合、 この場合、2ミリ秒待つのか10ミリ秒待っちゃうのか・・・ #2ミリ秒待ってほしいのです(実際は適当に処理して2分ですが)
インバータの6本のpwmの機能あるpicってあるの
>>455 沢山あるだろ
いちいち調べ方を教えなければいけないのか?
ねぇ、馬鹿なの?
ググレ、カス
>>454 2進数で010ミリ秒待つ。つまり2ミリ秒。
ビットの意味わかる?
二進数の一桁だよ。
そこから考えればおのずと答えは出ると思うが。
僕等の明日の 光の先の 瞳の奥の 大空の下の 夢の扉の 輝きの 涙の力の 心のカギの 永遠の 自由の 果ての 約束の 手の油 PIC日和
名塚佳織はイイ
手の油ってなんかやだ
ウンコ
チンポ
マンコ
467 :
774ワット発電中さん :2011/01/10(月) 01:13:05 ID:SbTW38KD
>453,458 ありがとうございます。 ・ビットは2進数の1けたで ・2進数で010ミリ秒=10進数の2ミリ秒 は分かるのですが、答えが出ませんでした。 半田ごてが職場なので、やりながら試せずすみません。 例えばローターリーディップで2にあわせると、 実際の値は0と0と1と0ですよね。 これを読み取ったときの変数SWの値は 0010 になるのは合っているでしょうか。 この変数SWでPAUSEをかけると 読んだ値は2進数なのに、変数で%なんかは書けないから そのまま10進数で10ミリ秒待つ処理がされてしまうのかな・・・と 考えたのですが。 まさか、%SWとかの表記が有りなのでしょうか。
>>466 頼む、} だけで1行使うのはやめてくれ。判読性が悪いから。
void main(){
if(xxxx) { xxx <= yyy; } // コメントで1行使わずに、ここに書く。
else { aaa <= bbb; }
return;
}
ワロタwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
470 :
774ワット発電中さん :2011/01/10(月) 01:30:09 ID:iZDiGWM8
どっちかっていうと468のelseのインデントのほうが特殊だ。
>>467 マイコンの中では、常に0と1でしか記憶、格納されていない。
例えば、
unsigned char SW; // SWという格納場所を用意。これは8bitである。
unsigned char HOGE; // HOGEという格納場所を用意。これも8bitである。
SW = DIP_SW; // たとえDIP_SWの値が4bitで 0010だとしても、変数SWには、
// 00000010と8bitで記憶される。DIP SWの値は4bitなので、
// 上側の4bitは不要だが、8bit単位でしか扱ってくれない。
HOGE = 2; // 左の場合、変数HOGEの中身は2になる(と人間はそう考える)。でもマイコンの中では
// 2とは記憶されずに、00000010と記憶される。
// プログラム上では、人間の都合で、いろいろな表現ができるように工夫されている。
// 00000010なんて、書きにくいし、間違いやすいし、読みにくいので、
// プログラム上で 2 と書いても中身は、00000010に記憶される。
HOGE = 0x02; // 左のように、16進数で2を書いても、中身は00000010になる。
HOGE = 0b00000010; // 左のように、2進数で2を書いても、中身は00000010になる。
// 人間がどのように書いても、コンパイラーが00000010と変換して考えてくれるわけだ。
HOGE = 0b0010; // また左のように4bitしか必要ないし、もったいないから4bitでいいよ、と思っても
// それは人間の都合の話であり、マイコン内部は8bit単位でしか処理できない(そのようにハードが出来ている)ので、
// 00000010と記憶される。16bitで確保した変数だとさらに無駄に長くて、
// 0000000000000010と記憶される。
// マイコンは、8bit、16bit、32bitなど、決まった長さしか扱えない。
472 :
774ワット発電中さん :2011/01/10(月) 01:53:10 ID:iZDiGWM8
・マイコンでの数値表現は普通いつでもどこでも2進数で、 10進数という表現は人間が読み書きやすいようにソースコードの中にあるだけだ ・マイコンが変換処理とかをせずに直接読んでいるということはそれが2進数だということだ ・それを変換処理とかをせずに直接利用しているということは2進数とみなしているということだ
>>467 >読んだ値は2進数なのに、変数で%なんかは書けないから
>そのまま10進数で10ミリ秒待つ処理がされてしまうのかな・・・と
デフォルト(暗黙)では、コンパイラは 10と書かれているところに出会うと、
10進数だと思ってくれる。
逆にコンパイラに「2進数に思って欲しい」ところでは、0b00000010 などと、
頭に記号を付けて その数字の正体をコンパイラーに教える。
2進数 0b00000010 (CCSコンパイラーの場合)
10進数 2 (デフォルトは何もつけない)
16進数 0x02 (0xをつけると、16進数だと思ってくれる)
CCS-Cで、2ms待つときの書き方
delay_ms(2); // 10進数で 2 ms
delay_ms(0b00000010); // 2進数で 2 ms
delay_ms(0x02); // 16進数で 2 ms
DIP SWを判定するif文の例
if( DIP_SW == 2 ){ // DIPSWの値が、10進数の2なら
if( DIP_SW == 0b00000010 ){ // DIPSWの値が、2進数の2なら
if( DIP_SW == 0x02 ){ // DIPSWの値が、16進数の2なら
どのように書いても、コンパイラーが00000010に変換して処理してくれる。
DIP SWやポートのDDR設定の場合などは、イメージに合わせて0b00000010のほうが
圧倒的に見やすい。0xCEなど、16進数で書くと、指を折ってビット「模様」を考えないといけない。
HEX-DECのビットパターンなんてすぐ覚えられるよ。 覚えるとBINで表記なんてめんどくさくなる。
そうですか、これは失礼。 0 → 0000 これは簡単 1 → 0001 これも簡単 2 → 0010 3 → 0011 4 → 0100 右から、1, 2, 4 なので4 5 → 0101 4 + 1 で 5 6 → 0110 7(111)より1つ下なので、110 7 → 0111 これは簡単 8 → 1000 これも特徴的、簡単 9 → 1001 8 + 1 で、9 a → 1010 覚えてるのですぐわかる b → 1011 10 + 1 = 1011 c → 1100 覚えてる d → 1101 cの次だ e → 1110 fの1つ手前 f → 1111 文句なしに覚えてる
なんかのコピペ?
if ( ) { なにか; } else { なにか; } のスタイルが好きだな } else { にしないのがポイント
>>468 } だけで1行使った方が{}の対応がはっきりして読みやすいと思うけど。
こっちで書いてる void func() { if() { // なになにの場合はなにをなにする xxxxx; } else { // ぺけぺけの場合はぺけをぺけする xxxxx; } } お客から渡されたソースが読みやすかったのでこっちに変えた。 ・{の次にコメントつけられる ・1行単位でコメントアウトできる。 ・あとからデバッグ文を追加するのが容易
> a → 1010 覚えてるのですぐわかる > c → 1100 覚えてる 何か意味あるのかな。 俺もAとCは最初に覚えたわ。
その数字と、その各bitを反転した数字と、15 との3者間で お互いに関係があることを発見した時は、ちょっと震えた。 その数字 + その数字のbit反転の数字 = 15 1100(c) + 0011(3) = 1111(15)
おおおおおおおおおおお なんか引… よくわかんけどさ なんかになりそうだよね!!!
普通に補数だろ
1の補数だっけ。
おまいら親切だな だがここはコンピュータ一般の授業や講義じゃないはずだぞ?www ま、こういう基礎が解かってないと先々困るのは事実 2・10・16進数とおまけで8進数までは理解して起いて問題ないな 言語別に記述違いがあるが理屈さえわかっていれば「書き方」なんてのは瑣末だ。
今年もPICスレは難しい…
プログラマ板のほうから来ました。 PICプログラマを作ろうと思います。
スレの中には魔物がすむの 頼れる仲間は皆目が死んでる ソースにかけた青春でも 皆目が死んでる 私とあなたは友達じゃないけど 私の友達とあなたは友達 大体そんな感じ PIC日和 ICDの上は男の世界 頼れる親方はどこか宙を見てる ASMはそんなに好きじゃないでも 食べる時は食べる 私の根暗は生まれつきだけど あなたのそれは二十歳過ぎてから 大体そんな感じ PIC日和
PICが流行ってるって聞きました。 何年か前に。
>>481 各ビットで a OR ( NOT a ) とすれば結果は全ビット 1になるだけ…
Writer509が流行ったときは頑張った、12V電池を2つ使ったりして。
492 :
490 :2011/01/10(月) 13:05:47 ID:Tw+9PNka
× 各ビットで a OR ( NOT a ) とすれば結果は全ビット 1になるだけ… ○ 各ビットで a + ( NOT a ) とすれば結果は全ビット 1になるだけ… この場合に限って結果は同じだけど。かっこわるorz
>>492 ですね。
ただ、その反転bitの数を加算すると、引き算になると聞いてやってみたけど、
正しい答えにならない。
12 - 4 = 8
12 + not4 = 1101 + 1011 = 0111 ← 7 になるやん。 と言うわけです
負数を表現するには1の補数に1を加えた数を使うんだよ。 これを2の補数と言う。 12 - 4 = 12 + ( -4 ) = 12 + ( not 4 + 1 ) = 1100 + 1011 + 1 = 1000 = 8 とにかくPICプログラマを作ろうと思ったんだ。
いやいや オーバーフローしとるがな
>>494 それは桁を増やすか別の数値で書くべきだったね。
1011が負の数なら、通常 1100も・・・
こうかな。
12 - 4 = 12 + ( -4 ) = 12 + ( not 4 + 1 )
= 01100 + 11011 + 1 = (1)01000
= 8
>>491 自分はhpのノート用アダプタが18.5V出力だったのでそれを使いました。
最初だから失敗してもいいようにとPIC12F509を選んでしまったのが運のつきです。
トドメに
>>8 のリストで×ついてるじゃん
ってことで始まる前から終わっていました。
>>480 A=1010は、1と0が交互に並ぶから良く使う。
テストパターンとかで0xAAとか0x55を良く使うからね。
C=1100はなぜか覚えてるなぁ…
C=12=8+4=1100がパッと思い浮かぶ。
テンプレのリスト更新したんで、ちょっと割り込ませてもらうよ 16Fは価格の確認だけ、18Fを復活させて24FとdsPICを追加
501 :
774ワット発電中さん :2011/01/10(月) 22:51:53 ID:Dp4M2dlr
秋月のPIC16シリーズDIP品限定ピン数別評価(先頭のvは値下げ,-は維持)'2011/01/05更新版 -40ピンは-◎16F887 \200 -28ピンは◎16F886 \190 ADC有,eCCP/CCP有,mSSP有,USART有,8Kw,内蔵31K-8MHzとフルサポート 新しめのチップで内蔵モジュールも多,大きささえ許せば20,18ピンよりこちらを 20ピンはF690のバリエーションモデル多.価格差が小さいからF690か,OPアンプのF785.スキルあるなら18F14K50も検討しては? -◎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 \250 機能無,1Kw,いまさら不要 10個以上なら1個¥220 -△16F648A \180 CCP有,USART有,4Kw,内蔵4MHz,同じ値下組のF819と比較するとキツイ -△16F628A \160 F648Aの2Kw版,売りが値段だけだと厳しいかな -×16F627A \160 F648Aの1Kw版,売りの低コストで628Aと並ばれると・・・ -◎16F88 \200 ADC有,CCP有,SSP有,USART有,4Kw,内蔵31K-8MHzとGood -○16F87 \200 F88にADC無い,下のF819と比較するとADCで負けフラッシュ4Kwで勝ちダケド -○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 -△16F630 \110 676のADC無 8ピンはF683だと思っていたがF615も\100にしてはなかなか良い -◎12F683 \150 ADC有,CCP有,2Kw,内蔵31K-8MHz,8ピンとしては多機能 -○12F675 \120/130 ADC有,1Kw,内蔵4MHz ,環境によってはE/P版 (10個以上¥110) -○12F629 \80 675のADC無(機能無しってこと),この値段ならチョット使うに便利 -△12F635 \120/130 機能無し,1Kw,内蔵31K-8MHz,環境によってはE/P版 -◎12F615 \100 ADC有,eCCP有,1kw,内蔵4Mor8MHz,EEPROM無し -×12F609 \100 F615からADC,eCCP機能省かれてる -◯12F510 \60 ADC有(8bit),1kw,内蔵4Mor8MHz,EEPROM無し -×12F509 \60 機能無し,1Kw,,内蔵4M,EEPROM無し (参考)機能無,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でも安くしたいなら、どうぞ ×ソースを変更できない等の理由がないなら、選択する必要なし 自分で、プラグラムもハードも作れる人のためのリスト。 そもそも、教科書にのってるのとか他の方の作品とかを作るだけなら 指名買いするしかないのだから お勧め度は意味がない。
秋月のPIC18FシリーズDIP品限定 2011/01/05更新 ○18,20pinはこれしかない。14K50は3.2V LDO搭載、しかも電圧リファレンス内蔵(1.024/2.048/4.096V)でADCの値を楽々直読って凄ぇ・・・ 価格 pin パッケージ FLASH SRAM EEPROM 10bit ADC 内蔵CLK MaxCLK 動作電圧 USB 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
PIC24シリーズ(DIPのみ) 2011/01/05 _ 価格 pin Flash RAM CPU speed 内蔵CLK 動作電圧 ADC CCP*1 UART/SPI/I2C PIC24FJ64GA002-I/SP \350 | 28 | 64KB | 8KB | 16MIPS | 8MHz/32kHz | 2-3.6V | 10×10bit | 5/5/5 | 2/2/2 | PIC24HJ12GP202-I/SP \400 | 28 | 12KB | 1KB | 40MIPS | 7.37MHz/512kHz | 3-3.6V | 10×12bit | 4/2/2 | 1/1/1 | dsPIC(DIPのみ) DSPIC33FJ32GP202-I/SP \450 | 28 | 32KB | 2KB | 40MIPS | 7.37MHz/512kHz | 3-3.6V | 10x12-bit | 4/2/2 | 1/1/1 | DSPIC30F3012-30I/P \500 | 18 | 24KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 8x12-bit | 2/2/2 | 1/1/1 | DSPIC30F2012-30I/SP \500 | 28 | 12KB | 1KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 10x12-bit | 2/2/2 | 1/1/1 | DSPIC30F4013-30I/P \650 | 40 | 48KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 13x12-bit | 4/4/4 | 2/1/1 | DSPIC30F2020-30I/SP \700 | 28 | 12KB | 512B| 30MIPS | | 3-5.5V | 8x10-bit | 2/2/2 | 1/1/1 | DSPIC30F3014-30I/P \750 | 40 | 24KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 13x12-bit | 2/2/2 | 2/1/1 | DSPIC30F4012-30I/SP \750 | 28 | 48KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 6x10-bit | 4/2/2 | 1/1/1 | *1 Capture/Compare/PWM
ずれたのでもう一度 PIC24シリーズ(DIPのみ) 2011/01/05 価格 pin Flash RAM CPU speed 内蔵CLK 動作電圧 ADC CCP*1 UART/SPI/I2C PIC24FJ64GA002-I/SP \350 | 28 | 64KB | 8KB | 16MIPS | 8MHz/32kHz | 2-3.6V | 10×10bit | 5/5/5 | 2/ 2/ 2 | PIC24HJ12GP202-I/SP \400 | 28 | 12KB | 1KB | 40MIPS | 7.37MHz/512kHz | 3-3.6V | 10×12bit | 4/2/2 | 1/ 1/ 1 | dsPIC(DIPのみ) DSPIC33FJ32GP202-I/SP \450 | 28 | 32KB | 2KB | 40MIPS | 7.37MHz/512kHz | 3-3.6V | 10x12-bit | 4/2/2 | 1/ 1/ 1 | DSPIC30F3012-30I/P \500 | 18 | 24KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 8x12-bit | 2/2/2 | 1/ 1/ 1 | DSPIC30F2012-30I/SP \500 | 28 | 12KB | 1KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 10x12-bit | 2/2/2 | 1/ 1/ 1 | DSPIC30F4013-30I/P \650 | 40 | 48KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 13x12-bit | 4/4/4 | 2/ 1/ 1 | DSPIC30F2020-30I/SP \700 | 28 | 12KB | 512B| 30MIPS | | 3-5.5V | 8x10-bit | 2/2/2 | 1/ 1/ 1 | DSPIC30F3014-30I/P \750 | 40 | 24KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 13x12-bit | 2/2/2 | 2/ 1/ 1 | DSPIC30F4012-30I/SP \750 | 28 | 48KB | 2KB | 30MIPS | 7.37MHz/512kHz | 2.5-5.5V | 6x10-bit | 4/2/2 | 1/ 1/ 1 | *1 Capture/Compare/PWM
505 :
500 :2011/01/10(月) 23:27:52 ID:Dp4M2dlr
何度もごめんなさい。俺はこのリストが便利だから勝手に保守してるだけで 16Fと18Fのリストを作った人じゃない。2人の仕事を横取りするする気はないのでその辺を勘違いしないでね。
8pinは、CCPの有無だけで60円と100円の差があるなら、 510も十分に有力な選択肢だよな っていうか、510大好き 使いにくいところが特に
Pickit2で16F88を書き込む際に何とかしてMCLRをポートとして使うことは出来ないのですか
「書き込む際」に「ポート」ってどういう意味なんだろうね?
>>505 便利なリストの更新ありがと
500氏と最初にリスト作ってくれた人に感謝!
>>510 100円台にしては結構いろいろできそうですね。
>510 PIC16F1938凄いな。28ピンはこれ一択になるんじゃないだろうか。
514 :
774ワット発電中さん :2011/01/11(火) 21:17:28 ID:C1GMlldr
フラットパッケージも来てほしいな
>>511 チャイナっぽい翻訳エンジンだなあ、っと思って最終ページみて納得。
落ちたもんだ Japan。
>501 このリストの元を書いた者だけど、実はこのリスト最初にPIC16シリーズと書いてるけど 実際は14bit幅のインストラクションセットを持つ12F,16Fを対象にしてるんだ。 だから12bit幅の16F57等を別枠にしている。そういう意味だと12F510,509は別枠なり 12bit幅のことわりを入れてもらった方が良いかも。割込み使えないとか色々あるし まあ16F193xシリーズ登場で不要になりそうだけどw
193xすげー なんだこれ
ROMテーブルアクセスはやりやすくなったけど、 ブツ切れページで16kBもROM使いたくない。 RAMもバンク多すぎwwww 正直スタートアップのテンプレートつくり直すのメンドクセーから 887でいいや。 それ以上の規模なら18かH8か78K0R
519 :
774ワット発電中さん :2011/01/12(水) 00:10:35 ID:O+ID/2xc
451です。 2進数か10進数の件、ちょっと手こずりましたが解決しました。 遅くなりましたが、ありがとうございます。
何がすごいのか誰か説明してくれんか
説明: PIC16F1938は凄いのさ! だって、プログラムメモリ何倍よ!RAM何倍よ!ん? 凄いだろ! しかも最高周波数32MHzだぜ! 凄さが分からないのか?馬鹿か?ん?
522 :
774ワット発電中さん :2011/01/12(水) 02:01:10 ID:yHrXUNDq
でもって、clockは 1/4 ですか?
>>522 ほんっとに馬鹿だなぁ〜
全然凄さわかってない
クロックが1/4でも凄いんだよ!!分かる?ん?
あとRAMが沢山あるんだよ!!分かる?理解できる?
凄い!凄い!凄い!凄い!凄い!凄すぎるんだよ!分かる?
いや、150円なのが凄いんじゃないか?
あと、日本語マニュアルがあるから入門用にいいとか。
今までのPICが置き換わるかもしれないのに 全然凄さが理解出来ないんだね
”電子工作のためのPIC16F活用ガイドブック”の7−8 USARTの使い方を参考に PIC16F689でPCのハイパーターミナルを使用し通信を行う実験をしてます。 PICからはハイパーターミナルで正常に受信できましたが、PCのキーを押した時のデータがPICで受信できていない。(PICのソフトは上記ガイドブックのコピー) お手数でも、対処方法のヒントだけでもアドバイス願いたく投稿しました。
やってみました、動きません、何とかしてください このパターンばっかりだなぁ。 「参考に」とか言うから「どう’参考’にして考えたの?」と聞くと 単純にコピペしただけだったり。 自分で調べようと思わないの?と言うと「どこを調べたら良いのか 分かりません。教えてください」ときてみたり。 そんなに自分の脳味噌使うのが嫌なら、こんな方面からとっとと 足洗って、脳味噌使わなくて良いような方向に行けば良いのにと 思う今日この頃。
開発ほど脳味噌使わないと出来ない仕事ないのにな 創造する事の本質、閃きは脳でしか出来ないのに
530 :
774ワット発電中さん :2011/01/12(水) 09:23:31 ID:b5Ac2pvh
しかしなあ、最近思うんだが、適切に質問するのも、知識と馴れが必要なんじゃあるまいか。 自分が学んでいた頃を思い出すとますますそう感じる。 事実を全部かけと言われても、初学者には何が事実なのか把握できない。 まあ、参考書があるなら、穴が開くほど読み返してから、それでもわからない部分を質問すべきなんだが。 そうでないと、解決しても「わかった気になった」だけで、身に付かないしな。 いまの若い人は情報が溢れすぎててそういう訓練をすっ飛ばしてきてる気がする。
531 :
774ワット発電中さん :2011/01/12(水) 09:57:36 ID:yHrXUNDq
>いまの若い人は情報が溢れすぎててそういう訓練をすっ飛ばしてきてる気がする。 1票
何十年と積み重ねてきたベテランに追いつけるわけもなく、幼少のころから地道に続けてきた秀才に敵うはずもなく、 それでもちょっとやそっとで手軽に俺すげえしたいという素人の心につけこむ商売が氾濫してるおかげで、 ちょっと躓いたり独自の工夫を加えようとすると途端に何もできなくなってしまうのだ。
つ もう一票
>>527 >お手数でも、対処方法のヒントだけでもアドバイス願いたく
>>527 は、回答者に こんなことを期待してるのかな?
回答者に期待されている内容は、
1) ”電子工作のためのPIC16F活用ガイドブック”を買ってきて、
2) 7−8 USARTの使い方を読んで、
3) PICが受信できない原因を、
>>527 の素晴らしい文章から想像して、
4)
>>527 への回答文章を書いて、
5) ココに書き込む
4), 5) くらいはできるけど、1)〜3)はできないなぁ。
>>527 何の結果から「PCのキーを押した時のデータがPICで受信できていない」と判断したのか、
教えて欲しいです。そうすれば、ヒントぐらいはお伝えできると思います。
(因みに、その本は持っていません)
>>530-532 つまり「手を抜くな」って事だ
技術でも知識でも経験を積むに「試す」「失敗(+成功)する」「疑問に思う」の繰り返しがないやつは進歩しない
>>535 書き方がわるく申し訳ありません。
PCのキーを押した時の波形をPICの12ピン(RX)にシンクロのプローブを
あてON/OFFしている事を確認しました。
PICの12ピンで受信した信号を取り込み、その信号が改行コードに
該当するかPIC側のソフトで判断し、該当するコードであれば”OK”と
PC側に送信したのですが、どうも、PIC側のソフトがおかしいのか
”OK”がPCに表示されません。
マイクロソフトのHPを見ても、良くわからなくなり投稿しました。
>>537 問題を切り分けましょう
>>その信号が改行コードに該当するかPIC側のソフトで判断し
判断出来ているか、送信出来ているかを切り分ける
そこでPICからPCに送信せずに、取り合えず空いてるポートを叩いてみてオシロで確認しては?
ふむ、デバッグ技法の話なのか?
540 :
774ワット発電中さん :2011/01/12(水) 13:02:46 ID:5aUECndO
誰かアドバイスお願いします。 PICとRTCユニットで時計を作ったのですがバックアップに困っています。 今はスーパーキャパでバックアップしてますがこれだと1時間程度で消えそうです。 (実測はしてないけど) そこででボタン電池バックアップをしたいのですが5vで動作している状態から 停電になった瞬間にボタン電池(3V)からRTCに電源供給するのはどうすればいいでしょうか?
>540 電池→ダイオード→RTC(Vcc) でいいんじゃね?
5Vの電源にも逆流防止のダイオード要るよね
>>540 RTCの消費電流はいくつ?
スーパーキャパの容量はいくつ?
バックアップ中には、電池はRTCにだけ流れるように工夫してますか?
まさか「バックアップ中は、PICも動かしているんです」とかないよね?
544 :
774ワット発電中さん :2011/01/12(水) 14:37:04 ID:5aUECndO
>>541 >>542 その方式だと3vはずっと流れっぱなしにならないのかな?
5vがかかってるから止まるとかはないんじゃ?止まるのかな?
>544 通常5Vの電圧がかかっているところに3Vの電池を繋げると、電池側に逆流(充電 する方向)はわかります? だから逆流防止用にダイオードを入れたら、と。 さらに電流は電圧の高い方から低い方にしか流れないですから、5V側が停電する までは電池からの放電は無いです。 厳密にはダイオードにも逆方向の漏れ電流があるのですがまあ無視できるレベル かと。
546 :
774ワット発電中さん :2011/01/12(水) 18:37:45 ID:aN08kMUI
はじめまして、軽石こと近藤豊広といいます。 カラオケのお箱はチグハグ馬っこです。(^。^) まだまだ初心者ですが、よろしくお願いいたましす。 初心者なのですが、ICD3買いました。 初心者でも、買うだけはできます。(^。^)
548 :
774ワット発電中さん :2011/01/12(水) 19:06:57 ID:aN08kMUI
>>545 そうか〜、半導体だもんな〜
ホールがどうしたこうしたで流れないよ!!
ありがとうです。
PIC24FJ64GB002ってまだ流行らない? 日本語のマニュアルがないとCONFIGが意味わかんないw
>>550 MP3プレーヤーの作品例、まねして作った。それぐらい。
>>551 すごい。
UARTでPCと通信するだけで、いっぱいいっぱい。いったい何Mhzで動いているのかすらわからんw
USB接続まで、先が思いやられる。
PICKIT2で 18F14K50 が使えてる方居ますか?
18F2550なら使えた
2550はこちらでも使えたのですが、 14K50ではDebuggerでRunさせるとプログラムした後、 PICKit2 was unable to establish a validVDD on the target (Attempt 3.30V - Read 0.0V) ってエラーになっちゃいます。 ひょっとしてPIC14K50はPICKIT2ではBeta Supportなのが原因ですか? PICKIT3を買えば解決?
電源入ったまま繋いで、書き込む時に電源切ったりするとそんなエラー出るな
>>553 14K50はデバッグボード無いとデバッグできなかったはず
>>511 のリンク先見るとPICkit2単独で14K50デバグ出来る見たいね
VDDの電圧が変みたいだから、電源を見直してみたら上手くいくかも
なんか電圧書いてね? 英語わかんなかったら、ネットの自動翻訳サイトに叩き込めばいいと思うよ? エキサイト翻訳とか色々あるし。 (エキサイト翻訳ってなんか翻訳内容が過激そうでアレ。) 日本語としておかしいが意味は汲み取れるはず。
専ブラ更新されてなかったorz
>559 どこを見たらそうなるんだろう? 息をするように嘘を吐くのはやめろ。
>>553 PIC18F14K50はデバッグ機能が内蔵されてないので、DIP限定だけどデバッグ専用ICと差し替える必要がある。
製品パッケージはいくつかあるみたいだけど、DM164127 (RS:667-7965) が入手し易かった。
秋月の新シリーズのPIC16F1xxx安いのね。内蔵モジュールも豊富(5bit-DAC等)だし LATが追加されたり、16bitのFSRでプログラム領域や飛び地のRAMを連続アクセス等 多少改良されてる。Wレジスタのみなのは相変わらずでさらにbankはすごい事に なってるけど(笑) 新規で作るなら旧シリーズは8pin以外必要ないかも [40pin] ◎16F1939 \190 16kw 1kRAM EEP256 I/O36 16F887の置き換えに ○16F1937 \170 8kw 512RAM EEP256 I/O36 フラッシュ&RAM半分で\20 [28pin] ◎16F1938 \150 16kw 1kRAM EEP256 I/O25 16F886の置き換えに ×16F1936 \150 8kw 512RAM EEP256 I/O25 ナゼニ同じ値段? ×16F1933 \150 4kw 256RAM EEP256 I/O25 サラニ ナゼニ同じ値段? [18pin] ◎16F1827 \120 4kw 384RAM EEP256 I/O16 16F88の置き換えに [14pin] ◎16F1823 \100 2kw 128RAM EEP256 I/O12 16F688ヨリ フラッシュ&RAM半分
HI-TECHのCONFIGパラメータ文字列全面改定うざす
16F1939のINTCONレジスタのIOCIFって全ポートでの変化割り込みが可能ってことかな? よくわかりません><
>>566 データシート"Interrupt-On-Change"に書いてあるだろ
アホ顔してこんな場所で聞く時間があったら、データシート調べたまえ
>< ←なんだ?これ?いい歳してこんなん使って、恥ずかしくないのかね?
質問内容といい表現方法といい、馬鹿100%丸出し
ネタにマジレス
マルツも置くのだ
しかし、なんというか・・・ 開発通し番号を型番にしてるのかよって感じでw
PIC24のサンプルライブラリプログラム・・・むじーよw ライブラリ化したものと、 動作に必要最低限な設定と手順がわかりやすくなっている、むちゃくちゃシンプルなものの両方用意してよ・・・w
>>571 >むじーよw
って何? 難しくないよ、の略ですか? 日本語使ってください。
新しいpicは簡単なのでもやたら長くなるからな
>>574 >>567 ≠
>>572 だよ。
>>なんでこんなに必死なんだ?
必死か?
ココ見た全国1億3000万人の人に、
変な日本語を使って欲しくない、ただそれが言いたいだけです。
576 :
774ワット発電中さん :2011/01/17(月) 02:20:37 ID:Kv7QfnJL
マジ同意。変な日本語使うやつうぜえよな。
577 :
774ワット発電中さん :2011/01/17(月) 05:19:07 ID:ptp155Ky
2ちゃんでは変な日本語や誤字を使うのがカッコイイ といまだに信じてる奴www
言葉は変化する。それを受け入れられない時点で愚か。 変な日本語なんてもんは、変化に対応できなくなった者が使う方便にすぎん。 技術と同じ。基本は大きく変化することは少ないが、応用部分は多様に変化する。
変化は緩やかでないと誰もが追随出来ない点を抜きに語ってもはじまらん
>>577 の文末「www」ですら文字表現としての日本語から外れている
だがここ2ちゃんねるでは草等と表現されるほどポピュラーな存在
万民受けすれば言葉の変容は多様であり、無限に進化し続ける
でも「むじーよ」はないw
むずいよってのは聞いたことあるが死語か?
其の文章の不自然さは自演に拠る後ろめたさから生じる物であらうか
>>576 は、「マジ」「うぜえ」はどうなのとツッコミを待っているのかな?
むずい = むず・・い = むずかいしのか、むずかしくないのか どっちだ? きもい = きも・・い = きもちいいのか、きもちよくないのか どっちだ? きしょい = きしょく・・い = きもちいいのか、きもちよくないのか どっちだ? どちらにも受け取れる変な表現、というか規則性のない省略は 受け入れられないな
>>582 その3つは、省略された語というよりは俗語・方言だね。
そんなものに規則性を求めるのは無駄。
それより…句読点は打たないの?
1,狭い社会で、新しい単語が生まれる 2,その単語を使う事で仲間意識が生まれ、単語を知らない人より優越感を味わう 3,その単語が広まった段階になると、意識しないで使う 4,他人がその単語を使う事に、妙な感覚を覚える 5,その単語を使う事が馬鹿らしく思えてくる 6,その単語を使う人間が馬鹿だと思いはじめ、時に罵倒する 7,死語となる チョベリバ博士より
どうでもいいがそろそろPICの話しようずw
586 :
774ワット発電中さん :2011/01/17(月) 14:29:21 ID:Lw/cHIKM
ふつうの言葉で会話してこそ、議論の意義も生まれてくる。 こ の ス レ だ け で も、 変 な 省 略 語 を 使 う の は や め よ う。
うぜえきめえ
思い切り力んで、スレって言ってる時点で相当なあほ。
力んで言ってるやつも、力んでそれに反応してるやつも、どっちもどっちな気がするが。
そろそろおまいらの苦手な女の話しようぜ?www
591 :
natu :2011/01/17(月) 22:10:56 ID:1pVQdiLx
PIC16F千のFSRを使ったRAMのリニアアドレスは、 HITECH-Cがサポートしているのね!アセンブラでないと ダメかと思た。
今日のナンパさんはイケてない! 「お茶しない?」とか石器時代?寝ぼけてんの? さ、誰か気の聞いた言葉かけてよ、期待してまってる〜
女は難しすぎるだろ…
赤いバラの花でもさっと取りだし、目の前で消して見せたらいいんかね?
童貞だけどPICはマスターしてる
RA0に入力された値をAD変換をして,その最大値を保持するプログラムを作りたいと考えています.
そこで,RA0に入力された値をAD変換,今まで入力された最大値よりも大きいか比較
大きかった場合AD変換された値を最大値と置き換える,LEDを光らせる
小さかった場合LEDを消灯させるというものを作りました.
しかし,実際動作させたところ,LEDが点滅するのは最大値を更新した時だけのはずなのに,
明らかに入力が最大値を下回ってる場合でも点滅してしまいます.
以下がソースプログラムとなります.おかしな点を指摘していただけるとありがたいです.
使用PICは16F88,使用言語はアセンブラです.
http://www.dotup.org/uploda/www.dotup.org1368415.txt
で、おいくら?
パクリ元のソースは?
601 :
774ワット発電中さん :2011/01/18(火) 18:01:57 ID:fQ8h5RKi
あと、一発で最大値決めるやり方だと ノイズとかで、MAXに張り付いたりしない?
>>600 素早い返信ありがとうございます.
早速ANSELレジスタについて調べてみたところ,
AD変換の際アナログ入力として使用する所を1にするという事がわかりました.
そこで,初期設定のBANK1内でANSELの0ビット目に1を入れそれ以外に0を入れました.
その状態でPICに書き込み動作を確認したところ,まだ入力が最大値未満でも点滅をしています.
私の理解に間違いやソースコード中に間違いがあればご私的お願いします.
>>601 ノイズによる問題は考慮していませんでした.
しかし現状では最大値以下でも光る理由が分からないので質問させていただいてます.
デバッグするなら、変換結果を全部ポートへ出した方が簡単だろ。 C は、BUF < CMPRMAX の時に、0 になる。 BUF == CMPRMAX でも C は、1 ですよ。
>>603 アドバイスありがとうございました.
AD変換結果をLEDに出力したところ,予想外の出力結果となり
知人の家に走りオシロスコープを借り,波形を測定したところ
入力信号を増幅しすぎていたため,振りきれているということがわかりました.
ご迷惑おかけしました.
シリアルからPCに数値を垂れ流すプログラムを作っとくと、 1ピン使うだけでモニターできる
PICとマイコンって同じ?
>>608 マイコン
うぃきぺ:マイクロコントローラ(microcontroller、MCU、μC)は、コンピュータシステムをひとつの集積回路に組み込んだものである。
H8もAVRも78KもPICも全部マイコン。
今日、初めてPICが壊れた。 それもじみ〜に、port B interruptで入力があるとインタラプトが出続けるという。 5pinだけその症状が出てそれ以外の3pinは正常。 捨てるには忍びないがこれから壊れていく前兆かもとおもうと不安。 皆さんならその機能以外で使い続ける?すてる?
>>610 どうでもいいおもちゃ(LEDチカチカ)とかに使う
何度も消して遊ぶ用途には使えないけど、 普通に実用として何かを作るなら、十分に回避できる
複数のLEDをタイミングよく点滅させ、一部のLEDは点灯しっぱなしにさせるなら やっぱりマイコンで制御した方がいいよな?
>>610 絶対に捨てる。
下手にとっとくと、壊れてることを忘れた頃に再利用して
動かずに悩むことになるぞ。
そもそも、本当にそれ以外のところが壊れて無い保証も
無いじゃないか。
>>610 足を全部切り取ってペンダントヘッドにしてた頃があるあたし
>>616 焼いちゃうと微妙に汚いね
硝酸か塩酸か漬けとくと綺麗に取り出せると聞いた
>>618 パッケージを丸まる溶かすのは大変みたいです。
ダイの一歩手前までドリルで削って薬品を垂らすみたいですが結構な手間ですね。
PIC18F65J50(VDD=3.3V)なんだけど、 5個中1個が出力が中途半端(テスターで1.8Vぐらい)でLEDが点滅しない。 書き込みは正常にできてるみたい。 自分でハンダしたから、静電気かなんかで壊れたんかな?
鉄板で加熱して 発煙硝酸をポトリポロリ
窓付きUV-EPROMはアクセサリにしてもいいんじゃないかな 前に共立で窓付きPICの安売りしてたなぁ…
>>625 そんなくだらない事で必死にレスするなんてww
> 窓付きUV-EPROMはアクセサリにしてもいいんじゃないかな 石英ガラスに金線だから、金はかかってるね。
仕事でやってるわ、、、 レイアウト屋がお遊びで変なマークを回路で作ったりしてるのもある。 それにしてもSMDとか勘弁して欲しい。それのボンディングのど真ん中を要求される。
電話会社の発注だからレイアウトパターンが電話の絵になってたりな
そのレジンに動作可能なCPUやLEDやら閉じこんでも 動作するのかな?
>>630 硬化に加熱が必要だとか、伝導性が高いとかは無さそうだから
いけるんじゃなかろうか。
LEDを封入するのとかはキレイかも。
太陽電池とかの電源まで封入できれば、なお面白いかも。
632 :
NOKTO :2011/01/23(日) 01:14:19 ID:En34cyYm
MPLABはversionが上がるにつれて使いづらくなる。特にver8から起動ものろいし、ソースは消える市でムチャクチャだ。
PICのレジスタが壊れる事ってあるの? 突然特定のポートが使えなくなった
「絶対壊れないの?」と問われたらなんと答えるのだ?
お前はすでに死んでいる?
>>633 USBとか絶縁されていない電源で使ってるとポートは漏れ電流でよく死ぬぞ
どう漏れるのかkwsk
USBのグランドと人体(アース)にテスターあてれば分かる、 特に古いCRTのモニターから回り込んで来る電圧は酷い。
>>636 たしかにUSBポートから電源取ってました
漏れ電流・・・なるほどそういう所ですか
トランスレス系列は気をつけるべし
ラッチアップじゃないの?
ラッチアップは現象であって原因ではない
644 :
774ワット発電中さん :2011/01/23(日) 14:37:23 ID:ugv9GI17
USBのホストモードの動かし方が知りたくてやっています。
CLKDIVbits.PLLEN=1; //96MHzPLL有効化ビットをセットする
USB_Wait(1); //クロックが安定するまで待つ
memset(&BDT,'\0',sizeof(BDT)); //BDTは4bytex4個
U1BDTP1=(unsignedint)(&BDT)
>>8 ;
U1CONbits.HOSTEN=1; //ホストモードの有効化
U1CNFG1=0x0012; //全てのエンドポイントでEVEN/ODDピンポンバッファを有効。
U1OTGCON|=0b00110000; //DPPULDNWおよびDMPULDWNビットをセット。D+およびD-ラインのプルダウン抵抗を有効にする
U1OTGCON&=0b00111111; //DPPULUPおよびDMPULUPビットをクリア。D+およびD-ラインのプルアップ抵抗を無効にする
U1SOF=0x004A; //SOFのカウンタの設定。
U1CONbits.SOFEN=0; //SOFフレームの生成をいったん停止。
U1PWRCbits.USBPWR=1; //USBOTGモジュールを有効にする
IFS5bits.USB1IF=1; //割り込みを開始する
IPC21bits.USB1IP=6; //割り込みを開始する
IEC5bits.USB1IE=1; //割り込みを開始する
U1IEbits.ATTACHIE=1; //デバイス接続割り込みを許可する。
while(1){
;
}
void __attribute__((__interrupt__, no_auto_psv)) _USB1Interrupt( void )
{
printf("U1IE(0x%x) U1IR(0x%x) U1OTGIE(0x%x) U1OTGIR[0x%x)",U1IE,U1IR,U1OTGIE,U1OTGIR);
if(U1IEbits.ATTACHIE && U1IRbits.ATTACHIF){ //USBターゲットを挿した
U1IRbits.ATTACHIF = 1; // USB-ATTACH割り込みを了解した
U1IEbits.ATTACHIE = 0; // USB-ATTACH割り込みをしないようにする
U1IEbits.DETACHIE = 1; // USBターゲットが抜かれたときに割り込みが発生するようにする
}
if(U1OTGIRbits.T1MSECIF){ // 1 ms タイマ ビット
U1OTGIRbits.T1MSECIF = 1;
U1OTGIEbits.T1MSECIE = 0;
}
}
これを実行すると
1回目の割り込みで、以下のように「ATTACHIF」と[T1MSECIF]が検出されます。
INT U1IE(0x40) U1IR(0x0) U1OTGIE(0x0) U1OTGIR[0x40)
1回目の割り込みでATTACHIFに1をセットして割り込みを解除します。
その後、すぐに2回目の割り込みが発生して
2回目の割り込みで、以下のように[T1MSECIF]が検出されます。
INT U1IE(0x1) U1IR(0x60) U1OTGIE(0x0) U1OTGIR[0x40)[T1MSECIF]
その後T1MSECIFに1をセットしても、何度も割り込みが発生して、
INT U1IE(0x1) U1IR(0x60) U1OTGIE(0x0) U1OTGIR[0x40)[T1MSECIF]
になって、この割り込みが終わりません。
なにが悪いかわかるかた教えてください。
PIC24FJ64GB002です。
>>644 PIC初心者さんですか?
IFは割込み発生でセットされるビットフラグなんですけれどねーw
1をセットしたら、強制的に割込みが発生するはずですよ
背伸びしてUSBから始めないほうがいいよ
それでもUSBホストやりたいというなら、
マイクロチップのUSBサンプルから始めなさい
PIC24FJ64GB002でも動きますしUSBホストのサンプルもあります
>>645 一応、サンプルを動かしたあとにMicrochipのマニュアルのUSBのページを見ながら
作ったんです。
一部は、サンプルプログラム内でレジスタにセットする部分をパクってこんな感じに・・・。]
IFに割り込みしたという1がセットされて割り込み関数がコールされる。
割り込みをクリアにするには、再度IFに1をセットすると0にクリアされるって書いてあったんだけど、読み間違い?
だからこの部分も、IFの条件が1が両方立ってないと成立しないわけで、そのあとにIFに1をセットすることで0クリアされて
割り込みを了解したよーんという風に教えてあげる、みたいに説明文は読めたんだけど間違ってる?
if(U1IEbits.ATTACHIE && U1IRbits.ATTACHIF){ //USBターゲットを挿した
U1IRbits.ATTACHIF = 1; // USB-ATTACH割り込みを了解した
以下略
>>644 俺様のUSBホストプログラムには、ATTACHIF = 1なんて記述は何処にもない
いつのサンプル使っているかしれないけれど、
何処のUSBライブラリファイルのそんな記述があるの?
>>644 あぁ、多分ボーリングとインタラプトのサンプルを混合していると思われるな
っていうか、お前そこまで分かってるなら自分で調べろな
ボーリング?w
pollingが言いたかったんだろ?
お!、ずっとボーリングだと思ってたw ポーリングなんだねw恥ずかしい
>>647 U1IR = USB_INTERRUPTなんちゃらってなってるのを、U1IRbitsで書いたの。
USB_INTERRUPTなんちゃらは、#define で 0x40とか書いてたから、U1IRbits.ATTACHIF=1でクリアと解釈した。
0x40ならほかにもビットが立ってたら消えるんだろうけど・・・。
ポーリングとインタラプトってのは・・・すんません勉強してません。
携帯電話とUSBでつないで操作したいんす。だから、どのサンプルみていいのかw とりあえず、いろいろと見て回って、あれこれといじってまわってます・・・。
USBホストの事例はネットでサンプルがちっとも見つからないんだよな USBメモリにログを残す、みたいな機能は便利だろうに
MicrochipのPDFマニュアルでもUSBホストの設定の流れは書いてあるけど 実際、そのとおり書いても動かない。 サンプルプログラムを使って、動作確認をしました。ってページはいっぱいあるんだけど 一つ一つレジスタを設定して動作をやってみようってページはない。 唯一あるのが、USBでのBluetoothドングルを使った通信。でも、あれはプロを感じる・・・。ちょっと素人には・・・。 USBホストって、使い方がわかれば、相当面白いツールになると思うんだけど・・・・。 まぁターゲットのプロトコル調べたりとかで結局ハードルは高いままなんだけど・・・。
USBプロトコルアナライザーのログを見て参考にするといい 作るにしてもアナライザーがないと実装は難しいと思う
656 :
644 :2011/01/24(月) 20:24:59 ID:1iw/lq4I
わかりました・・・・ IFS5bits.USB1IF これをInterrupt関数内で0クリアしてなかったせいでした・・・・。orz
>>656 インタラプトフラグ(IntteruptFlag=IF)のクリア漏れか
解決で何よりだ、がんばれ
教えてください。 AD内蔵の8ピンのPICで、電源電圧低下したらLEDを点滅させる回路が作りたいです。 そこで質問ですが、 ADコンバータのVrefを内蔵したものはありますか? つまり、電源電圧が変化しても(低下しても) ADの変換値が「あんまり」変わらないようにしたいのです。 BrownOutでは、2Vの固定値になってしまうので、ADで電源の電圧低下を知りたいのです。 今は12F683を使おうと思っています。 よろしくお願いします。
すみません。日本語変でした。 >ADコンバータのVrefを内蔵したものはありますか? → PIC内部に、ADのVrefとしてのバンドギャップRefを持った品種はありますか? です。すみません。
ユーザがクリアするフラグと勝手にクリアされるフラグが混ざってるよな
>>658 電源電圧は一定にするのが定石
で、定石以外の事をするならば、自分で考えましょう
楽する事で自分の欲望を満たしたいならば、せめて頭を使いましょう
頭あるでしょ?ないの?馬鹿?アホ?
宿題デチュカ?あ?
透明のLCD又は透明の液晶が購入出来るサイトってご存知ありませんか?
16F193xのLCD機能って何に使うの
>>658-659 8ピンだとあるのかな?
ピン数少ないのでっていうとなんだろ?
16F1827が入ってそうだけど
ゲインアンプはないみたい
ざっくりでいいというのでいいんだろうけど
厳密には自分自身で供給電圧を知るってあんま意味ない
8ピンPICに可変リセットICとかから信号送ったほうがいいんじゃない?
(それでリセットをかける訳じゃない)
>>661 はぁ? 電池で駆動する時も、いちいち安定化させて使うの?
電池=PIC電源電圧なんて、ごく普通だよ。
>>664 ありがとうございます。
>自分自身で供給電圧を知るってあんま意味ない
それはなぜでしょうか?
バンドギャップで2.048V程度の電圧を作って、PICのVref端子に入れれば、
PIC自身の電源電圧変動に関係なく10bitのAD値が得られますよ。
それを元に、何かを制御するとかできると思うんですが、どうでしょうか。
>>665 もちろん得られますし、制御も出来ます。
ただ「動作定格内」でなければ「動作保証」はないですよね
そういう意味でちょっと冗長な表現をしてしまいました
BrownOutという言葉があったので「監視ブロック」は
独立にしたほうが…という意図でした
混乱させてしまってすみませんでした
>>658 >>665 LEDのVFそのものをリファレンスにするというのはどうだろう。
以下、思いつく限りでもいろいろ問題はあるけど・・・
・I/Oの節約が主目的なら駄目かもとか。
・A/Dするときはパルス的に点灯させなきゃいけないとか。
・パラメータは実測から決めないといけないかもとか。
・経年変化とか。
>>666 ありがとうございました。
PIC内蔵のBrownOutの検出電圧は、品種によって決まっています、
というか、内部の基準電圧によって決まってしまい、変更できませんよね。
しかし、ADを使えば、自分の希望する電圧でアラートを出すことができます。
たとえばPIC12F675では、ADを使用したときの動作電圧minは2.2Vなので、
LM385などを外付けして、1.25Vを作りPICのAD-Vrefに入力して、
電源電圧を抵抗で割って2.3V→1.25VにするようにAD入力してやれば、
自身の電源電圧を、安全に監視できます。
12F683だと、内蔵clockが31kHzもできますので、自己消費も減らせて、
電池2本の場合でも、問題なく使用できます。
PIC内部に1.25Vなどの基準源が入っていれば、部品点数が少なくて
調子がいいなぁ、と思いました。
電源電圧をリファレンスにLEDのVFを測定の方がいいか・・・
670 :
667 :2011/01/25(火) 03:25:53 ID:DxrlNeq9
>>663 ドライバICなしの単体LCDを駆動するため。
ソフトめんどいかもだが コンデンサの蓄電時間を目安にする方法があったような? かなり古い回路図で見たよ
俺は電源電圧をリファレンスにして、ダイオードのVFを測定して判定ってよくやるよ。 線形じゃないし、温特もあるから精度は出ないけど、電池残量の目安には十分。
>>673 なぜ
Vrefピン==測定電圧 A/D入力ピン==一定電圧(LEDのVf)
なのでしょうか?
Vrefピン==一定電圧(LEDのVf) A/D入力ピン==測定電圧
のような気がしますが。
横から失礼
>>674 PIC12F675のVrefは最低2.0V、10ビットの精度を確保するには最低2.5V
まして、VrefがAD変換の最高値になるのでそれより高い電圧は変換できない
>>675 なるほど、納得しました。
ありがとうございました。
俺ならバック/ブーストコンバータ咬ませてVdd=Vref=5Vとかに安定化するかな。
久しぶりにソースを書こうとしたら、やりたい事が今までと違ってて記述方法わかんねカナシス ネットめぐりの時間のほうが長いよ。 gets(UART_data); UART_data = gets(); 上だとインターナルエラー、下だとA numeric expression must appear here… 変数はchar UART_data[40];とちゃんと事前に用意しているのに何でできないんだぁぁぁぁぁ その前の行の if(kbhit()){ が悪いんだろうか…? 誰かヒントください…。
681 :
774ワット発電中さん :2011/01/26(水) 03:32:22 ID:JU2/89hA
>>677 電池駆動で、DCDCコンバータはキツイでしょう。
682 :
774ワット発電中さん :2011/01/26(水) 05:37:48 ID:ziHqIEYu
電子工作って難しいな… 何言ってるかさっぱりわからん。 picで車のブースト計の動きとLEDの輝度を連動させたいのですが簡単ですか? 電気式ブースト計がどんな信号で制御されてるか教えて下さい。
>>684 簡単か?
う〜ん、まずはggrksを覚えてみようか!
該当ページの説明が簡単と思ったなら答えは「簡単」、難しいと思ったら「難しい」だよ、きっと。
後は実際に同じ事をやってみてできるかどうかだけどそれはしらん、君を知っている訳じゃないし
>>685 事故レス
うひ
http…hつけちまったい、すまぬ。
>>679 量産製品に組み込まれるカスタムLCD向けと思えばOK
LCDドライバICのコストが減らせる。
16F688で4系統のバッテリ電圧を監視する小道具を作っているのですが、 2系統接続では正常にAD変換できており想定通りの動作をしてくれるのですが、 3系統以上接続するとAD変換で全くでたらめな値しか取得できなくて嵌ってますorz AN1,AN3,AN4,AN5に分圧したバッテリ電圧を入力しているのですが、2系統時は AN1,AN3 AN1,AN4 AN1,AN5 の全ての組み合わせで想定した値が取得できます。(値はEEPROMに書込みしてライタで吸出して確認してます) 3系統以上接続している時も各ピンには想定通りの電圧がかかっているのですが、AN1〜AN7に3つ以上同時に電圧を かけてはいけないものなのでしょうか?
フハッ
>>688 入力切り替えてから、キャパシタの充電時間のウェイト入れてる?
>>688 ・3系統入れると、すべてのポートの結果全滅なの?
・オペアンプは使ってる?(種類によるけど直に入れるとマイコン自体が大暴れする事がある)
・4系統ってATX?(負電圧入れてるとか)
692 :
774ワット発電中さん :2011/01/26(水) 16:25:51 ID:qnkyOeXR
MPLAB IDE v8.53 (コンパイラCCS C compiler PCM)を用いてPICプログラミングをしています。 programmer にはPICKIT3を使用しています。 PIC16F1827に対して以下のコード@をプログラムしたところ、 1つもLEDが点灯しません…。 書き込みはverifyを用いて確認しています。 PICの故障も考えて素子を変えてみましたが駄目でした。 試しにPIC16F648Aに対し以下のコードAをプログラム したところRA1とRA0のLEDが交互に点灯する 正常な動作を確認しました。(冒頭のinclude、fuses以外@と同じ) コンフィギュレーションで何か間違っているのでしょうか。 よろしくお願いします。 コード@ #include<16F1827.h> #fuses INTRC_IO,NOWDT,PUT,NOMCLR,BROWNOUT,BORV25,NOLVP,CPD,NOPROTECT,NOIESO,NOFCMEN,NODEBUG,NOCLKOUT,NOWRT,NOVCAP,PLL_SW,NOSTVREN #use delay(CLOCK=4000000) void main() { set_tris_a(00111111); //0,1LED set_tris_b(11111111); while(TRUE) { output_high(PIN_A0); output_low(PIN_A1); delay_ms(3000); output_low(PIN_A0); output_high(PIN_A1); delay_ms(3000); } } コードA #include<16F648A.h> #fuses INTRC_IO,NOWDT,PUT,NOMCLR,BROWNOUT,NOLVP,CPD,NOPROTECT #use delay(CLOCK=4000000) void main() { 同上 }
>>692 16F1827で動作しないのは納得できるけど、同じコードで16F648Aで動作するのが不思議。
コンパイラのバグ???
ヒント:↑
>>694 8進の「0111111」と10進の「11111111」って解釈をコンパイラがしたんだろ?
8進「00111111」 → 0x9249
10進「11111111」 → 0x8AC7 (0xA9 8AC7 だがいいよな?)
期待通りの動きになるのか?はしらん<でもキャストしないとワーニング位はきそうだよな
>8進「00111111」 → 0x9249 と解釈されるとRA1のLEDは点灯すると思う 10進「00111111」 → 0x1B027 じゃないか
レスありがとうございます。
>>690 VCC=5V、FOSC=4MHz、ADC Clock Source=FOSC/2で動作させているので20usecほどいれています。
データシート上では500 nsあればよいようなので条件はみたしていると思います。
一応、1msecぐらいに充電時間を延ばしてみましたが(2系統時、3系当時ともに)結果はかわりませんでした。
>>691 >・3系統入れると、すべてのポートの結果全滅なの?
はい、全滅します。
しかも3系統しか入れてない場合、未入力のポートでも0X3FFが読めてしまっていますorz
>・オペアンプは使ってる?(種類によるけど直に入れるとマイコン自体が大暴れする事がある)
いえ、使っていません。
監視する電圧は18V〜10V程度なので3Kと1Kの抵抗で1/4分圧したものをANxピンに入力しています。
>・4系統ってATX?(負電圧入れてるとか)
監視対象は12セルのニッケル水素バッテリー(を4セット)です。
12 * 0.9 =10.8Vを下回ったら残量のあるバッテリーにきりかえるだけの小道具なのですが。。
原因にあたりがつけられればなんとかなりそうな気がしているのですが、もうちょっと頑張ってみます。。
抵抗で1/4分圧がダメなのかなぁ。。。
>>696 ありゃ、このコンパイラって頭0はオクタルじゃないんだっけ?
実装知らないから嘘だったらごめんね
オーじゃなくてゼロ・・・
未使用端子を入力に設定してるみたいだけど、ピンの処理をちゃんとしてるのかな?
>>699 オーノ…やめておこうw
つか要するに2進にしようって話だよね
>>700 普通未使用は出力にするもんな
>>697 3系統以上入れると…の定義がわからんのだけど。
・3ピン以上接続すると
・ANSELを3つ以上1にすると
・ADCON0:CHSを3種類以上切り替えると
全部のピンを内部をプルアップできるくらい普通
>>1 >
> /Microchip ./|
> /( ゚∀゚) / | アセンブラのアの字もわからない
> |~ ̄ ̄ ̄ ̄ ̄| /. 超初心者からHEXが読めてしまう
> |/Z./Z./Z./Z_|/ || 鬼プロフェッショナルの為のスッドレ(#゚Д゚)だ!モ゙ルァ
> ||. ||. ||. ||
ってあるが初心者に優しくないスレ住人。
706 :
697 :2011/01/27(木) 05:34:49 ID:0nA0lwDb
>>702 >3系統以上入れると…の定義がわからんのだけど。
>・3ピン以上接続すると
>・ANSELを3つ以上1にすると
>・ADCON0:CHSを3種類以上切り替えると
3系統以上入力の定義は「3ピン以上接続すると」になります。
ANSELはPIC起動時に1度だけ設定しています。
3ピン以上接続している状態では1回目のAD変換から取得される値が
でたらめになってしまいます。
原因がさっぱりわからないのですが、もう少し自分で調べてみたいと思います。
ありがとうございました。
>>706 つまり、プログラムは変えずに、
3ピン以上接続と2ピン接続で動きが違うと。
なんだろうね。ちょっと想像できんな。
2ピン接続時の空きピン処理はどうしてる?
そして、そのピンをA/Dするとどうなる?
>>706 わからんけど、ANSELとADCON0、ADCON1を毎回設定するようにして試してみて
PIC18F65J50だけど、こうやったらまともに動いた。
>3系統以上入力の定義は「3ピン以上接続すると」になります。 実際の電圧の印加状態はどうなのでしょうか? AN1入力:0V AN2入力:0V AN3入力:0V なのか AN1入力:2V AN2入力:0V AN3入力:1V なのか AN1入力:2V AN2入力:2V AN3入力:2V なのか AN1入力:0V AN2入力:0V AN3入力:開放 なのか
>>706 691です。投げっぱなしでごめんなさい
>>707 そうなのですよね。内部的にはマルチプレクサでいくつ入れようと
他はまず影響受けないはずで、3つ繋ぐと全滅ってなんでしょう…
ちょっと気になったのがバッテリー側です(回り込んでPICが誤動作してる気がします)
一度乾電池でテストしてみてはどうでしょう?
目的から独立していないと意味がないので、4個用意して…
適当な抵抗かまして、なんでもいいので値が出れば「PICはOK」ってことですね
テスト済みでしたらすみません
>>707 >つまり、プログラムは変えずに、
>3ピン以上接続と2ピン接続で動きが違うと。
はい、仰るとおりです。
>2ピン接続時の空きピン処理はどうしてる?
>そして、そのピンをA/Dするとどうなる?
1/4分圧回路も4系統分あり、各ANxピンに接続されていますので
2系統接続時の空きピンのAD変換値は(分圧用抵抗を介して接地されていますので)正常にゼロで読めてます。
(逆に3系統のときの空きピンはなぜか絶対にゼロにはなりません)
>>708 はい、試してみたいと思います。
>>709 デジタルテスターで計った限りではANxピンには想定通りバッテリー電圧の
1/4の電圧が実際にかかっていました。バッテリー未接続のピンの電圧はゼロでした。
>>710 はい、デバッグプリント文みたくEEPROMに値を書き込んでトレースを試みたのですが
(2系統時のものと比較して)3系統以上入力時は正常に動作しているようには見えませんでした。
まだやっていなかったので試してみたいと思います。
ありがとうございました。
712 :
774ワット発電中さん :2011/01/28(金) 02:23:54 ID:oiiG+FLu
>>711 直接関係ないですが、EEPROM経由でしかデータの評価ができないのでしょうか?
fprintf( SCI0, "1:%u 2:%u 3:%u\r\n", BAT1,BAT2,BAT3); とかでターミナルに出すと
早く結果が出せると思います。
MPLABを使っています。 >MPLINK 4.38, Linker Copyright (c) 1998-2010 Microchip Technology Inc. Error - Device not specified. Use /p option to specify a device. Errors : 1 のエラーが出ています。 考えられる事は全てしました。 何が考えられるでしょうか?
その 考えられる事を 書けよ。
初めて、マイコンを使ったPICを始めようかと 思ってるのですが、オススメの解説本とかがあれば教えてほしいのですが。
>>713 ズバリ原因が書いてあるのに「何が考えられるでしょうか?」とかおかしいでしょ。
メッセージに従って、ちゃんと指定されたものを使ってくださいな。
>>715 PICで何をしたいのかによって、参考になる本が違ってきます。
まず、何がしたくてPICを使おうと思ってるのかを書いた方がいいですよ。
>>717 ニコニコ動画とかを見てると作ってみたいなと思ったので
とりあえず、LEDをイルミネーションみたいに点灯、点滅できるようになりたいです
>>712 確かにそのやり方だとすごく効率が良さそうです。
ただ今回はUSARTピンを別の用途に使ってしまっていましたので次回から
試してみたいと思います。有用な情報をありがとうございました。
>>718 アセンブラでやるか、コンパイラでやるかにもよる。
コンパイラだとCCS-Cを使ってる解説書が多いけど、CCS-Cは有料。
フリーのコンパイラもあるけど、解説書は少ない。
どのコンパイラにも英語のマニュアルがあるから、データシートが読めるぐらいの英語力があればマニュアルだけでもなんとかなる。
c言語でやろうかと思ってるんですけど?
>>719 そうですか、UARTは使われていますか。
別の空きピンが2本あれば、ソフトウェアUARTが出来ると思いますが、それもままならない?
僕だったら、今回のデバッグはこのようにします。
1)スイッチ入力用に入力ポートを3本くらい確保して
2)RS232C用に出力ポートを2本確保して、
3)MAX232のようなRS232Cレベル変換ICを用意して、
a) 3)の入出力を2)に接続。プルアップも忘れずに。
b) RS232のプログラムを作り、10bit(unsigned int)の値が、テラタームに文字として出せるのを確認する。
c) スイッチ切替3bit→ANSELに反映
d) テラタームの画面に出る数字を見ながら、心ゆくまでスイッチでANSELを切替たり、
電圧を変化させたりしてみる。
>>719 が僕の隣の席にいたら「ちょっと貸してみ」と言って やってあげられるのに、残念。
>>716 それは間違えている!
あれからやって、コンパイル通ったけど
原因は、旧のコンパイラの.lkrを必要としたから・・・
なんだけど当の本人は「間違えていない筈」と思っていた。
ヲマイ等本当に技術持っているの?
724 :
723 :2011/01/28(金) 12:01:22 ID:Axk6zj33
あっ 悪い・・・頭冷やして来る・・・
>>720 c言語でやろうかと思ってるんですけど?
>>725 C言語 + PIC16F88が定番です。LEDの点滅なら、とても簡単。こんな感じ。
#define LED b_port
#define t 500
while(1){
LED = 0b00000000; delay_ms(t); // 全部off
LED = 0b00000001; delay_ms(t); // 左←右
LED = 0b00000010; delay_ms(t); //
LED = 0b00000100; delay_ms(t); //
LED = 0b00001000; delay_ms(t); //
LED = 0b00010000; delay_ms(t); //
LED = 0b00100000; delay_ms(t); //
LED = 0b01000000; delay_ms(t); //
LED = 0b10000000; delay_ms(t); // 左に到達
LED = 0b10000000; delay_ms(t); // 左→右
LED = 0b01000000; delay_ms(t); //
LED = 0b00100000; delay_ms(t); //
LED = 0b00010000; delay_ms(t); //
LED = 0b00001000; delay_ms(t); //
LED = 0b00000100; delay_ms(t); //
LED = 0b00000010; delay_ms(t); //
LED = 0b00000001; delay_ms(t); //
LED = 0b00000001; delay_ms(t); // 右に到達、最初から
}
>>726 プログラムをわざわざありがとうございます。
でも、本を探してるんですけど・・・^^;
>>729 DESTROYコマンドのところが難しいかな?
16f1938で遊んでみたけど、なんでmplabからpickit2使えないんだ
>>729 12F683には役不足だね。もっと複雑なことしてもらわないとね。
734 :
719 :2011/01/29(土) 00:15:14 ID:Ua4ZxFUI
>>722 空きピンは1つしかないので、現状のままでは難しそうです。
ただ明日は時間が取れるので、ユニバーサル基板上にAD変換まわり+USARTだけの
回路を作ってみてそれでデバッグしてみようかと思っています。
お騒がせして&貴重なノウハウを教示して頂きありがとうございました。
>>728 >第2章 pig系列微控制器指令系
急に豚の話になってる
736 :
719 :2011/01/29(土) 14:23:25 ID:Ua4ZxFUI
ユニバーサル基板上にAD変換まわり+USARTだけの回路を作って色々試してみたところ (多分関係ないよねぇっと思いつつも)3kと1kの分圧抵抗を18kと5.1kに変更したら正常に 動作するようになりました。 分圧抵抗で動きが変わってしまう理由がわからないのでもう少し自分で調べてみようと思いますが とりあえず結果を報告させて頂きました。
>>736 722です。
よかったね。結果の報告ありがとうね。ぼくも勉強になった。
でも、なんでだろう?
もしかしてPIC16F193xってCCSつかわないとダメなのですか?
>>738 文字列を表示できれば良いと思ったのでPC側はteratermを使ってます。
>>740-741 え〜
プログラム作ろうぜ?w
だれかC♯とかNetとか使っているヤツいない?
最近どうなのよ?
>>736 3kのつもりが300Ωだったりしないの?
あと、アナログに接続されてるピンはすべてアナログに設定して、マルチプ
レクサだけ切り替えてA/D変換してるよね?
手持ちのPIC16F54でソフトPWMを使ってLEDを光らせたいのですが、 Timerを使わずに同時に複数PORTでPWMを利用する事は可能でしょうか? mikroCで色々試してるのですが出来なくて悩んでます。 Timerを使ったやり方は色んなHPで見かけるのですが・・・
timer使わずに どうやって時間管理するの? それともPWM値一定で変化せずならいいだろうけど
LEDを光らせる以外に何もしないのであれば、空ループで時間待ちを作ればいい。 多少の入力判定ぐらいなら、正否いずれでも同じぐらいの命令数になるロジック構成にして、判定時のズレを無くせばいい。 とか、そういう話かな?
>>746 迎氏の秋月の時計キットは命令の実行時間で・・・
つい先日までマイコンのマの字も知らなかった超初心者です PICには入力と出力のポートを設定できるようですが、何も接続されていない状態(ハイインピーダンス?)な状態にさせるには どのような命令になるのでしょうか? また、PIC内部で回路のどこにも接続されていない宙ぶらりんな状態とでも言いましょうか そんなことは可能ですかね? ご回答の程、宜しくお願いします
PICりした?
完全無接続は無理。 ハイインピーダンスはデジタル入力設定。
完全無接続は無理。 PICの電源電圧-0.6V〜電源電圧+0.6Vの間だけHi-Z
755 :
749 :2011/01/30(日) 23:27:19 ID:VSi6mi/I
756 :
753 :2011/01/30(日) 23:29:26 ID:VSi6mi/I
おまえはジュドーか
758 :
まりえ :2011/01/31(月) 20:11:05 ID:h6dEyva0
豊広、たまにはしてよ。
ね、??。
どうしてPICの足はちゃんと並んでないんだろう? いや、並んでないPICがあるんだろう? さらには番号が飛んでいたりするじゃないですか。 どういうこったい!! PIC18F14K50 だと0〜7までそろっているのはport Cだけだし、並んでいる 順番は適当だし。 ごかんさんのネットワークの本でみたPICもでたらめだし。 何でこんな不条理が許されているのですか?
別に手ハンダで組む人のために作ってる訳じゃないし。
762 :
774ワット発電中さん :2011/01/31(月) 21:16:43 ID:h6dEyva0
> 760 テクニカルライターごだびん乙。 いつまでもDIPを卒業できないんだな。 いまどき手配線のことなんか考えない。
1938はSCS=1xにするとなんでPLLが効かんのだ?
microchipのホームページで、Microchip Samples Loginから欲しいICのsampleを選択すると、無償sample送ってくれる?
>>764 送ってくれるけれど、送料が何ドルかかかるよ
15ドルだったかな?
二年位前は完全無料だったけれどね
どうせ送料かかるから、MicrochipDirectで頼んだほうが早いよ
sampleは1ヶ月くらい掛かる場合もあるからね
始めまして、PICに挑戦しようと思いまして MPLAB IDEを使ってLEDの点滅プログラムを作りました。 無事コンパイルも出来て,PICも動作しました。 翌日同じプロジェクトを開いた所ソースプログラムが出ません 何故でしょう?
ご愁傷様です。
769 :
774ワット発電中さん :2011/02/01(火) 08:24:52 ID:tGUVjEga
ご臨終です。
770 :
774ワット発電中さん :2011/02/01(火) 18:27:04 ID:kqj4p9Mi
>>767 file→open で開いていませんか?
project→open で開いてみてください。
omaera nande pic nante hentaimaikon tukatteruno? atama daijoubudesuka? douse tukaunara yappa avr desyo? baka nano?
PICCを使ってましたが、MIKROCに乗り換えてみました。 (パソコン変えたついでに) ライブラリが豊富でヘルプも親切ですが、ヘッダファイルをincludeしないで、 色々なライブラリを使えるのが気持ち悪い感じ。 include"lcd.h"とか無しで、いきなりlcd_init()が呼べる。 特に不具合は無いけど
>>770 何か救われた気がしました
原因は、日本語ディレクトリー・りロケータブル・add file・・・その辺が怪しいです
検討してみます
あと771は馬鹿
スレタイ読めず日本語もまともに使えないとこ見ると外人か池沼とかかな
偏った予備知識ばかりのマイコン工作に憧れる消防
778 :
774ワット発電中さん :2011/02/02(水) 11:17:11 ID:YXyzzXTf
質問です。 rd read wr write rdy ready int interrupt nc not connect DBx data bass cs ???? ofl off line gnd 地面 あってる? csってなに?
CSは衛星放送か通信衛星じゃないの?
customer support
cable select う、おしいっ!w
Chip Star おいしいよね 何味が好き?
どうしてみんな そんなに意地悪するの、ちゃんと教えてあげればいいのに。 CS = Chip Sentaku = チップ選択だよ
自信がないので DIP も Sentaku できますか?
チップいーぜ、って先輩に習った。
Chip Erectだろjk
789 :
脳死 :2011/02/02(水) 19:28:29 ID:XatyX7RY
すっげー釣れてる。だりかマンコロチップの専門コテいないのか? 巷の股間さんみたいに。 んでCSとは? CSステータスでPICを全てハイインピーにして離したいとか。
実体はスリーステートなのに、いろんな名前付け過ぎ
MPLABのシミュレータについて質問です。コンパイラはHI-TECH Cを使ってます。
ttp://ysdu16.com/memo/pickit3/index.html ソースは上のサイトをまるまるコピーさせてもらってBuildしました。32行目</pic.h>は消しましたが。
Build後に、View->Special Function Reistersを表示させて、
Debbuger->Select Tool->MPLAB SIMを選択して、LED ONとLED OFFのところにブレイクポイントを置いてシミュレーションRunしても、
LED ON/OFF前後でSpecial Function Reisters Address05 GPIOが変化しなくて困ってます。
LED ON/OFFに従って、GPIOが0x00⇔0x01になって欲しいんですが、何が間違ってるのでしょうか?
Buildした状態でpickit2から12F683に書き込んで、実際にLEDチカチカすることは確認しています。
CSはadc0820ccnの説明にあったピン。 どんな働きか読んでもわからなかったのよ。あほだから。
>>792 どんな特殊なのかと思ったらただのごくありふれた一般的なチップセレクトじゃねぇかw
と、言うわけでChip Selectが正解できた
おいおい、流れ豚切りか?w
>>795 俺が最初に接した書籍では「スリーステート」とあった。
他を見たら「3ステート」とか書いてあって納得。
「トライステート」って、カタカナじゃ分かりにくいから、いまでもあまり使わない。
Tri-stateはナショセミの登録商標ですね。
でもPICのアレはTRISなんだよな
まぁ昔は3値って書いたんだけどな
801 :
774ワット発電中さん :2011/02/03(木) 22:13:13 ID:n0yDLnpm
mikroBasicの日本語化パッチは、今でも入手可能ですか? ご存知の方よろしくお願いします。
ああ、TRISってそういう意味か! 目ウロコ
ああそういう事なのか! アーサー王伝説からか取ってきたのかと信じてたわ
みんな、大丈夫か…
マイコンって省略が多くて大変。何の省略かがわかると、言葉の意味が見えてくる。 セミナーに行って、「ここまでの説明で、何か質問ありますか?」と聞かれたので 「PICって、何の略ですか?」とか「BODって何の略ですか?」とか聞いたら、 「後で調べてご回答します」と言われた。 さらに『なんでそんな事聞くんだよ。いいじゃねーか、そんなこと。かんけーねぇだろ』 みたいな顔をされました。質問はあるかと言ったのにぃ!!! さすがにわからなかったのが、PAR これには参った。 Place and Routeだって。andまで省略に入れるんか、って感じ。
>>778 誰も突っ込んでいないみたいだけど、
bass → bus な。バスには、bass 、bath 、 bus があるので注意。
ofl → over flowな。たぶん。ovfがよく使われる。
int → interrupt、 integer、 internal、もあるので注意。
PICのポートのRA0,RA1などは、Resister A の略な。
ついでに言うと、
置数器のレジスタは、Register
抵抗器のレジスタは、Resistor なので注意。日本語の発音はみんな同じだけどね。
最後に、間違って覚えられてるナンバー1は「アドレス」
回路図に「ADR0」とか書くもんだから、adresのように書く人が多いこと。
ひどい人は、adresu とか言って、それはローマ字変換だろ。
正しくは、address 。 覚えておいて損はないと思うよ。
>>807 おれたち中学生かw
でも、礼はいっとくわ。ありがとう。
そう言えば、データの事をdateと書く人もいるね。
それは単に日付って意味で使ってないだろうな?
>809 えっ dateじゃなかったのか 言われてみれば、たしかに目の前のモニターにもIODATAと書いてある
>>812 外部バスのあるマイコン使うか、CPLDやFPGAでフレームバッファ作るのが普通
814 :
近藤豊広@善部町 :2011/02/04(金) 17:50:33 ID:qlS0oAMB
5MHzが_(>o<)ググりましょう。(^o^)
>>813 それは知ってますが今から環境を整えて勉強するのもね。
>>812 全然いけないと思うよ。
あ、制御信号毎にPIC付ければ何とかなるか。マルチプロセシングカコイイ
マイコンじゃなくて液晶コントローラ使っちゃえば?
ラジコンのガソリンエンジン(スパークプラグ式点火)のタイミングを回転ごとにPICで進めたり遅らせたりしたいんだけど、 回転数が20000回転以上回るし、1度単位でコントロールしたいので 1/(333.3回転/秒 × 360度/回転)=120Kサイクル/秒で計算しないといけないですよね。 120Kサイクル × 4Hz/サイクル=480KHz 20MHzの16F84で実際に間に合うでしょうか?
819 :
774ワット発電中さん :2011/02/04(金) 19:47:11 ID:nQNJ4aJ9
オンチップデバッガについて教えてください。 PIC16F877等の40ピンPICを、PICKIT3のオンチップデバッガーを使って 開発したいのですが Debugger→Program Debugger→Run を実行すると PK3Err0040: The target device is not ready for debugging. Please check your configuration bit settings and program the device before proceeding. といわれてしまいます。 MPLABのバージョンは、8.50と8,.53で試しました。 PICKITのファームは、8.50に付属のもの、8.53に付属のものを使いました。 (自動でアップデートされた) 通常のProgramは正常に動作し、オシレータの発振と、ポートの上げ下げデモが 動くことを、オシロスコープを使って確認できています。
>>819 エラーメッセージ読んで、その対策はしたの?
>>816 全部をひとつのPICにやらせる必要はないと確かに思います。
>>817 それってかえって配線が面倒です。入手性も価格もアウトです。
高速なPICがあればその方がいろいろと便利だし。
>>818 むり。それはわかる。
アクセル開度を読まないとまともな制御ができない。
アクセル開度からエンジン回転数の予測制御が必要。
>>818 計算するのはいいが、マイコンの割り込み遅延について調べたほうがいいな
エンジン制御するなら、H8Sぐらいでいくほうが確かな気がする ラジコンエンジンなら2気筒ぐらいかな? ノックセンサーみたいなものがあれば、ギリギリの進角できるんだけどなあ
>818 皆が聞かないからあえて聞くんだけど なぜ360度なの? ピストンが下がりきったところで点火しても意味ないでしょ 回転数で割ってディレイで制御すれば20000回転程度なら楽勝でしょ
>>818 式がよくわかんないけど回転数(300Hz前後)を拾うのは問題ないかと
そのあとはよくわかんない
高回転域と判断したら早めに点火みたいな話?
「360度を知る」必要ってないように思うんだけど(相対値から算出出来そうな…)
でも制御も含めるとギリかな…
あっ、なんかかぶっちった
自作MoTeCモドキか 楽しそうなお題目ではあるな
何をしたいのかがさっぱり判らない 速度コントロールなら標準でできるのでは
ピックアップを上死点前10度に設定して、一周回ってくる時間から回転数を計算。 その時間に応じて点火時期をずらしたい。 20000回転なら333回転/秒で、その1度は333*360
こちらが勘違いしてるのか、なんかよく分からないんだが 1秒間に333回転ということは、3m秒で1回転ということなんでしょ 3m秒÷360度なら8μ秒程度で1度ということになると思うんだけど 2m秒くらいで検出と計算をして、残りの時間で制御すれば楽勝じゃないの?
つまりPICでガバナー進角エミュ的なものを作りたいと? ところでこれ、2サイクルなの?
>>829 秒で考えちゃダメだ。回転じゃなくてrpmで書け。
クランクシャフトになりきって考えないとミスファイヤがおまえを襲う
マイコン初心者です PIC16F88でPWMを使って任意のパルス波形を出したいと考えています データシートを見たのですが、英語だしよくわかりません… CCPR1とPR2を設定すればいいんですか? どのようにプログラムを打ち込めばいいかわからないんで、 プログラムコードを教えてください…
ええ、2サイクルです。2サイクルは最初が進角、途中、更に進角、高回転で遅角です。
4サイクルなら720度だよね? 点火の進角の限界に割り込み入力を用意して、そこから何度遅れるか、ぐらいならまだマシだが 点火角を回転信号から作成しようと思ったらかなりめんどくさいぞ しかも上限が2万回転でかなり極端な回転変化をするとすると、推測した変化量がどこまで追いつくか…
>>833 英語だと〜といわれても「辞書サイト参考にしてでも読め」と言われるに1票。
コードを教えてくれってのは答えだけくれ相当なわけで初心者ならいよいよダメじゃねか?
エンジンなんて極端な回転数の変化はないんだし 1回転前のデータで点火時期決めればいいんでしょ そうすれば1回転ほぼまるごと回転数の検出に集中できる 上にも書いたけど8μ秒で1度なんだから、 20Mhzでやれば、ほぼ無段階で設定できるんじゃない
>>833 日本語版マニュアルが有るPIC16F84あたりで頑張れ
>>833 どうしてこういう奴がいるんだろうね。
英語読めなきゃ勉強しろよ。じゃなきゃ作るなよ。
自分で色々調べて自分の頭で考えろよ。
ホントもう呆れる。よく考えてごらんよ。
>>840 おまえも、他の人から そう思われているぞ。
もう少し優しく接してやれ。
自分のレベルが普通だと思うな。
>>
こんなんで良いんじゃね?
void Du(unsignd int Ty){
if (Ty <=1023){
CCPR1L = (Ty
>>2 );
CCP1CON |=(Ty<<4);
}
else
Ty = 0x200;
}
mainにはCCP1CON = 0b00001100;//PWMstart
、と書く
eが抜けてたごめ あとアンカー833ね。
Dサブ25ピンのシリアルPICライターをUSBで使いたいんだけど、 シリアル-USB変換ケーブルがDサブ9ピンのしかない。 25ピンを9ピンに変換するアダプタを使えばいいのか? Dサブの25ピンと9ピンって単にピンの数が違うだけ? このPICライターで実際に使ってるピンは5個だけのようだけど。
846 :
774ワット発電中さん :2011/02/05(土) 06:32:04 ID:RIgQMG5f
イクイク!
PIC18F4450のアセンブラでUSBを使おうとしています。 ホストからSETUPでSetAddressが送信された後にUADDRにアドレスを 書き込むにはどうすればよいのでしょうか? ホストからSetAddressが送信されるとPIC側からACKもNAKも 返答しないので処理が途切れてしまいます。。。
>>847 そのトランザクション中は旧アドレスでのやり取りになる。
ステータスステージでレスポンス返して、トランザクションが完了してから
UADDRに新しいアドレスをセットするべき。
自分でそういうこと調べられないなら素直にマイクロチップのライブラリ使えばいいのに。
>>847 USBフレームをアセンブラで書こうとするキミってステキ♪
応援してるよ。頑張れ!
「○○したいと思います。どうやったら良いでしょうか?」 自分の思いつきだけ投げて、他人に無料でやらせて成果を頂こうという 盗人根性というのか、自分で考えることを放棄して模範解答を得ること しか考えないゆとり頭というべきなのか・・・
picのシリアル通信で、VBでの作成で参考になるサイトない?
>>852 VBってPICプログラムの開発も出来るの?
PIC用VBがあるならまずそのソフトの紹介をして!答えが間違えては意味がないから♪
対向側(窓機)での話しをしているならPC側ソフトの話は完全にスレチ
ただの確認程度なら端末ソフトがフリーでゴロゴロしてる
通信内容にフォーマットを与えてVBでって事ならやさしいお姉さんが教えてあげるけど
VBプログラマ質問スレ(Ver.6.0 まで) part56
http://hibari.2ch.net/test/read.cgi/tech/1275397597/ この辺でお話しましょうね(ほしみ
VB6までだけど…バージョンも書いてないから仕方ないよね
後は自分でなんとかするのよ?いい?
例えば、加速度センサからの出力を受け取って、 リアルタイムでwindows上の物体を回転させる、みたいなことをしたい時、 何の言語を使うのがいちばん楽なんだろう
亀ですみません…。 進捗が一応一段落したのでご報告を…と言うかここ一週間ぐらい触れてない…。 >680 ごめん、確かに下はこれじゃgetsじゃなくてgetcだな。 上が近いなのか。 例で下のようなのがあったんだが、コレってもしかしてprintfの後じゃないと効かないのか? char string[30]; printf("Password: "); gets(string); if(strcmp(string, password)) printf("OK"); 後で試してみるよ…。 >682 char UART[5]なんて作ってビルドしたらその変数使われてねーぞ?ってエラーが出たので多分大丈夫かと。 多分…。 >685 先生、むなしく音読して終わりましたが言おうとしたことの意味がわかりません。 例のchar *gets(char *s) この*sにあたる部分の変数に成功すれば結果が、エラーが出たらNULLが帰ってくるってことですかい? 戻り値の格納先ってこの場合はsで結果の格納先と同じでいいんですよね? >855 何も分からないならまずはターミナルソフトにデータを飛ばしてみては? それからVBあたりでポリゴンを回転させるデモでも探して、双方に必要な情報のやり取りを調べて、通信してみるとか。 多分全部自分で用意するとなればこうなるんじゃないかな。 3Dmodel作成:メタセコイア プログラム作成:VBかVCとダイレクトX 通信部分:RS232
>>856 685だけど先生なんて偉いもんじゃないのにすまん
えとね、パラメータで渡すのは文字列のアドレスなのですよ
で、成功時は戻り値がそのアドレス、失敗時はNULL(void 0か?PICの実装のNULLってどうだっけ?(ぁ)
パラメータに渡すアドレスは「結果の格納領域」です
if(gets(*s) == NULL) { /* gets失敗の処理。!=なら当然成功の処理ってこったな */ }
ポインタまわりはC言語一番の難所だ
ここを理解するとアセンブラとの親和性も理解できるミソでもある
*sは結果格納領域なのだから何を渡せばいいのか?よく考えてみよう
これはC言語講座であってPICの話じゃないぞ。。。
>857 ポインタの表示なのはそういうことか…。 確かにポインタよく分からないままだしなぁ… つまり俺に必要なのはまず普通のCのことから勉強しなおせと言うことですね。 それだけでも書いたかいがあったってことですよ。 それじゃあANSI-Cの本でも探して来ます…ありがとうございました。
>848 ありがとうございます!何となくやり方がわかったんでトライしてみます。 UADDRにセットするタイミングをうまく取るのが難しそうですが。。。 ライブラリはc言語が使いこなせないので、アセンブラで書いているという始末です(泣
860 :
774ワット発電中さん :2011/02/06(日) 16:53:03 ID:KeO53hut
>>857 なんとなくポインタがわかりかけてきた、ような気がます。
例えば、以下のような文章は、どのように読めば良いのでしょうか?
unsigned int *SCI = (volatile unsigned int *)0x00808000;
1)符号無しint型(16bit)の
2)*
3)SCIという名前の変数を確保します。
(0x0000〜0xffffまで読み書きできます)
4)消さないでよ→コンパイラ
5)符号無しint型の*
6)その実体は、0x00808000番地にある
わかりません。
unsigned intを保管する会社SCIを設立し、倉庫の土地を0x00808000番地(埼玉県)に確保した状態
>>861 おー、わかりやすいですね。
すると、その倉庫に16bit値0x1234を書き込む時は、
SCI=0x1234
で良いでしょうか?
>>862 ありがとうございます。では、続きはそちらで聞いてみます。
ありがとうございました。
>>863 コテカスが居るが嘘ツキ以外は良い人が多いスレだ
粘って聞ければちゃんと教えてくれるはず…
はず!(^-^;
2chの一番濃いエッセンスがあるプログラム板だから、揉まれて鍛えられれば一人前になるだろ〜
>>864 キミの今日の書き込みで役に立つものは無さそうだ。
プログラム板で揉まれてくると良いと思うよ
ID:SPoZWpFH ちゃんとアドバイス汁。 加齢臭が強すぎて目に突き刺さる。(笑) 今ならVisual Basic 2010 Expressだろう。 無料で手に入るのでこれを使うのがいくね?
>>865 ,866
PICの話出てないしね〜仕方ないよねw
C言語の基礎とVBの話なんてここでされても困るだろ?
しかもあっち今見てきたらポインタで思いっきり躓いてたぞ?
頑張って勉強してもらうしかなさそうだ
未使用ピンの処理、皆さんどうしてる?
>>860 > unsigned int *SCI = (volatile unsigned int *)0x00808000;
>
> 1)符号無しint型の
> 2)* (ポインタ)
> 3)SCIという名前の変数を確保します。
> 4)揮発性の
> 5)符号無しint型への*(ポインタ)
> 6)0x00808000番地を代入です
同じことだ
>>855 Arduino と Processing
Prototyping Lab ―「作りながら考える」ためのArduino実践レシピ
この本の P150~158に作例があるよ
(
>>854 お姉さまwwに誘導されてきました。)
現在、シリアルから19200bps(rs232c)で文字を自動的に吐き出している機械が有ります(マイコンです)
例 PIC RS232C−TEST
ハイパーターミナルで受信をした所正常に受信しています。(COMの設定等もしたつもりです com2であっています)
けれど、VB6.0で作成したプログラムでは、何にも出ません。
参考サイト
http://scw.asahi-u.ac.jp/~sanozemi/Sakuhin/pic02/PIC02.html 作成したソース
Private Sub Form_Load()
MSComm1.CommPort = 2
MSComm1.Settings = "19200,n,8,1"
MSComm1.RThreshold = 6
MSComm1.DTREnable = True
MSComm1.RTSEnable = True
MSComm1.PortOpen = True
End Sub
Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False
End Sub
Private Sub MSComm1_OnComm()
If MSComm1.CommEvent = comEvReceive Then Label1.Caption = MSComm1.Input
End Sub
何がいけないのでしょう?お力をお貸し下さい。
また2005でも、質問に来るかも知れないのでよろ
>>873 openしただけじゃ無理に決まってんだろvb板で修行して来い頑張ってください
電池1本、つまり1.0〜1.2V程度で動くマイコンってありますか? 実力で動くのではなくて、ちゃんと仕様でOKになっているものです。
877 :
のうし :2011/02/07(月) 13:38:10 ID:RjZWcFuJ
こんなのあった、漏れも試してみたい。 >TI MSP430シリーズ 3クロック 29:774ワット発電中 10/03 18:36 gblomWF7 [sage] 0.9Vで動くMSP430L092なんてのがでてるね。 60: 11/16 12:43 +P3+QYTi [sage] セミナ会場なう。どの程度の説明かわからないけど 0.9V MSP430もテキストに載っている。 62:60 11/16 21:00 UpPrvODU [sage] 帰宅しました。帰り道呑んできたので文章が変かもしれないw 0.9V MSP430は軽く紹介されただけでした。 省11
>>876 デーデーコンでええやん。
電池ターゲットの奴よーさんあるで。
つか、PSoC にせよ >878にせよ、デコデコ内蔵で起動0.9VしてるだけなのでIOは1.8V以上。 IO含めて0.9VはMSP430Lくらいではなかろーか。
2Vくらいに昇圧して使うのがいい 多少ヘタった電池でも使える
>>879 電池1本 = 終止電圧0.9Vでも 5Vとかに昇圧できるDC/DCって、ありますか?
突入電流を考えると、起動しないんではないかと思ったりしますが。
883 :
877 :2011/02/08(火) 03:21:57 ID:HpulCpbB
なんかあた気がする、ググレ
884 :
883 :2011/02/08(火) 03:30:05 ID:HpulCpbB
あっ、0.9Vのヘタった電池はだめだぞ、昇圧すると一次の0.9が0になるから。 太陽電池とかで電流とっても0.9を維持できるようなら可能。 ちなみにその一次が超低電圧のDCDCはトラ技の広告だか記事だかだったような‥
HT77XXA PFM ステップアップDC/DC コンバーター Low start-up voltage: 0.7V (IOUT=1mA) 電流は取れないな。
>>882 秋月で完成品モジュールが500円で売ってた気がする
マルツにもあるよ。SMDのパターン付き
ジュールシーフが安いな。 カス電池から搾り取れる。
MPLABのフォルダが、デスクトップ上はエラーになるけど、 マイドキュメントならokなのは何故
マイドキュメントも日本語なのに、という意味
と、思ったらマイドキュメントは日本語じゃなかったな エクスプローラうざい
>>894 エクスプローラというよりWindowsの仕様かと
ちなみにWindows7では、デスクトップのパスも英語名になってる
>>891 マイクロソフトがいつまでもSJISにこだわるから仕方がない
他のOSはとっくにUTFに切り替え完了してるのに、図体でかいからトロイんだよね
MPLABXに期待
マイクロソフトはUnicodeに切り替えたがってるでしょ Visual Studioも何年も前からデフォルトでUnicodeビルドになってるし いまだにANSIでビルドしちゃう開発者が悪い そもそもマイコンの開発環境みたいなニッチな物はユーザー側で対策すれば良い マイドキュメントやデスクトップにプロジェクト置くとか言語道断でしょ
そうそう、MSはunicode推進派の最先鋒じゃないか。 そしてMSがWindows New Technologyをリリースした際、unicodeうぜーって大バッシングしたのはおまいらだろw
>>899 おおっ使えるじゃんと思いましたが、ERRATAでADコンバータの完了フラグが立たないから、
Sleepするか、完了フラグをみずに自分で固定時間稼げとおっしゃるので、ちと使いづらい。
秋月的には12F629と同価格か−
> ADコンバータの完了フラグが立たないから、 ナンバごと、1から設計しなおしてるのかよw
903 :
774ワット発電中さん :2011/02/09(水) 19:16:37 ID:mxqXoT2t
それはそうだが、こいつはすごい8ピンが出てきたな・・・
904 :
774ワット発電中さん :2011/02/09(水) 20:19:41 ID:vBuZYwBj
MRF24WB0MB こいつもすげぇぞ
PIC18Fで8pinやってくれませんかね。 要は乗算器が欲しいということです。 XLPは、ERRATAに地雷原がいっぱいあって困ります。 8pinはやはり12F683の安心感は絶大。
PIC18F2550で下のようにデータテーブルを使おうとしたとき 0x01を読み込めないのはなぜでしょうか? ORG 200H DATA1 ADDWF PCL,F DT 0x12 DT 0x01 DT 0x00,0x02 DT 0x00,0x00 MAIN MOVLW d'4' CALL DATA1 ・ ・ ・
907 :
774ワット発電中さん :2011/02/09(水) 21:17:32 ID:sGkNX7W1
PCLプラス4したから0x12から4つ後ろの0x00に飛ぶんでしょ? 何も不思議なことはない。 DT 0x01を読ませたいなら、 MOVLW d'1' CALL DATA1
USBの使える8pinまだー?
909 :
906 :2011/02/09(水) 21:50:28 ID:uQm0SnDo
MOVLW d'4' ではなくて MOVLW d'2'の間違えでした。 >907 やっぱり読めません(T.T
電源、クロック、USB信号抜いたら2ピンしか残らないのに何をしろとw
>909 MPLABのシミュレーター使って試せば。 907の方の言う通り 0x01を得たいなら MOVLW d'1' だよ
912 :
856 :2011/02/09(水) 22:05:47 ID:HW0Rws+n
>857
書き込みした夜に気分を一新して、怪しい部分を徐々に新しいプロジェクトに切り出してビルドしてみました。
1、gets(UART_data);回り
なんともなく通る、すごく疲れる。文字通りPC机に突っ伏した。
な、なぜ…なぜ俺はコレを先にしなかったんだ…orz
2、前は>678通りなので、一応調べてみるが怪しいところはあまり良く分からない…。
じゃあ後ろは…と調べたら、なんか見覚えがある記述が…。
if(UART_data == "m1"){ //m1と打ち込まれたらモードをm1に変更
あれ、これ……なんか見覚えがあるな.
どこかのサイトであらかじめ記述された文字列と入力された文字列の比較をしてどうこうって例文は、Passwordを例にしてもう少し難しそうなことを書いていた気が…。
1+2でビルド、インターナルエラー。おk…これだ。
結論、ココと一緒でしたorz
ttp://masudahp.web.fc2.com/cl/strpnt/c1021.html そりゃ、アドレスの頭と文字列そのものって比べられんよなぁとか。
直したらビルドできたので、後は中身です頑張ります。
ちくしょう、なんか安いの出てる…
615で作ってたけど乗り換えたいorz
日記はチラシの裏でいいよw
914 :
906 :2011/02/09(水) 22:58:16 ID:uQm0SnDo
>911 自分もMOVLW d'1'だと思うんだけど 読みたい場所の2倍の数字を入れると読み込める 0x02を読み込むならMOVLW d'6'って感じです。 なぜだ???
おっとPIC18Fか、PCLが2ずつ上がって行くみたいだな x2する必要が
[秋月16F1xxx] テンプレ用 秋月の新シリーズのPIC16F1xxx。内蔵モジュールも豊富(5bit-DAC等)だし LATが追加されたり、16bitのFSRでプログラム領域や飛び地のRAMを連続アクセス等 多少改良されてる。Wレジスタのみなのは相変わらずでさらにbankはすごい事に なってるけど(笑) 新規で作るなら旧シリーズは必要ないかも [40pin] ◎16F1939 \190 16kw 1kRAM EEP256 I/O36 ○16F1937 \170 8kw 512RAM EEP256 I/O36 [28pin] ◎16F1938 \150 16kw 1kRAM EEP256 I/O25 ×16F1936 \150 8kw 512RAM EEP256 I/O25 ×16F1933 \150 4kw 256RAM EEP256 I/O25 [18pin] ◎16F1827 \120 4kw 384RAM EEP256 I/O16 [14pin] ◎16F1823 \100 2kw 128RAM EEP256 I/O12 [8pin] ◎12F1822 \80 2kw 128RAM EEP256 I/O6
12F1822すげー 12F629の存在価値が無くなったな
>>912 ひとつずつ解決できるといいな
あっちは言語仕様そのものは答えになるが、少しみて判るとおり変人Q〜君の遊び場なんだ
Q〜君は嘘は書いてないがあの調子なので…ま、変人だ
某板の別にC/C++のスレは多数ある、実装についてならここでも良いが言語そのものの疑問はあっちがよかろ
文字列比較関数もある、BASICなら文字列比較も楽なんだけどね〜、Cでは1バイト(文字?)ごと比較してください。
>>917 そういう意味では、秋月の社長が629を数割付きにしてくれれるのを期待してる
1xxxはMPLAB IDEでPICkit2の対応してくれると神。 現状は専用アプリのみ。
921 :
774ワット発電中さん :2011/02/10(木) 21:49:48 ID:PLYWbCBZ
表面実装パッケージのやつってプログラムするときはどうしたらいいの? そういうソケットとかあるのでしょうか。
>>921 書き込み屋に頼むと書いてくれるよ
試作の時はICSPだよな
>>921 Pickit2とか3、使って書き込んでる。DIPもFlatも。
VDD、GND含め5ピンを接続することで何度でも書き込める。
ソケットかピンヘッダを使うのが一般的だが、PCB化するなら
エッジコネクタ接続にすると安い。
>>920 1XXX、Pickit2未対応なんだな。もう少しで悩むところだった。
あぶないあぶない。
MPLAB IDE8.63確認したら、Pickit3は対応してるみたい。
2しか持ってない俺は買い足すべきか悩む。(待てば2も対応するのか?)
単にもう一つ書き込みソフト起動しとくだけだけどな
最近電子工作を始めたますた、宜しくお願いします。 MCP4152っていうデジタルポテンショメータ?のICを頂いたので手持ちのPIC(16F886)で 動かしてみようと思って試行錯誤してるんだけどSPI通信ってのはブレッドボード上では ノイズ等でまともに動かない物なんでしょか? ・・・まあたぶんそんな事は全然なくて、おいらのプログラムが駄目なんだろうなぁ・・・。
手動でPIOをゆっくりとペケペケON/OFFしたら動くかもね。 PICの仕様をみてないけど、SPIのシリアルクロックとかは ソフトに関係なく内蔵ロジックが生成してくれるんでしょ? これがそこそこ高速だったりするとビョーンと配線伸ばしたり 変な引き回ししたりするとまともに伝送されないかもね。 このへんはオシロがあると一目瞭然なんだけど^^; 試しにSPIの信号ラインにシリーズに10〜100Ω位の ダンピング抵抗いれてみたらどう?
ブレッドボード上で的確に動かすにはCPUのパスコンを適した場所に付けることが重要だね
>>926 >おいらのプログラムが駄目なんだろうなぁ・・・。
誠に残念ですが、その通りです。
ブレッドボードが原因の可能性は、0.1%程度です。
ブレッドボードで楽しようとする心構えが原因の可能性が高いです。
使うのやめませんか? ブレッドボード
ブレッドボードで楽をする為の工夫にいろいろ手間をかける
16Fでも32MHz内蔵が! おらすぐ乗り換えるべ!!!11
932 :
926 :2011/02/11(金) 20:12:57 ID:LdWEILuV
皆さんお察しの通り単純においらのプログラムが駄目だっただけみたいでした。
まだまだ理解度が浅いので精進しようとおもいまつ。
>>927 >>928 本日オシロを借りて見てきましたが波形なんかなーんにも出てませんでした。
お恥ずかしいでつ。
>>928 >>929 >>930 楽しようとしたおいらが間違ってますたね。
よーしユニバーサル基盤で頑張るぞー。
32MHzあればソフトだけでUSBできるだろうか
AVRは確か12MHzでUSB使えたけどあっちは12MHzで12MIPSだからな PIC16F1xxxの32MHzで8MIPSだと厳しいだろうね
PIC12F1822いいなぁ・・・ちょっとした物作るのに最適。
AVRとPICだと同一MIPSでも同じことをさせる命令数そのものが違うような 16F1xは多少はすっきりしたのかな
16F1xxxはいくつか命令追加されただけであんまり変わっていないみたい 追加命令 ADDWFC,SUBWFB : キャリー,ボローを含んだ加減算 ASRF,LSLF,LSRF : シフト BRA : PCLATHやページ境界に関係なく相対ジャンプ [9bit] PC+255〜PC-256へ BRW : PCLATHやページ境界に関係なく前方のみ相対ジャンプ PC+W(0〜255) ADDWF PCL,f ヨリ便利ソウ CALLW : 上位はPCLATH,下位はWのアドレスにサブルーチンコール MOVLB,MOVLP :バンクセレクト,PCLATHに直接定数入れる TRIS,OPTION :TRIS(A〜C?),OPTION_REGにWの値入れる OPTION_REGナンテソンナニ変更スル? RESET : ソフトウェアリセット ADDFSR : FSRに定数(-32〜+31)加算 MOVIW,MOVWI : INDFとのやり取りがパワーアップ FSRに対して[PRE/POST][+1/-1]や定数off可能 16bit幅で2本になったFSR周りはだいぶ使いやすくなっていそう 0x2000以降に バンク毎にコマ切れだったRAMが連続配置されているし 0x8000以降にはプログラム領域の下位8bitはマッピングされて読めるようになっている
RAMが連続してるのは、コンパイラが楽できるので、 謎のバグが激減するに違いない HI-TECH Cは未だにそのへんに怪しい部分が残ってる
940 :
774ワット発電中さん :2011/02/12(土) 16:53:36 ID:5HNwjA24
すいません! mikroBasicは、あまり使われていないのですか?
教えてください。 そもそも論ですが、PICは外部水晶の1/4のクロックで動いています。 なぜ1/4するのでしょうか? AVRだってH8だって原振のままで動くのにです。 原振周波数で動けば、もっと高速に処理できるのに・・・・と思うのです。 世の中の製作例を見ると、PICが圧倒的に多いですが、液晶表示するとか ちょっと高速な処理になると、必ずAVRとかH8になっていて、 ちょと残念なんです。
原振のまま動いてるよ、ただ1命令が4ステップなだけ
943 :
natu :2011/02/12(土) 18:33:01 ID:6mSiu+FF
1命令は8サイクルだぞ。 パイプラインで表向き4サイクルに見えるだけ。
そこで素朴な疑問 AVRやH8は命令サイクルがなんで1クロックで完了できるんだ? 内部であげてるのか? 石の内部構造まではしらんがどっかでわかる?
natuさんありw パイプライン処理のお陰か って、PICってパイプラインしてないん? 命令先読み実行とか予測とかなし?
実行は4クロックだろ フェッチにも4クロック要るというだけで 1サイクル=4クロック という定義なので、サイクルという語を不用意に使うと混乱するぞ
>936 秋月で 1個 ¥80 って555不要論とか出そうだな。 かなりのICを駆逐できる。
PICの32MHzは実質AVRの4MHzぐらいかな
さっき真面目に答えたけど、この流れって定期的に湧く AVRの宣伝のパターンね 巣に帰れよ
まあAVRの方が洗練されてると思うけど、PIC16Fだって良い所はあるよ AVRはレジスタが32本と多いけど、レジスタ間演算しかできないからRAM上のデータを演算 しようとすると ロード,演算,ストアが必要、極端な例だと LDS R16,MEM1 INC R16 STS MEM1,R16 PICだと1命令 INCF MEM1,f PIC16FはRAMの方がレジスタでWはあくまでワーキングという思想なんでしょうね、そう考えると 引き算の前後が逆になっているのもわかるような気がする。
そういえば新しい16FってTRIS命令あるよね なんで?
>951 今回の増えた命令でOPTIONとTRISはメリットがよくわからないね。頻繁にアクセスする所じゃないし TRISxはプログラムの途中で書き換えることもあるけど、OPTION_REGなんて初期設定で書き込んだら プログラム途中でアクセスする事なんて無いんじゃないか。 個人的には次の1命令の間だけ有効なBANK設定とか欲しかったな(難しいだろうけど)
「将来はないよ! 使うなよ!」と言い続けたけど使う人多数で、 しかたなく公式に認めただけじゃね?
TRISに書き込むよりTRIS命令の方が高速なんでしょう 普通は初期設定の時しか使わないけど、 オープンコレクタとかで頻繁に切り替える用途の時に 威力を発揮する、かもしれない
ビットコピー命令は欲しいね。 IOにグリッジなしでビットコピーしようとすると4命令必要とか… 48MHz動作でも3MIOPSしか出ないなんて…
グリッジって?
タッチセンサやUART、SPI、PWMを好きな個数、好きなポートに出せる機能に惹かれてしばらくPSoCに浮気してたけど いつの間にかPICにも静電センサ付いてるしPIC24だと周辺機能のポート変更機能あったんだな… また戻ってきていい?
おいで坊や
ビットコピーって?
19xxになってLATxが追加されたけど使い方って16bit系と同じ? 高速になったせいか、read-modify-write問題でまくりでひとまずNOPばらまき。
962 :
774ワット発電中さん :2011/02/14(月) 22:37:46 ID:kpZrcbpa
すいません。dsPICのマイクロチップ社の Cコンパイラのフリーのものについての質問ですが MPLAB C Compiler for dsPIC v3.25 Standard-Eval Version で正しいでしょうか? The Compiler Evaluation Version is free!って書いてあるし。 間違って有料のものを選んだら、クレジットカードの番号とかを 要求されるから直ぐに分かるとか有れば問題ないのですが。
電話料金と一緒に請求されるから気をつけた方がいいです。 情報料という項目です。知らない間に何万とか・・・怖い怖い。
>>961 LATはPIC18Fからあるけど、使い方は同じだと思うよ。
>>955 ビットコピーと考えるから難しくなる。
バイトコピーにすれば、どのPICでも問題ない。
トグルならLATにXORするという手もある。
元々LATしか必要なかったんだけどね
>>965 言ってる意味がわからん。
LATと同じ内容の変数を用意して、変数を書き換えてLATにバイトコピーする?
ビットコピーより煩雑になるし、サイクル数も増えるはず。
「xx番地のyビット目をIOピンに出力」するだけで4サイクル必要なのは覆せないよね。
BTFSS XX,Y GOTO HOGE1 BSF IO,X GOGE2 HOGE1 BCF IO,X HOGE2
すみません教えてくらさい ICSPで書き込みする場合、MCLRはポートとして使用しない場合は保護回路は不要でしょうか? よろしこです
>>969 プログラム時に12Vがかかるので
それを前提にした回路(RCのリセット回路など)なら不要です。
>>970 さんありがとうございます
単純に、基板上の別の部品に12Vかからなければいいってことで理解してもOKですかね?
たとえばMCLRをポート(入力)として使う場合、それがプッシュボタンの場合でも書き込み中に押さなければ保護回路は不要だということでしょうか?
度々ですみません
>>971 万一間違えていたら責任をとって頂きます
とか続きそうな勢いだね
>>972 すみませんただの電子工作なんでそれはないっすw
>>971 基本的にそうなるようにPICKitは作ってあるんだとおもうよ。
電流制限して電圧管理してあり異常な状態になったら
なんかランプがついてハイインピーダンスにするんじゃないかと思う。
なので、下手な回路をくっつけると全く書き込みができなくなるんじゃないかな?
憶測まじりだけど
>>968 うん、だからそういう操作を1サイクルでできる命令が欲しいって話。
976 :
774ワット発電中さん :2011/02/15(火) 19:32:52 ID:or5zzs3k
>>963 の方のレスで多分無料ということは
わかったのですが、どなたか、
>>962 へ
真面目なレスしてくれませんか?
>>967 「xx番地のyビット目をIOピンのyビット目に出力」を複数ビットで行うなら効果があるかもしれないという程度だよ。
ポート直と組み合わせる時は、マスク処理に手間が掛かるからね。
>>976 中高生?
何をそんなにビビってるのかが分からない
979 :
774ワット発電中さん :2011/02/17(木) 15:40:56 ID:Q/4M11x5
別に有料だろうが、だまって使ってればいいじゃない。
>>976 ここの住人はアセンブラ最高主義だから
C言語に対してコンプレックスがあるんですよw
空気よみなさいね
振り込め詐欺にでもあって慎重になってるんだろ。
ネットリテラシーの講義でも聞いたんじゃね? 最近はそういうのやるって連絡帳に書いてあったな
cで遣るほど高給なチップでもないしなあ。
Cでやらないと無駄なストレスが溜るんだよ
Cでも良いシー アセンブラでも良いアー
Cで書いても別のストレス
ああ、なんか朝痒いよね
ぽりぽり。
991 :
774ワット発電中さん :2011/02/18(金) 01:49:43 ID:Dt/uGT2P
>>971 PICkit? 3 User’s Guide (2 でも同じだと思う)
2.4 COMMUNICATION CONNECTIONS
を見た?
質問 Pickit2Programmer2.61.00 + Device file1.62.03 で、PIC12F1822買ってきて書こうをしたら No device detected となって書けない。PIC12F675は書けるのに・・・ これってPickit3じゃなきゃ使えないの?
確かにリストに無いな
Pickit2では対応していないようですね
pickit2としては対応してるけどMPLABでは使えない奴がうざい
そんなのあるんだ
>>992 普通に使えるだろ
デバイスデータ更新しろや
>>992 手動設定
Midrange
1.8V Min
999 :
992 :2011/02/19(土) 00:41:42 ID:FklUjt+O
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。