ايران ويج

نسخه‌ی کامل: تولید موج pwm
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
سلام هدف من این نیست که خروجی dc ولتاژم رو اندازه بگیرم هدف من اینه که چهار تا موج خروجی ددقیقا مثل خروجی باشه کپیِ کپی یعنی vp برابر 3.2 و عرض پالس برابر ورودی حالا باید چه کار کنم همین درسته یا باید تغییراتی ایجاد کنم؟ یا همون دادن ولتاژ ورودی 3.2 به mega64L کافیه؟

با تشکر.
سلام من کد هایی رو نوشته بودید رو تو پروتیوس تست کردم ولی نتیجه نداد این کد ها :

برای مگا 32:
کد:
#include <mega32.h> //يا 16
#include <delay.h>
#define ADC_VREF_TYPE 0x20

unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}


void main(void)
{
unsigned int PWM;

PORTA=0x00;
DDRA=0x00;

PORTB=0x00;
DDRB=0x08;

PORTD=0x00;
DDRD=0xB0;

TCCR0=0x69;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0xA1;
TCCR1B=0x09;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

ASSR=0x00;
TCCR2=0x69;
TCNT2=0x00;
OCR2=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x81;

while (1)
      {
      
      OCR1A=128;
      

      }
}

اینم برای مگا 64:
کد:
#include <mega64.h>

#include <delay.h>

#define ADC_VREF_TYPE 0x20

// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

// Declare your global variables here

void main(void)
{
unsigned int PWM;
PORTB=0x00;
DDRB=0xF0;


ASSR=0x00;
TCCR0=0x6A;
TCNT0=0x00;
OCR0=0x00;

TCCR1A=0xA1;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;


TCCR2=0x6A;
TCNT2=0x00;
OCR2=0x00;


ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x86;

while (1)
      {
      PWM=read_adc(0);
       OCR1A=PWM;
       OCR1B=PWM;
       OCR2=0.9*PWM;
       OCR0=0.9*PWM;

      }
}

اینم عکس های پروژه و جوابی که گرفتم اولی موج سورس هست و سه تای بعدی تولید شده توسط مگا 64

[تصویر:  50397169651243909395.jpg]

[تصویر:  15061883611813292784.jpg]

تو عکس نیفتاده : AVCC , AREF هر دو آی سی به +5 وصل شده

با تشکر.
صفحه‌ها: 1 2 3 4