FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

10 | 2017/11 | 12
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CCPを2つ使う PIC 複数サーボ駆動成功»

コメント

コメントの投稿













管理者にだけ表示を許可する

ソフトウェアで複数サーボ


ハードウェアでの複数サーボ駆動が結構スムーズにいったので、

ちょっとソフトウェアでの制御の方も試してみました

プログラム


#include<16F877A.h>
#fuses HS,NOWDT,NOPROTECT,PUT,BROWNOUT,NOLVP
#use delay(CLOCK = 20000000)
#use rs232(BAUD = 9600,XMIT = PIN_C6, RCV = PIN_C7)
#define ZERO_P 53036
#define CENTER 60536
unsigned int select=0;
unsigned long data[8] = {CENTER,CENTER,CENTER,CENTER,CENTER,CENTER,CENTER,CENTER};

#int_timer1
void isr1(){
   
    set_timer1(0xCFC2);
    CCP_1 = data[select];

    switch(select){
        case 0: output_b(0x01);break;
        case 1: output_b(0x02);break;
        case 2: output_b(0x04);break;
        case 3: output_b(0x08);break;
        case 4: output_b(0x10);break;
        case 5: output_b(0x20);break;
        case 6: output_b(0x40);break;
        case 7: output_b(0x80);break;
        default : output_b(0x01);
    }
    select++;
   
    if(select >=8) select = 0;
}

#int_ccp1
void ccp1_isr(){
    output_b(0x00);
   
}


void main(){
    set_tris_b(0);

    setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
    set_timer1(0xCF2C);

    setup_ccp1(CCP_COMPARE_INT);
   
    enable_interrupts(INT_CCP1);
    enable_interrupts(INT_TIMER1);
    enable_interrupts(GLOBAL);
   
    output_b(0x00);
    while(1){
        data[0] = CENTER;
        data[1] = CENTER;
        data[2] = CENTER;
        delay_ms(1000);

        data[0] = CENTER + 4000;
        delay_ms(1000);
        data[1] = CENTER + 4000;
        delay_ms(1000);
        data[2] = CENTER + 4000;
        delay_ms(1000);

        data[0] = CENTER - 4000;
        delay_ms(1000);
        data[1] = CENTER - 4000;
        delay_ms(1000);
        data[2] = CENTER - 4000;
        delay_ms(1000);
       

    }
}



なんてこった!


ソフトウェアでパルスの分岐をした方がプログラムがもっさりするような気がしてたから
ハードウェアでやったのに

なんか、ソフトウェアでやった方がすっきりしてしまったww

しかもCPLDがない分回路構成もすっきり。

これはww

さすがにこっちで行くかw

とりあえず、次は16本のパルス出力に挑戦だな。
8本でうまく行ったからって油断は出来ないな

[高画質で再生]

PICのみで複数サーボ駆動

[広告] VPS

スポンサーサイト

CCPを2つ使う PIC 複数サーボ駆動成功»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。