0

ここでは、PIC コンパイラに pic 16f877 MCU と mikroc を使用して PWM 信号を理解しています。データシートによると、この MCU は PWM で 10 ビットの分解能を持っています。この決議が何を意味するのか理解できません。それを使用してモーターに電力を供給すると、1024 の異なる速度を得ることができるということですか。これは、LEDの光を徐々に増やしてから再び減らすためにmikrocで書いたプログラムです。

int i=0;

void blink_up(){
  i++;
  PWM1_Set_Duty(i);
  Delay_ms(10);
}

void blink_down(){
  i--;
  PWM1_Set_Duty(i);
  Delay_ms(10);
}


void main() {
  trisc=0;
  portc=0;

  PWM1_Init(5000); //initilize PWM 1 at 5kHz
  PWM1_Start();
  PWM1_Set_Duty(i);

 while(1){
    while(i != 1023){
     blink_up();
    }

    while(i!=0) {
     blink_down();
  }

}

しかし、これは期待される結果をもたらしません。LED が徐々に点滅し、突然オフになり、再び徐々に点滅します。しかし、行 while(i != 1023)を `while(i != 255) に変更すると、期待される結果が得られます。

10ビットの解像度が何を意味するのか知りたいのですが、それを間違って理解したのか、それとも何か間違ったことをしているのでしょうか。

助けてください....

4

2 に答える 2

0

ついに私は解決策を得ました。他の誰かの役に立つかもしれないので、私はそれを与えます。

mokroc の pwm ライブラリは 10 ビットをサポートしていません。そのためPWM1_Set_Duty()、0 から 255 までの数値のみを受け入れます。これは、0% デューティから 100% デューティ サイクルです。10 ビットの解像度を使用する場合は、手動でレジスタに書き込む必要があります。

于 2013-07-16T10:28:34.667 に答える