اطلاعیه

Collapse
No announcement yet.

خواندن قطاری از پالس(DATA)

Collapse
این موضوع بسته شده است.
X
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    خواندن قطاری از پالس(DATA)

    سلام
    من می خوام به کمک یه PIC (حتما PIC16F72) یه قطاری از پالس که یه گیرنده ی RF در فرکانس 315Mhz دریافت می کنه رو بخونم و ذخیره کنم !(من یه ماژول FSKدارم که خودش تو پایه ی دیتاش پالس رو طر تمیز میده و فقط باید این دیتا رو بگیرم )
    اطلاعات دریافتیم شامل 25 بیت هست که این 25 بیت 140ms طول می کشند و بعد از این 25 بیت 200ms پالسی ندارم(صفر دریافت میشه)و این روال تکرار میشه!
    متاسفانه زمان صفر بودن ها و یک بودن ها در هر سری ثابت نیستند و امکان تغییر وجود داره(نمی تونم با زمان بندی کاری انجام بدم و تنها راه تشخیش تغییر سطح است)
    از دوستان می خوام راهنمائیم کنند به جه شکلی و چه روشی این کارو کنم
    توی همه ی برد هایی که دیدم اطلاعات از طریق پایه ی AN1/PINA1 توسط میکرو دریافت می شه ! با توجه به اینکه این سیگنال آنالوگ نیست و نیازی به تبدیل شدن به دیجیتال رو نداره نمودم چرا از این پایه استفاده کردن !
    امیدوارم با راهنمایی دوستان ای پروژه انجام شه و در اختیاره همه قرار بگیره .
    ممنون
    زمان تنها واحد حقیقی اندازه گیریه
    زمان وجود ماده رو اثبات میکنه
    بدون زمان هیچکدوم ما وجود نخواهیم داشت
    زمان یکتاست

    #2
    پاسخ : خواندن قطاری از پالس(DATA)

    یه امتحان کن. توی یک تایمر 500 میکرو ثانیه ای مرتب این پین رو بخون. که میشه 280 بیت بعد این بیتهارو به 25 بیت تبدیل کن. فرض کن میخوای یک بیت مپ 280 نقطه ای رو به 25 نقطه تبدیل کنی. یعنی اینکه هر 11 بیت رو با هم جمع بزن و اگر جمعشون بیش از 6 بود یعنی بیت مربوطه یک است.

    دیدگاه


      #3
      پاسخ : خواندن قطاری از پالس(DATA)

      سلام

      من یه تجربه کمی تو ارسال و دریافت بوسیله ماژول های RF دارم. شماره ای سی تون رو بگین بهتر می شه کمک کرد

      دیدگاه


        #4
        پاسخ : خواندن قطاری از پالس(DATA)

        سلام
        نوشته اصلی توسط masiha308
        من یه تجربه کمی تو ارسال و دریافت بوسیله ماژول های RF دارم. شماره ای سی تون رو بگین بهتر می شه کمک کرد
        من با مدل خاصی کار نمی کنم یه گیرنده ی RF معمولی که می تونه فرکانس 315 رو میگیره !
        فقط ضعفم تو خوندن این کد ها از طریق میکروست . چون با تایمر بلدم کار کنم تو PIC
        ممنون
        زمان تنها واحد حقیقی اندازه گیریه
        زمان وجود ماده رو اثبات میکنه
        بدون زمان هیچکدوم ما وجود نخواهیم داشت
        زمان یکتاست

        دیدگاه


          #5
          پاسخ : خواندن قطاری از پالس(DATA)

          سلام
          نوشته اصلی توسط reza_agha
          یه امتحان کن. توی یک تایمر 500 میکرو ثانیه ای مرتب این پین رو بخون. که میشه 280 بیت بعد این بیتهارو به 25 بیت تبدیل کن. فرض کن میخوای یک بیت مپ 280 نقطه ای رو به 25 نقطه تبدیل کنی. یعنی اینکه هر 11 بیت رو با هم جمع بزن و اگر جمعشون بیش از 6 بود یعنی بیت مربوطه یک است.
          دوست عزیز میشه یه کم بیشتر توضیح بدی با یه مثال کوچیک
          ممنون
          زمان تنها واحد حقیقی اندازه گیریه
          زمان وجود ماده رو اثبات میکنه
          بدون زمان هیچکدوم ما وجود نخواهیم داشت
          زمان یکتاست

          دیدگاه


            #6
            پاسخ : خواندن قطاری از پالس(DATA)

            با سلام
            شما از چه رابطی برای ارسال و دریفت دیتا استفاده میکنید؟ منظور SPI یا USRT؟

            نوشته اصلی توسط Robo-amir

            توی همه ی برد هایی که دیدم اطلاعات از طریق پایه ی AN1/PINA1 توسط میکرو دریافت می شه ! با توجه به اینکه این سیگنال آنالوگ نیست و نیازی به تبدیل شدن به دیجیتال رو نداره نمودم چرا از این پایه استفاده کردن !
            دوست عزیر چون در تمام بردهای از پایه ADC استفاده کرده دلیل بر این نیست که از مبدل آنالوگ به دیجیتال ماژول رو درایو کرده باشه! با یه دستور ساده شما میتونید از پایه های ADC به عنوان I/O استفاده کنید!

            موفق باشید

            دیدگاه


              #7
              پاسخ : خواندن قطاری از پالس(DATA)

              فرض کن بیت های خوانده شده در یک آرایه مثل in دخیره شده باشه و قرار باشه نتایج نهایی در آرایه out ذخیره بشه: (چون کد زیر ممکنه عوضی نشون داده بشه متن رو copy&paste کن)

              unsigned char sum[25];

              for(i=0; i<25; i++)
              sum[i] = 0;

              for(i=0; i<275; i++)
              sum[ i / 11 ] += in[i];

              for(i=0; i<25; i++)
              if( sum[i] < 5 )
              signal[i] = 0;
              else
              signal[i] = 1;

              مثال:
              پترن زیر رو در نظر بگیر:

              00011110010101110000

              این بیست بیت رو اگر بخواییم به 5 بیت تبدیل کنیم میشه چهارتا چهارتا جداشون کرد و وزنهاشون رو حساب کرد:
              0001_1110_0101_0111_0000

              حالا اگه معادل هر گروه چهارتایی عدد بذاریم میشه:

              1 3 2 3 0

              حالا اگر تعداد بیتهای یک در هر چهارتایی از نصف چهار یعنی 2 بیشتر باشه میشه گفت:

              0 1 0 1 0

              معادل پترن فوقه.

              امیدوارم منظور رو رسونده باشم.

              دیدگاه

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