タイトルが半角になってる。
その方がいい乙。
半角に拘る馬鹿発見器乙
4 :
774ワット発電中さん:2013/11/20(水) 10:15:43.57 ID:6ZbOnHGj
半角が普通。全角で英数字書く人、変
たまに全角で書かないといけないフォームあるよな
6 :
774ワット発電中さん:2013/11/21(木) 10:21:24.29 ID:umJreHSq
あるある、住所に半角が使えないとかね。
そのくせ、電話番号は半角のみだとか。
プログラマーの怠慢ね。
しかも一部だけ全角で、他は半角じゃないといけなかったり
あ、ごめんよく見てなくて同じこと書いてしまったわ
>>前スレ1000
> 教えてください。
> PICでA/D変換してアンドロイド携帯にUSBで送りたいです。
>
> USBはやったことがないのですが、USB機器にマスターとスレーブがあるのでしょうか?
ある
USBではホストとペリフェラル
> 携帯との場合、PICがマスターでいろいろと手当をしてあげないといけないでしょうか?
android端末がホスト機能を持っていればPICはペリフェラルでいい
> PIC ICはマスターとスレーブどちらにもなれるのでしょうか?
> それともマスター用PICを買うのでしょうか?
ホスト機能を持ったPICならどちらも可能
>>4 英数字だけフォントセットを変えるのは変。
基本的にはフォントセットは一式でバランスを考えて設計されてるから
字体に意味を持たせた文書以外で、フォントを混在させるのはそいつの勝手。
自分の勝手を他人に押し付ける基地外が時々出没するが、そんな輩は無視してけおけば良いだけ。
>>10 お前は何を言っているんだ
大抵の日本語フォントは半角英数字も含んでるだろ
全角も含んでいるがな
んなのはどっち使おうが好き好き、あーだこーだ言う必要なし
PIC
なぁに、むしろ耐性が付く
> PICでA/D変換してアンドロイド携帯にUSBで送りたいです。
USBシリアルケーブルがそこらの家電屋でも売ってるから使ってしまえ。
普通にUARTでいける。
最近のAndroidはシリアル扱えたのか…
意志が伝わってない
プロポーショナルフォントなら全角英数は気にならない。だから2ちゃんの
スレは良いと思う。等幅フォントだと間延びしてかっこ悪い。
そんなのは環境による。ブラウザの種類やOS、俺みたいに自作のブラウザ使ってる奴もいる。
ま、自分の環境しか頭に思い浮かべないでフォントを切り替えて得意になってる奴は
ド 素 人
>>18 半角英数字を使うことをフォントを切り替えるとは言わねーよ馬鹿か
全角英数字は日本語を使用するシステム以外じゃ読めねーだろカス
お前はソースコードも全角英数字で書いてんのか?あ?
簡単な煽りなのに釣れる
21 :
774ワット発電中さん:2013/11/22(金) 15:00:40.02 ID:CC6FuIwO
釣れた釣れた
>>19 >>18の何処に、全て全角にすると書いてあるんだ?
日本語読めないのかw
最近は中国人や韓国人の評判が落ちてるから、国へ帰ったほうが良いぞw
324
調べてみればわかるけど、かなり低レベルな情報まで全てネットに詳細に乗ってる。
日本じゃここまでの情報は絶版された書籍でしか入手できなかったりする。
海外でハッカーが生まれまくってて日本のはしょぼい理由の原因はこれ。
326
>>324 そうらしいね。
ハッカーとかじゃなくて一般レベルの話でもプログラマーが言ってたわ。
英語勉強して海外のフォーラム読んだら疑問点全部書いてあったってw
PICも同じなんだろうか。英語勉強すると楽に情報が手に入る、とか。
>>23 そう思う
ただ下読みは(楽な)日本語で読みたい
今16F84の日本語データシート見つけて読んでるが頭にすっと入ってくる
私も同じです。
一度、日本語で全体をさっと読んでから、必要な部分の英文をじっくりと読む。
日本語だけだと誤訳があるかもしれないし、英文だけだと時間がかかるので。
半角全角は表示の事なのでフォントの話。
JISX0201とJISX0208は表示幅を規定してない。
27 :
774ワット発電中さん:2013/12/01(日) 13:24:08.62 ID:gz5RuwEN
なぜPIC32は32ならでわの広大なメモリ領域が標準装備されていないのかと
29 :
774ワット発電中さん:2013/12/02(月) 00:49:29.12 ID:MMzgAvTz
>>27 必要なら足すから
対応してるのとしてないのじゃ大違い
PIC16F1840のADCについて教えてください
ADCをオンにする、またはチャンネルを切り替えたら aquisition time 待てとデータシートにあります。
同一チャンネルで連続してADCする場合、2回目およびそれ以降はaquisition time待たずに、すぐADCを開始して良いという理解は正しいですか?
32 :
774ワット発電中さん:2013/12/04(水) 09:55:04.10 ID:g2jP0II2
12bitのADコンバータ(MCP3204)とPIC(18F2550)間をSPI通信したいです
8bitを3回通信させないといけないようなんですが
次のような流れで合ってますか?
1)CSラインをLowにする → 送受信可能になる
2)SSPBUFに送信データをセット → 送受信開始
3)SSPSTAT,0がHighになるのを待つ → 送受信完了
4)SSPSTAT,0をLowにする
5)SSPBUFから受信データをどこかに移す
6)2〜5をあと二回繰り返す
7)CSラインをHighにする → 送受信不可になって終了
回路図上げろwww
回路図あげても回答がつかないぞ。やめとけ。
SSPBUFを読み出すと、SSPSTAT,0は自動で0になるんじゃなかったかな?
(ソフトで0には出来ない)
なので4)は不要かと
>>36 なるほど
PIR1,SSPIF(割り込みフラグ)と勘違いしてました
ありがとう!
すいませんもう一つだけ質問させてください
SPIで割り込みを使いたいんですが、PIR1,SSPIF(割り込みフラグ)が立つタイミングが分かりません
「SSPBUFに送信データをセットした直後」で合ってますか?
>>38 送信終了した時。(送信レジスタに書き込みできる時)
PICマイコンを選定するフローチャートみたいなものはございますか?
今回はDIPでI2Cがあれば足りるのですが、今後のために
43 :
774ワット発電中さん:2013/12/12(木) 08:04:04.67 ID:6lgt7Vv6
最近visual basic はじめたんだが、超勉強しやすいね。
プログラムソフトは無料だし、あっちこっちのサイトに初心者むけの講座が
あって、また分からない言葉検索すると具体的な使い方がすぐわかる。
シリアル通信を使ったグラフィック表示つきのデータロガーが簡単にできた。
てかサンプルがいっぱいあって参考にしたんだが。
それに比べてPICはなんだかな。まずデータが英語のPDFで探すのがたいへん。
ロックがかかってて必要なとこだけ切り取り編集もできない。あってめくって
こっちめくって、種類も多すぎて、なんかメンドクサイ。
もうちょっと使いやすいように整理されないもんかな。
44 :
774ワット発電中さん:2013/12/12(木) 10:55:29.09 ID:dGJ3pS/a
なるほど。
VBを宣伝したいんですね。
VBしてたけど、C#にしてしまった。
あとはJavaかな
>>43 サンプルのコピペで色々片付けたいならPSoCが楽。
46 :
774ワット発電中さん:2013/12/12(木) 11:56:42.74 ID:1AhFRcpz
PCのソフト作ってもおもろない
47 :
41:2013/12/12(木) 21:24:31.06 ID:Zufv5ip+
>>42 さん、ありがとうございます
でも選択肢が荒くて使いづらいですね。
FlashでClock内蔵、USB&SelfWriteでI2Cで入手しやすいみたいな漠然な条件で
私みたいな初心者が18F14K50に行き着くまで難儀でw
条件がUSBじゃなくてUARTだったら、永遠に決められないww
正月はトランジスタ回路の復習をしようかと
アナログの知識がないとデジタルの故障を修理できなくて
>>47 >正月はトランジスタ回路の復習をしようかと
いいですね。実際に回路を作るのでしょうか。ぜひ頑張ってください。
テスター1つでもできる実験はありますが、
もし可能なら、オシロで波形を見てみてください。
とても勉強になります。世界が変わりますよ。
可能ならデジタルオシロよりアナログオシロだと、
「回路の気持ち」がつぶさに観察できます。スゴイですよ。
50 :
41:2013/12/13(金) 19:45:04.68 ID:VTY/InI9
>>48 さん ありがとうござます。 ブッ熊ークさせて頂きました
>>49 さん 目覚ましのベル音が小さかったので、トランジスタかましたら燃えちゃいましてw
昼間考え直したらC1815でモーター駆動などできる訳もないのに寝ぼけて半田付けまで
で、深夜に間違ったことしないためにアナログを鍛え直そうというのが主旨です
オシロは欲しいんですけど、置き場所がw
今は分圧してPCのマイク端子を99KHzでWave録音>ヘッダーを削除してExcelでグラフ化
20年くらい前のMSP430スターターでPCオシロ組んだんですが、遅すぎて使い物にならず
早いPICでマルチちゃんのアナログPCオシロ自作できたら最高なんすけど
dspic30f4012でDRV8830つかってモーターを動かそうとしているんですが、全然動きません。
ネット等の解説を見てプログラムを組んだのですが、間違っている点があれば指摘していただきたい。
#include <p30f4012.h>
#include <i2c.h>
_FOSC(CSW_FSCM_OFF & FRC_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_ON & BORV20 & PWRT_OFF & MCLR_EN);
_FGS(CODE_PROT_OFF);
unsigned int I2Cconfig1 = I2C_ON & I2C_IDLE_CON & I2C_CLK_HLD & I2C_IPMI_DIS & I2C_7BIT_ADD & I2C_SLW_DIS
& I2C_SM_DIS &I2C_GCALL_DIS & I2C_STR_EN & I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS
& I2C_STOP_DIS & I2C_RESTART_DIS;
unsigned int I2Cconfig2 = 267; //100kbpsのつもり
void writeI2C(char address,char data);
int main(void)
{
OpenI2C(I2Cconfig1,I2Cconfig2);
IdleI2C();
I2CADD = 0x09;
writeI2C(0x08,0xE1);
while(1);
CloseI2C();
}
void writeI2C(char address,char data)
{
StartI2C();
IdleI2C();
address = address << 1;
address &= 0b11111110;
MasterWriteI2C(address);
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);
IdleI2C();
MasterWriteI2C(data);
while(I2CSTATbits.TBF);
while(I2CSTATbits.ACKSTAT);
IdleI2C();
StopI2C();
IdleI2C();
}
52 :
51:2013/12/14(土) 15:22:15.94 ID:qXwMX3iM
長文スマソ
とりあえずロジアナで波形を見ろ。
波形ならオシロかと
55 :
51:2013/12/14(土) 22:32:24.66 ID:qXwMX3iM
それがSDAとSCLみても何も波形が出てないんですよ。回路は単純なので間違えるはずがないし。
Lチカからやってみたらどうなん?
57 :
51:2013/12/14(土) 22:59:00.06 ID:qXwMX3iM
Lチカはいけました。マイコンは正常に機能しているはず・・・。
i2Cに関しては確認するすべがないですが
プルアップを忘れた、ピン設定を間違えた
そもそも配線があってない
59 :
51:2013/12/14(土) 23:26:06.88 ID:qXwMX3iM
プルアップは2kです。ピン、配線ともにあってます。
プログラムはあっていますでしょうか?
DRV8830で両方オープンなのでアドレスが0x08
5V正転で0xE1にしているのですが。
合ってます宣言する奴は大抵間違えている
>>55 ポートの設定は合ってますか?
アナログ入力設定になってたりとか、出力に設定にしてしまってたりとか..
----
OpenI2C(I2Cconfig1,I2Cconfig2); が、どこまで面倒見てくれるのかは分からないが。
そもそも、プログラムの途中必ず通る所に
while(1);
とか書いてあるソースは端から見る気がしない
63 :
774ワット発電中さん:2013/12/15(日) 20:34:10.90 ID:nYEnfFUO
へたくそなソースは見たくないな
そーっすね
まっ、せいぜい頑張れ。必死に自分で考えてりゃ、
そのうち分かる日も来るだろう。
>ネット等の解説を見てプログラムを組んだのですが、間違っている点があれば指摘していただきたい。
うん、まずそのやり方が間違ってる。
while(1); って、無限ループになる書き方じゃないの?
僕は while(1){}; と書くので、よくわからんけど。
あんま低いプルアップ抵抗だとスレーブのLOW吸い込み能力が低くて応答返せないってことがあるけどな
波形が見えないのならそれ以前の問題だけどな
デバッグ作業中に一時的にやることはあっても
最終版で途中必ず通る場所に無限ループ置いたら
単なるデッドコードじゃねーか
>DRV8830で両方オープンなのでアドレスが0x08
データシートよく見たか?
アドレス上位は 110固定で,アドレス0x68じゃないか
71 :
774ワット発電中さん:2013/12/16(月) 09:42:19.98 ID:9Oe/7Oh0
無限ループで割り込みで処理
スリープとかもあるが
microchipのフォーラムで質問し直しとる
73 :
51:2013/12/17(火) 00:54:48.26 ID:4L/Ui9q8
>>70 上位が110で下位はW/RとA1A0で変化するみたいですね。
で、両オープン,Writeなら11001000=0xC8
ただこれでもちゃんと動かないんですよね。
>>61ポート設定はOpenI2cで設定されているはずです。
>>72 はい。
アドレスが違ってもSDAとSCLがまったく動かないということはないから、
それ以前の問題だろ。
75 :
51:2013/12/17(火) 01:17:21.46 ID:4L/Ui9q8
>>74 回路はpicにDRV8830一つと抵抗2つという単純なものかつ何度も見直したので。
ライブラリがうまく動いていない、使い方を間違えてるんでしょうかね。
明日ライブラリ使わないで書いてみます。
>>71 それなら無限ループがあるべき場所は途中じゃなくて最後だろ
無限ループがある事ではなく、無限ループの後に決して実行される事の無いコードが残されてるから
切った貼ったしただけで中身何も理解してないんだろうなと思われるって話してんの
このI2Cライブラリはクローズするまでそこまでの実行はしないのか?
76の言い分だと唯一の1行CloseI2C();が動作の要って事か?
SDA/SCLがPGC/PGDと兼用だからライター繋いでて動かない系だとみた
>ポート設定はOpenI2cで設定されているはずです。
「はず」だと思わずに、本当に設定されているのか調べなくちゃ。
OpenI2Cの中身ってI2CBRGとI2CCONいじってるだけだからな
当然ポート設定なんてされているわけない
何度も確認したとか、動いているはずとか聞き飽きた
ハード制御はな、初期化後とランニング停止で関連レジスターの中身をマニュアル見ながらチェックするもんだ。
比較すればトラブルも減る。
DCサーボなんかで止められない場合は止めるルーチンを作ってまでやらなければならない作業じゃよ!
DC mortarには誰も突っ込まない優しさ
84 :
51:2013/12/18(水) 19:43:30.85 ID:+HM768+7
>>81 自分の勘違いでしたら恥ずかしいのですが、I2CEN=1ならばSDAとSCLがシリアルポートとして設定され、
一度I2CがスタートするとそのピンはTrisなどにより制御されないとデータシートに書いてあるのですが。
85 :
51:2013/12/18(水) 19:45:08.13 ID:+HM768+7
>>83 これじゃ迫撃砲でしたねw 軍事あさってるとこっちばかり目にするのでw
86 :
51:2013/12/18(水) 20:03:45.02 ID:+HM768+7
>>86 これはどうなったの?
>明日ライブラリ使わないで書いてみます。
ライブラリのソースを読めば原因が分かるんじゃないの?
今まで何日もあったんだからとっととやってれば解決してる。
88 :
51:2013/12/19(木) 01:33:04.14 ID:YCUqoeC2
なんとか解決?しました。
ライブラリの中身を漁って関数使わずにコードを書いていっただけだったのですが。
結局原因不明。xc16のインストールとかですかね?
ともあれ、スレ30以上汚して迷惑かけました。お世話様でした。
>>88 > ともあれ、スレ30以上汚して迷惑かけました。お世話様でした。
いえ、ありがとうございました。
「お世話様でした」と言われたら、こう返すしかないか。
>>88 原因が分からないのは解決とは言えないけどな
ながらくご苦労様でした
30スレ=1000レス×30本=30000レスですしおすし
92 :
774ワット発電中さん:2013/12/23(月) 06:00:01.17 ID:2OpvsD3e
int count; の値、下位3bitだけを、
PORTAの下位3bitだけに代入したいのですが、
temp = PORTA;
temp &= 0xf8;
temp |= count&0x07;
PORTA = temp;
こんな感じでいいですか?
もっとマシな書き方があったら教えてください。
93 :
774ワット発電中さん:2013/12/23(月) 06:13:39.76 ID:2OpvsD3e
ん? 何か「&」だけ文字化けしてる。
全角にしてみました。
temp = PORTA;
temp &= 0xf8;
temp |= count&0x07;
PORTA = temp;
>>92 ちょっと難しすぎて、ここでは無理。ひやかしばっかりだからねーここは。
TRISレジスタでの設定は、他のビットも出力設定なん?
もしも下位三ビット以外が全部入力ビットなら
そのままcountの値で上書きしちまえばいいんでね?
>>93 冗長でも自分で判る&コンパイラが誤解釈しないコードを書くべし
1ヶ所にまとまった4行だろ 汚くてもいい 全体が破綻しないことを優先
>>93 こんなんで、どう?
temp = PORTA; // copy
PORTA = (temp & 0b11111000 ) || (count & 0b00000111); // 下位3bitにcount代入
論理ORではだめな予感。
LATが使えるチップならLATを使う。割り込みとの競合に注意する。
99 :
774ワット発電中さん:2013/12/25(水) 18:35:26.30 ID:3d1zITb2
>>98 LATって何の略でしょうか?
Latch A○○○ Trigger とか?
>>99 最近の品種を使ったことないのか。
PORTAで読むと端子の状態を読むが、LATAで読むとレジスタを直接読める。
例え端子がGNDに落ちていても、TRISAで入力に指定していても、1を出力
してあれば1として読めるから、ビット操作するときに有用。
>>100 すみません、機能はわかるのですが、
アルファベットの3文字は、何の省略ですか?という質問です。
a_port &= 0x10 とかの書き方はしないので、LATは無くてもいいんです。
テンポラリの変数で処理して、結果をポートに吐くのです。
LATx = PORTx Data Latch Register
latch
(ドア・門などの)掛け金,ラッチ.
だから、頭三文字の単なる略号でいいんじゃないの。
>>100 16F84しか使ったことのない自分としては ( ゚д゚)
ROMってればいいことあるなぁ
今のPICには
バンクは無くなったの? 各割り込みのベクタアドレスはあるの?
データシート見る努力くらいは必要じゃなかろうか
バンク、べらぼうに増えてるお…
もはやステータスレグで仕切れなくて
バンク切り替えようのレジスタが創設されてたとおもふ
108 :
774ワット発電中さん:2013/12/28(土) 11:06:43.08 ID:YGe8yxBP
ステータスレグ
レグじゃなくて、レジな
折角、此処流の独特の言い方が誕生するところだったのにな。
ステータスレグ、かっこええやん
おれのレグ、もはやステータスレグで仕切れなくて
バンク切り替えようのレグが創設されてたとおもふレグ
hogehogeってホゲじゃなくてホジェなんけ?
アメリカ人が使うとしたら「ホジホージ」とか言いそう。
Oginoさんが初見で「オジノサン?」と何人かに聞かれてたぜ
registerの略のregをレグと読むのはそう違和感無いけどな
少なくともOPTION_REGはオプションレグって読んでる
114 :
774ワット発電中さん:2013/12/28(土) 15:38:39.01 ID:GQrQ5UPr
しかしジャスコに行ってレグに並ぶ、といわれると吹くなw
”レグ”と聞くとスペリングが”LEG"となっていそうだ。
PICで通常版とメモリ倍増版(通常版とメモリ半減版?)が存在する品種があり
ますが、メモリが少ない方の品種基準でプログラムを作って、それがメモリが
多いほうの品種でHEXファイルをそのまま書き込んでも動かないようなPICって
ありますか?
>>114 ジャスコでもそう?
俺、こないだピアゴでやっても「ハァ?」って言われた。
レグオ・ブロック
regza
>>116 何かスタートアップコードが型番毎に違うようで、
例えば18F25K20向けにビルドしたHexを26K20で使うことは出来ないみたい。
EAGLEの回路記号でランド付きホール
写真だと基板の4隅のスペーサが取り付けられている穴
122です。ありがとうございました。
14,16,17,18となっていますが15がとんでいる理由は何なんでしょうか。
回路図の別のところにあるか、作者が15を消した後にリナンバーしていないだけでしょ
特に気にするようなことじゃない
122です。
なるほど
了解です。
重ねて感謝です。
教えてください
>>122の回路で、R10の役目は、何でしょうか?
128 :
774ワット発電中さん:2013/12/31(火) 01:07:58.86 ID:O21K2uEr
高精度電圧計ならただのジャンパ(ゼロΩ)では?
129 :
774ワット発電中さん:2013/12/31(火) 12:39:29.71 ID:UYmj7QgB
でも、右側にもGND記号があるので、GNDには落ちっぱなしだと思うけど。
電源部のデジタル/アナログを分離するためのものだろう。
DMM_PTN.pdf を見ると ADC の GND (回路図の大きい三角)は別枠になっている。
R5, 10 はインダクタやフェライトビーズになってるものもよく見かける。
131 :
774ワット発電中さん:2013/12/31(火) 18:47:43.89 ID:bPyB7U6E
GNDの三角の大きさで見分けろってか?
なんだその書き方。
白三角
黒三角
分けられるだろうに
>>130 なるほど、そういうことか。
だったら、それはA/DコンバータのGNDピンのところに描いてなければ
回路設計意図は伝わらないよね。
しかたないよ、回路図にこだわる人は年々減少だし。
回路図は、回路設計者の唯一の作品だと思うんだけどね。
picは一つのピンからの出力はかぎられてますけど、二つ三つ束ねて出力を増す、
なんて使い方ありなんでしょうか?あまり聞きませんけど。
電流の話だよね?
難しくは無いかと思うけど、各Port出力でも上限があったような気が。
後は全ポートでも制限というかデバイス上限があるから、そういう使い方をしたらさすがのPICでも暖かくなるのでは…。
まあ、全部足しても100mAもいけなかったはず。
出力上限の大きいシリーズもあるかもしれないけど、普通に間にロジックとトランジスタ挟んで電流調節しなさいと思う。
データシートいくつか見てみたら結構機種ごとに違うなあ
ポートごとに100mAってのと、全ポート合計で200mAのがあるみたい
18F1xK50が全ポートで90mA制限だったりするけどKはみんなそうなのかな
1015か1815を入れてくださいとしか
138 :
774ワット発電中さん:2014/01/03(金) 19:27:40.47 ID:UtBu7NUw
>>134 バイトアクセスだとしても、ポートの遅延で並列に接続された
HLそれぞれが短絡することになるんだけど。
>>138 > HLそれぞれが短絡することになるんだけど。
それはなんかマズそうですね、一瞬だけど。
>138
いや、それは一旦入力ポートに指定してからビットパターンを換えて整えてから
出力ポートに換えればいいだけぢゃね?
とはいえ、
並列出力時に電流が局所的なピンに集中して一本あたりの電流容量を
超過してしまう虞を踏まえればよくない運用じゃないかという希ガス
>>134 あるよ
青色高輝度光らせるとか
でも、同一ポートだよなぁ基本的に
>>141 でも、ポート無駄に使うよりは、トランジスタ一個追加したほうが
楽だと思うのだが。
LEDならポートごとに抵抗を入れてから一緒にすれば原理的に大丈夫。
A/Dとかを使う場合は共通グランドには電流を流したくないね。
>143
あ、なるほど。
となると、バランス抵抗を別個に入れるよりも、n個のポートに
分割なら「(想定するLEDの保護抵抗の)n倍の抵抗器」をn個用意すりゃ
140の懸念は解消されますですね…でもそうなると
142さんのおっしゃる部品点数最小の手段と比すと、
魅力は疑問ってことですかね…
実際に行われてる142さんが不具合を報告されない所を見ると、
PICポート間の内部抵抗のばらつきは
無視できるくらいに少ないのかもしれないですね・・・
(運用期間が短いだけという可能性もまだわかりませんが^^;)
ご教授ください、困っております。
ttp://akizukidenshi.com/catalog/g/gK-05499/ 18F14K50が載ったボードを秋月から取り寄せMicrochipからこれ用のブートローダ
をHexでダウンロードしpickit3をつないでフラッシュメモリが空であるのを
確かめ、HEXファイルをインポートし、プログラムすると無事にコンプリート
が表示されました。
ところがPCにつないでも一回目はドライバをインストールしています、みたいな
表示が右下に現れるのですが、デバイスドライバ上では変化がなく、
Win上のブートローダを実行してもデバイスがないと表示されます。
レジストリのどこかにになんか書き込まれてしまって動かないんでしょうか。
どうしたら解決できるのでしょうか。200円けちったばかりにトホホホホ
OSはXP(確かi945G)、7(確かN68-VS3)、8.1(確かB75-Pro)全部同じでした。
あ、もちろんpowerは3.375V(確か)掛けてます。
>>147 ありがとうございます。そもそもPCのシステムがデバイスを認識していないので
だめかと思いながらブレッドボードの上で足りない回路を補ってスイッチも
つけてやってみたのですがやはりPCのデバイスドライバとしては見えて来ず、
PCのブートローダプログラム上でも not detected 状態です。
実行したのはVDDから10KΩ、MCLRから1KΩを介してつなぎ、そこからタクトスイッチで
アースに落とすというものです。3本ともICSPコネクタに見えてましたので
それらからピンソケットを割ったものをハンダ付けしてブレッドボード上でつなぎました。
>>149 前のを消してご紹介いただいたバイナリを書き込んでみました。
HID準拠デバイスがPCのデバイスドライバのリストに現れましたが、
それ以外のことは変わりません。
PICの回路が壊れているとかではなくPCがドライバをインストールしようとしたときに
なんらかの変更がレジストリに対してなされ、さらに何らかの理由によりPCが認識できないまま
になっていると想像しています。
レジストリをどうにか掃除してやり直してみたいと思います。
ありがとうございました。
と思います。
回答しといてなんだけど 便乗質問です
新しい3V系PICのフラッシュに書き込む場合は
RCDライターの
5.1Vツェナを3.4Vに変え
13Vツェナを8.5Vに変えた
回路で書き込めばいいのでしょうか
5V以下のツェナって期待通りに動かないって聞いたことがありますがどうでしょう
16F84しか使ったことなくて、18F14K50を勉強中です
HIDBootLoaderが書き込んであるPICが安価で入手可能なら簡単なのに
RDCライターで18F14K50に書けるソフトってあったっけ?
前探して見つからなくて諦めたんだけど、あったら教えて下さい
>>150 いや、それで上手く行ってるんだと思うけど(´・ω・`)
確認:
Win上のデバイスリストにHIDデバイスが表示されてる
だけどHIDBootloader.exeでは、NoDeviceと表示されてる
PCを切る>USBを抜く>PC入魂>HIDBootloader.exeを起動>
4番ピンのボタンを押しながらUSBを刺す>ボタンを離す>DeviceReady\(^o^)/
上位天使さま
>>151への回答、お待ちしてます
>>152 PICProg4U
回路そのままだと即身仏
Readme.txt嫁
『そして上手く行ったら教えてください』
おやすみ
155 :
152:2014/01/08(水) 02:20:02.19 ID:1XcR6JRR
PICProg4U2.3.0使ってるけど、RCDライタを選択するとPIC18F(K)系が選択肢に出てこない
PICkit3買うのが最速で幸せになれる方法だと思うよ
PICkit3は故障の事も考えるとPICkit2も一緒に欲しいところ。
自分は2と3とICD3を使ってる
160 :
151:2014/01/09(木) 20:30:17.59 ID:0wttuZOl
みなさんありがとうございます
16F84Aの書き込みが不調でいっその事14K50へ移行したく
PICkitのコピー品で考えて見ます
2550・・・
ニワトリが先か卵が先か(´・ω・`)
>>155 そんなこんなでPICerFTを作ったんだよね
今ならPICKIT2 CLONEがいいな
>>160 >>2550・・・
>>ニワトリが先か卵が先か(´・ω・`)
いや、むしろRCDはPICKITのブートローダーと捕らえるべきと思う
RCDライター使い続けたらシリアルポート壊れたこともあった、懐かしい。
164 :
152:2014/01/10(金) 00:36:03.72 ID:OPrbQuTA
やっぱりRDCライタで18F14K50は無理なのね
PICKIT2クローン作ってみようかな…
>>164 >PICKIT2クローン
3.3V以下を使いたいなら、PICkit3を1個持っておく方に一票。
電池駆動を目指すならなお更だと思われます。
その上で、クローンなりRCDなり作った方が、動作不良、原因不明で悩まない。
5vオンリーなら、多少残念な回路でも何とか動くとは思う。
2550は、触った感じわりと素直に動くと思う。(5Vのみ電池では知らん)
USBのケーブル通過後の電圧降下が大きい時に動作不良が良くあるので注意。
166 :
151:2014/01/10(金) 02:05:38.35 ID:/FC8WSHI
>>164 まず通常の20ピンと配置が違う
多分、
Vdd=3.3V MCLR=8−9V PGM=0Vか
Vdd=MCLR=PGM=3.3V
さらに書込線が
PGD/PGCなのか(ICSP)
RX/TXなのか(USART)
PICPROG4UはJDM>14K50>RCD?
上手く動くか分からんけど
USBブートローダーが書き込めれば
後はほとんど全てUSBでできるっぽい
ということで
『上手くブートローダー書き込めたら教えてくれ』
>>165 14K50のUSB電源動作の場合
初期値で100mAしか使えない
どっかに500m開放するビットがある
2550も同じ仕組みかも
OPTION でエラー、でもOPTION-REGでok。
GODONEでエラーが出てGO_DONEでok。
なんだかよくわからないんですが、どうなってるんですか?
>>167 あんたの質問と一緒で必要な事が書いてないんだろ
PICKIT2のデバイスファイルは専用のエディタで編集できるので、
新しいデバイスにも実は対応できたりする。
PICKIT3クローンもある
>>168 ま、たしかにぶっきらぼうな質問ではあるが、これで意味がわからない人は
答えもわからないと思うんだな。違うかな?
その二組の文字列が、それぞれ同一だと本気で思うのか??
>>171 > その二組の文字列が、それぞれ同一
どうゆう意味?
173 :
774ワット発電中さん:2014/01/10(金) 17:33:11.33 ID:ychYg3zN
まぁ、どうでもいい話だよね。 エラーなら仕方無いだろ、書き換えろ
>>173 >ないんだろ
>思うのか
>無いだろ、書き換えろ
こうゆう書き方やめない?印象悪いよ。
なんだかよくわからない、どうゆう、こうゆうって書き方もイライラするのでやめて欲しい
俺らはエスパーじゃないんだ
176 :
774ワット発電中さん:2014/01/11(土) 00:21:18.29 ID:1gPidYmN
>>174 で、結局何が言いたいのだか? GO_DONEじゃなくて、GODONEが正式だろ!って?
GO_DONEで書けば問題無いのでしょ? 併用できるようにしておけ、と言いたいのか?
GODONEで通したければ書き換えれば? は返答になってると思うが。
そもそもの書込みの趣旨に問題があるのでは?
>>167 動くコードが 正義
動かないコードは悪
「どうゆう」、「こうゆう」って書き方もイライラするのでやめて欲しい
>>167 の質問を見て何がまずいのか考えてた。
どうなってるかを述べた後にどうなってるかを尋ねてるんだこれ。
分かりやすく書き換えると、こうなる。
OPTIONでエラー、OPTION_REGでOK
GODONEでエラー、GO_DONEでOK
となっています。どうなっていますか?
これでは答えようがない。
どーゆー、こーゆー
183 :
178:2014/01/11(土) 19:27:32.80 ID:06fAb6NR
>>181 OPTION OPTION_REG エラー
この三つでピンと来ない人が回答できるとおもわないけどね。
なんで、なんでもかんでも答えようとするのかな。
知らなきゃ、スルーすればいいのに。
文句をつけたいだけなの?
文句が付くような書き込みをわざとしてるんだからこうなることぐらいわかるだろう
人から情報を引き出すにはそれ相応のやり方があるんだよ
それを守れないならGoogleにでも聞いておけ
>172
たとえばCのstrcmp関数に"OPTION"と"OPTION_REG"を渡してコンペアしたら
同一の文字列だとみなしてくれると思いますか?という意味ですけれども。
結局コンパイラやプリプロセッサだってインタプリタの一種なんでしょうから
特定のアドレスや機能に割り当てられている予約語を用いるなら
それにあわせる必要があるでしょう。
なんでしたら、OPTION equ OPTION_REG とか定義しておけばいかがですか?(←ためしてない、ダメだったらごめん)
>>185 たしかにのそのとうり。正面から言われたらそのとうり。
でも、ここはokwebじゃなくて2chなんだから
「OPTIONでエラーがでてOPTION_REGにするとOKになるんだけどなんで?」
じゃだめかね?
答える人も「Googleにでも聞いておけ」程度なんだからさ。
どっちもどっちじゃない?
左手に持ってるの食ったらウンコで右手に持ってるの食ったらカレーだったんだけどなんで?
と聞かれたら、「左手にウンコ持ってて右手にカレー持ってるからだろ」としか答えようが無いじゃないか
他に期待できるのはせいぜい「食う前に気付けよ」って突っ込まれるぐらいだろ
おまえはどういう答え期待してたワケ?
189 :
181:2014/01/12(日) 02:27:30.34 ID:wuTa389h
>>184 何か勘違いされてるが、
ピンとくるが、お前の態度が気に食わない。
そのうえお前の質問は質問になってない。
だから答えようとはせず、まずは質問の仕方を教えようとしている。
文句はつけたいが、だけではない。
とはいえ文句だけ付けた形になってしまったのは申し訳ない。
「何が起こっているか」
「それが起こることの何が問題か」
は質問をするうえで必須だ。
今回は後者が無い。
質問を正した奴が最後まで責任持って答えてくれるならいいけどな
大抵は手に負えないと分かると逃げてしまう
PIC=うんこ ってことはわかった。
他の初心者も見てるんですからトラブルは他の初心者にもわかるように書いてくださいよ
193 :
774ワット発電中さん:2014/01/12(日) 09:22:38.71 ID:rhmlrjL2
まぁ、レジスタ名称が昔と変わってて・・・なのは確かですね
194 :
774ワット発電中さん:2014/01/12(日) 11:29:01.55 ID:FEw8iF/H
「いう」を「ゆう」って表記するのはゆとり教育では許容されていたらしい
196 :
774ワット発電中さん:2014/01/12(日) 12:31:52.68 ID:7RBIBg2b
デバッグ用のシリアル送信で困ってるので教えて下さい。
デバッグ専用に簡易版USBシリアル変換を作ろうと、
Microchip Solutionsサンプルの「Device - CDC - Serial Emulator」を
そのまんまPIC18F14K50で作りました。外部との接続用ピンはTX,RX,GNDだけです。
Windows XPのハイパーターミナルだとループバックテストはOKだし、
実際にデバッグ時みたいなシリアル送信をおこなってXPのハイパータミナル画面に
ちゃんと出力されました。
でもWindows8上で、同様なことがどうしても実現できないでいます。
hypertrm.exeとかTera Term Proの画面に何も出力されません。
本物のUSBシリアル変換を使ってWindows 8上でループバックテストを
おこなってみましたが、TXとRX、CTSとRTSを結べば、hipertrm.exeでもTera Term Proでも
OKでした。
Windows XPのハイパータミナルは何か条件が緩いのだと思います。
Windows 8ではどうしたらいいでしょう?
「Device - CDC - Serial Emulator」のソースを、
もっときちんとプロトコルを実装するように修正するかなにかしないと
いけないのだと思いますが、何か他に解決策はありますか?
まず対向させて送信が悪いのか受信が悪いのか両方ダメなのか見てみたら?
Windows8だと「フローなし」が選択できないって事ですか?
200 :
774ワット発電中さん:2014/01/12(日) 15:35:29.47 ID:7RBIBg2b
>>197-199 XPのハイパーターミナルは緩いと書きましたが、それは正確じゃなくて、
正しくは「XPの(このデバイス用)ドライバーは緩い」が正解だと思います。
>PIC18F14K50を接続した時に、正しくデバイスマネージャーに
>COMデバイスとして登録されますか。
はいもちろんです。デバイスマネージャーで正常なcomポートとして登録されていないと、Tera Term Proでもhypertrm.exeでも
そのcomポートを選択すること自体ができないですから。
ファームウェアのソースをちょっと見てみると
#define USB_CDC_SUPPORT_DSR_REPORTING //Signal
from UART peripheral device, to CDC/USB host. Indicates UART peripheral is ready to receive data and/or commands.
というのがあるので、これを有効にして、
CDCNotificationHandlerが呼ばれる度に
SerialStateBitmap.bits.DSR = 1;のUSBTransferOnePacketを送るようにしても駄目でした。
だけど誤解ないように。全然詳しくありません。ここまで適当に作業してます。
Microchip製のファームウェアとMicrochip製のドライバなのに、仕様が合ってないんですよね。
表面実装型のPICを使いたいんですが、普通は基板にハンダ付けした後に
ファームを書き込むと思いますが、先にファームを書き込んで、その後に
ハンダ付けをしても問題ありませんか?(書き込んだ内容が化ける、等の
問題は生じないでしょうか?)
>>202
問題ありません。
>普通は基板にハンダ付けした後に
ファームを書き込むと思いますが
そうなのか?普通は逆なんじゃないかと
>>204 試作の時は、実装後に書き込みが多いが、
量産時は書き込み済みのを実装する事が多い。
(生産台数によるが)
206 :
196:2014/01/14(火) 00:12:24.02 ID:QJIGq4PG
LEDを追加してどこが問題か探ったところ
次のようなハードウェア直叩きのところまでちゃんと呼ばれてました。
#define mUSBUSARTTxRam(pData,len) \
{ \
pCDCSrc.bRam = pData; \
cdc_tx_len = len; \
cdc_mem_type = USB_EP0_RAM; \
cdc_trf_state = CDC_TX_BUSY; \
}
なおさらドライバが問題ぽいですね
空きピンってどうしてる?
データシートには外部出力LOにして10k、GNDにつなげって
書いてるけどオープンにしてるとやっぱまずいのかね、今の所問題なさげだけど
>>207 とりあえず、出力設定にしとけば良いと思う。
みなさん こんにちは
開発言語のおすすめください(16F、18F)
XC8
漢は黙ってMPASM!!!(^д^)
>>210-211 XC8だとMPLABのヘッダファイルやサンプルが(そのまま)使えないとか聞いたけど、どうですか?
SwordfishってC言語を推してるHPがあって、どうなのかなって
無料だとHI−TECH、XC8、Swordfishくらいですか
あと、C言語で数ウェイト待ちたいときにアセンブラでNOP入れたいんですけど
Cでアセンブラ書き込む要領を教えて下さい
>>212 NOP() っていうマクロが、標準で定義されてる。
214 :
774ワット発電中さん:2014/01/18(土) 14:38:31.08 ID:pSCYYDQH
pic16f88の
INTOSCのレジスタの設定で
stableとno stableと
あるんですけど
どうやって決めたらいいんですかね?
初心者なもんで
デメリットとメリットが分からないです
215 :
774ワット発電中さん:2014/01/18(土) 18:30:25.72 ID:g0gVyqgF
データシートには何て書いてあったの?
ていうか、データシート読んだんだよね?
>>214 4.6.4 MODIFYING THE IRCF BITS
(略) Time sensitive codeshould wait for the
IOFS bit in the OSCCON register to
become set before continuing. (略)
IRCFを弄って動作周波数を変更した後に、周波数が
安定したか否かのチェックに使えるようだけど。
スリープ復帰後の動作とかはどうだったかな?
使った事無いから良くは分からんわ。
>>216 何がアフォなんだろ?
自分が気に入らないこと言うヤツはみんなアフォなんだってさ。
最近そんな困ったヤツが増えた。
データシート読んでないのバレたからだろ
>>219 > データシート読んでないのバレたからだろ
厳しいね。ここ初心者のスレだからいいんじゃないの読んでなくたって。
初心者と不精は違うのよ
ま、質問するのも答えるのも「初心者」ってのがこのスレだろ。
データシートに書いてあることの意味が正確にわからない
のが初心者であって…
一生懸命読むための努力はしているつもりなんだけどさ
小学生に大学数学のテキストを読んで理解しろって方が無理なのかも
「読んだ」かを論じているわけで
「読めた」かどうかは、読んでみななきゃわからんでしょ
とんちんかんな書き込みだこと
ここ言い争いばっかりになってるけど
質問する人が初心者
回答する人が上級者
これがすべての争いの原因になってないか?
データぐらい読め!>英語がスラスラ読めたら質問なんかするか!
初心者スレ普遍の問題っぽいけど、今回の一連の流れは
>>215をあふぉと言った
>>216(質問主?)が単独で悪い
データシートのPDF(英文)で問題のビットIOSFを検索して、前後を知ってる単語だけ適当に読んだら
迷ったらONと分かるし、15.12.3 TWO-SPEED CLOCK START-UP MODE に行き当たる
スマホしか持ってないとは言わないだろうし
>>225 だから、条件の後出しをするから嫌われるんだよ。
英語が読めない、データーシートが理解できない、って最初に書けよ。
228 :
774ワット発電中さん:2014/01/21(火) 01:16:17.31 ID:mKBEZQ3h
答えてもないし、答える気もないなら無視しておけばいいのにね。 変なのが増えたね
質問する人が趣味でやってる人
回答する人がプロの職人
これもあるかな。
230 :
774ワット発電中さん:2014/01/21(火) 05:02:59.94 ID:mKBEZQ3h
>>229 素人同士でもいいじゃないですか?
俺は動作中のクロック変更だのスリープだの使わないので、Don't careだけどw >IOFS
ケチを付けるだけで具体的なことを書かないのは自分に自信がないから。
ド玄人がよくやる。
233 :
774ワット発電中さん:2014/01/21(火) 13:09:45.79 ID:uoyqJbFl
>>214です
言葉足らずでした!
すいません!
あと
>>216は僕じゃないです!
設定の方法は
前に使用したpic(16f1938)とは
型がちがったので
データシート見て確認してました。
なのでそれについては問題ないです
(続く)
聞きたいのは
クロックの種類の選択の方針です。
安定バイブレータと
不安定バイブレータって
回路に応じて選択するんですよね?
どういう用途のときに
不安定を使うのかを
教えてほしいです。
>>234 IOFSは内蔵発振器が安定しているかチェックするビットです。
> 安定バイブレータと
> 不安定バイブレータって
を選択するビットではありません。
よって、気にする必要はありません。
>>217 f88使ったこと無かったから今調べたけど、なんでこのビットR/Wなんだろね?
確認だけならRで良さそうなものだけど
新しい1xxxだとレジスタもOSCSTATになってRのみと。
ライトする時ってどんなシチュエーションなのだろう?
237 :
236:2014/01/21(火) 13:59:56.81 ID:ayoB960Z
>>234 あぁ、さんざみんな書いてるし、
>>235さんの止めもあるけど、
このビットは読むだけのビットです。
内部OSCが規定誤差以内で動作できているか?を確認するもの。
でもドキュメントはR/Wになってるから面白いね。
238 :
234:2014/01/21(火) 14:14:47.89 ID:uoyqJbFl
ありがとうございました!
説明をみたかんじ
OSCTUNEの設定のときとかに
使うんですかね?
まあ今回の用途ではあまり関係ないので
気にしないでおきます。
続けて質問して悪いんですが
今回内蔵発振器を使いたいんですけど
Fosc=IRCFbit
ってことでいいんですかね?
1/4がFOSCとか書かれてる
サイトがあるので
よく分からないんです
クリチンポがpicpicしちゃう
>>まあ今回の用途ではあまり関係ないので
>>気にしないでおきます。
>>続けて質問して悪いんですが
お前何様、Fosc=IRCFbitについてもまた、同じようにコメントする気か?
>>まあ今回の用途ではあまり関係ないので
>>気にしないでおきます。
どうでもいいような質問を自分で調べもせず、おしえてもらったのにその態度はなんだ、失礼にも程がある。
241 :
774ワット発電中さん:2014/01/21(火) 17:15:54.49 ID:mKBEZQ3h
>>238 OSCTUNEの時は影響受けるのかどうか分からんね>IOFS
シフトが起きてるのか、知る手立ては無いみたいな記述もあるような。
>4.5.2 OSCTUNE REGISTER
略
>the INTOSC clock will stabilize within 1 ms. Code execution
>continues during this shift. There is no indication that
>the shift has occurred.
Fosc はオシレータ周波数の事なのではないかな。
命令サイクル=Fosc/4と話が混ざってんのかな。
242 :
774ワット発電中さん:2014/01/21(火) 22:41:42.78 ID:f0JG30XR
>>242 次回からはokwebあたりで質問したほうがいいよ。
ここはなんかメンドクサイ連中のサロンだから。
何かいちゃもんつけようと待ち構えてるからね。
やっぱりわしらは誰かに管理してもらわないとうまくいかないんだよ。
無責任、保証なしの便所の壁の書き込みなのに
礼を求めたりあわよくば対価を得ようとするメンドクサイ連中。
いくつかmixiのフォーラム入ってるけど(PICフォーラムってある?)
今、mixiって息してる? お勧めはOKWEB?
やっぱログ読んで勉強して、わかんないとこ質問って形がいい
最初は何を質問していいかわかんないというのは永遠の課題ってことでw(初心者)
>>245 mixiにPICコミュはあるが、息してない
247 :
245:2014/01/22(水) 01:23:59.87 ID:IJf9mqZz
>>246 情報乙です
じゃあおいらはここで勉強するか
過去ログにあった18Fをアセンブラでっていうの読んだ
勉強になるけどやっぱりCがいいや
Z80のころはアセンブラしかなかったし、4KBで十分だった
むしがよすぎるかもしれんが、microchipの人も少し介入してくれて手に余るような
質問には答えてくれたら、picの発展につながるとおもうんだがね。
あるいは日本語のフォーラムつくってくれるとか。
なんせ、ここは魔境だから。
>あるいは日本語のフォーラムつくってくれるとか。
有るよ。おもいっきり過疎っているけどね。
本家のmicrochipに日本語で投稿できる掲示板あるやん。投稿したことあるで(どやぁ
tiのマイコンスレってある?
BLE112-AとpicでBLEデバイスを作ろうと思ったんだけど
これBLE112-Aだけで出来るんじゃね?
と思いました・・・
>>250 それはしらなかった。
ここのほうがまだましなのか。
253 :
774ワット発電中さん:2014/01/23(木) 13:04:22.09 ID:Tbpl1ns3
真冬寒いとよく落ちるんだけど
コンデンサ容量増やしたら直ったような気がしたんだけど
関係ある?
電解は温度でコンデンサの挙動が変わるから
冷やすと暴走って症状も回路構成次第ではありえるお
低温環境でも稼働させるならコンデンサ選びも慎重にね
いやいやいやいや
-40度とかならいざ知らず、日本の冬程度でコンデンサの温度変化で
挙動が(ry とかおかしいから。
本当にそうなら、設計の許容幅が狭すぎですから。
>>255 PCが冬の朝に起動しなくなって、しばらくオンオフすると起動、起動してしまえば問題ないのは、
たいてい電解の劣化で、ESRと周波数応答が悪くなってくるからですよ。
マイコン機器でも起動時の負荷が重いと、リセットかかったりします。
PIC10、12、16系でロータリーエンコーダを読み込む最強のサンプルはどれ?
>>257 自分で作ることです。最強ですよ。
人の作ったものをそのまま流用するなんて、怖いじゃないですか。
そうなの?
理解もできず組み込むだなんてなかなか難しいことをいいなさる。
というわけでロータリーエンコーダのドライバ(?)ぐらいは自分で作りなさい。
一通り悩んでからサンプルを見に行くとかすると、結構はかどるよ?
いくつか公開されてるのを試してみたら、カウントミスしたり一瞬逆走したりするものばかりで
秋月の安物クラスじゃ満足に動かないみたい。
プログラムの出来じゃなくアルゴリズムのところで要改善だと思うけど、
オレには思いつかないんで他力本願で行こうかと。
>>261 それは多分コンパイルの最適化ができてないんだと
Cのサンプルのアルゴのループ部分をアセンブラで書き直す
>>261 ELMさんのところで公開してるステートマシン方式?を参考にするといいかも
264 :
774ワット発電中さん:2014/01/23(木) 22:03:38.36 ID:AzeWnKc0
キャプチャをミスってる ってーのは容易に想像付きそうなのだけど。
アルゴリズムで要改善の前に、使ってるアルゴリズムを理解できてるのかな・・・
>>263 同じ考え方のを一発目に試して全然駄目だった。
光学エンコーダとか、ものすごく綺麗に矩形波が出ないと無理っぽい脆弱なやつ。
>>265 あれって素直にステートマシンで組むのと同じなのかと思ってたけどそうでもないのかな?
A相とB相の状態図を作って確実にカウントすべき遷移だけでカウントすればいいはずだけど、
それでだめなら入力のチャタリング対策とかするしかないでしょ
安いエンコーダは接点式だから少し使えばLo側(接点ON時)に乱れが出るわけで、
それを考慮したアルゴリズムじゃなきゃ光学式以外でマトモに動かないと思うわけで、
実際も思った通りでミスばかり。
知恵のないオレは接点式を諦めるしか無いのか。
接点式でちゃんと動くソース書ける人は、勿体無すぎて公開しないんだろう。
コンデンサ付ければ一発
秋月で昔DDSをコントロールするキットを買ったけどダメダメだったな。
結局高額エンコーダを買って自分で作り直した。
>>267 接点式なんて使うなよ
余分な手間が増えるだけでたいした金の節約にならん
>>268 LPFつけてもある程度の改善にしかならんし、容量増やすと速く回した時に取りこぼすことになる。
なので強いソフトを探しているんだ。
>>257 dsPIC(PIC24?)ならエンコーダー内蔵がある。
273 :
774ワット発電中さん:2014/01/23(木) 23:07:32.46 ID:AzeWnKc0
回路が腐ってるのはどうにもならんだろ。 腐ってる通りにしかプログラムは動かん。
イジけた振りしてもダメ
あ、回路のほうでふと思ったんだが、何も考えずに単純にLPFで波形鈍らせるだけじゃなく、
しきい値をうんとHi側に持っていけば、軽いLPFでも強くなるんじゃなかろうか。
なんか見落としあるかな?
あ、回路はスレチだな
みんなありがとう
公開ソースで駄目なら光学式使うよ。
もちろんコンデンサにシュミットインバーターつけるんだよ。
あ、なんか分かってきた。
ちょっと面白そうだから明日暇なとき考えてみる。
18F14K50をつかってシリアル通信USBエミュレーター作ってみた。
picからpcへの送信はサクサクうまくいくんだけど、逆の受信は
もたついていまいち。
そこで、USBシリアル変換モジュール、ケーブルでも買おうと思って
秋月のサイト見てるんだけど、これってどうなの。
送信、受信ともサクサク動くの?
なんのこっちゃ
279 って馬鹿なの?
>>278 >逆の受信はもたついていまいち
具体的には?
貼り間違えたったwww
>>278 PICの処理速度(割り込み処理)が遅いのが原因。
ロータリーエンコーダ読みコード書いてみた。
良かったら使って結果を教えてくれ。
#define ROT_A 0
#define ROT_B (ROT_A+1)
readrotenc:
movf GPIO,W
movwf temp
rlf temp,F
xorwf temp,F
xorwf last,F
btfsc temp,ROT_B
comf last,F
btfsc last,ROT_A
incf count
btfsc last,ROT_B
decf count
movwf last
retlw 0
それc言語?
1クリックで4カウントか。まともに動かないよ。
>>267 ソフトウェアでチャタリング除去するには
状態が変化したらタイマーを初期化してタイマーフラグとか見て安定するのを待ってから
取り込んだりするんだよ
どっちの受信が遅れるのかよくわかんないけど
呼び出し元でバッファをflushしてますか?
>>289 その方法でまともに動くのはエンコーダが新品のうちだけで、少し使ったらバウンスノイズが酷くなってエッジ以外でミスカウントを始めるんだな。
製品には使えない。
コンデンサと抵抗で波形を丸めて、やっと使えるレベル。
ソフトだけで対処したい素人は光学式使って幸せになればいい。オレもそうした。
>>291 ハードとソフトの対策を併用すりゃいいんじゃないの?
機械式ってツマミとかの入力用だと思ったけど、Digikeyで光学式は安いのでも千円近いから
複数あるとツライだろうな・・・
>>290 > 呼び出し元でバッファをflushしてますか?
残念ながら意味がわかりません。どこのバッファですか?
RS-232Cを使えばtera termからキーボードのAを押すとpicが文字”a”を認識してLEDが一瞬光ります。
Aを連打してもすばやく反応します。
エミュレーター経由の場合はキーボード押しても一瞬間があいて光ります。時には数秒あきます。
連打はできません。
CDC Serial EmulatorじゃなくてCDC Basic Demoためしてみ
それでもたらないようならお前の書いたコードが悪い
光学式ロータリーエンコーダーなんで自作すれば数百円じゃん
>>278 CDC Basic Demoだと
Tera Termで数十バイトのテキストファイル送っても
即座に返ってくるよ
CDC Serial Emulatorは知らない
>>296 うまく自作できる人はうらやましいわ
作らずに言ってるだけなら可哀想な人だが
>293
フラシュは、PC側(ターミナルソフト)の話。
自分で組んだものなら、putsとかで送ったつもりでも
内部で改行まで貯めることでシステム資源の浪費を
回避しようとしてくれる処理系もあるんですし御寿司。
ロータリエンコーダは用途で使い分けるのでは?
:有接点エンコーダ…低速用で粗い、手動で回して数値の設定などに使う。
:無接点エンコーダ…高速用で細かい、モータ軸などに付けて位置決めなどに使う。
低速用途に高速用を使うのも、高速用途で低速用を使うのもナンセンスだと思う。
私が秋月のロータリエンコーダ\200を使った時は、
買ってきてすぐに、早く遅く& CW/CCWに何度も回して、
チャッタをオシロで確認してから読み取りソフトを組んだ。
もちろんチャッタ時間以上の高速では取り込めないけど、
そんなに早く手では回せないw
プルアップ抵抗だけでMCUに取り込んでいるけど、問題なく使えている。
(今のところは。将来、接点が劣化するかどうかは分からない。
もしも劣化してチャッタが増えたら、またオシロで観測してさらにチャッタ除去時間を長くするか、
それとも新品と交換するか決めないと)
ロリーターエンコーダーって何をエンコードしてくれるの?
普通の人をロリコンにエンコードしてくれるのかな?
>>300 秋月の中華はスペックで1000回転/時間って3.6回転/秒だかんね
仮に24歯だったら11ms/歯なのにチャターが<5msで位相差>2.5msってことは、
指の腹使って気軽に操作したら満足に回転が検出できないと思うんだ
>>301 アルプスだったらもうかなりましだと思うけど(こっち買いたいけど最近戦国でかってないからなぁ)
今の秋月は中華より安いアルプスがあって、中華より波形が汚いよ。
>>302 では「ただし高信頼性の無接点タイプもある」を追加させて下さい。
\500程度だったらすぐにでもこのタイプを購入して、
秋月のエンコーダと交換したいな。
>>304 1000回転/時間=1回転/3.6秒では?
24パルス/回転だから、最高速度でのパルス周期は
3600mS/24パルス=150mS/パルスになる。
>>305 私も中華製とアルプス電気製の両方買って中華製の方を採用した。
もう3年も前なので理由は忘れてしまった。
>>306 オレが書いたエンコーダ入力ルーチンは軟弱だから、アルプスは1週間くらいで誤作動し始めた。
で中華200円に替えて半年経つが、実用レベルで動いている。
誰か劣悪信号でも平気な強力読み取りルーチン公開してくれ!
やっと分かった。
つまりチャター時間>位相差の時でも逆走・カウント飛びのないプログラムを作ればいいのか。
面白くなってきたので考えてみる。
「人は突然一瞬逆走させたりしない」って仮定を入れれば
チャター時間<パルス幅までは何とかなりそうな気がするんだよな…。
チャタリング回避にタイマー使うと、高速回転させた時に取りこぼすことになるよね。
A相かB相の変化を検出して、チャタリングが治まったころにもう一つの相を読んで、
それがHiかLoかで方向を割り出すってのがよくある方法だけど、やってみると弱いんだよね。
よくこれで満足できるなぁって感じ。
CRとシュミットトリガ入れてやっと使えるレベルになる。
>>310 10kHz位でサンプリングして、FIRとかIIRフィルター組めば良いだろ。
キミはそうやればいい。接点劣化には対応できないだろうけどね。
>311 は多分何も分かってないと思うよ。FIR とか IIR の意味も分かってなさそうw
CRローパスフィルタを使わず、12F1822でうまくいってるブログがあったが、程度がわからん。
デジタルフィルターだと接点劣化には対応できなくて、CRとシュミットトリガ
入れてやっと使えるレベルになるという理屈が分からん。
修行しろ
私が秋月の中華ロータリエンコーダを使った時は
----------
A相のエッジで割り込みを掛けて、割り込みの中で
1.B相を読み、そのH/Lレベルに従ってCW/CCWカウンタを+1する。
2.A相の割り込みを禁止する。
3.タイマ割り込みを許可する。
タイマ割り込みでは
1.A相の割り込みを許可する。
通常の処理ではCW/CCWカウンタを見て、0でなければCW/CCW対応処理を行う。
----------
みたいな作りだった。
問題点は、
エッジ割り込みなので、入ってきたノイズのタイミングによっては100%誤動作する。
次のクリック位置で停止するまでのタイマ(チャッタスキップ)時間が重要になる。
利点は<チョー簡単>につきる。
このエンコーダ以外では動作しないかもしれないし(トライした事は無い)、
多分、ド玄人から「そんなものが実用になるか」と言われると思う。
私の場合はタイマー割り込みでA相B相を読み取って、前回と比較判断をしていた。
確か秋月の資料に状態変化の比較みたいなのがあって、それをそのまま使ったと思う。
320 :
774ワット発電中さん:2014/01/27(月) 12:42:01.55 ID:cZRJ4jmc
>>319 普通はそれでまったく問題ない。俺も同じ。
あとは出力端子の波形を見ながら、CRを調節するだけ。
ロータリーエンコーダーごときにそんなに苦労しないと思う。
>>320 違いは極性が逆位か。
センターGNDで、プルダウンがプルアップ、100Kも10Kで、セラコン0.01uFの回路。
ユニークな事に16F628Aだが、入力結果をコンパレータの結果CxOUTを拾ってた。w
使い込むとすぐ誤動作し始めるけどね
>>320 時定数は、ロータリーエンコーダの最高回転周波数と、PICの最低読み込み間隔を決めて、
そこから計算して決定する。最終的にはオシロで波形見て決める。
接点に流す電流は多く流せば速度は上がるが、多いと接点が荒れて壊れる原因になるから気をつける。
デジタルフィルターでも結果は同じだよね
だいたいはそうなんですけど、
10kと100kの1:10くらいの比を設けないと、↑と↓の充放電の傾きが変わってしまいます。
あと、PICはシュミット入力のピンを使います。でないとCRで積分した意味が薄れます。
こうすれば、「相手んが安定するまで待って判定」なんてやらなくてもいいので、
高速化が可能です。
ノイズが乗って、回転方向と逆にカウントするようなエンコーダーは使えないですから。
積分時間だけ遅くなるでしょ。高速化が可能とは言えないでしょ。
>>327 高速化って、普通の機械式のREで、どのくらいの回転速度を想定してるの?
データシートのチャタ以上の速度は出ないぞ。
>>326 そのノイズを取るのがCRとソフトウェアのアルゴリズムの仕事だと思うんだけど?
意味の通じない人は置いといてっと
↑と↓の傾きを同じにする必要は無い。チャタ時間も接点OFF側とOFF側で違うしね。
100kΩとかインピーダンス高くすると外来ノイズにも弱くなるよ。
PIC18でXC8使ってるんだけどさ、レジスタバンクの設定するところで必ず
MOVLBを2回連続で使ってるんだけど何でだろう?
free版だから嫌がらせなのか?
>>330 >↑と↓の傾きを同じにする必要は無い。
そうですか? 同じでないと、遅い方の動作速度に律則されませんか?
>100kΩとかインピーダンス高くすると外来ノイズにも弱くなるよ。
さすがですね。回路図ではあのように書いてありますが、
100kとCは、PICの直前に設置します。
10kは、エンコーダーの接点電流により決定します。
もちろん、PICの入力ピンはシュミット入力を使用します。
適切なCR+シュミット入力ピンを使えば、
ほとんどのアプリケーションで、ソフトのチャタ取りは、不要になります。
通常の押しボタンSWと異なり、
エンコーダーは、接点容量が少ないので注意が必要です。
>高速化って、普通の機械式のREで、どのくらいの回転速度を想定してるの?
データシートのチャタ時間はわかんないけど、
12パルス/回転 のエンコーダーで、指で回す最高速度として、3回転/secを考えると、
12×3=36パルス/s=36Hz、duty=50%とすれば、H=L=13.9ms。
H/Lになってから、1/2までの時点で正逆判定するとして、7ms以内。
100k × 4700pF = 470us @63.2%。
1msのタイマー割り込みで充分拾えそうな気がする。
抵抗比を大きくするのは、結果として遅い方に合わせてることになるよね?
遅いのは接点ON→OFFの時で、この方向はチャタが少ないから無視でいい。
OFF→ON側だけ観測してチャタがしっかり取れればOK。
だが、使い込むとチャタが増えるから余裕を持って大きく鈍らせなきゃ駄目。
それは高速化を犠牲にする。
±1以外の変化を無視してれば生でもおk
ルーチン次第
達人はそもそもそんなエンコーダーを使わない
>>335 その通り。理屈の上では無限大アンペア流れることになるよね。
>モヤモヤが発生しており、余り気持ちが良くありません。
それは測定方法が悪いからだよ〜 と突っ込みたい。
なんで3.3kなんだ。10kと、値が反対だよ。
>>326 全部10Kにしたのは部品を揃える都合もあって。
外来ノイズ耐性か、確かに。でも100K位でも近傍なら負けそうもないきがする。
立ち上がり立ち下がりに関しても考慮すべき?は
>>330氏の言でよし?
>>335 電流が少なすぎても、接点が錆びやすくなって、寿命縮む。
スイッチによっては、最低電流が決まってる物もある。
>>344 具体的にどの接点式ロータリーエンコーダに最低電流が決めてあるのか知りたいな
無いと思うけど
>>325 デジタルフィルターの方が急峻な特性作りやすいので、有利と思う。
最高の回転数決めておいて、それ以上の周波数成分は落とすとか。
最高の回転数決めておいて、それ以上の周波数成分を落としちゃ〜〜駄目だろ
やってみればいいよ。うまくいったら褒めてあげる
1msタイマー割り込みで読んでビット列のFIFOバッファに入れて
OFFが3個並んだらOFF、それ以外はONでいいんじゃねぇか
>>349 A端子の立ち下り わろす
ここまでひどいとは思わんかった
これの出処と使用時間は?
>>338 私が使ったロータリエンコーダ(クリック位置で停止)と
エッジ検出方式のアルゴルリズムなら読めると思う。
しかしエンコーダも用途によって変わってくるし、
<この読み取りソフトがあれば全てOK>というのは難しいだろうな。
>>346 デジタルフィルター使うとして遅延と折り返しはどうするつもりなの?
ま、アナログ知らない奴はデジタルデジタルって言うこと多いな。
それともソフトで積分かけるのもデジタルフィルターって言うのかな?
353 :
774ワット発電中さん:2014/01/28(火) 10:15:11.64 ID:z8dY2Sid
まずはCRでフィルタしてシュミットで受けるのが基本でしよ。
USB機能付のPIC18を使ってますが、2つの同じ自作ハードに対して
純正HID Bootloader(13-06-15版)は表向き、どちらも正常に動く。
Loadしたファームは片方でしか動かない。
動かない方も、全く動かないわけではなくUSB周りだけが動かない。
(USBに無関係なTimer割り込み処理などは正常に動いている)
という症状が出ていて解決の目途が立っていません。
原因として何が考えられますでしょうか。
また、こういった場合はどうやって原因を絞り込むのが常套手段でしょうか?
>>353 アマチュア電子工作では、シュミットトリガ入力の74HC14や74HC540は納得分岐ICだと思う。
シュミットトリガ入れたけどノイズで誤動作した、という場合に、
<対策したんだし、いつも誤動作するってわけじゃないし>と諦められる。
プロなら<くそっ面倒な事になったぞ>と胃が痛くなるけど。
>>354 ソケット使ってるなら、PIC入れ替えて症状が移行するか見てみたら?
>>351ってひょっとして、
>これはアルプスのロータリーエンコーダーのものです。こういう物があるので万能な処理ロジックは存在しないのです。
の台詞があるブログ主ですか?
それとも読者かな。
>>356 トラブルシューティングが苦手な人って、切り分けと良否判定が下手なんだよね。
>>355 シュミット使えばいいってもんじゃないと思うよ。
前段にCRで電圧の変化を抑えることをしないと、シュミットの意味は無いよ。
具体的に言うと、チャタがあっても、それをシュミットの窓内に収めてから
シュミットに入れる。74HC14なら窓は1Vね。
接点復活剤塗ってみたらエロい目にあったぜ
絶対にやるなよ
>359
いくらチンコがPICPICしないからって接点復活剤をED治療薬だと誤解するのは
古今東西お前ぐらいだろうから安心汁w
(亀頭は乾いていても実は粘膜らしいからナイーブだよ、溶剤はやめておけ・・・)
>>357 その文章は私が書いたものではないです。今初めて見ました。
>>358 前段にCRで電圧の変化を抑えることをしないと、シュミットの意味は無いよ。
もちろんノイズ対策にシュミットトリガ入力ICを使う理由は
信号を積分する→スレッショルド横断に時間がかかる→出力がばたつく
の防止です。書くまでもないと思ったのですが。
うーん、でもよくよく考えてみたら、これまでにデータバス、アドレスバスなどを
積分回路無し74HC540やHC541で入力した事もあるなぁ。
<全く意味が無いことも無いのかもしれない>ぐらいで妥協していただけないでしょうかw
どうでもいいけど(よくないけど)、74HC540ってシュミットじゃないですよね?
メーカーによるのかな?
364 :
354:2014/01/28(火) 16:51:33.63 ID:IuGIIkCW
>>357 すいません、分かる方だけお願いします(馬鹿はご遠慮願います)
>>362 お前は日本語が不自由なのか?
別にID:Kvc/zr7Zを味方しないが、
「積分もせず、シュミットで受けないやり方を今までもした事がある」
って書いてあるんじゃないの?
実際完璧なは無理だと思うが、ある程度使用に耐えるはあると思う。
>>362 >>365 74LS540/LS541を74HC540/HC541と書いてしまい、意味が曖昧な文章を書いてしまいました。
迷惑をかけてしまって申し訳ありません。反省しています。
VRで境界電圧設定できるようにしたコンパレータとLPFで出来ないものかな
時間あったら組んでみる
もう面倒だからTHEN2000を買って幸せになっちゃおうかな。
でも途中で発生するバウンスにはノーコメントだから、どうなんだろう。
>>367 コンパレータと書いた者です。
VREFと比較で割り込み使ってやった。
それなりではあるけど、徹底的な要求仕様に耐えるとは思わない。
あんなにノイジーな波形では自信ない。
多重サンプリングと最高速リミットと逆回転禁止タイマとあと何か要る?
>372 電々宮の御札。
ロータリーエンコーダの話って、2013年1月号のトランジスタ技術に
24パルスのロータリーエンコーダをエッジ検出で96パルスとして使う方法ってのが載ってた。
結構良い感じに動作するみたいだね。
エンコーダが新品のうちは快適だが、すぐおかしくなってくるよ。
pickit3でPIC18F14K50に書き込みをしようとしているのですが
MPLAB IPEv2.00でPIC18F14K5を選択しtool(Pickit3)を選択後
コネクトすると
Connecting to MPLAB PICkit 3...
Connection Failed.
と出て、先に進みません
PICが繋がっていないって事だとは思いますが
接続配線は何度も見直しましたが一向に改善できません
何か原因は考えられますか?
PICKIT3はPICKIT2が使えないときに使うものです
>>376 それはPickit3が認識出来てないんじゃないの?
IDEとかでは認識する?
>>376 多分電圧設定が違う(というか既に壊れたかも)
みんなに教えてもらったから、このスレ最初から読みかえしぃや
PICkit3.exeでファームを切替えるFAQかな
ide使って見たらファームが古いと言われ
アップデートしたら認識して使えました
ipeの時は何も出なかった・・・
アドバイスしてくれた人ありがとう
>>376 俺は14K50は書き込みできたけど、12F675が書き込みできなくてまいってる。
パソコンwin7にしたけどおなじだった。
対策はなさそうだよ。買い換えるしかないかもね。
>>382 ファームを、バージョンダウンすれば、書けると思う。
いつの頃からか、非対応になった。
秋月でpickit2とpickit3をまとめて買おうとしたら、店員にそれでいいの?と念押しされてしまった。
電源供給能力の高い2、最新デバイス対応の3どちらも必要なんで・・・と言おうとおもったけど
面倒だからスルーした。
秋月のpickit2の在庫も大分減ってきたからそのうち取り扱い終了になるかもね。
>>384 そんなに高い買い物じゃないし両方買って正解だと思うよ
3が壊れたときに2が使えるし2にはオマケ機能あるし
ファームを何度書き換えても使えないからPICkit 3 Programmerで使い続けている
もう一台買ってみるか
どうして知らないの?
>>387 シリアル送受信機能やロジックのI/Oツールや簡易ロジック・アナライザ機能とか
ロジアナとかは3にもついてるよ
>>391 MPLAB X IDE v1.95?から 常にPickit3と通信してる見たいですね。
PICの電源 ON/OFF するたびに、[Target detect]とかメッセージが
出る様になった。
ライターぐらい自作しろよ
>>391 このブログ、何言ってるかわからんね。
この人日本語ネイティブじゃないかも。
APLAB IPEやPICKIT3 PROGRAMMER起動しても、
書き込みボタンが押せない状況なんですけど、
何がいけないのでしょうか?
CONNECTボタンで確認すると、
CONNECTION FAILEDと赤字になってます。
故障です
>>395 大文字で定義されてるレジスタ名は小文字にしない方がいいな
>>395 データシートというものは、「チップのデータを、読みやすく書く」ものではなく、
「チップのデータを、余さず書く」のが目的だからこうなる。
必要とする人がわずかであっても、そのチップを使用する上で必要なデータは書く。
それに、ソフトウェア開発で必要な情報と、ハード開発で必要な情報には重ならない部分もあるけど
どちらも書いておく必要があるから、ソフト屋から見れば不要な情報でもハード屋には必要って場合もある。
慣れてくれば自分が必要な情報がどのあたりにあるかはわかってくるから、不要な部分はスルーすれば良い。
スルースキルが大事
>>400 電源というのは、KIT3のことですか?
電源はONです。
配線も間違いなく繋がってます。
動かないって書き込む他人の間違いなく〜ってのは大体間違ってるからなぁ
PC初心者のあるあるですね
うまく動かない対処の心得
・不具合原因で考えられる要因を沢山出す
・上記項目数は技術力に比例する
・上記項目の中から、一番可能性の高いものから潰していく
・上記不具合原因発見確率は技術力が高い程、確率も高い
初心者は項目出せない
原因発見確率も低い
な・の・で
安直な壊れている判断を直ぐに下す
まずはやった内容、配線図を曝しましょう
>>395 Adobe Readerの簡易検索で必要な部分はすぐ表示できるよ
>>396 IDEからもだめなの?
PICKit 3 Programmerでは何と表示されるの?
MPLABのPickit3の電源供給設定は非常に判り難いところにあって実に使いにくいしリセット操作もできない
PICKit 3 Programmerと併用しようと思ってもいちいちファームを入れ替える必要がありしかも更新にたまに失敗する
どうにかならんもんか
>非常に判り難いところにあって
もう慣れた
>更新にたまに失敗する
一度も経験無い
が、最近はMPLAB X IDEとPICKit 3 Programmerを両方起動させて
コーディングはMPLAB X IDEで、プログラムはPICKit 3 Programmerで
PICKIT3のファーム更新?
これは何?
どういうときに、更新する必要あるんですか?
更新方法のサイトって、見つからないですがあります?
落ち着いて
>>410 24F→18Fとか、種類が違うものを焼くときにファームウェア変更していることの話では?
MPLABから書き込むときと
PICKit 3 ProgrammerでHEXを書き込むときとで
PICKit 3の設定が違う。
MPLAB ModeからPICKit 3 Programmer仕様に戻すには
PICKit 3にOSを書き込みなおさなきゃならない。
ってことでは?
うちの環境では、
MPLAB X IDE v2.00 から書き込み可能
MPLAB X IPE v2.00 Connection Failed
PICKit 3 Programmer 3.10.00 から書き込み可能
Programmerは更新終了しててこれからはIPEで
ってどっかで読んだんだけど、
個人的には結局IPEって意味あんの?
って感じです。
皆さんどんなですか?
>>413 とりあえず、
>PICKit 3 ProgrammerでHEXを書き込むときとで
このやり方でいいので教えてください。
Programmer立ち上げたのはいいですが、書き込みどころか、
デバイス選択もできない状況なんです。
MPLABは分かりません。
>>417 起動後、こんなメッセージの表記があります。
「The PICKIT3 is in MPLAB mode.Use the tools menu
to download an OS compatible with this application.
>>419 おお、書き込めました。
どうもありがとうございました。
ちなみになんですが、
今後、PICKit 3 ProgrammerでHEXファイルの書き込みするだけなんで、
インストしてしまったMPLABはアンインストールしても
Programmerでの書き込みに影響はないでしょうか?
>>420 お役に立ててよかったです。
以前はmikroBASICとPICkit 3 Programmerの組み合わせで使ってましたから、
たぶん影響は無いと思います。
みんなこんなのあるの知ってた?
WDTCON
ふつうWDTっていうとconfigで設定するけどこれはいらない。
SWDTENでいつでもon,offできるからさらに便利!
>>422 16f1xxxとか使い始めた頃から知ってるよ。
新デバイスでメインで使いそうな奴はpdfを細かく精査しないかい?
外国の人ですか?
簡単に止めちゃったらウォッチドッグの意味がないんだけどな
そういや簡単にタイムアウト時間変更出来ちゃってウォッチドッグの意味あるのかな
427 :
774ワット発電中さん:2014/02/06(木) 10:58:30.73 ID:zhhTTUA/
スリープから目覚めるために使う機能だろ
>426
FSRに該当タイマのアドレスを入れることが 無いように組めばいいんでね?
ロータリーエンコーダが読めないの
一生読めない
431 :
774ワット発電中さん:2014/02/09(日) 13:11:26.51 ID:NONLM6ZL
一生嫁ないわたくしが質問します。
C18 で 18F4550のPORTDをパタパタさせたいんだけど、
TRISDとかPORTDとか「そんな名前知らん!」って怒られちゃいました。
PORTBとPORTCはちゃんと認識するし、 Delay1KTCYx();なんかもちゃんと動くので
ヘッダーファイルのinclude辺りはうまく言ってると思うんですが、。
なんかデータシートの隅々まで読まなきゃならん罠でもあるんですかね?
エラーメッセージ
〜プロジェクト名〜main.c:57: error: (192) undefined identifier "TRISD"
〜プロジェクト名〜main.c:62: error: (192) undefined identifier "PORTD"
>>431 18F4550専用のファイルはincludeしてる?
行かず後家?
>>431 開発環境は?
デバイス設定が18F2550になってるとか?
>>432 だなー、そこが違うくらいしか思いつかない
PORTDがないCPU用のヘッダ使ってるってところじゃね?
>434
MPLAB X
Project PropertiesのDeviceが2550になってマスタ。。。
くだらないことでお騒がせスマソ。>ALL
まあ初心者あるあるだから、今度そんな初心者を見かけたらやさしく教えてあげてね^^
Xportという、RS232をEthernetに変換するモジュールがあります。
これを2つ使うと、PICのピン(txd)→Xportのピン→Ethernet→Xportのピン→(RXD)PICのピン、という、
Ethernetを使ったRS232延長ができる、
と言う考え方は正しいでしょうか?
まあまああってるけど、厳密にはNG。LANTRONIXのだよね。
通信プロトコルはシリアルだけどRS232Cの電圧じゃなかった希ガス。
5VのPICでレベルが問題ないって書いてあるけど、PICの場合ペリフェラルに
設定するとシュミット入力になるという迷惑設計だから問題ありと思う。
手元のデータシートがPRELIMINARYで項目空欄だったからテケトーに最近のデタシトを覗いてみたッス
http://www.robotsfx.com/robot/img/PIColo/PIC16F193X_JP.pdf INPUT LOW VOLTAGE
IO PORT D031 with Schmitt Trigger buffer
Max.:0.2 VDD
INPUT HIGH VOLTAGE
IO PORT D041 with Schmitt Trigger buffer
Min.: 0.8 VDD
両者とも、2.0V≦VDD≦5.5V
PICの最悪側をみると、L入力が5V*0.2=1V(を超過でHに誤認しえてるから、それ未満を要す)、
H入力が2V*0.8=1.6V(未満だとLと誤認する可能性があるからそれ以上を要す)と。
XPort03以降のHは2.4V以上、Lは0.4V以下
大丈夫な様な気がするんですが、すみません、どのあたりがNGなんすか?
>>441 ><;
あれ?逆か、さーせん><;
Lが2V*0.2=0.4V未満を要し、
Hが5.5V*0.8=4.4V以上いるのに
4.4V > 2.4V なのでNGってことですか・・・ 全然足りないじゃん!
CQ出版がつかえるといっているのなら足りないというのも誤認か?と
思い、改めて
>>440をみてみたら、RE3とかPORTAやPORTBはTTLだからおkぽいですお・・・
PORTCがST(シュミットトリガー入力)みたいですしおすし
>>445 なんと・・・解説アザーッス! ムリポですね・・・orz
ちなみに、LantronixのXPortは、通信ピン以外にもピンをGPIOに割り当てられて、
パケットを送ることでH/Lを切り替えるような制御もできたはずですので
CQ出版の記事(リンク先は見本なので冒頭のみ)は、そのGPIOを使って
TTLポートとやりとりする内容だったのかもしれません・・・ ギギギ
ソフトUSARTにすれば逃げられるけど実用性は疑問符が付くね。
仕方ないので74VHCT04を2個入れるとかしてる。
都合がつくなら、PICも3.3V駆動すればええんゃ☆
エロい人教えてください
アナログ入力としてピンを設定した場合
立ち上がり又は立ち下がりエッジの検出による状態変化割り込みは可能ですか?
(※微量の変化でもエッジとして検出が可能かどうかはデータシートを見ても特に書いてありませんでした)
450 :
774ワット発電中さん:2014/02/12(水) 19:35:54.69 ID:cIg2e3WD
IO部分の回路を見ればわからないか?
たぶんできると思う
アナログ入力にするとデジタル入力のゲートを閉じるから
できないんじゃないの。
ゲートを閉じないと中途半端な入力電圧のとき消費電力が
増えちゃうからね。
必要な変化はデジタルとしてのH/Lレベルの規格。
内蔵コンパレータ使うというアイデア
>>450-452 ありがとうございます
この質問は静電容量分圧器方式(CVD)によるタッチセンスに関することです
要はセンサーを指で触れると静電容量が変化してAーDコンバータの入力電圧が下がるというものですが
このセンサー入力のソフトをループ(while(1)など)で監視するのが嫌なので
割込みで処理できないかと考えましたがループでの処理しかないですかね
コンパレータの割込みですか・・・検討してみます
>>453 CVDは、ループで時間をみる方式ではなく、値をみる方式だよ。
質問からコンパレーターで正解と思って居たが、質問自体が皆に伝わってなかったかと。
タッチセンサーは刻々と、状況が変わるから、コンパレーターでは不向き。
公式サイトに、方式の細かい説明と確かPIC24のサンプルが有るからそれを見るのをお勧めする。
>>453 ごめんなさい、
ループは全体の処理のループですね。
でも、割り込みは精度が悪いと思います。
>>454-455 ありがとうどざいます
公式サイトでこの方式に該当するAN1334、AN1104は確認できました
PIC24のサンプルも調べてみます
USARTを同期式で使用しようとする場合、送信と受信を交互に繰り返すのが1番容易な手段かと考えました
初期の通信のタイミングを合わせたい場合、スタート・ストップビットがないのでマスタ側の動作としては
送信モード:同期クロック、データ 出力 → 受信モード:応答Y/N? → Y:通信確立 N:同期クロック遮断、一定時間後に同期信号、データ再出力
というふうな手順を繰り返し通信の確立を図ろうと思ったのですが、一般的に同期式を使用する場合はどのような方法が取られているのでしょうか?
初心者でこの程度しか思いつかず正しいのかどうかも分かりません
教えていただきたく思います
同期式はスレーブ側のファームが鬼門だよ
クロックはマスタから来るわけだから自分のタイミングで送信できない
クロックが来たとしても、スレーブ側からはマスタからの送信のためのクロックなのか
マスタが受信しようとしてクロックを出してるのかが分からない
さらに、SPIのようなCS信号がないと何かの拍子で一度ビットずれが起きると以降ズレたままになる
難易度が高そうですので非同期式を使用することにします
失礼しました
>>459 ゴメンよ、そういうつもりではなかったんだけど
俺もいつも
>>458 を考えた挙げ句、UARTでいいやってなるから
誰か銀の弾丸持ってないかと思って書いたんだけど、誰かいない?
個人的なアイディアを出すと、9bitモードでMSB=1なら送信したいデータとするという事
スレーブ側は通常0が送信されるように設定しておいて、必要なときは0x1??を送信する。
マスタ側も自分が送信するデータはMSB=1で送信して、受信したいときは0を延々送り続ける
こんなんでうまい事行かないかなと思うんだけど、
俺が使おうとしたRXでは「スレーブモードで送信データ空の時は、最後に受信したデータが
送信されます」というトンデモ仕様だから使えんかった…
レス待ちの間にもデータシート読んだり繰り返し考えていました
同期信号があるのでそれを利用して例えば、1の連続した数で8ビットのデータ幅に囚われない信号を生成すれば・・・とも考えました
ですが、自身のプログラミング能力では途中で嫌気が差してきそうなので今回は動作の信頼できる非同期式にしたいと思いました
やっぱりそうなるよなぁ
こうやって考えるとさ、UART考えたヤツって凄いなって思うよな
MPLABX IDEとXC8の環境下でビルドをすると次のような表示が出力されます(ビルドは成功しています)
これらの原因とそれを解決するにはどうすれば良いのでしょうか?
1. process_begin: CreateProcess(NULL, mplabwildcard build/default/production/ファイル名.p1.d, ...) failed.
2. :: warning: (1273) Omniscient Code Generation not available in Free mode
(※2はPROエディションの試用期間を利用するとか有料版を使用すれば良いですかね)
ほしゅ
>>465 ありがとうございます
MPLABX IDEではなくMPLAB IDEの時に
その問題で苦労した経験があってパスには注意しているんですけどね
残念ながらリネームしましたが同じでしたね
その手の問題はスペースがダメだとか階層が深いとファイルパスがとぎれるとかそういうのもあるよなぁ…。
後ユーザーネームが日本語だったりするとダメとか。
>>467 そこなんですよね
MPLAB IDEはユーザーネームに全角を使うと
ロゴを表示した直後に終了で起動すら拒否しますからね
Windows7なら、MPLAB X を起動するときに、
アイコン等を直接ダブルクリックするんじゃなくて
右クリックしてポップアップメニューを表示して
『管理者として実行(A)』ってのを選択してやってみるのも試してみてくだしあ
MPLAB IDE V8.91 と C18 Lite ver3.46 と PICKit3 を使ってPIC18F25K22 の
デバッグをしてるのですが、MPLAB上でブレイクポイントを設定すると
かなり高確率でブレークポイントを設定した行ではなく、その一行下で止まるんです。
関数を呼ぶ所に設定した場合、関数の中に入ってから止まるんです。
そういうものなのですか? 皆さんどうなんでしょう?
TRISB |= 0x01; ← この行にブレークポイントを設定しても
TRISC |= 0x40; ← この行で止まる
Function( ); ← この行にブレークポイントを設定すると関数の中で止まる
8bitPICではそういうもの
どうしてもブレークポイントの次の命令で止まるから、デバッグ中は関数の前にnop()入れる
>>471 やはりそういうものなんですね。
PICのデバッグについて触れてるブログとかを見ても、『ブレークポイントの次で止まる』
みたいなのは見当たらなかったので、こうなるのひょっとして自分だけ? と思ってました。
というか気にしてるのが自分だけなのかな・・・だいぶ慣れましたけど。
473 :
774ワット発電中さん:2014/04/15(火) 18:09:55.69 ID:JA8IZg7E
デバッガ使う人がいなかったりして・・・
そんなもんだ。実行前に止めるっていうのは面倒くさいから。
確かに8bit PICでデバッガ使いたくなるような状態になったことないな
476 :
774ワット発電中さん:2014/04/15(火) 19:22:34.09 ID:+XCsDHpy
>>473 おれもデバッガ使ってない。UARTでログ吐かせるだけ。
特に制御系のソフトだと、停止させるとかえって動作判らなくるし。
デバッガは初めてdsPICを使うときによくお世話になったくらいかな、今は全然。
>>477 dsPICくらいだと、それなりの長さのコード書くからねえ
8bit PICだと小さいからデバッガいらない
>>478 >dsPICくらいだと、それなりの長さのコード書くからねえ
全く関係ない。コードの長さは目的次第。
dsPICをまじめに使うならDSPを生かすって事だから、必然的にコードは短くなる。
>>478 使った事が無いんだろうけど、DSPはリアルタイムに動いてなんぼなので、必然的にプログラムは短くなる。
DSPとして使わない場合、命令が充実してる分、8ビットPICよりもプログラムは短くて済む。
問題なく出来る
ひょっとして10F200でもできる?
485 :
774ワット発電中さん:2014/04/25(金) 22:52:26.74 ID:n0BEsIqq
>>484 タイマーが一つしかなくしかも割り込みが無い。
flashも256ワードしかない。
無理な気がする。
>>485 ありがとう10F322でやってみます。
アルゴリズムをサクッと検索してみると、
片方の相が変化した時に、チャタリング時間分待って、もう片方の相を読めばいいようだけど、
その程度でいいのかな?
接触不良が出始めたらエンコーダを交換しなきゃならん気がするけど・・・
487 :
483:2014/04/25(金) 23:17:56.14 ID:6beypQa+
>>486 そんな℃素人プログラムじゃまともに動かない。
>>487 もっといい方法ある?
たしかにあれだとあまり強くない気がする。
でもあまり込み入ったアルゴリズムは理解できないかも。
チャタ対策で遅延時間作ると、最高速が低くなるよね。CRフィルタ入れても同じことだろうし。
早回しが重要な用途だと、どうすればいいんだろう・・・
状態変化割り込みで3個ぶんくらい前まで覚えて比較するのがいいのかな?
>>490 チャタの少ない、または無いスイッチを使う。
493 :
774ワット発電中さん:2014/04/26(土) 02:52:36.78 ID:31GVspE3
A相の信号が変化した時にB相を読むとチャタの無い信号
B相のエッジでA相は
494 :
774ワット発電中さん:2014/04/26(土) 02:58:06.33 ID:31GVspE3
途中で送信してしまったのでつづき
B相のエッジでA相は安定した状態
なので、
A相エッジ割り込みでB相を読みA相の割り込み禁止。
B相のエッジ割り込み開始。
B相のエッジ割り込みでA相を読みB相の割り込み禁止しA相の割り込み開始
:
:
495 :
774ワット発電中さん:2014/04/26(土) 07:15:42.11 ID:kUrelR4y
私が前に秋月のチャイナ製エンコーダを使用した時は
1)A相エッジ割り込み
-B相レベルを取り込んで0/1を保存し検出フラグを立てる
-A相エッジ割り込み禁止、タイマ割り込み許可
2)タイマ割り込み
-A相エッジ割り込み許可、タイマ割り込み禁止
メイン側では
検出フラグをポーリングでチェックし、立っていればレベル0/1に従ってCW/CCW処理を実行。
注意事項
オシロでチャタリングを計測してタイマ時間を決める。
エンコーダによってはクリック位置(位相)が異なる(と思う)
496 :
774ワット発電中さん:2014/04/26(土) 07:22:08.14 ID:kUrelR4y
(続き)
エッジ検出を回数として加算していけば、エンコーダが高速で回転して
メイン側の処理が遅れても取りこぼしは無くなるなる(と思う)
CRでチャタをとる。
どうせそれ以上速くまわしても拾えない
498 :
774ワット発電中さん:2014/04/26(土) 11:50:46.13 ID:9vjJKx9H
そこで摺動ノイズですよ
>>499 A相のエッジかと思いきや、摺動ノイズのエッジだったよってオチ?
チャタデース
チャタレイ夫人の恋人といえばガキの頃、
深夜映画を親に隠れてドキドキしながら観たのを思い出した。
オレも似たような考えで作ったが、まともに動いたのはエンコーダが新品に近い状態の時だけだったなぁ。
摺動ノイズ対策をどうするかだ。
>>488 この程度のプログラムで込み入ったアルゴリズムになるのは
物事を考える能力が無いか、本質を理解する能力が無いか、もしくはコンプリートしてるかだな。
ちなみに、入力エッジで割り込みとか、筋が悪すぎてPIC始めて数日でーす。位のレベル。
と、言うか、PICとかマイコン以前に、普段の生活から論理的な思考の欠片も無い生き物だな。
オシロを持っててもこのレベルじゃ行き当たりばったりと大差ない。
CRでチャタ取りは、理屈を勉強しないで手当たり次第に部品をとっかえひっかえして誤魔化すしか脳が無かった
年寄りのパターン。とりあえずは動く事もあるかも知れないが、使ってるうちにすぐ壊れて余計酷い状態になるが
データシートを読む能力が無いから、そんな事は思いもよらない。
505 :
774ワット発電中さん:2014/04/26(土) 20:27:08.30 ID:EBOi2dUU
みんなー朗報だぞー
>>504がすばらしいアルゴリズムを披露してくれるってさー
>>504 では、キミのアルゴリズムを聞こうじゃないか。
ときどき出てくるケチだけ付けるやつはチキンだから自分の考えは絶対に
書かないよ。
積分をソフトでエミュレートとする方式で実験したことがあるけど、
1ms割り込みでHならカウンタを+1、Lならカウンタを-1して、カウンタが
ある値になったらON、0になったらOFFとするような処理をやった。
秋月で200円のやつで4くらいが良い感じだった。80円のは試してない。
>>508 確かに、より優れたアルゴリズムを考えたっぽい部分は文章中に一切無いから、
誰でも書ける煽り的な書き込みだな。
まじめに考えてみた。
接点オープン(OFF)を0、短絡(ON)を1。時計回転で先にONするほうをA相とし、A相onB相offを10と表記すると定義して考えてみると
10の時はチャタ等により00となる瞬間もある。
同様に01だと00にもなる。
11なら01、10、00となる可能性がある。
さて、CRフィルタ無しだと、チャタ・摺動ノイズを考慮たアルゴリズムを考えても完璧なカウントは不可能な気がするが・・・
どうなんだろう?
512 :
774ワット発電中さん:2014/04/26(土) 22:48:47.70 ID:kUrelR4y
うーん、「11なら01、10、00となる可能性がある」がよく分からないが、
A相がオン・オフ変化でチャタリングしている時は、B相が安定しているし、
B相がオン・オフ変化でチャタリングしている時は、A相が安定している。
この「安定」を利用すればCR積分回路は必要ないのでは?
A相とB相が同じタイミングでチャタリングしているエンコーダは捨てた方が良いと思うw
なお、1クリック分回転させると、たとえばA相はオフ↑オン↓オフと変化して停まる。
百聞は一見にしかず、オシロで観測するよろし。
℃素人オジサン、こんな解答でどんなもんでしょうか?w
>>512 オレも最初はそう考えて作ってみたが、実際は503に書いた通り。それじゃ弱いんだなぁ。
理解できるようになってからじゃないと話が合わないと思う。
オシロは岩通とケンウッドの古いアナログ100MHzと、安いUSBオシロが1台ある。残念でしたねぇ。
4つの状態の隣にしか移動しないんだから簡単だよ
ピン変化の割り込みでやるのと、メインループでポーリングするのと
どっちが良いんだろう。
割り込みで起動されたらポーリングで様子見か
>>512 >A相がオン・オフ変化でチャタリングしている時は、B相が安定しているし、
>B相がオン・オフ変化でチャタリングしている時は、A相が安定している。
オシロで見るとそうなってないので
>>508でやったんだけど。
CRでやるにしろソフトでやるにしろ積分の必要はあると思うな。
それと、クリック付きのエンコーダは1クリックで状態が一巡するから
それをトレースすれば少なくとも右に回してるのに下がるような誤動作
は避けられると思うけど、クリックなしだと完全にチャタリングを取ら
ないと厳しいと思う。
光学式ロータリーエンコーダを買えば解決するのに
つい安さで買っちゃう
なるべく高い周波数でサンプリングして
ローパスフィルター(移動平均も可)かけるのが良いと思うが、
処理が重くなるのが欠点かな
ソフトで積分できるのにCRはもったいない。
ソフトで積分するなら、ポーリング(タイマー割り込みによるポーリングも含む)が必要。
>>512 全然駄目。℃素人の回答としては満点だな。
ロータリ円コーダの中身をよく考えて見ることだな。
523 :
774ワット発電中さん:2014/04/27(日) 11:48:33.07 ID:vWG3NZEx
>513
そうか、古くなるとA相、B相が同じタイミングでチャタリング(接触不良による摺動時のノイズ?)するのか。
これまでに秋月のエンコーダを1回しか使ったことがないし、いまだちゃんと動いているので、
同時にオン/オフが変化するエンコーダの読み取り方は分からないな。
ちなみに私はタイマ割り込みによる遅延時間でチャタを避けた。
「残念でしたねぇ」の意味が分からないけど、 私のも古いよ、骨董品のアジレントの54600シリーズで
CRTの緑色の輝線が美しいけど、貧乏なので新しいのが買えない。
なお普段使いは秋月で買ったOWONのPDS5022、ほとんどはこれで間に合っている。
>522
ではチャンスがあればエンコーダを分解して中身を勉強します。
ところで少しおとなしめですねぇ、もっといつもの罵詈雑言でお願いしますw
では失礼します。
著者注:「チャンスが有れば」→「その気は無い」の丁寧語です。
頭の固い爺には勉強なんて無理だろうにw
開けてみても予想通りで面白くないぞ。位置がずれた二つの接点が回ってるだけ。
そういえば、1クリックは4分割できるから俺が作ったのは高分解能だっていうブログあったが、接点式だと脆弱の極みだな。
そもそもアレってそんな厳密な用途に使うもんじゃないんじゃね?
精度が欲しければきちんと光学式のを使うべきだと思う。
マウスのホイールも高級品は光学式、安物は接点式だし
やればできるさ。やる気がないなら光学式に逃げればいい。
この前話題になったとき買った秋月の安物あるからちょっとプログラム考えてみるかなー。
最近通勤時間の暇つぶしがなくなって困ってたんだ。
秋月の安いアルプス製なら、クリック位置にエッジが重なるから、それを考慮しないと違和感丸出しの動作になるよ。
ばんがれ!
>>526 まともにソフトを組めば4分割(と言うか、1:1)は問題なく動く。
但し、クリックで止まるのに意味があるかどうかは別だが。
>>532 >まともにソフトを組めば
皆が閲覧可能な実例はあるかな?
無いようだね。いつもの人だったか。
いいからお前が書いて公開するんだヨ
ド玄人先生!
おカネのなる木の樹海が欲しいんですけど、
どういう電子工作をしていれば、それが手に入りますか?!
小学生にも分かるように、おしえてください!! (^p^)
>>537 まず普通の樹海を調べに青木が原に行きます。
登山道から10分ほど適当な方向に歩き、目をつぶって10回ほどぐるぐる体ごと回転すると、
周辺がよくわかるので、やってみてください。
周辺が理解できたら、さらに10分ほど先に進み同じことを繰り返します。
539 :
774ワット発電中さん:2014/04/28(月) 15:46:12.20 ID:TjLpzJuC
動画はUPされない、いや、ヤツにはできない。
>>537 その場で3回まわってワンと言え。
話はそれからだ。
>>538 いったことあります、普通の林道でした・・・
あすこ、実は方位磁針が利くんですよね^^;
>>541 くるくる!
くるくる!
くるくる!
(∪^ω^)ワン!!
今度はこっちを荒らしにきたか。PICばっかりやってるとなんかおかしくなるのかね。
うむ、たまにはAVRとかARMとかも使わないとな
12F322と秋月安ロータリーエンコーダで組んでみたよ!
CRフィルター無いと全然だめだわ
新品なのにかなり波形乱れてる
ソフトでチャタ取りゃCRイランよ
またいつもの人か
ま、実力次第だな。
プログラムってのはセンスが必要だから
℃素人と知ったか爺には無理。
549 :
774ワット発電中さん:2014/04/29(火) 07:29:42.04 ID:Pj1f4yKQ
ど玄人はPICで有名なWEB書いている人のとりまきか信者で、自分はもできると勘違いして書いているだけの哀れな爺さんだよ
悔しそうだな。出来ない癖にwww
自称玄人さんって
いつも、できない人でも書ける文章だよね。
ロリータ援交だ
いつも、出来ない人しか書けない文章だね。
554 :
774ワット発電中さん:2014/04/29(火) 12:11:45.26 ID:WajYyFrd
>>552 信号機のないロ−タリーで車のエンジンが故障した。
俺は思わずロータリエンコダと叫んだ。
(さぁ、℃素人オジサンも既出でもいいからダジャレの一つも書いてみよう。
脳みそのワンパターンな使い方だけでは認知症になってしまうぞ)
エッジのチャタリングならソフトで回避できそうだが、バウンスノイズっていうのかな?途中でヒゲが出ることがある。
一体どのポイントで位置を確定すりゃいいんだろう・・・
>>555 闇雲にコンデンサ付けて、ロータリエンコーダを壊してしまったんだろう。
そもそも、コンデンサ付けて収まるのにソフトで出来ないはずが無い。
ま、出来ない奴には幾ら考えても無理だろう。別の趣味を見つけたほうが良い。
>>556 接点にパラでCを付けたと思ったのかもしれないけど、ちゃんとLPFとして機能するよう配置してます。
アナログはそれなりに知識・経験あるんで。
エスパーとしてはイマイチですね。
>>557 秋月の仕様書には負荷10Kと書いてあるが、まさか、10Kの抵抗とバッファ無しのCR繋げてないよなw
おかしな人が的はずれに絡んでくるで退散します
560 :
774ワット発電中さん:2014/04/29(火) 13:25:48.78 ID:WajYyFrd
もしかしたら接点保護抵抗を入れていないのに
「チャタがなかなか取れないから、試しに思い切って大きなコンデンサ付けてみよう」
なんて人、エンコーダの寿命を自分で短くしているような人がいるかもしれないな。
おかしな人の認知症予防だからね。
仕方がないね。
>>561 だね。LPFって書いてるにもかかわらずとんちんかんな憶測で語るし。
オレそういう人を寄せ付けるタイプの人間かな。
んじゃ、あとはみなさんで楽しく仲良くやってください。
おかしなレスを人力LPFして読み取る能力も必要ってことだ。
そうしないと頭ん中がチャタってしまう。
>>558 >まさか、10Kの抵抗とバッファ無しのCR繋げてないよなw
その「バッファ」って、何のことでしょうか?
LPFとして機能するよう配置してます。と言ってるから、
直列にR、GND間にCを入れてると思うけど?
+5V------推奨のプルアップ抵抗10k-----(a)-----ロリータエンコーダ----GND
とした上で、(a)点からLPFを組むと、行きと帰りでインピーダンスが変わってしまうから
どのような回路にしたのかは興味のあるところ。
10kの影響を小さくするために、直列抵抗は100kとかかな。
>>559 図星だったなw
10KとLPF繋げりゃインピーダンスは10K以下に下がる事も予想出来ずに
>アナログはそれなりに知識・経験あるんで。
とか、片腹痛いわwww
>>555 そのまま素直にカウンタをアップダウンさせるだけでいいんだよ
物理的にありえない±1以外の変化や突然の逆回転は適当に捨ててね
568 :
774ワット発電中さん:2014/04/29(火) 17:27:01.17 ID:9XnvCnnV
>>565 >10KとLPF繋げりゃインピーダンスは10K以下に下がる事も予想出来ずに
そのインピーダンスって、どこから見た、どこ間のインピーダンスのこと?
説明がよくわからないです。教えてください。
>>568 接点から見たインピーダンス。
接点への最大電流が問題な訳だから、接点から見た外部がどうなってるかを検討するのが当然。
バッファ無しでLPF繋げば、10Kと並列になるから必ず10K以下になる。
>>569 俺もお前の言ってる事の方がわからん。
具体的に接点にどう電流が流れるか書いてみれ。
>>570 自分で書いて考えろよ。なんで俺が、努力もしないお前にも判るように
丁寧に教えてやらにゃならんのだ、
>>571 お前がケチつけはじめたからだよ。
電流の流れ込みで接点が荒れるのか流しだしなのか、それだけでも書いて見れ。
わかってるなら書けるだろ。
>>572 けちもなにも、データシートに無い負荷を繋げるなら、それなりに考察すべきだろ。
℃素人バレバレなのに
>アナログはそれなりに知識・経験あるんで。
とか言えばビビると思ってんのかね。
件については、プルアップで使うなら流れ込み。プルダウンで使うなら流れ出す電流が超過する。
>>573 1秒で回答できる様なことにえらく時間がかかったな。
あと、俺はその℃素人とかとは違うから。
へぇー、ロータリーエンコーダにプルアップ抵抗とCRローパスつないだときに、
REへのプルアップからの流れ込み電流で接点が傷むのーーへーーwwww
おもしれーー。顔を洗って出直して来い。
>>574 お前みたいに、このスレに張り付いてる訳じゃないからなw
ま、やっぱり理解出来ない様だな。他に趣味を見つけた方が良いぜ。
戻ってこなくて良いよ。
トイレ行ってくる。
>>574 逆に考えるんだ。壊れたのを前提に、おくんだ。
48V回路に電気二重層コンデンサ(多段化して耐圧稼ぐ?)を
ぶら下げた様な変態回路なのかもよ?!
PICだけじゃなく、色々と初心者な奴ばかりだなw
お前初めてか電電板は?もっと力抜けよ・・・
私は正解を既に持っているが、この余白はそれを書くには狭すぎる。
フェルマーかよ!
583 :
774ワット発電中さん:2014/04/30(水) 01:26:13.23 ID:gNUTEsec
たぶん、
エンコーダ SW=offの時には、
「pull-up抵抗からLPFのCの充電電流」のみだけど、
エンコーダ SW=onの時に
「pull-up抵抗からの電流 + LPFのCの放電電流」の合計のことではないだろうか。
もしそうだとしたら、
「pull-up抵抗からの電流」= 90%
「LPFのCの放電電流」 = 10%
にすれば、定格電流に収まると思う。つまり、Rpu//Rlpf=>(電圧/定格電流)ということで。
Rpu = 11kΩ以上
Rlpf = 110k以上 で、自邸数は、110kを基本にCを決定すれば良くて、
バッファをしようする必要はないと思う。
>>583 でも、そんな対策してなかったから
>>559の捨て台詞を吐いたんだろう。そして、俺はそれを見越して
>>558を書いた。
ちなみに、LPFの抵抗を100Kとかにするのはお勧めしない。
理由はデータシートにある。
585 :
774ワット発電中さん:2014/04/30(水) 02:25:47.97 ID:gNUTEsec
>>584 昨日のやりとりの経緯は置いといて、
100kが大きすぎるのは別にして、
>>583の考え方は、正しいでしょうか?
あと、通常のスイッチだと、1mAくらい流して接点活性してくれ、というのが多い中、
なんでエンコーダは100uA以下なんでしょうか。摩耗してしまうのでしょうか?
ポートの漏れ電流は最大±1uAだから100kΩで問題ないだろ。
>>584はアナログ入力の信号源インピーダンスの推奨値が最大10kΩを勘違い
してるんじゃないの?
俺ならソフトでやるけど。
接点に火花を飛ばさないと接触不良になるぞw
588 :
562:2014/04/30(水) 05:12:14.43 ID:1pk0MDOS
今までかかったけど、できたよ!
CRフィルタ無し、プルアップ抵抗無しでPIC内の弱プルアップを使用。
つまり、PICにエンコーダ直結するだけで、ほとんどミスカウントせずに動作するようになった。
タイマー不使用。状態変化割込みで◯◯と◯◯して判定してる。伏せ字は想像にお任せする。
ただし
>>566の概念だけは参考になったありがとう。
それ以外の自称玄人は脳内だと認識して間違いない。
>>585 100Kはでか過ぎるので、それさえ満足できれば、大丈夫と思う。ちゃんと読んでないが。
要は、
データシートで規定されている内容は、明確な意図が無い限り、最低限守るべし。
って事。これに尽きる。
>あと、通常のスイッチだと、1mAくらい流して接点活性してくれ、というのが多い中、
「通常のスイッチ」ってのは、一般化しすぎ。微小電流用の金メッキ接点は電流を流しすぎると寿命が縮まる。
安物のスイッチや電力用の安物銀接点等はスパークさせるために電流を流す必要がある物がある。
そして、これらの話は、タクトスイッチ等、接点が押されて接触するタイプの接点での話し。
エンコーダは擦れるタイプの接点だから、もともと接点の自浄作用がある。つまり、電圧が掛かって無くても
回せば物理的に削れて接触が保たれる。寿命を延ばす為に表面仕上げを良くして削れないようにしてある物もあるし
めっきしてある物もあるので一概には言えないが、鍍金品等は特に電流を減らさないとあっという間に鍍金が痛む。
結局、メーカーが折角データシートに載せている定数は、一番信用出来る値なので、℃素人が勝手に変えて良い物では無い。
勿論、℃素人が寿命試験等をして、メーカー指定の常数よりも良い値が見つかるかもしれないが、
そんなものは手元にある10個だけかもしれない。
いずれにせよ、今回の件では、ソフトの容量がどうしても確保できないとか、なんらかの理由が無い限り
CRは不要。ソフトで対応可能なレベル。
>>588 お疲れw
大変だった割には「ほとんどミスカウントせずに」っていうレベルにしか出来ないのは
アルゴリズムが悪いって事だな。ま、センスはどうしようもないから、諦めが肝心かもね。
591 :
774ワット発電中さん:2014/04/30(水) 09:29:15.75 ID:wqpBfe+H
リレーの接点は、基本的に自己浄化作用があります。
オン・オフする瞬間に接点同士がわずかに離れた瞬間に火花が飛び、
それが、錆びやすす・カーボンを弾き飛ばします。
もしここれがないと、リレーの接点はすぐに接触不良を起こしてしまいます。
593 :
590:2014/04/30(水) 12:47:34.98 ID:W0czL13f
594 :
774ワット発電中さん:2014/04/30(水) 13:31:59.06 ID:xgQt28bS
4年前に作った発振器に、秋月の中華製ロータリエンコーダを使っているけど、
1クリックだけ回しても早く回しても、何の問題も無く動き続けている。
今回の一連の書き込みを読んで、そんなにオン/オフ時チャタや
摺動時接触不良ノイズがあったかな、と気になって、
フタを開けて改めてオシロで波形を見たら、
制作時と同じく、チャタもノイズもない綺麗きれいなものだった。
私はプルアップ抵抗10Kのみ、外部エッジ割り込み+タイマ割り込みでやっているけど、
私のはたまたま当たりのエンコーダで、めちゃくちゃラッキーだったのかもしれない。
今度秋月に行ったらもう2個ほど買って来て確認してみようっと。
>>592 低速大電流のリレーと、高速小信号のREとは少し考え方が違うような気がするけど。
>595
いやいやいや、わたしも肯定した様な文面で誤解を助長したかもしれないけど、
593のリンク先を読んでもらえばわかるように、592はネタ投稿でそw
火花のなれの果て(残滓)は百害あって一利ないでせう・・・
車工場なんぞではスポット溶接のカスが産廃になっていたため、
超音波溶接(だったかな?)に切り替えてカスの発生を抑えて
コスト削減に成功したとかどこぞのニュースで見かけましたお
>>595 接点の設計の想定電流と、実際の電流との、整合の話だと思うけど。
信号用では、自己浄化作用が欲しいし、電力用では溶着に注意だし。
>>597 そのあたりの話になると、銀錫か金クラと金メッキかとか、シングルダブルクロスバツイン使い分けとか、
そのあたりになってくるからなぁ。
機械式REもローパスの小容量C+抵抗でさえ長時間で接点荒れたりすることもあるから微妙だね。
スクラップの開閉器から銀接点を取り出して
それを鋳溶かして指輪にして恋人にプレゼントする・・・
なんてDQNが喜びそうなイイ話があったな
SnやPbも混ざってそう。
>>596 古い電気製品の AC 100V のプラグが意外と接触不良にならないのは
火花が錆を飛ばすからという説を聞いたことがありますお。
百害あって一利ない、と断定できるものかどうかは疑問がありますお。
>>600 ACとDCの接点は故障モードが違うもの。
昔の車のリレーやスイッチの動作寿命の短さは特筆物。
リレー接点は摺動接点じゃないわけで
ミクロンオーダーで言うと、摺動してるけどね。
それはどうでもいい
ご無礼しました。(^^;
606 :
774ワット発電中さん:2014/05/02(金) 07:01:46.53 ID:h4c3xITu
僕もしょっちゅう異性との接点を手で摺動している。
手入れが良いので接点が黒光りしているほどだ。
でも準備は完璧なのにまだ実物で摺動させた事が無い・・・
すり減って細くなってるね
絶縁被覆が黒いんじゃね。
609 :
588:2014/05/08(木) 20:02:09.79 ID:wG2etQQw
アルゴリズムを見直して、ロータリーエンコーダー読取りの最強版完成!
右へ左へ1分間めちゃくちゃ回しまくっても1クリックもずれないようになったよ。
中古の接触不良気味のエンコーダでも大丈夫。もちろんLPF無しの直結。
自称玄人さんを超えちゃったかもね。
動画かなんかうpしてみせて欲しい
weak pull-upと浮遊容量で積分回路になってるとか
>>610 そのうち、気が向いたら
>>611 カットオフ周波数は何MHzくらいになるんでしょうか?
>>612 いつも知識ゼロで書けるコメントありがとうです
>>609 >右へ左へ1分間めちゃくちゃ回しまくっても1クリックもずれないようになったよ。
どうやって真の値を出したの? 本当は誤カウントしていてわからないとか?
>>614 いわゆるジョグダイアルのノブを付けて、ノブの凹みがセンターとなった位置からカウント開始。
一周してセンターに来た瞬間にLEDが点灯するよう別のPICで組んである。
ガンガン回してる最中も1周ごとにLED点灯してるのは確認しつつ、
1分後にセンターに戻した時にLEDが点灯すればドンピシャずれ無しということ。
もう変な言いがかりつけられても説明しないよ面倒だから。くやしいなら成功してみろっつーの。
オレが探した限りでは、ネットで見つけた公開アルゴリズムは全部ゴミ。
ロータリーエンコーダーは早く回したときに取りこぼすのは実用上問題ない
けど、ゆっくり回したとき右に回してるのに数字が下がったりするのが問題。
ゆっくり1クリック右とか左に操作したとき問題ないですか?
俺は
>>508で既に出来ているのでアルゴリズムの説明は不要だけど。
>>616 ゆっくりは改良前から問題なくミスカウントはゼロで、ノブがずれていくことは一切無いです。
値がパカつくことも無し。
618 :
774ワット発電中さん:2014/05/09(金) 07:00:18.27 ID:pTfucyX1
ロータリエンコーダが取りこぼしなく読み取れた、
って事を自慢する人がいることに
オジサンさんはビックリしちゃったぞぉ。
なんでここってロータリーエンコーダスレになってんの?
ちうごくがヴェトナム船に171回ぶつけられた!ってさわいでるアレも
もしかしてチャタリングを計っちゃったのかなぁ・・・
>>609 状態変化割り込みありでのプログラムのままなら
セ ン ス 悪 す ぎ w
めんどくさいからxmega内蔵のデコーダでいいや…
>>621 作れないキミはもっとがんばってください
>>623 悔しそうだなw
ダイヤルなんか付ければ高速回転出来なくなる。だから出来たんだろ。
俺みたいに軸を直接高速に回して誤動作しなくなってから「ようやく出来る様になりました」と家w
「ようやく出来る様になりました」
これでいいですか?
軸を直接高速に回転しても誤動作してませんからねぇ
>>625 それは良かった。おめでとう。
嫌味じゃ無くてマジで。
ところで、状態変化割り込みのまま?
俺のは普通のポートとして読み込んでる。
状態変化割り込みのままです。
単4電池駆動で、一定時間変化が無かったらスリープさせるためには、これしかないかなと。
>>627 スリープが必要なら、スリープ直前で状態変化割り込みにしてスリープに移行するべき。
なぜ
>>621で、「センスが無い」と言ったかと言うと理由は沢山あるが、
一つはプログラムが複雑になる。もう一つは、プログラムの再利用が難しくなる。って事。
最低限、この2つはクリア出来ないうちは℃素人レベル。
我が強い
>>609 達成の喜びと興奮が伝わって嬉しい気分にしてくれてありがとう。
それにチャチャを入れる人の嫉妬や心の醜さも実に面白い
>>628 大丈夫だとは思うけどチャタリングのある接点をシュミット通さずにクロックに入れるのは気持ち悪い
16Fxxxのデーターシートにある等価回路だと端子からFFのクロックに直結
>>630 お前、状態変化割り込みを薦めた奴だろ
判りやすいな、℃素人www
玄人気取り君はID変えて一人で暴れてるわけか
やはりなw
どれも素人で書ける内容だしな
初心者スレで℃玄人さんが暴れてると聞いて
638 :
774ワット発電中さん:2014/05/10(土) 14:49:08.52 ID:Li+jetEM
俺も素直に「読み取れるようになって良かったね」と言いたいんだが、
書き方に謙虚さが足りないというか、何かイラッとする。
一方、いちゃもん付ける方もおかしいし、
…とここまで書いて、あ、℃玄人さんも登場したことだし、
このスレの平常運転、いつも通りだなと安心した。
ネットで拾えるお手本が糞すぎるから、自分で苦労するしかないジャンルだな。
できたできたと騒いでるだけで検証不可能なみたいなもんだな
ま、200回位は動いたんじゃねw
意外と難易度が高いからな。
できたと言うヤツが現れると否定したくなるヤツも現れる。
今流行りの3Dプリンタって殆どがarduino制御だけど、pic制御用のフレームワークみたいなものもあるの?
>3Dプリンタって殆どがarduino制御
へえ、そうなんだ
たとえばどれ?
reprapとかpololuとかオープンソース系のおもちゃのこと言ってるんだろ
PICで作りたいなら作ればいだけかと
作って公開して! デッドコピー作って遊ぶから!!
公開はするけど、デッドコピーは出来ないようにしておく・・・とかね。
中古オシロの数カ所のツマミがロータリーエンコーダーなんだけど、
接触不良なのか、逆転したりしてマトモに動かない。
エンコーダと本体の間にPICを挿入して、ソフト的に信号整形して出力できないだろうか?
ちなみに補修用部品のエンコーダは供給終わってるし、変わった形なので互換品は見つからなかった。
本体とロータリーエンコーダの型番は?
開けてみたら光学式ってのはよくある
>>651 KENWOOD SC6010 エンコーダーの型番はわからない。
>>652 サポートを引き継いだ会社に確認したら接点式だと言っていた。
>>653 そのオシロで波形を見てみれば整形可能かどうか分かるだろ
655 :
774ワット発電中さん:2014/05/15(木) 12:07:09.28 ID:2gkPj6lc
REを交換する手もある。
サイズが合わなくて中に入らないなら、ケーブルで外に引き出すとか。
シールドが必要だろうけど。
エンコダばらして洗おうず。
まず普通にエンコーダーを読むプログラム組んで、
1クリック分を読んだらAB1相分を出力するようにすればいいじゃない。
ってな答えを誰もできないなんて
簡単に答えられるのは玄人か℃素人。
>>657は℃素人確定w
と、初心者が申しております。
悔しそうだな。そんな書き込みしてる暇があったら考えれば良いのにw
そんな事だから万年℃素人。
PIC32MXシリーズにはDSP内臓されていますか?
データシートにはDSPモード内臓とは書いてますが、これはDSP内臓していると解釈していいですか?
内蔵な
内臓がDPSで出来てる人を思い出した
>661
まずは、そのDSPモード内蔵とかかれたデータシートを示してみては?
>>661 SPIxCON2の下位2ビット(AUDMOD)が11bの時のモードの名称らしいな。今知った。
SPIのインターフェースのモードで、DSPは「(PICの外にある)接続相手」だ。残念だったな。
AUDMODごとのインターフェース仕様は、
Microchipのサイトで、PIC32のアプリケーションノート
"AN1422 - High-Quality Audio Applications Using the PIC32"
に詳しく書いてある。
666 :
774ワット発電中さん:2014/05/24(土) 11:21:14.99 ID:rQXYIUB+
(もしかしてボケ潰しした俺が悪者...?)
ツッコミたいけどボケが理解できない…
PIC12F683とSSRで安い扇風機の追加ゆらぎ機能を作っているのですが、
乱数を使って(オン時間4秒以上、オフ時間3秒以上)時間調整をしようと思っていますが、
以下の様に書いたところ、想定した動作をしていません。
連続動作してしまいます。
乱数の扱いなど間違っているでしょうか?
変数aはオン時間用で3以上の数字を発生させ、同じくbはオフ時間用で2以上の数字を発生させる。
それぞれの数字の数だけ1000msのディレイを繰り返すことで、ゆらいでいるような動きを再現しようと思っています。
それぞれ、3秒と2秒と言う数字は扇風機のスイッチを手で半押ししてそれ以上だと良い感じになることは確認しました。
void yuragi(){
while ((a = rand() & 0x0F) >= 3) {
}
a = a + 1;
while ((b = rand() & 0x0F) >= 2) {
}
b = b + 1;
GPIO.F1 = 1;
for(d = 1;d <= a;d++){
Delay_ms(1000);
}
GPIO.F1 = 0;
for(e = 1;e <= b;e++){
Delay_ms(1000);
}
}
アドバイスなどお願いします。
a=1, 2, 3
b=1, 2
の値にしかならないような気がするんだが
つーかrand()の結果を取捨選択しちゃダメだろ
系列全体で統計的にランダムになるようになってるんだから
ふつうに
a = (rand() % 12) + 3;
b = (rand() % 8) + 2;
GPIO.F1 = 1;
for (i = 0; i < a; i++) Delay_ms(1000);
GPIO.F1 = 0;
for (i = 0; i < b; i++) Delay_ms(1000);
でいいんとちゃうのん
でも連続動作ということは そもそもこの関数自体がちゃんと
呼べてへんのとちゃますか
もしくはこのおまじないが入ってないとか
#USE DELAY(CLOCK=speed)
>>673 speedのところは、
文字では無くて、クロック周波数をHz単位の数字でないとエラーになります。
例えば20MHzなら「20000000」だから #USE DELAY(CLOCK=20000000)
最近の初心者さんはシミュレータは使わない主義なの?
シミュレータのストップウォッチさんにはお世話になりました・・・
皆さんアドバイスありがとうございます。
>>670 この書き方だとそうなのですか。
Cの理解が足りませんでした。
>>671 数字の範囲を限定した乱数を得たい場合どうすればよいでしょうか?
>>672 明日実験してみます。
>>673 MikroCなのですが、必要でしょうか?
>>675 シミュレータってどんなのがあるのでしょうか?
MikroCで出来るでしょうか?
>>676 検索しましたがありませんでした。
>数字の範囲を限定した乱数を得たい場合どうすればよいでしょうか?
乱数って、0から1まででしょう?
だったら「範囲の上限値×乱数値」でいいんじゃないの?
intで返る乱数が0から1の範囲って、それじゃ0か1しか返って来ねーじゃん
おかしいと思わんのかね?
ツッコミどころが頭悪そうw
まーM系列シフトレジスタだろうが量子乱数だろうが元は0と1しか返ってこねーし
乱数発生器なんて持ってねーだろ
擬似乱数じゃん
ピントハズレ
乱数位、自分で作って当たり前。
これだからCしか出来ない奴は。
0か1しか返ってこない乱数なら
8個生成すれば8bitの乱数が作れるね
>>671 rand()の仕様がもしも0〜255(とか65535)なら、
実質的に一ビット乱数n個じゃないの?
671さんの仰る意味は、例えば0〜4の値が欲しい場合、
1ビット乱数三個で求める場合には、
bit2の立つ確率は1/5じゃなくちゃいけないのに
一ビット乱数3個を使って代用してしまうとbit2が1/2の確率で立ってしまうわけで、そのことでそ?
それは面倒でも一旦0〜7の値を出して、5以上ならふり直し、という処理で均質化して対処できるはず。
この質問者さんはホワイる文でそれを実現してると思うけど・・・
>>672 PICのCを使ってないからよく知らないんで、最近のコンパイラは
すごくなってるのかもしれないからおいらの勘違いかもしれへんけど
モジュロ演算は割り算ルーチン呼んで時間がかかったりせえへんの?
PIC内部の乱数発生ルーチンを知らずに、コンパイラの操作だけで何を語ろうというのだろう。
>一旦0〜7の値を出して、5以上ならふり直し
いつまでも5以上が出続ける可能性があるし
少なくとも出て来る時間が値によって異なるのが影響する用途には使えない
>>686 >いつまでも5以上が出続ける可能性があるし
それは乱数とは言わない
可能性なんだからまさしく乱数なのでは?
「いつまでも」って書いてあるが?
乱数なら、そんな可能性は無い。少なくともPICに実装されてる乱数ならば。
そんな乱数なら、1がずっと出続ける可能性だって有る訳だし、別に5以上で固まる以外にも可能性はあるだろう。
ま、℃素人のプログラムによるバグだな。
「℃素人」ってか
本人は気に入って使ってるんだろうけど
あまりセンスがいいともペーソスがあるとも思えんね
普通に「ど素人」って書けばいいじゃん
素°人
の方がしっくりくる
語尾に「お」を付けるセンスの無さといっしょだな
°しろうと
初心者用のスレに来て、解決策も出さずに
人を罵るようなクズにはなりたくないなと
思う 土曜日の午後でした。
PIC用のMicroCで探すと
>int rand(void);
>0から32,767までの乱数を発生します。毎回常に同じシーケンスで乱数が作られます。
>毎回違う乱数を作るにはSrand という別の関数が用意されています。
>>690 ま、シグネチャみたいなもんだからなw
たまに真似して書いてる奴もいるけど、内容的にはあれだな。
>>694 それは解決策なのかw
お前、日本語の℃素人だなwww
℃漏斗
おまいら「℃」って何て読む?
おいらは「どしー」
最初は<℃素人>君も<語尾お>君も気になったが
−− 枯れ木も山の賑わい −−
と思って、レス内容を記憶から消し去ればどうって事は無い。
わんわんお わんわんお
702 :
お:2014/06/01(日) 13:14:29.16 ID:wZPHw3ab
効いてる効いてるw
華氏は何ていうかな。72°Fとかはななじゅうにえふとかかな。
せぶんてぃとぅー
ふぁーれんはいとでぃぐりー
体温を100にした温度体系だっけ? ゜F
せぶんてぃとぅー
でぃぐりーふぁーれんはいと
じゃね?
せぶんてぃとぅーでぃぐりー
ばいふぁーれんはいと
か?
>703
読んでみて上げやう・・・ 72°F (どやぁ
picスレは頭がおかしい人のたまり場になってしまったな。原因はなんだろ。
ひょっとして質問があまりにも少ないからかな。ひとつの質問に回答者が群がってしまい
中にはうけを狙ってボケをかます人とか出てきて、ぐしゃぐしゃ。
最近は「笑点」化してきてる。
みんな歌丸なのか。
arduinoのほうが便利だからじゃないの?
特化した物ならpicのほうが性能のいいものが作れるけど、簡単さならarduinoの方が楽だし
>>709 おいおい、笑点よりゃあおもしれえぜ
>>710 誰に対するレス?
ハンダ付けするかしないかの違いでしょ。
スルー力が低いだけでしょ。
PIC覚えたいんだけどどうすればいい?
C言語1年位勉強して、「C言語によるPICフ?ロク?ラミンク?入門」 後間哲也
買ったんだけど、意味不明???
何年勉強したかではなくて
何を理解したかではないの
1年も勉強したのにまだ意味不明なの?
一年勉強して意味不明であれば適性ないからやめとけ。
普通はCなら3日でLチカくらいはできる。
わからない=解説書内で、意味不明な作文と遭遇
⇒既存の理解に不備があるから意味不明な解釈が形成されている
⇒教科書内の記述に対して、どういう意味あいで
支離滅裂に思うのか?という違和感を、きちんと作文して
文章化(言語化)すれば、どこに誤解の病巣があるか?を
露見させやすい=ツッコミを得られやすい=認識を正しやすい=正しい理解に到達しやすい。
それ(違和感を表現する努力)を怠り、意味不明〜と書くだけでは、誤解内容も不明なままですよ!
後閑哲也の本買ってる時点で間違いwww
入門って書いてあるけど、最初にLEDチカチカとかの話じゃないから
ほとんどC言語の話だろ
後閑哲也著のは「PIC活用ガイドブック」しかもってないや。
だいぶ前にフルホンヤで買った(が、まだ読んでいない)。
後閑哲也の本買ってる時点で間違いwww
入門って書いてあるけど、最初にLEDチカチカとかの話じゃないから
ほとんどC言語の話だろ
×ご教授
○ご教示
後閑哲也の本は不親切なんだよな。
最初はえらく丁寧に説明してくれるけど、途中から説明が手抜きで本当の初心者はついていけなくなる。
で、別な本買って補うことになる。
良心的だなと思ったのはアセンブラで残念だが
遠藤敏夫著 「PICマイコン アセンブラ入門」
がよかった。最初はとりあえずやってみて後でなんでこうなるのか説明していく感じがよかった。
後閑みたいに突如むずかしくなることもなく、一通り基礎をマスターできるようになった。
この感じでC言語版つくってくれたらよかったと思うけど。
PIC自体は枯れてきているけどCの開発環境は色々変わっててめちゃくちゃだからね。
CCSCもしかり、XC8もしかり。
>>713 意味を考えるからだめなんよ
まずは物まねして少し変えて違いを比べてみる
そのうちに気づいたらデータシートを参考にするだけでいろいろ作れるようになってる
あと、具体的に何をやりたいかの目的が無いとダメ
>>723 遠藤さんの本が良いってのは同意
後閑さんには全否定はしないが得るものの量はそんなに多くない
オレはそうだった
中身読んだことないけど、あの方のことだからどうせCCS C推しなんでしょ?
ライブラリ充実度で選んでるんだろうけど、「コンパイラって何?」レベルな
初心者に、何万もするコンパイラ揃えろと言うのがナンセンスだと思うんだけど
なんとか哲哉って人の本も、総じてわかりやすい。というか、文章がわかりやすくて
脳みそに染み込んでいく感じ。
後閑哲也はプログラムダウンロードできないのがつらい。ただで使われるの警戒してるのかな。
初心者なら自分で打たないと勉強にならんだろ
ま、プロでもコピペが当たり前だけどな。
コピペして俯瞰で眺める感じの方が全体像がつかめる
それから細部を読む
自分で打ちたきゃ止めろとは言わないが
何の意味も無いと思う
暴力沙汰を起こす石頭の体育会系指導者じゃあるまいし
小保方発見w
734 :
774ワット発電中さん:2014/06/04(水) 06:38:03.64 ID:QDoAFlL/
写経しながらおぼえる人もいるんじゃ?
習わぬ経を大声でよんでみてもご利益はないのかも
>>730 プログラム最初から最後までコペピなしで書いたことある?
俺は一回もない。
あるわけない。
PIC品番毎の雛形が作ってあって、毎回それをコピーして使う。
頭使うのは、main()の中だけにしたいから。
>ま、プロでもコピペが当たり前だけどな。
シナチョンではそうだろうな。
>シナチョンではそうだろうな。
いい加減卒業しろよ
論理的にかなわないと分かったときに
逃げながら遠吠えする悪い癖から
論理的?
>>736 同じだな。
以前は、新しい型番使うとき、最初の1回だけは全部書いてた。
#include から main() に至るまで。
でも最近は統合環境がある程度のソース吐いてくれるから楽だよね。
更に前に使った型番ならそこからごっそりもってこれるし。
>>740 そうそう、新機種採用で要注意なのは、データシートのレジスタ名が微妙に違ってるときね。
とりあえず、
・8pin PIC
・28,20pin PIC
・DIL 40pinのPIC
・QFPのPIC
18Fか24Fで、このくらいのお気に入りがあれば、何でもそれで作ってしまう。
新規の品書には、さほど魅力を感じないよね
初心者スレでベテラン勢が我が物顔で暴れまわって困っています
ここじゃないと勝てそうにないレベルのベテランだから
>>741 レジスタ名なんてエラー吐いてくれるし、置換するだけだから問題ない。
レジスタ名が同じなのに各ビットの機能が変わるほうがよほど厄介だ。
70MIPSのPICを注文したけど何を作ろうかなぁ
手段と目的が逆になってるね
うちなんか131DMIPSのPIC32MX470F512Hが
手付かずで3つも転がってるぞ
サンプルだから無料だが
750 :
748:2014/06/06(金) 13:36:24.00 ID:y3sRxXPV
751 :
748:2014/06/06(金) 13:59:24.34 ID:y3sRxXPV
でもいちいちPICを抜き差ししてプログラムを書き換えるのは非常に
面倒だとやってみて気がつきました… トホホ
気づいちゃったかww
デバッグ機能は初心者ほど必要だから抜き差し方式はやめた方が良い
初心者ならある程度ピン数が多くて書き込みで抜き差しいらない方がいいね
抜き差しして良いのは抜き差しならない場面だけです
オーディオアンプならやれ1点アースだ、入出力を近づけるなとか
高周波回路なら寄生キャパシタンスや寄生リアクタンスだのに気をつけてとか
CADソフトでパターンを作る際には気をつけろと言われましたが
PICの場合なにかそういう注意点はありますでしょうか。
ちなみに糊とアイロンとOHPシートでやってます。
758 :
756:2014/06/06(金) 17:44:23.29 ID:y3sRxXPV
6pinL型ピンプラグをいっぱい仕入れてあるのでそれを使いたいと思います。
ありがとうございました。
1秒毎にPORTBを+1するプログラムをシミュレータで確認したいんだけど、
実行中のSFRの表示値(実際の値ではない)が数秒〜10秒おきに更新されるから確認しずらい。
一応自分で数えて一時停止したときは、想定どおりなんだけど
動作中のシミュレータのSFRの表示を1秒毎に更新するような設定はできませんか?
MPLAB X IDE v2.10 で 16F84Aです
761 :
774ワット発電中さん:2014/06/25(水) 11:15:34.67 ID:itJX6bix
XC8のシミュレータでI2Cの動作って確認できる?
プルアップが反映されないとか
while(SSP1CON2bits.SEN);で帰ってこないとかで困ってるです
1829なんだけど
ロジアナなり使って実機を確認しなきゃ意味ないような
プルアップくらいならテスターで確認できそうだが
763 :
774ワット発電中さん:2014/06/25(水) 12:59:31.46 ID:itJX6bix
実機や機材を持ち込めない環境でテストを進めたいから
プルアップも内蔵を使う
ブレッドボードで実験しろよ
もう一つPICを用意して1秒を測ればロジアナ等が無くてもOK
766 :
774ワット発電中さん:2014/06/25(水) 17:03:32.25 ID:itJX6bix
新幹線でブレッドボードは変態だからイヤ
MPLABXでI2Cのシミュレートは不可能の線が濃厚?
そもそもプルアップが
768 :
774ワット発電中さん:2014/06/26(木) 13:20:46.89 ID:sjuGTiEC
相手側のシミュレートができないのになにがしたいの?
770 :
774ワット発電中さん:2014/06/27(金) 09:14:19.39 ID:ZNzxbXi9
>>769 正しく設定できているか
実機に入れたらすぐ動作したらいいなって
プルアップはデジタル入力にピンが設定されてる時だけだよね〜
>>766 コンセントのある席を選べば半田ごてもつかえる。
新幹線でハンダづけなんかしようものなら、速効通報されて車掌に止められる
だったらブレッドボードで我慢しろ。
そのかわり、アナログブラウン管オシロの使用を許可してやる。
あるI/Oピンをアナログ入力にするとき、ANSELxでアナログ設定にした上に
TRISxで「デジタル的に」入力にしてHi-Zにするって仕様なんだろうけど二度手間っぽい。
なんでANSELをTRISより優先させなかったのだろう
>>775 TRISはデフォルトで入力だから結果的にはANSEL優先と変わらないからね
リセット直後はTRISは入力でアナログPINにはアナログ機器の出力がつながってるわけだから、
TRISを出力にすることなくアナログの設定を淡々と進めるだけのことだよ。
レジスタ設定をリセット時のデフォルトのまま使うのは素人。
ふつう同じ値であっても明示的に上書き初期化するがね。
PICで初心者ならしかたないけど昔の80186/188なんてメモリチップセレクトも
プログラマブルだからデフォルト値は辛うじてシステムを起動させるだけの値にすぎない
779 :
sage:2014/06/29(日) 12:39:21.15 ID:9dMKo6Gi
>ふつう同じ値であっても明示的に上書き初期化するがね。
私も以前はそうしていたけど、メモリの少ないMCUを扱うようになって
注意書きのコメントだけで済ませるようになった。
あれま!
特殊レジスタはもちろんループ変数の初期化すら省略したこともある
初回のみ高々256回多く回るだけだから
石は10F200
せっかくPICがやってくれているのに再設定するのは
人の努力を無視しているようで何だか申し訳ない
メインループ内で規定値に上書きしまくっていた時期が
私にもありました・・・人の努力を無視しまくる俺様カコイイ!!
いや、何かの本で
メインループ内で規定値に上書きしろ!って書いてあったから
愚直にそれをまもっていただけだけれどもw
↑
ちなみにこの上書きの作法は、
タイマの制御レグを上書きして再起動するトラブルでやめますた(^д^;
禿しく勘違いしてるバカ発見
視線が熱いぜ・・・俺に惚れるなよ?☆
>>785 どの書き込みのことかすら分からない私に
やさしくつぼを教えて!
安価のない罵倒レスをわりとよく見かけるけど、この手の人って
言いたいことは書き込みたいんだけど、万が一のブーメランを
回避できるようあえて安価を書いてないのかな
そう、へたれ
自分のこといわれてんのかとドキドキハラハラしてるバカ発見
レグって何だ?
レジスタだから、言うならレジだろうに。
regって略してあるのに非表記の母音を再生するってどこのアラビア語だよw
(注:アラビア語文化圏では、子供向け書籍には母音まで記載するらしいが
イスラム圏のアラビア語の新聞は大人向けなので、マジで子音のみで書かれているらしい…)
>>792 略記するときは第2音節の子音までと学校の英語の授業で習った記憶がよみがえった。
で、(コンピューター関係のネイティブはREG.をどう発音しているのだろうか)とフト疑問に思い、
さらに、(イヤイヤ、外人がどう発音しようと日本語では「レジ」だな)と思った。
スタートして間もない独学のアマチュアは専門用語の習慣的な発音は難しいかもしれない。
とりあえず意味は通じたので許してやって。
>792
つ
>>107-115 つっても、実態は単な見栄(俺は日本語マヌアルじゃなくて
ちゃんと原語のマヌアルを読んでるお♪っていう見栄)だけどな☆
Oginoさんが、初対面のガイジンさんには「オジノさん」って呼ばれてた
ふーん
>>796 生姜gingerをジンジャーと発音するから仕方ない。
(で済ませていいのかどうかの自信も無いけど)
電池駆動で温度計作ってみたんですが、電圧が下がると温度がくるってくるんですが
なにか対策法ございますでしょうか?
温度センサーは10KΩサーミスタを使ってます。
レギュレータつけて電圧を安定化させるか
ADCの基準電圧をサーミスタにかける電圧と連動する方に設定する
電圧が下がる前に電池を交換する
>>799 A/D入力を複数チャンネル使って、抵抗をちょいと追加すれば演算処理で
電源電圧変動をキャンセルできる。
質問の趣旨からかけ離れた回答ってどうよ
電池と言っても
9V電池
1.5V電池の直列
1.2V充電池の直列
いろいろあるだろうだろう
そもそもPIC初心者なのだから
質問の内容自体が不適切かもと考えないのだろうか
他の適切な方法を示すのがベテランの役目
>802
上流側の抵抗で電流を絞れるとはいえ、
規定電圧に至るまで垂れ流す、という意味あいからは
ちょっと電池が勿体ないような気がしないでもないですね・・・^^; 精度の面からは良い手だと思いますが!
>808
シャントレギュレーターへは数mA程度流せば良いのだから
PICのI/Oピンから供給すればいい、不要な時はL出力でカットできる。
基準電圧読み用の他に電源供給用さらにI/Oを1本使うことになるけど
>811
サンプルとかテンプレからコピペすりゃええやん
>>812 記述例にのっとって書いてみたんだけどな
サンプル見つけたと思ったらCで書かれてと時の絶望感
>813
あれ?ちがうんか、ごめんね☆
>814
ごめん
C:\Program Files\Microchip\MPLABX\mpasmx\templates\Code\18F2550TEMP.ASM
をみたら、INCファイルの方を見ろってかいてあった。
というわけで、どぞー C:\Program Files\Microchip\MPLABX\mpasmx\p18f25k50.inc
>>811 Window>PIC Memory Views>Configration Bits で設定して
Generate Souece Code to Outputで表示させてコピペ
ってことではないのかな
はずしてたらすいません。
質問者が「温度計作ってみたんですが・・・」と言ってるのに、新たなハードを勧める不思議。
といってるそばからPICに何使ってるか知らんけど16F18XXとかに差し替えれば
すでに温度センサが内蔵されてるんじゃないのとか云ってみる
821 :
774ワット発電中さん:2014/07/05(土) 01:38:19.72 ID:mrH3zoVj
USBのパワーメータを作ろうと考えています。
電圧、電流、電力、積算電力など表示させようと思います。
0.1Ωの抵抗をUSBの+ラインに直列で入れてアナログ入力で
値をとって後は計算でと思っているのですが、
電源もUSBから取ろうとすると、
電圧の計測がUSBの端子に実際に掛かっている電圧が基準になるので、
絶対値として正しく計れないので困っています。
3.3Vのレギュレータで安定した電源とした場合、今度は3.3V以上が計れないので
解決方法が見出せなくなってしまっています。
使用しているのは12F683です。
アドバイスなどよろしくお願いします。
3.3Vのレギュレータ出力をVREFに入れればおk
カッコ悪いからこの機会に12F1822に乗り換えよう
>>821 10kΩくらいの抵抗で 1/2 に分圧すれば?
824 :
774ワット発電中さん:2014/07/05(土) 02:26:52.59 ID:mrH3zoVj
レスありがとうございます。
>>822 3.3VをVrefに入れた場合3.3Vを1024分割して計れるのですよね?
その場合5Vって計れるのでしょうか?
>>823 分圧した場合も絶対値での測定って出来ないですよね?
>>824 1/2 に分圧した電圧が 2.6V なら 2倍して
元の電源電圧は 5.2V と分かる
826 :
774ワット発電中さん:2014/07/05(土) 02:35:38.41 ID:mrH3zoVj
>>825 すみません。
意味を理解できていませんでした。
3.3Vを基準(測定上限)にして
おおよそ5V前後であろうUSBの電圧を1/2に分圧すると3.3Vが上限でも計れるという事ですね。
その様な方法があったとは・・・目から鱗です。
ありがとうございました。
>>820 それだとチップの温度を測ってしまうから、自己発熱分で誤差が出る。
>>827 温度計だったら、処理速度必要ないから、クロック周波数落とせば良い。
500kHzでも充分と思う。
内蔵の温度センサって精度どれくらいあるんだろう
もれなくPICの温度もはかってくれます
>>829 頑張れば(正確な温度計で校正してソフトで補正してやれば)かなり行ける。
こういうプログラムくんだんだけど何が問題なのかな
org 0
CLRF TRISB
BSF TRISA,4
seg0 EQU B'01111110'
seg1 EQU B'00011000'
seg2 EQU B'01101101'
seg3 EQU B'00111100'
seg4 EQU B'00011011'
seg5 EQU B'00110111'
seg6 EQU B'01110111'
seg7 EQU B'00011110'
seg8 EQU B'01111111'
seg9 EQU B'00111111'
MAIN:
BTFSC PORTA,RA3
GOTO HIGH3
GOTO LOW3
HIGH3:
MOVLW seg1
MOVWF PORTB
GOTO MAIN
LOW3:
MOVLW seg1
MOVWF PORTB
GOTO MAIN
END
スイッチ押してないときは0を表示して押したときは1を表示させたいんだ
でも動かしてみたら押してないときは何も表示されなくて押すと9とかが表示されるんよ
ブツ切りすまん
押しても押さなくてもおなじ処理じゃん・・・
プルうpは?
838 :
774ワット発電中さん:2014/07/17(木) 15:00:35.49 ID:iCj3BFIN
電子の初心者です。PICで、質問があります。
PICのI/Oポートは最初アナログ入力になっていて、
これをデジタルに切り替えないと、入力も出力もできません。
マイクロチップは、なぜこのようにしたのでしょうか?
デジタル入力に中途半端な電圧が入ると、
貫通電流が流れてPICが壊れると言う人もいますが、果たして本当でしょうか?
もしそうであれば、
・全ピンがアナログ入力でないといけないと思います。
・PICに限らず、H8やAVR、ひいては74HCxxなどのIC全般で、同じ状況だと思います。
これは、どのように理解すればよいのでしょうか?
アナログになっている本当の理由は、何でしょうか?
なんだ、マルチ野郎か
>838
正しいかどうかはわかりませんが
アナログ入力が一番安全な状態だからでは無いでしょうか。
電源ONしても何らかのトラブルで、初期設定までいかなかった場合
デフォルトが出力では、もし外部から電圧かかる場合バッティングします。
デフォルト入力の場合は、中途半端な電圧がかかる状態や、オープンだと
余計な電流が流れます(本来デジタル入力にしてはいけない事です)
http://ww1.microchip.com/downloads/en/DeviceDoc/01146B.pdf 22p TIP #3 Configuring Port Pins
でも読んでみてはいかがでしょうか
>>838 ピン設定と外部回路の組み合わせがどうなるか考えればわかる。
半島人やシナ人なら仕方ないが、日本人なら、少しは自分の頭も使おう。
こんなスレにまでネトウヨが…
こんなスレにまで上から目線のヤツが…
あ、いつもそうだった
あ、いつも こ、いつも あ、の席を
846 :
774ワット発電中さん:2014/07/18(金) 22:56:41.14 ID:Yl2iufMI
このクラスで1番の美人の隣を
847 :
774ワット発電中さん:2014/07/22(火) 23:53:31.97 ID:tfEm7vHF
初歩的な事なのですが、質問させていただきたいのですが、
デジタル入力に設定したGPIOに入力(電源電圧と同じ電圧)があると
GPIOレジスタの該当Bitを読みに行くと1となるのでしょうか?
例えば、GPIO2をデジタルの入力にしてその数kΩでプルダウンしている場合、
通常はGPIO.B2は0で入力がHIなら1と言う感じでしょうか?
コンパイラはMikroCでPICは12F683を使っています。
よろしくお願いします。
WPU: WEAK PULL-UP REGISTER 、ちゃんと無効に設定してる?
>>847 Weak Pull-upがオフでプルダウンしてるなら通常は読んだら0だね。
GP2はシュミットトリガ入力だから0.2Vdd以下で0、0.8Vdd以上で1になる。
それ以外は以前の状態による。
>847
それは別スレで話題のCMCONとANSELの設定の問題では無いよね。
852 :
774ワット発電中さん:2014/07/23(水) 17:40:38.66 ID:wmCOhGTP
皆さんレスありがとうございます。
>>848 WPUの無効は設定しています。
>>849 デジタル入力の場合やっぱり、GPIOレジスタは入力が有るか無いかで1又は0に変化するんですよね。
入力に設定したGPIOのGPIOレジスタを読んでもプログラム通りの(想定した)動作をしなかったので、質問しました。
と言う事は、コンパイラのエラーは無いので文法は大丈夫として、処理におかしい所が有るという事ですね。
>>850 違います。自分はここだけしか書き込んでいません。
>>852 別に他人でも同一人物でもいいんだが、
>>850のいうようにピンをデジタルインプットとして使う設定してる?
アナログインプットになってると入力切り替えてもGPIOは変化しない。
ハード的には問題ないのか?
入力切り替えた時にピンとGND間の電圧が変化しているのをテスタとかで見てる?
そもそもどうやってGPIOの状態見てんの?
854 :
774ワット発電中さん:2014/07/23(水) 19:36:58.21 ID:wmCOhGTP
>>853 CMCONとANSELですが、
CMCON0 = 0b00000111;
ANSEL = 0b0000000;
の様に設定していますので、デジタル入出力になっていると思います。
今、書いていて気がついたのですが、レジスタの記述は順番があるのでしょうか?
現在の設定を全部書くと、
OSCCON = 0b01010000;//内部8MHz
TRISIO = 0b00000110;//GP1,2を1:入力に、他を0:出力設定
CMCON0 = 0b00000111;//コンパレータを使わない
OPTION_REG.NOT_GPPU = 1; //内部プルアップ利用しないに設定
GPIO = 0b00000000;//全端子L
ANSEL = 0b0000000;
GPIO = 0b0000000;
としています。
ハード的には、GPIO0に、パルスの出力でRC用サーボを接続、
GPIO1と2にラズベリーパイのGPIO出力を接続かつ、47kΩでプルダウンしてラズベリーパイの出力がLoの時はPICの入力をVssに固定。
現在は、ブレッドボードで、ラズベリーパイは接続せずに単純にVDDをGPIO1と2に接続して代用。
GPIOの状態の読み方は、MikroCのIF文で、if (GPIO.B2 == 1) { というように、GPIOの該当レジスタの値を確認して、変数を増減さしています。
まだ何かデータシートの見逃しによる設定不足などあるでしょうか?
WPU=0; WPU: WEAK PULL-UP REGISTER(P.34)
IOC=0; IOC: INTERRUPT-ON-CHANGE GPIO REGISTER(P.34)
あとは、各設定の前にBANKSELを呼び忘れているとか・・・
856 :
774ワット発電中さん:2014/07/23(水) 20:18:31.37 ID:SZHg7njn
>>854 その記述だとクロックが2MHzになってるけどコメントとどっちが正しい?
GP3はプルアップしてる?
MCLRをOFFにしてたら、リセットはかからないだろうけど、MCLRのピンは使わないときはプルアップしといたほうが良い。
あと気になるのはサーボを入力の確認に使ってるみたいだけど、ちゃんと動いてる?
電源が弱かったりすると回路やソフトが問題なくても動かない場合もある。
入力読みの前に首振らせてみたりしてサーボ側に問題ないか確かめたほうが良いかも。
後問題なければソース全部貼ったほうが解決が早いかも。
857 :
774ワット発電中さん:2014/07/23(水) 21:59:01.24 ID:wmCOhGTP
>>855 プルアップはOPTION_REG.NOT_GPPU = 1;で使用しない設定です。
IOCはやっぱり書いておかないといけないのでしょうか?
デフォルトで使用しない設定と思っていました。
>>856 クロックは間違えていました。
GP3のMCLRは、MikroCのプロジェクトセッティングでディセーブルに設定しています。
電源は、ACアダプタ8V1Aの物を3端子レギュレータで5Vとしています。
858 :
774ワット発電中さん:2014/07/23(水) 21:59:28.86 ID:wmCOhGTP
以下全文です。
extern void main();
extern void delay();
unsigned short pos;
unsigned short neg;
unsigned short cpos;//カウント用
unsigned short cneg;//カウント用
//gpio1,2が入力 0が出力
void main()
{
OSCCON = 0b01110000;//内部8MHz
TRISIO = 0b00000110;//GP1,2を1:入力に、他を0:出力設定
CMCON0 = 0b00000111;//コンパレータを使わない
OPTION_REG.NOT_GPPU = 1; //内部プルアップ利用しないに設定
GPIO = 0b00000000;//全端子L
ANSEL = 0b0000000;
GPIO = 0b0000000;
pos = 15;
neg = 185;
859 :
774ワット発電中さん:2014/07/23(水) 21:59:59.90 ID:wmCOhGTP
while(1)
{
GPIO.B0 = 1;
while (1)
{
delay();
cpos++;
if (cpos == pos)
break;
}
GPIO.B0 = 0;
while (1)
{
delay();
cneg++;
if (cneg == neg)
break;
}
cpos=0;
cneg=0;
if (GPIO.B1 == 1)
{
pos = pos + 1;
neg = neg - 1;
if (pos >= 20)
{
pos = 190;
}
if (neg < 180)
{
neg = 10;
}
}
if (GPIO.B2 == 1)
{
pos = pos - 1;
neg = neg + 1;
if (pos <= 10)
{
pos = 10;
}
if (neg >= 190)
{
neg = 190;
}
}
}
}
void delay()
{
Delay_us(100);
}
変数posとnegが合わせて200になるようにして0.1msのディレーを掛ける事で20ms周期のパルスで
パルス幅は1msから2msの間に制限しているつもりです。
GPIO1のレジスタが1になればパルス幅を0.1ms単位で増やしGPIO2が1なら減らします。
出力はGPIOOに出しています。
860 :
774ワット発電中さん:2014/07/23(水) 22:11:49.66 ID:uyIi4PZO
ソース貼ってもグダグダ言うだけで適切なアドバイスが無いのが、いつものパターン。
Cだと自動でBANKSELしてくれるん?
862 :
774ワット発電中さん:2014/07/23(水) 22:43:49.91 ID:SZHg7njn
周期は20msで固定でいいはずだからもうちょっとシンプルなコードにできるけど動かないことはないように見える。
クロック設定してみてから試してみた?
ポーリングでGPIO読んでるから約20msごとに数値が変動して数値が一瞬で上限か下限にはりつくか同時押しで変化しないことになりそう。
入力を両方Loにした時にサーボちゃんと初期位置まで動く?
どうだめだったのかっていう情報があると、原因を予想するための
手助けになるような気がするけど
864 :
774ワット発電中さん:2014/07/23(水) 22:55:31.49 ID:gqmaOu0q
ソース読めば、どうダメかは分かりそうなもんだが
ここが変じゃね?
if (pos >= 20) {
pos = 190;
}
>>864 まずは
>>852の プログラム通りの(想定した)動作をしなかった という
内容がどのように想定通りでなかったのか知ってからのほうが見やすいかな
と思った次第でしたが、すんませんちゃんと読みますm(_ _)m
ソース読んでみました
・cpos, cnegが初期化されていないことが個人的には気になりました
(多分大丈夫な気もしますが、私は0で初期化すると思います)
・暫定でGPIO1, 2は両方ともVDD固定とのことですので、その場合、
単純に同じデューティーで出力を繰り返す動作になると思いますが、
そうなってますか?
・ラズベリーパイからGPIO1, 2でデューティーの変更をしていると思いますが、
ラズベリーパイがHを出している期間によってはステップが1つ以上かわって
しまいそうな感じですが、それは大丈夫ですか?
>>862さんのコメントの内容が私も気になりました
865補足
posが
15→16→17→18→19→(20以上なのでいきなり)190 って増えちゃってええのん?
negも
185→184→183→182→181→(180以下なのでいきなり)10 って・・・
その後は何押してもソノ値に上書きやん・・・
あと、もう一点気になったのは
・posとnegの初期値がそれぞれ15と185なのに、デューティ変更部分で
どつき判定値と戻し値がそれぞれ5だけ違えてるのはなぜですか?
>>868 そっすねw
ONデューティ上げ(GPIO.B1==1)の方は、5違い以前に数値が変ですね
たぶん、190と10が逆なんでしょうね
にしても、ONデューティ下げ(GPIO.B2==1)の方含め、判定値はいいとしても
戻し値は初期値の15と185にしたほうがいい気がします…
と書いていたところでわかりましたが、初期値の15と185は調整範囲のセンター値で、
調整幅がpos/negそれぞれ±5なのですね(
>>859に書いてあった。。すんません)
わかった。やりたいことってこうじゃない?
(制限範囲にどついたらその値をキープ)
if (GPIO.B1 == 1)
{
pos = pos + 1;
neg = neg - 1;
if (pos > 20)
{
pos = 20;
}
if (neg < 180)
{
neg = 180;
}
}
if (GPIO.B2 == 1)
{
pos = pos - 1;
neg = neg + 1;
if (pos < 10)
{
pos = 10;
}
if (neg > 190)
{
neg = 190;
}
}
872 :
774ワット発電中さん:2014/07/24(木) 19:53:45.23 ID:EUqFgEsJ
皆様、アドバイスありがとうございました。
デューティーを決めているif文のご指摘、自分の勘違いと見直し時にも見逃していました。
また、カウント用の変数の初期化をしていない点など、C言語の基本をおざなりにしてしまっていました。
また、自分の書き方が悪かった点として、
>ラズベリーパイは接続せずに単純にVDDをGPIO1と2に接続して代用。
ですが、常に接続でなく、GPIO1または2にVDDをその都度(例えば一瞬だけGPIO1にVDDを接続)して
ラズベリーパイからの出力が来た場合の変わりにしていました。
誤解する書き方ですみませんでした。
兎にも角にも、20ms周期で、パルス幅が1msから2msで可変すると言うRCサーボモーター制御パルスの
出力に成功しましたので報告します。
本当にありがとうございました。
タイマーで4本のピンに正確なパルス出しながらシリアルが受信できる
12F1822は便利だ
>872
おめでとさーん
875 :
774ワット発電中さん:2014/07/25(金) 18:02:02.97 ID:Wtx1O8Rf
>>873 それって、どうすれば出来る?
TIMER0,TIMER1,TIMER2の組み合わせで4つものPWMできる?
しかも、クリティカルなパルスを維持してシリアル受信って・・・
RCサーボ相手なら、ソフトで十分。
877 :
774ワット発電中さん:2014/07/25(金) 21:50:34.71 ID:Wtx1O8Rf
>>876 ソフトでって、TIMER使わずに上の話の人の様にIOのオンオフだけでやるってこと?
>>875 周期が同じでよければ、タイマーはひとつで良い。
879 :
774ワット発電中さん:2014/07/26(土) 00:29:24.77 ID:YycpsVWs
>>878 確かにそうだけど、それだったら12F1822である必要も無く
12Fの3桁シリーズでも出来るよね。
>873の話はガセ?
12Fを使ったことないのでちょっと調べてみたがUART持ってるのって
1572、1822、1840の3品種しかないぞ。
>>877 >上の話の人
ってのがどれかわからんが、IOのON/OFFで十分。
1822の5ピンにRCサーボを繋げる事だって出来る。
UARTついてるのは8PINでも16Fになってるね
タイマーで4本のピンに正確なパルス出しながらシリアルが受信できる
PSoCは便利だ。
とかね。
PSoCは割高なのと、ツールがもっさりしてて億劫になる。
ソフトウェアでサーボ用パルス作ると最大2ms割り込み禁止になるから
4800bps以上の受信はできない
玄人ならループ内でポーリングするから平気なんだろうがオレには無理
>>886 >玄人ならループ内でポーリングするから平気なんだろうがオレには無理
よく判ってるね。℃素人とそうでない人の違いは、考える能力があるかないか。
その上、Cしか出来ないと致命的に考える能力が育たない。
888 :
888:2014/07/26(土) 21:23:26.35 ID:qwpRe3Gv
888
Cウーザーでも、CTS/RTSでフロー制御すりゃええやん…
PICのバッファは少ないので、フロー制御では間に合わない
そうなん? バッファがいくつであれ(たとえ一バイトだけでも)
2ms以内に受信できない旨を通達できりゃとりこぼさないんとちゃうん?
>>891 実装にもよるけど、相手がPCなら、フロー制御しても数バイトは送ってくるし
そんなめんどくさい事するより、素直に2m秒以下の受信が出来る様にプログラムするべき
8251とかは受信取りこぼしたら次のキャラクタで受信バッファが上書きされちゃうけど
PICのUSARTってオーバーランエラーをクリアしないと次の受信してくれないんだ
最初戸惑った
>フロー制御しても数バイトは送ってくるし
マジかよ、くそ箱売ってくるっ!!
>Cしか出来ないと致命的に考える能力が育たない。
またか