過去ログ:
キーワード 条件: 表示:
Page: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
媚薬最強

せっかく利用する媚薬なので、効果を出したい・・. 女性用媚薬の効果的な使い方を探し ている。 そんな方にお勧めな媚薬の使い方についての情報です。

媚薬最強 2016/05/04(Wed) 11:07 Home No.503
電動バイブ

電動アナルバイブあります!初心者アナルクィーンやビーズタイプの防水アナルドラゴン 、超強烈「ストンピングラブボール安売り価格33440 円+税」!女性の方もお気軽に!

電動バイブ 2016/04/26(Tue) 19:06 Home No.502
催淫剤

媚薬(びやく)をご紹介します。 媚薬(びやく)とは、狭義には催淫剤と呼ばれ勃起不全の 治療に使われる薬を言い、広義には性欲を高める薬、恋愛感情を起こさせるような薬を 言う。惚れ薬とも称される。

催淫剤 2016/04/26(Tue) 17:30 Home No.501
シアリス 通販

週末勃ちっ放し!人気のED薬・シアリスは通販価格を比較して最安値ゲット!シアリス 20mg(4錠)は8480円から通販可能・1日半続く勃起効果で燃え尽きろ!

シアリス 通販 2016/04/26(Tue) 16:35 Home No.500
蔵秘雄精

日頃の活力アップや精力増強に有効 このサイトは蔵秘雄精の精力効果についての 情報を発信しているサイトです。 蔵秘雄精を摂取すると下記のような効果が期待できる として、 近ごろ様々な分野から注目を集めています。 

蔵秘雄精 2016/04/26(Tue) 15:15 Home No.499
巨人倍増

巨人倍増(キョジンバイゾウ)枸杞カプセルは細胞の再生力を促進、睡眠時の睾丸の働き を活発化させ、ペニス組織の発育を促進することによってペニスの大きさそのものを更に 成長させます。VigRX 最先端技術によりペニスの勃起力を大幅に向上!

巨人倍増 2016/04/26(Tue) 11:29 Home No.498
威哥王

威哥王(いかおう)という超危険精力剤を調査した結果、あまりの酷さに我々は驚愕。 中国クオリティーのヤバさ。徹底的に解説しています。

威哥王 2016/03/25(Fri) 15:15 Home No.497
紅蜘蛛

紅蜘蛛はキメセクと相性抜群!こちらでは紅蜘蛛の効果と副作用をご紹介!もちろん 全て合法媚薬!セックスドラッグはキメセクネットにお任せください!紅蜘蛛の購入は 通販にてどうぞ!

紅蜘蛛 2016/03/25(Fri) 10:41 Home No.496
シアリス 激安

シアリスを通販で購入する時はこのような事が起こりますので、
購入前は販売しているサイトの事をよく調べ、信頼できそうなサイトであれば
購入してみて下さい。

シアリス 激安 2016/03/23(Wed) 17:01 Home No.495
無題

話題が長くなりそうですし、新年も明けたので、代えさせて頂きます。
猛牛ロックさん、済みません。maboさんにお聞きしていた件です。

本日1日拝見しましたが、悲しいかな、分からないことばかりです。
済みませんが、教えて頂けませんか?



1、セレクタ枠内に4機能有るけど、繋がっている入力端子は、RA0とRA1だけです。OFFはともかく3入力端子が必要では?
2、セレクタ枠内に「3.MACH」とあり、RA6にも「MACHから入力信号」とあります。 RA6端子を使って「PICの割込み」を入れるのでしょうか、難しそうな感じです。


while(1){
  OFF_TIME=PORTB&0b1111+1;  //下位4ビット読み取り 1〜16
1、これは、OFF_TIME の定義の方法で、RBの端子が導通した時(0)、導通しない時(1)になるのを利用し、スイッチにより下位4ビットに立った1か0の2進数の数値をOFF_TIMEとする?
更に、1〜16の数値は単に16種類という意味でしょうか?

  ON_TIME=PORTB>>4+1;  //上位4ビット読み取り 1〜16

  if(RA0==1){ //MACHからオンの信号が来たら
    RA2=0;
    wait(300*OFF_TIME); //基準の時間(300)に設定時間をかける
    RA2=1;
    wait(300*ON_TIME);
  }else RA2=0; //MACHからの信号がオフなら
}
1、IF文で、RA6へのマッハ信号有無により、ON_TIMEに300倍した時間を取るということですね?であれば、RA2ではなくRA6と標記するのでは?
2、RB0~RB7までは出力端子なのですか?

ポートをそのまま代入しないで
unsigned int TIME[]={1,2,3,5,10,15,20,30,60,120,200,300,500,750,1000,1500};
の様に一覧を作っておいて、ループ内で
i=PORTB&0b1111;  //0〜15
j=PORTB>>4;  //0〜15
unsigned intTIME[]={1,2,3,5,10,15,20,30,60,120,200,300,500,750,1000,1500}という変数をどうやって関連付けるでしょうか?

TR 2016/01/04(Mon) 18:24 No.478
Re: 無題
TRさん、こんばんは。猛牛ロックさん、こんばんは。

猛牛ロックさん、書き忘れましたが、○月のロータリーディップスイッチのご紹介ありがとうございます。こんなスイッチあるんですね。

TRさん、失礼な言い方になるかと思いますが、猛牛ロックさんのプログラムは、プログラム始めた方には、ちょっと、ハードルが高いかもしれません。

私の理解してること書きます。

まず、猛牛ロックさんのプログラムは、割り込みは使っていません。
それから、セレクターのロータリースイッチの機能部分のプログラムは、今回のものには入ってないように思います。

もし、MACHからの信号の動作、手動で動作、OFF等の機能を使うのであれば、別途その部分のプログラムを書く必要があると思います。

それから、
>OFF_TIME=PORTB&0b1111+1;  //下位4ビット読み取り 1〜16
の部分ですが、○月のロータリーディップスイッチの機能が分かると理解しやすいです。
○月のこのスイッチは、

http://akizukidenshi.com/catalog/g/gP-02276/

取説見るとおもしろいスイッチです。

簡単に言うと16進数を4桁(4バイト)の2進数に変換できるものです。
0〜Fの16進数(10進数だと、0〜15)の数字を4桁の0(Low)と1(High)に直して、ポートBの4つの端子を、数字に応じて設定できます。
ですから、この4つのポートを読み取れば、0〜15(10進数)の数字が設定されたか、判断できます。
添付の写真を見るとなんとなく分かると思います。
●が0(グランドに結線)と考えるといいと思います。

前にも書きましたが、

 0000→0(0)
 0001→1(1)
 0010→2(2)
 0011→3(3)
 ・・・・・
 1001→9(9)
 1010→A(10)
 1011→B(11)
 1100→C(12)
 1101→D(13)
 1110→E(14)
 1111→F(15)

のようになってます。( )の中が10進数です。

ということで、ポートBの4つを読み取るとることで、ロータリーディップスイッチで設定した0〜15の数値をOFF_TIMEに設定できることになります。

(補足です。読みとった数字に+1してますので、0〜15が1〜16になります。)


それから、
>unsigned intTIME[]={1,2,3,5,10,15,20,30,60,120,200,300,500,750,1000,1500}という変数をどうやって関連付けるでしょうか
ですが、プログラムでいうと、「配列」という考え方を使います。

蛇足ですが、プログラムで使う数字は、宣言によってその範囲が決められていて、それを超えると、プログラムが暴走します。
次のようになってます。

   int    -32768〜32767
  unsigned int  0〜65535

プログラムを作り始めた頃、この範囲を超えた数字を使って、よくプログラムを暴走させました。

>unsigned intTIME[]={1,2,3,5,10,15,20,30,60,120,200,300,500,750,1000,1500}
のように宣言すると、

 TIME[0]=1
 TIME[1]=2
 TIME[3]=3
 TIME[4]=5
  ・・・・・・
 TIME[14]=1000
 TIME[15]=1500

のように割り振ることができます。TIMEという0から15の番号のついた箱に,数字を入れると考えると分かり易いと思います。
[ ]の中の数字を添字といいますが、この添字を変えることで、その箱に入った数字を取り出せます。

たとえば、ロータリーディップスイッチで、設定した数字が4だとすると、読みとった数値を

 i=4

のようにiに代入すると、iが4ですから、
 
 TIME[i]=5

のようになりますので、ディップスイッチと関連づけることができます。
「配列」という考え方は、プログラムではよく使います。

明日にでも、使わなくても大丈夫だと、猛牛ロックさんからアドバイスありましたが、TMR0の割り込みを使って、動作の開始とストップをするプログラムアップします。
mabo 2016/01/05(Tue) 00:23 No.479
Re: 無題
MABOさん、説明ありがとうございます。

セレクタはパネルにつけるロータリースイッチを連想して考えました。
機能はなんとなく付けただけです。
0.OFF そのまま停止させます
1.「手動」ポンプオン 間欠させずにオンです
2.「手動」間欠です
3.MACHはMACH信号に応じて(オンの間だけ)間欠
と言うモードですが、TRさんの必要に応じた機能で良いかと思います
普段は3のモードでも手動にしたい場合もあるかと思ってそうしてみました。
(プログラムは各モードは考えていません。3.のみです)

>  OFF_TIME=PORTB&0b1111+1;  //下位4ビット読み取り 1〜16
>  ON_TIME=PORTB>>4+1;  //上位4ビット読み取り 1〜16

これは、DIPスイッチのつまみの数字に1を足したものです。
つまみの値が0ならON_TIMEが1、Fなら16になります。
このDIPスイッチは不論理になっているのでプルアップして読み取るとそのままの数字になります。別の書き方だと
OFF_TIME=PORTB%16+1;
ON_TIME=PORTB/16+1;
です。1を足したのは後で倍率にする為にそうしました。

ピン名が違っていましたね。最初RA0→MACHからの入力、RA1→ポンプへの出力を考えていたんですけど
途中で図を書き換えておかしくなってしまいました。すいません。

> 1、セレクタ枠内に4機能有るけど、繋がっている入力端子は、RA0とRA1だけです。OFFはともかく3入力端子が必要では?

4種なので2ビットで出来ます。ただし、2回路入りが必要です。http://akizukidenshi.com/catalog/g/gP-00101/
これなら、4種までは2ピン、6種までは3ピンで2進法で入力可能です。添付図の配線です。
けれども、ピンが余っているなら4種4ピンそれぞれで受けても構いません。

> 2、RB0~RB7までは出力端子なのですか?

いいえ、Bポートは4ピンずつ、オフタイム、オンタイムのDIPスイッチの読み取りに使っています。入力です。
ピンが余っているのなら、DIPスイッチを使えば、2の(ピン数)乗の識別が可能になります。
可変抵抗を使ってADCで読み取るのが通常の方法ですけど、16F627AがADCが無かった事(テキストにも無い?)と、
作るにはこちらの方法の方が多少難易度が下がるのではと思い、提案しただけです。

> unsigned intTIME[]={1,2,3,5,10,15,20,30,60,120,200,300,500,750,1000,1500}という変数をどうやって関連付けるでしょうか?

wait(300*TIME[i]);です。DIPスイッチがFの時(つまみの表示は0〜Fなので)はTIME[i]は1500です。つまりwait(300*1500)になります。
勿論、基準になる300や一覧にした数値は適当に並べただけですから使いやすい数値に直した方が良いです。
猛牛ロック 2016/01/05(Tue) 02:08 No.480
Re: 無題
TRさん、猛牛ロックさん、こんにちは。書き込みありがとうございます。

TRさん、タイマー0の割り込み使ったプログラム掲載します。

 http://mabo52.sakura.ne.jp/files/kanketu.txt

キットで遊ぼうの記述の仕方と一部分変更しました。キットで遊ぼうでは、「config」の記述を「#define _LEGACY_HEADERS」という記述で、以前の方法で書いていあります。
このままでもいいのですが、いろいろ不具合がでるので、新しい記述方法にしました。
この方法は、PICの種類ごとに自動で作成してくれる機能があるので、これからは、こちらを使った方が便利だと思います。後日、やり方書きたいと思います。

また、今回、タイマー0の割り込みを使いましたが、キットで遊ぼうの記述の方法では、エラーになるようなので、これも変更しました。

    TOIF→TMR0IF
    TOIE→TMR0IE

それから、テキストでは、プリスケラ−の設定を、

    PS2,PS1,PS0

で設定していますが

    OPTION_REG=0b000000000

と一括で設定しました。これは、

    PS2=0,PS1=0,PS0=0

と同じ意味です。この設定で、約512μ秒ごとに割り込みをかけて、RA6の状態をしらべています。
RA6がLOWになると動作を開始するようにしました。

それから、今回は、備え付けの「delay_ms」の関数を使いました。1msを1000回数えて、約一秒になる関数を作ってます。

入出力端子は、猛牛ロックさんのかいてくださったものに合わせてあります。
多少変更することで、ロータリーディップスイッチも使えるようになると思いますが、今回は、決めうちのプログラムです。
設定を変えるには、

  define KanketuTime 2
  #define DousaTime 1

数字の部分を変えて、再度コンパイルする必要があります。今回のプログラムは、動作1秒、間2秒という感じで作ってあります。
キットで遊ぼうの基板のLEDを使うのに、LowでLEDがつくようにしてありますが、リレー等を使うには、

   #define On 0
   #define Off 1

の0と1を逆にすればいいと思います。

動作の様子で、タクトスイッチで、MACHの代用してます。

 https://www.youtube.com/embed/6o6_5cTaVgQ

たたき台になればと思います。
mabo 2016/01/05(Tue) 10:32 No.481
Re: 無題
追伸です。

プログラムで、割り込みの処理のところで、本来いらないものを入れてます。
それは、「TMR0=0」の部分です。タイマー0は、0からカウントアップして、TMR0の値がFFから0になった時に割り込みがかかります。
ですから、余分な部分ですが、一度ここではまったので、忘れないように書いてあります。
途中から数える場合は、ここで設定をしてあげないとまた0からカウントアップすることになって、思った動作しなくなります。
mabo 2016/01/05(Tue) 20:27 No.482
Re: 無題
maboさん、済みません。
急に複雑になってしまって、ついて行けません。
見ては見たものの、猛牛ロックさんのプログラムはどこへ行ったのか?
とにかく、C言語特有の流れしか分かりません。
関数宣言なんてものも初めてです。
TR 2016/01/05(Tue) 21:12 No.483
Re: 無題
> 急に複雑になってしまって、ついて行けません。
> 関数宣言なんてものも初めてです。

いやいや、関数宣言は出てきたでしょ?多分。
一応、MABOさんのプログラムを元にセレクタを含めて書いてみたので載せます。
Second関数を0.1秒関数にしたりと、MABOさんには申し訳ないと思っています。
(そのままで、ちゃんと動くかどうかは運しだいです)
実際、切削時(途中)は切削液の出具合を調整したり、止めて、エアーに変えたり、逆に
ドライからウェットに切り替えたりとセレクタは必要不可欠のように思うのですよね。

> 入出力端子は、猛牛ロックさんのかいてくださったものに合わせてあります。

MABOさん、すいません。変えちゃいました。(;'∀')
というのも、ポートAは特に考えずに割り当てたので(途中から「書きずらい」と言う理由で左に反転したり)あまり
理に適ったものではなかったので、一応考えて配置しました。と言っても小規模の変更ですけど。
使用マイコンも627Aにするのか???だったのですが、取りあえず、これで使用可能なように考えています。

出力のオン→0、オフ→1はやめた方が良いです。ノーマル(アイドル)でポンプオフ=0にしました。
多分、MACHはアクティブハイ、ローどちらでもOKでしょうから、アクティハイ(MACH)、プルダウン(マイコン)に
してみました。(こっちの方が判りやすいですよね。)
入力系がひと纏まりになるように、また、仕様変更しやすいように、ポンプへの出力はRA7にしました。

ポートBは使わなくても入力で内部プルアップが安心です。
(627AはポートBのみ?内部プルアップがあります)
勿論、不論理のロータリーDIPSW(4ピンx2個)を付けるのを想定して書いています

つまり、全て、信号も出力もピンに対してはオンがHでオフがLに統一しています。

私なりに解り易く書いたつもりなのですが、なにぶん、我流ですし、経験も浅いのでコンパイルが通るかどうかも判りません。
勿論、コンパイルが通っても、しっかり動作するかは判りません。
猛牛ロック 2016/01/05(Tue) 22:10 No.484
Re: 無題
プログラムです。2つ添付できなかったので。

追記
早速、一部おかしなところがあったので修正しました。
猛牛ロック 2016/01/05(Tue) 22:12 No.485
Re: 無題
TRさん、こんばんは。私の書いたプログラムは、猛牛ロックさんの書いてくれたプログラムを多少変更したつもりで書きましたが、すみません、ちょっと、ごちゃごちゃでしょうか・・・・。

私の書いたプログラムは、猛牛ロックさんのプログラムで、

 ロータリースイッチの読み取りを省く。
 wait(300*ON_TIME)をSecond()に変更
 if(RA0==1){}のMACHからの信号を割り込みでの判断に変更
 
ということしただけで、大きな変更はないつもりでした。

それと、関数宣言ですが、このばあい、Second()という関数を作りましたが、その関数がmain()の関数と同じファイルのなかにありますよ、と明示してるだけです。

cnfigの部分は、ちょっと複雑そうにみえますが、中身は、以前のものと全く同じです。

以下が猛牛ロックさんが掲載してくださったプログラム
で、私がを加えたところがわかるようにかいてみました。

while(1){


  //OFF_TIME=PORTB&0b1111+1;  //下位4ビット読み取り 1〜16
  //ON_TIME=PORTB>>4+1;  //上位4ビット読み取り 1〜16



  if(RA0==1){ //MACHからオンの信号が来たら
    RA2=0;

    //wait(300*OFF_TIME); //基準の時間(300)に設定時間をかける
    Second(KanketuTime);約2秒
    RA2=1;
    Second(DousaTime);約1秒
    //wait(300*ON_TIME);
  }
  //else{//MACHからの信号がオフなら
// RA2=0;
  //}

}

コメントアウトした、
else{//MACHからの信号がオフなら
RA2=0;
  }
のRA2=0の動作を止める部分は、割り込みで処理しました。

 割り込み使わなくてもできそうですので、その方がいいかもですね。

 ただ、 wait()の関数は、ちょっと工夫しないと、時間が短いかもです。
 
mabo 2016/01/05(Tue) 22:17 No.486
Re: 無題
猛牛ロックさん、こんばんは。書き込みありがとうございます。

前後してしまいましたね。

>出力のオン→0、オフ→1はやめた方が良いです。ノーマル(アイドル)でポンプオフ=0にしました。

この通りですね。私のテストボードのLEDは、OでONですので、ポンプ等では、逆にするようかなと思いました。

それと、アップしてくださったプログラム、

 if((Start==1&&MODE=3)||MODE==2)

の部分、

 if((Start==1&& MODE==3)||MODE==2)

のような気がします。

確か、TRさんの○ECさんの基板は、フルードの端子がプルダウンしてあったと思うので、問題は起きないと思いますが、プルアップしてあると、マッハを終了したときに、ポンプが作動してしまうという不具合がでるようです。
mabo 2016/01/05(Tue) 22:34 No.487
Re: 無題
maboさんレス有難う
>TRさん、こんばんは。私の書いたプログラムは、猛牛ロックさんの書いてくれたプログラムを多少変更したつもりで書きましたが、すみません、ちょっと、ごちゃごちゃでしょうか・・・・。

テキストから、大きく離れてしまった感があります。
以前の時は、テキストを見直して、突っ込んでいけましたが、
今回は、全くその手が通じません。


猛牛ロックさんへ、
文字化けしてしまって、読み取れませんでした。
TR 2016/01/05(Tue) 22:40 No.488
Re: 無題
>  if((Start==1&&MODE=3)||MODE==2)
> の部分、

すいません。消し忘れでした。既に修正済みです。
割り込みを無くしたのでStartフラグは無くしました。

> 文字化けしてしまって、読み取れませんでした。

エンコード→UNICODE(UTF8)にしてみて下さい。
文字化けの理由等は判りません。何かを変えると普通に表示されるのでしょうけど。
猛牛ロック 2016/01/05(Tue) 23:18 No.489
Re: 無題
> 私のテストボードのLEDは、OでONですので、ポンプ等では、逆にするようかなと思いました。

確かにその通りですね。逆(0でポンプオン)でも同じでしたね。
私の言いたかったのは、リレーを駆動させた状態(NC接続)=ノーマル=ポンプオフの状態というのはやめた方が良い、
と言う事でして、ピン---PNPトランジスタと言うパターンもありましたね。頭が回りませんでした。
でも、やはり通常の0でオフの方が解り易いのでこちらを推奨します。
猛牛ロック 2016/01/05(Tue) 23:31 No.490
Re: 無題
更に修正箇所があったので再UPします。(>_<)

> 今回は、全くその手が通じません。

不覚にも笑ってしまいました。(´ー`)
猛牛ロック 2016/01/05(Tue) 23:53 No.491
Re: 無題
maboさん、こんばんは。

今日も、maboさんの、回答文とプログラムを見ていました。
ちょっとずつ、分かった来ました。
もうネット様様です。テキストも良く見ると、maboさんのプロググラムが分かるようになってきました。
自分が良く分からなかったのは、タイマー0を理解していなかったからです。

最初、maboさんのプログラムを見た時、前文の#pragma configの多さに圧倒されてしまいました。
それと、初めて見る関数、これにも圧倒されました。



以下自分なりに調べて、注釈をつけました。


#include <xc.h>

#define _XTAL_FREQ 4000000 //delay用宣言
/* あとで使うときのために内部クロック周波数を4MHzと定義しておく。設定したことにはなっていない */
/* _XTAL_FREQ は本来不要だが、__delay_us( ) などを使うときには設定しておく必要がある。*/

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = INTOSCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital input, MCLR internally tied to VDD)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)

#define KanketuTime 2
#define DousaTime 1
#define On 0
#define Off 1
#pragama configの羅列!

int Start;
* グローバル変数テキストP175、プログラム全体で利用可のな変数


//関数宣言
void Second(int sec);

void interrupt InterSyori( void ){//TMR0の割り込み処理
* (割り込み処理関数を作るには、関数の修飾子に「interrupt」を付加し、
  下記のフォーマットで関数を作ります。yyyyは関数名で任意の名前にできます。
  これでレジスタの退避、復旧ルーチンや、ジャンプテーブルは自動的にコンパイラが
  生成しますので、簡単な記述で割り込み処理ができます。)

if(TMR0IF==1){//割り込みがあったら
if(RA6==0){//MACHからの信号をしらべて0(Low)だったらスタートのフラグを1にする
if(Start==0){
Start=1;
}
}
if(RA6==1){//MACHからの信号をしらべて1(High)だったらスタートのフラグを0にして
if(Start==1){
Start=0;
RA2=Off;//機器の動作を強制的に止める。
}
}
TMR0=0;
TMR0IF=0;
}
}

// メイン関数
void main (void){

OSCF=1;//内蔵発振器 4MHz使用に設定

CMCON = 0x07;// 1,2,17,18端子を入出力端子に設定

PORTA = 0x00;// 電圧レベルの初期設定
PORTB = 0xFF;

// 入出力設定
TRISA = 0b01010000;//RA5は入力専用・RA6は入力他は出力
TRISB = 0b11111111;//RB0は入力

//初期設定
RA2=Off;//MACH
RA6=Off;
Start=0;

//割り込み設定
OPTION_REG=0b000000000;//プリスケラ? 2 5ビット=0 WDTは使わない
TMR0=0; //TMR0カウンターを0に
TMR0IF=0; //TMR0フラグクリアー

TMR0IE=1;//TMR0割り込み許可
GIE=1;//全体割り込み許可

// 永久ループ
while(1){
if(Start==1){//スタートフラグが1なら動作開始
RA2=On;
Second(DousaTime);
RA2=Off;
Second(KanketuTime);
}
}
}



// 待ち時間関数}
void Second(int sec){
while(sec >0){
sec--;
__delay_ms(1000);

*//delay(ms)とはプログラムを指定した時間だけ止めます。単位はミリ秒です(1,000ミリ秒=1秒)。
}
}
TR 2016/01/06(Wed) 21:54 No.492
Re: 無題
TRさん、こんばんは。書き込みありがとうございます。

混乱させてしまったようですみません。

長いconfigですが、コメントをとってしまうと、それほど長くありません。
コメントは、私がつけたのではなくて、自動生成したものをコピペしただけす。

内容的には、今までの、

#define _LEGACY_HEADERS//旧CONFIG対応

// インクルードファイルの読み込み
#include <pic.h>

__CONFIG ( UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO );

の一行と全く同じ内容です。この表記だと、コンパイルは通るのですが、編集画面で、エラーがでます。
このエラーがちょっと好みにあわないので、新しい表記を使いました。面倒でも、新しい表記にした方がいいと思います。

後日自動生成の方法、書きたいと思います。ネットで調べても、出てると思います。新しい表記では、それぞれの項目をONにするかOFFにするかかくだけですので、言葉覚えなくてもいいので、手軽だと思います。

(追記と訂正をしました。)

それから、割り込み関数の処理ですが、MACHからの信号を調べて、STARTフラグを操作してるだけです。
MACHからの信号は、一度HighLowになるとずっとそのままですが、割り込みでは、何度もその信号をしらべるので、一度だけSTARTを1にするために、STARTが0の時だけに1にするようにしてます。
同じように、MACHからの信号がLowHighになったら、STARTを0にして、RA2を強制的にOFFにして機械を止めます。
これも、STARTが1の時だけ、一回だけ0にして機械を止める処理をします。
−以下追記−
(キットで遊ぼうのタクトスイッチをMACHにみたててますので、TRさんの○ECさんの基板からの信号で動かす場合は、プルダウンされてますので、Highで動かして、Lowでストップするように、1と0を反対にする必要があります。またMACHはアクテイプハイにします。)




それから、関数の宣言ですが、今回のプログラムのように関数をmain()関数の後に書くと、まえもって、こんな関数を使いますよ、という宣言をしておかないとエラーになります。


それほど難しい処理はしてないのですが、割り込みの理解が進んでないと、ちょっとてこずるかもです。
タイマー0の割り込み覚えると便利です。
mabo 2016/01/06(Wed) 23:41 No.493
Re: 無題
>MABOさん

> 確か、TRさんの○ECさんの基板は、フルードの端子がプルダウンしてあったと思うので、問題は起きないと思いますが、プルアップしてあると、マッハを終了したときに、ポンプが作動してしまうという不具合がでるようです。

今回はマイコンで入力ですので、○EC基板の100KΩのプルアップ抵抗を無効にするために10KΩでプルダウンを考えました。
0.5V程度の電圧値なのでLになります。

と思っていたのですが、部品表を見ると、何やら100kΩ→5.1kΩに大幅に変更したようですね。回路図の方も書き換えて欲しいところです。
今回はTRさんが回路を変更したので大丈夫でしょうけど、注意が必要ですね。


>TRさん

だいぶ理解が進んだようですね。
私もTRさんのコメント

> * (割り込み処理関数を作るには、関数の修飾子に「interrupt」を付加し、
>   下記のフォーマットで関数を作ります。yyyyは関数名で任意の名前にできます。

で勉強しました。任意の名前でOKだったのですね。タイマー割り込みなのに「InterSyori」になっていたので
その部分は何でもいいのか???、と薄々感づいてはいたのですが。

作るプログラムの概要は判ったでしょうから、まずは全体の仕様を考えて下さい。
・出力(マイコンピンからポンプまでの配線)はどうするのか?
  リレーでAC100Vを制御
  リレーでDC24V?を制御
  SSRでAC100Vを制御
  パワーMOSFETで24V?を制御

・マイコンの電源はどうするのか?
  電池
  ポンプのDC24Vから定電圧レギュレータ等
  5Vアダプタ

・どのように利用するか
  ○EC基板(SSボード)付近に設置して、一度設定したら通常操作しない
  CNCマシン周囲に設置し、切削具合に応じてその都度操作。その場合、必要な機能(スイッチ)は?

・マイコンの制御範囲はどうするのか?
  全くの単機能なら考える必要はないのですが、セレクタを付けるなら「セレクタからの配線でマイコン(等)を制御するのか」それとも
   「マイコンでセレクタからの入力に応じて制御するのか?」といった事です。
   
本来、ここまで来てから、マイコンの機種を決めて回路図を作成(確定)し、プログラム作成開始!!です。

気になっているのは、既にMACHからの入力に応じてポンプを操作する回路や操作系が設置済みで、今回は単純な間欠リレーが欲しいのかな?
といった疑問です。それならそれで、どのように既存のものに組み入れるか、考えなければなりません。

場合によっては=「マイコンが通電中なら、間欠動作」という条件なら、プログラム自体は
while(1){
  POMP=On;
  __delay_ms(1000);
  POMP=Off;
  __delay_ms(2000);
}
だけしか必要ないのかもしれません。
猛牛ロック 2016/01/07(Thu) 11:36 No.494
Page: | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |

- JoyfulNote -