ايران ويج

نسخه‌ی کامل: مشکل در ایجاد موج مربعی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با سلام، من یه برنامه خیلی ساده در کدويژن نوشتم که با کلیک یه کلید در ويژوال بیسیک يه موج PWM تولید کنه، همراه با تولید این شکل موج یه led هم در پورت C ایجاد کردم که این led با کلیک کردن کلید روشن و خاموش میشه ولی از پایه OC2 شکل موجی ایجاد نمیشه...برنامش رو گذاشتم، کسی میدونه مشکل کجاست؟Sad

کد php:
#include <mega32.h>

// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>

// Declare your global variables here

void main(void)
{
char a=0;


// Port D initialization
// Func7=Out Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
// State7=0 State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
PORTD=0x00;
DDRD=0xA0;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 4000.000 kHz
// Mode: Fast PWM top=FFh
// OC2 output: Non-Inverted PWM

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

while (
1)
      {
      
      
a=getchar();   
      
      if (
a=='t')
      {
     
      
PORTC=0x01;   
      
delay_ms(250);

      
TCNT2=0x64;      //400Hz
      
OCR2=0x6B;      
      
       
PORTC=0x00;
      
delay_ms(250);
      
       }

      
      };


کریستالمم، کریستال 4 مگ داخلی هستش، کمکم کنین...

کسی نمیدونه چرا روی پایه OC2 خروجی ندارممم؟
شما با کد ویزارد ریجستر ها رو مقدار دهی کنید. ( مدار رو عملی بستید؟ یا شبیه سازی؟ )
دقت کنید که پایه ی مربوطه رو خروجی تعریف کنید.
در حلقه ی بینهایت هم فقط مقدار رجیستر OCR رو تغییر بدید ، الان TCNT اون وسط اضافه هست.

قبل از اینکه با VB و ... ارتباط بدید ، یه برنامه ساده رو ران کنید که یه موج ثابت رو روی پایه ی OC2 تولید کنه و بعد از جواب گرفتن ، با VB و ... درگیرش کنید.

همیشه پروژه رو پله پله جلو ببرید ... .