سلام
زمانی که بخوایم یه پالس با پهنای ثابت درست کنیم یه مقدار ثابت به OCR0 میدیم مثلا کد زیر:
وبا تغییر OCR0 از صفر تا 255 عرض پالس رو تغییر میدیم ولی اگه بخوایم یه برنامه بنویسم که در طی چند ثانیه عرض پالس از حداق مقدار تا حداکثر مقدار تغییر کنه باید چی کار کرد.
من OCR0=i میزارم و i رو حدودا از صفر تا 255 تغییر میدم ولی عرض پالس تغییر نمیکنه؟چون میخوام به در طول چند ثانیه عرض پالس تغییر کنه از delay استفاده میکنم.مشکل چیه؟
مثلا کد زیر رو ببینید:
زمانی که بخوایم یه پالس با پهنای ثابت درست کنیم یه مقدار ثابت به OCR0 میدیم مثلا کد زیر:
کد:
#include <mega32a.h> void main() { DDRB=0xFF; TCNT0=0x00; OCR0=230; TCCR0=(1<<WGM00) | (1<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00); while(1); }
من OCR0=i میزارم و i رو حدودا از صفر تا 255 تغییر میدم ولی عرض پالس تغییر نمیکنه؟چون میخوام به در طول چند ثانیه عرض پالس تغییر کنه از delay استفاده میکنم.مشکل چیه؟
مثلا کد زیر رو ببینید:
کد:
#include <mega32a.h> #include <delay.h> void main() { int i=10; DDRB=0xFF; while(1) { while(i<255) { TCNT0=0x00; OCR0=i; TCCR0=(1<<WGM00) | (1<<COM01) | (1<<COM00) | (1<<WGM01) | (0<<CS02) | (0<<CS01) | (1<<CS00); delay_ms(500); i=i+5; } i=10; } }
دیدگاه