با سلام خسته نباشید خدمت مهندسین عزیز
من یک مشکلی داشتم از شما خواهشمندم به من کمک کنید چون خیلی گیر این قضیه هستم . من میخواستم یک موج سینوسی را که آنالوگ است به وسیله یک ADC خارجی به دیجیتال تبدیل کنم . ADC که من استفاده می کنم 8 بیتی است . من این ADC را به پورت A میکرو Mega16 متصل کرده ام و میخواستم موجی که به آنالوگ تبدیل شد که شامل 256 عدد است (به دلیل 8 بیت بودنش) را در یک چارت pwm i بریزم و این مقدار را با موج مثلثی مقایسه کرده و حاصل را از پورت OC1A میکرو بیرون بدهم . و در این مدار Vin را به موج سینوسی و VREF+ را به power و VREF - را به زمین و clk را به پالس ساعت وصل نموده ام .این برنامه و شبیه سازی را من انجام داده ام اما متاسفانه کار نکرد میخواستم از شما خواهش کنم که هر جایی از برنامه یا مدارم مشکل دارد مرا راهنمایی کنید چون واقعا گیر این قضیه هستم .
برنامه :
شماتیک مدار :
من یک مشکلی داشتم از شما خواهشمندم به من کمک کنید چون خیلی گیر این قضیه هستم . من میخواستم یک موج سینوسی را که آنالوگ است به وسیله یک ADC خارجی به دیجیتال تبدیل کنم . ADC که من استفاده می کنم 8 بیتی است . من این ADC را به پورت A میکرو Mega16 متصل کرده ام و میخواستم موجی که به آنالوگ تبدیل شد که شامل 256 عدد است (به دلیل 8 بیت بودنش) را در یک چارت pwm i بریزم و این مقدار را با موج مثلثی مقایسه کرده و حاصل را از پورت OC1A میکرو بیرون بدهم . و در این مدار Vin را به موج سینوسی و VREF+ را به power و VREF - را به زمین و clk را به پالس ساعت وصل نموده ام .این برنامه و شبیه سازی را من انجام داده ام اما متاسفانه کار نکرد میخواستم از شما خواهش کنم که هر جایی از برنامه یا مدارم مشکل دارد مرا راهنمایی کنید چون واقعا گیر این قضیه هستم .
برنامه :
کد:
#include <mega16.h> #include <delay.h> #define adc1 PORTA char i=0; unsigned char pwm[i]; interrupt [TIM1_COMPA] void timer1_compa_isr(void) { pwm[i]=adc1; OCR1A = pwm[i]; i++; if(i==255); i=0; } void main(void) { DDRD=0xFF; DDRA=0x00; PORTA=0xFF; TCCR1A=0x81; TCCR1B=0x09; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x10; //enable global interrups #asm("sei"); while (1); }
شماتیک مدار :

دیدگاه