[実験 MikroC Pro PIC16F84A_LED_0023]
PORTBのLEDをDuty比別で点灯するプログラムを関数を使って考えなさい。
( 例 1)
MikroC PROでは、PORTB.F0 = 1 のような書式もあります。
PORT(A,B,C,D).F(0,1,2,3,4,5,6,7) = 1(または0)
PORT(ポート番号).F(ピン番号) = 1(または0)
で表記します。
PWMで多数のピンを制御させるのは、負担が多き過ぎるようです。
いろりろ試したのですが、高速でON,OFFを繰り返すので
誤動作が起きやすいようです。
回路が吐き出し(ソース電流)より吸い込み(シンク電流)の方が、良いかも知れません。
void Duty80(){ // PWM Duty比 80%
PORTB.F1 = 1; // ○●○○○○○○
Delay_us(8);
PORTB.F1 = 0; // ○○○○○○○○
Delay_us(2);
}
void Duty80(){ // PWM Duty比 80%
PORTB.F1 = 1; // ○●○○○○○○
Delay_us(80);
PORTB.F1 = 0; // ○○○○○○○○
Delay_us(20);
}
なども試しましたが、1PINだけなら問題なく正常に動きましたが、
PINを増やすと誤動作が目立ちました。
誤動作の原因
1)プログラムミス。
2)MikroC PROのバク。
3)PIC16F84Aに負担が掛かり過ぎている為。
4)LEDが、吐き出しの為、電流不足。
今回のプログラムは、PWM制御だけでも膨大な計算量なので
変数や引数を使わずPIC16F84Aの負担軽減に努めました。
左から2番目のRB1のLEDが少し暗いですが、
僕の半田付けが悪くLEDの方向が上を向いている為です。
( 例 2)
mikroC PRO for PIC
0 件のコメント:
コメントを投稿