اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام خدمت اساتید
    یه سیگنال با ساختار مشخص موجوده که میخوام اطلاعات دریافتی از این سیگنالو استخراج کنیم منتهی من وارد نیستم میخوام اگه ممکنه یه نمونه برام انجام بدید با توضیحات تا بفهمم چطور میشه اینکارو کرد
    کاتالوگ کد ارسالی به زبان چینی بود که به سختی تونستم به انگلیسی برش گردونم و همینقدر اطلاعاتو ازش بدست بیارم
    موضوع اینه که این سیگنال توسط وقفه INT0 شناسایی میشه در لحظه تشخیص سیگنال 32 میلی ثانیه مکث میکنه و بعد 12 بیت ارسال میشه
    این 12 بیت دریافتی 3 دسته میشن 3 تای اول همیشه عدد باینری 110 هستش - 2 تای بعدی همیشه 00 یا 11 باینری هستش و نهایتا 7 بیت آخری هم عدد اصلی که ما نیاز داریم بدونیم
    کریستال 8 مگاهرتز داخلی - میکرو ATmega8 استفاده کردم . گیرنده مادون قرمز Tsop 1738 هستش که 38 کیلوهرتزه و قصد دارم اعداد هر 3 دسته را روی نمایشگر ال سی دی 2*16 نشون داده بشه
    کد:
    [FONT=Yekan]'****************************************************************************[/FONT][FONT=Yekan]'* Filename    : IR code   *[/FONT]
    [FONT=Yekan]'* Revision    : 1.0                                                        *
    [/FONT][FONT=Yekan]'* Controller  : ATMEGA8                                                    *[/FONT]
    [FONT=Yekan]'* Compiler    : BASCOM-AVR 1.11.8.3 DEMO                                   *
    [/FONT][FONT=Yekan]'* Author      : Rubashka Vasiliy , Ukraine , 2007                          *[/FONT]
    [FONT=Yekan]'* WWW         :                                      *
    [/FONT][FONT=Yekan]'* Mail        :                                         *[/FONT]
    [FONT=Yekan]'****************************************************************************
    [/FONT][FONT=Yekan]$regfile = "M8def.dat"
    [/FONT][FONT=Yekan]$crystal = 8000000                                          'Internal RC oscillator 8 MHz[/FONT]
    [FONT=Yekan]Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0
    [/FONT][FONT=Yekan]Config Lcd = 16 * 2[/FONT]
    [FONT=Yekan]Config portd.2 = Input
    [/FONT][FONT=Yekan]Config Timer0 = Timer , Prescale = 256                      '8000000/256=31250 Hz[/FONT]
    [FONT=Yekan]Config Int0 = Falling                                       'Interruption on Falling
    [/FONT][FONT=Yekan]Stop Timer0[/FONT]
    [FONT=Yekan]Enable Timer0
    [/FONT][FONT=Yekan]Enable Int0[/FONT]
    [FONT=Yekan]Enable Interrupts
    [/FONT][FONT=Yekan]On Timer0 Tikers                                            'work on timer[/FONT]
    [FONT=Yekan]On Int0 Infrared                                            'work on interruption
    [/FONT][FONT=Yekan]Dim Tik As Word                                             'counter of teaks of timer[/FONT]
    [FONT=Yekan]Dim Byt As Byte                                             'counter accepted bit
    [/FONT][FONT=Yekan]Dim pin As Bit[/FONT]
    [FONT=Yekan]dim x as word                                               'flag of repetition
    [/FONT][FONT=Yekan]Cursor Off                                                  'Switch Off cursor[/FONT]
    [FONT=Yekan]'################################################################################################################
    [/FONT][FONT=Yekan]cls[/FONT]
    [FONT=Yekan]locate 1 , 1
    [/FONT][FONT=Yekan]lcd "test"[/FONT]
    [FONT=Yekan]waitms 1500
    [/FONT]
    
    
    
    [FONT=Yekan]cls
    [/FONT][FONT=Yekan]Do 'Main cycle[/FONT]
    [FONT=Yekan]Cls 'Clean LCD
    [/FONT][FONT=Yekan]locate 2 , 1[/FONT]
    [FONT=Yekan]Lcd x
    [/FONT][FONT=Yekan]Waitms 500[/FONT]
    [FONT=Yekan]Loop
    [/FONT][FONT=Yekan]End 'End of main cycle[/FONT]
    [FONT=Yekan]'################################################################################################################
    [/FONT][FONT=Yekan]Tikers: 'work on timer[/FONT]
    [FONT=Yekan]  Timer0 = 253                                               '31250/(256-253)=10416,66 Hz (96 een) ~ 0.1 ms
    [/FONT][FONT=Yekan]  Incr Tik[/FONT]
    [FONT=Yekan]  pin=portd.2
    [/FONT][FONT=Yekan]  if pin=0 then[/FONT]
    [FONT=Yekan]     pin=1
    [/FONT][FONT=Yekan]  else[/FONT]
    [FONT=Yekan]     pin=0
    [/FONT][FONT=Yekan]  endif[/FONT]
    [FONT=Yekan]  Stop Timer0
    [/FONT][FONT=Yekan]  Return[/FONT]
    [FONT=Yekan]'################################################################################################################
    [/FONT]
    
    
    
    
    
    
    
    [FONT=Yekan]Infrared: 'work on interruption
    [/FONT][FONT=Yekan]Start Timer0[/FONT]
    [FONT=Yekan]if Byt <= 12 then
    [/FONT][FONT=Yekan]  Incr Byt[/FONT]
    [FONT=Yekan]  Shift x , Left
    [/FONT][FONT=Yekan]  x = x + pin[/FONT]
    
    
    
    
    [FONT=Yekan]else
    [/FONT][FONT=Yekan]End If[/FONT]
    
    
    
    
    [FONT=Yekan]return[/FONT]





    #2
    پاسخ : کمک در نحوه خواندن سیگنال دریافتی از گیرنده مادن قرمز در بیسکام

    داشتم برنامه شما رو تحلیل می کردم به این قطعه کد در isrتایمر 0برخوردم
    کد:
      if pin=0 then
         pin=1
      else
         pin=0
      endif
    pinیه متغیربیتی است.
    وقتی pinصفره دیگه چه دلیلی داره که دوباره صفر کنید؟
    ---------------------------------------
    تو زیربرنامه Tikers که در زیر میذارم.
    کد:
    Tikers: 'work on timer
      Timer0 = 253                                               '31250/(256-253)=10416,66 Hz (96 een) ~ 0.1 ms
      Incr Tik
      pin=portd.2
      if pin=0 then
         pin=1
      else
         pin=0
      endif
      Stop Timer0
      Return
    وقتی شما میری از int0 مقدار و می خونی ودر متغیرpinمیزیری که از نوع بیت است.حالا در شرط زیرش اومدی گفتی که:
    if pin=0 then
    pin=1
    else
    pin=0
    endif
    این یعنی چی؟
    خروجی این همیشه یک مقدار یک خواهدبود.
    شما میری در زیر برنامه tikers و مقدار وو میخونی .اگه مقداری که خوندید صفر باشه اونو یک میکنید.وقتی هم که یک باشه خوب یکه دیگه.بنابراین در هر صورت مقدار دریافتی یک خواهد بود.هر مقداری که وارد int0بشه در نهایت میشه 11111111
    eshop-hodhod.ir

    دیدگاه


      #3
      پاسخ : کمک در نحوه خواندن سیگنال دریافتی از گیرنده مادن قرمز در بیسکام

      سلام
      ممنون از جوابتون
      کاملا حق باشماست ولی من یکم گیچ شدم نمیدونم چطور باید پیاده سازیش کنم
      نمونه ای از برنامه های نوشته شده توی اینتر نت دیدم ولی هیچکدوم سیگنال ها به این شکر نبود و منم تازه کار هستم
      میتونید یه نمونه کد بنویسید که ببینم چطور میشه اینو خوند و اطلاعاتشو استخراج کرد ؟

      دیدگاه

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