اطلاعیه

Collapse
No announcement yet.

محاسبه تایمر کانتر 0

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    #16
    پاسخ : محاسبه تایمر کانتر 0

    یعنی باز هم به RC5 برمیگردیم...شما با توجه به این الگوریتم های RC5 به زبان سی همچین چیزی رو ایجاد کردید؟
    منظور بنده این بود که برای شروع کار بهتر ایده داشته باشید و بتونید از اون برای پیشبرد کارتون استفاده کنید .

    نه متاسفانه وقت نشد روش کار کنم فقط ازش استفاده کردم به صورت ترکیبی با سی ، اما علاقه مند به انجام اینکار هستم اما بازم من خودم رو میگم برای شروع بهتره اول بفهمم که اینجا اتمل برای ساخت RC5 که بگفته خودش از فراگیرترین پرتوکل های ارتباطی اینفرارد هست چیکار کرده و به قول شما چجوری سیگنال رو مدوله کرده !

    اما چیزی که توی AVR 415 هست اینه که پرتوکل RC5 برمبنای Bi-phase Coding کدینگ هست یعنی فاز سیگنال متناسب با مقدار دیجیتال به اندازه 180 درجه تغییر میکنه یعنی پس کد های ما که مثلا اینجا 14 بیت هستند اول تبدیل میشند به یک سیگنال مربعی حالا برای ارسال باید این سیگنال مربعی رو سوار یه سیگنال کریر کنیم تا بتونیم اونو ارسال کنیم خوب اینجا برای اینکار ATtiny28 یه ماژول داره به نام hardware modulator که میشه از این ماژول برای مودوله کردن سیگنال استفاده کرد طوری که فرکانس و دیوتی سایکل سیگنال کریر رو میشه با تغییر مقدار رجیستر MODCR تنظیم کرد که در نهایت این سیگنال مدوله شده روی پایه ( IR ( PA2 قرار میگره که یک درایور هست .

    البته خوب اینجا عمل مدولاسیون سخت افزاریه و به خاطر همین کل برنامه کدینگ محدود به ATtiny28 میشه .

    دیدگاه


      #17
      پاسخ : محاسبه تایمر کانتر 0

      سلام
      mojtaba_led جان ممنون از توضیحت
      من به زبان سی پروتکل RC5 رو پیدا کردم که فکر کنم تو پست های یه چیزای گفته باشم اما من کدش رو میزارم اینجا چند بخش رو در پایین مشخص میکنم دوستانی که دستی تو اینکار دارند بنده رو راهنمایی کنند،شاید دوستان دیگه هم دنبال چنین کدی بودند، این برنامه توسط آقای قاسمی نوشته شده،قسمت های هایلایت بخش مربوط به مدولاسیون 0 و 1 هستش میتونید دقیقا شرح بدید این بخش رو....
      باز هم از دوستان تشکر میکنم برای پاسخ ها....

      //Global variabl
      unsigned char bin_add[8],bin_com[8]; //int to baynere
      unsigned char i,c,[glow=red,2,300]T=221[/glow];
      bit g=1; //Genrate signel

      #define IRoutput PORTD.0 //Config Port


      void dec_to_bin(unsigned char a, unsigned char op){
      unsigned char b,c,i=7;
      while(i<255){ //from 7 to 0 ==> Decrement from 0 == 255
      b=a/2;
      c=a%2;
      if(op==1) bin_add[i]=c; //select variable addres
      else if (op==2) bin_com[i]=c; //select variable command
      a=b;
      if(a==1) { //if lasted Division=1
      i--;
      if(op==1) bin_add[i]=1;
      else if (op==2) bin_com[i]=1;
      a=0;
      }
      i--;
      }
      }

      interrupt [TIM0_OVF] void timer0_ovf_isr(void){[glow=red,2,300]
      if(g==1) IRoutput=~IRoutput; //F=35.7 Khz
      else IRoutput=1;
      TCNT0=T; //Delay for 14us
      c++;
      }[/glow]
      [glow=red,2,300]
      void modul_0(){ //send logic 0 whit modulation
      g=1; c=0;
      TCNT0=T;
      Label_01: if(c<=64) goto Label_01;
      c=g=0;
      Label_02: if(c<=64) goto Label_02;
      }

      void modul_1(){ //send logic 1 whit modulation
      c=g=0;
      TCNT0=T;
      Label_11: if(c<=64) goto Label_11;
      g=1; c=0;
      Label_12: if(c<=64) goto Label_12;
      }
      [/glow]
      void address(){
      for(i=3; i<8; i++){
      if(bin_add[i]==0) modul_0();
      else if (bin_add[i]==1) modul_1();
      }
      }

      void command(){
      for(i=2; i<8; i++){
      if(bin_com[i]==0) modul_0();
      else if (bin_com[i]==1) modul_1();
      }
      }



      void sendrc5(unsigned char tog, unsigned char add, unsigned char com){
      dec_to_bin(add,1); // 1= insert to bin_add
      dec_to_bin(com,2); // 2= insert to bin_com
      #asm("sei&quot
      modul_1(); //chek bit
      modul_1(); //chek bit
      if(tog==0) modul_0(); //toggle bit=0 //110 xxxxx xxxxxx total 14bit
      else if(tog==1) modul_1(); //toggle bit=1 //111 xxxxx xxxxxx total 14bit
      address();
      command();
      #asm("cli&quot
      IRoutput=0;
      delay_ms(30);
      }

      دیدگاه


        #18
        پاسخ : محاسبه تایمر کانتر 0

        آقا کدها رفتن تو هم نمیشه خوندشون اگه میشه فایلش رو بزارید

        دیدگاه


          #19
          پاسخ : محاسبه تایمر کانتر 0

          سلام
          روی لینک زیر کلیک کنید مستقیما پیج این کد براتون بالا میاد
          https://docs.google.com/viewer?pid=e...;r26;sendrc5.h

          دیدگاه


            #20
            پاسخ : محاسبه تایمر کانتر 0

            با سلام
            دوستان دیگه ظاهرا بیشتر از این ادامه ندادند اما به یک سری نتایجی در مورد اختلاف زمانی ایجاد شده در تایمر ( در واقع چیزی که محاسبه میکنیم روی کاغذ با چیزی که بدست میاد در عمل ) و همچنین نحوه مدلاسیون صفر و یک رسیدم که انشاالله در پست بعدی خدمتتون ارائه میکنم.....
            با تشکر

            دیدگاه


              #21
              پاسخ : محاسبه تایمر کانتر 0

              سلام به این لینک یه سر بزنید پروتکل RC5 به زبان C در codevision نوشته

              http://www.picpars.com/208/

              دیدگاه

              لطفا صبر کنید...
              X