پرش به


تصویر

راه اندازی ماژول فرستنده ، گیرنده رادیویی NRF

nrf ارسال کامل ارسال بیسیم رادیویی nrf 2 چیپ

بهترین پاسخ hamidhafez , 04 December 2016 - 03:15 PM

سلام آره

 

من سورس برنامه خودمو براتون آپ می کنم که الان حدوده 3 ساله داریم باهاش کار می کنیم و تا الان که مشکلی نخوردیم.

 

attachicon.gifRelay_Learn(5).zip

 

 

اگر این برنامه جواب نداد دیگه مطمئن باشین مشکل از برن

 

این نمونه برنامه که من حدودا 3 ساله دارم بدون مشکل باهاش کار می کنم

رفتن به مطلب کامل


  • لطفا وارد حساب کاربری خود شوید تا بتوانید پاسخ دهید
39 پاسخ برای این موضوع

#31 کوروش هخامنش

کوروش هخامنش

    مبتدی

  • Members
  • ستاره
  • 6 ارسال

ارسالی 02 December 2016 - 05:32 PM

من فایل های شمارو ارسال کردم . طبق همین کد باید ارسال کنه . شما فایلهای کتابخانه ای رو نزاشته بودین نتونستم تست کنم ولی با همین کد با استفاده از همون کتابخونه ای که من اول گذاشتم دقیقا جواب میده بدون هیچ مشکل
 
شما همون مثالی که من گذاشتم رو با پایه های خودت تنظیم کن 100% جواب میده.
 
من همه مدل NRF هم تست کردم مشکلی نداسته.


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

#32 hamidhafez

hamidhafez

    کاربر متخصص

  • Members
  • ستارهستارهستارهستاره
  • 95 ارسال

ارسالی 04 December 2016 - 03:15 PM   بهترین پاسخ

سلام آره

 

من سورس برنامه خودمو براتون آپ می کنم که الان حدوده 3 ساله داریم باهاش کار می کنیم و تا الان که مشکلی نخوردیم.

 

attachicon.gifRelay_Learn(5).zip

 

 

اگر این برنامه جواب نداد دیگه مطمئن باشین مشکل از برن

 

این نمونه برنامه که من حدودا 3 ساله دارم بدون مشکل باهاش کار می کنم


  • کوروش هخامنش این پست را پسندیده است

#33 کوروش هخامنش

کوروش هخامنش

    مبتدی

  • Members
  • ستاره
  • 6 ارسال

ارسالی 06 December 2016 - 12:15 AM

این نمونه برنامه که من حدودا 3 ساله دارم بدون مشکل باهاش کار می کنم

مهندس این رو دیدم یکم شلوغه متوجه نشدم مربوط به چیه برنامه اش اما یکی قبلا تو پشت ها گذاشتین این کد داخلش بود این با اونیکی فرقی داره کتابخونه اش؟

یه سوال برای دریافتش چیزی ننوشتین؟

فقط الان بخوام کدهای خودمو بدم باید حتما پیکره بندی ارسالش عین شما باشه یعنی :

  while (1)
    {                                                   
            Payload[0]=1;     
            Send_Data(Payload,Payload[0]);                                                                
            PTX=1;                                                                 
                                         
            delay_ms(150);
            RX_POWERUP; 
            Config_Register(STATUS,0x70);                                                                   
    }

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

 

و اینکه الان برای میکروهای دیگه چطوری باید تغییر بدیم کتابخونه رو؟فقط باید پایه های spi رو تنظیم کنیم؟یعنی اینا؟

#define  SCK    PORTB.5
#define  MISO   PINB.4
#define  MOSI   PORTB.3
#define  CSN    PORTB.2
#define  CE     PORTB.0
#define  PNRF   PORTD.5



#34 hamidhafez

hamidhafez

    کاربر متخصص

  • Members
  • ستارهستارهستارهستاره
  • 95 ارسال

ارسالی 07 December 2016 - 11:18 AM

سلام کد خیلی مشخصه

 

برای ارسال شما داخل ایندکس 0 آرایه ی Payload طول بایتهایی که می خوای ارسال کنی رو می زاری و از ایندکس یک به بعد مقادیری که می خوای ارسال کنی رو قرار می دی.مثل کل ذیل من به عنوان مثال می خوام 3 بایت انتقال بدم

Payload[0]=1;     
Payload[1]='a';     
Payload[2]='b';     
Payload[3]='c';     
            Send_Data(Payload,Payload[0]);                                                                
            PTX=1;                                                                 
                                         
            delay_ms(150);
            RX_POWERUP; 
            Config_Register(STATUS,0x70);  

و طرف گیرنده زمانی که دریافت داشته باشه پایه اینتراپتی که به پا IRQ ماژول وصل کردی فعال می شه و اون کدی که من داخل برنامه نوشتم قسمت دریافت اجرا می شه.

if(Status & (1<<RX_DR))
    {             
        CSN=low;                               
        Spi_Fast(R_RX_PL_WID);    
        Status=Spi_Fast(NOP);        
        CSN=high;  
        if(Status>32)
        {    
            CSN=low;
            Spi_Fast(FLUSH_RX); 
            CSN=high; 
        }
        else
        {    
            static unsigned char i=0;
            resid=1;
            i=Status;
            CSN=low;                               
            Spi_Fast(R_RX_PAYLOAD);    
            while(Status!=0)
            {
                Payload[(i-Status)]=Spi_Fast(NOP);
                Status--;
            }        
            CSN=high;    
     //در این قسمت دریافت کامل شده و داخل آرایه ی Payload قرار گرفته
        }   
        Config_Register(STATUS,0x70);
    }

داخل این کد هم تمام مقادیری که اونطرف ارسال کردین کامل دریافت میشه



#35 کوروش هخامنش

کوروش هخامنش

    مبتدی

  • Members
  • ستاره
  • 6 ارسال

ارسالی 08 December 2016 - 12:45 PM

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

#36 hamidhafez

hamidhafez

    کاربر متخصص

  • Members
  • ستارهستارهستارهستاره
  • 95 ارسال

ارسالی 10 December 2016 - 07:31 PM

شما پست قبلی رو دقیق نخوندی

 

این برنامه دیگه گیرنده یا فرستنده نداره.زمانی که دریافتی انجام بشه اینتراپت میکرو فعال میشه و متغیر Payload رو ماژول پر می کنه.



#37 rainy_2016

rainy_2016

    مبتدی

  • Members
  • ستاره
  • 2 ارسال

ارسالی 16 December 2016 - 09:32 PM

سلام مهندس حمید حافظ

مهندس من یک مشکلی دارم مدار را با بیسکام راه اندازی کردم وعالی کار میکنه اومدم یک فرستنده دیگه بهش اضافه کردم آدرسشو در فرستنده دوم p1 رو انتخاب کردم و در گیرنده یک حلقه دیگه برای فرستنده دوم با آدرس جدید نوشتم ولی کار نکرد که نکرد چندین بار تغییرات دادم یک بار اومد فقط فرستنده اولی رو خوند و دومی رو سینک نکرد. الان واقعا هنگ کردم در آدرس دهی مشکل دارم اگر شما با بیسکام آشنایی دارید لطفا راهنمایی کنید حتی با یک مثال خیلی ساده میتونه خیلی کمکم کنه. و اگر با بیسکام آشنا نیستین با c هم میتونین یک مثال بزنید تا دوزاری من بیوفته.  متشکرم ازتون



#38 hamidhafez

hamidhafez

    کاربر متخصص

  • Members
  • ستارهستارهستارهستاره
  • 95 ارسال

ارسالی 17 December 2016 - 12:21 PM

با سلام

 

شما اگه بخوای دوتا ماژول روی SPI راه اندازی کنی باید از پایه ی CS ( Chip Select ) استفاده کنی این پایه دقیقا مثل Enable یا Disable کردن ماژول هست . شما این پایه ی ماژولتو بزن به دو پایه ی مختلف میکرو و هر کدوم رو که خواستی فعال کنی ستش کن.یعنی اول که می خوای تنظیمات NRF رو انجام بدی یک بار ماژول اول رو فعال کن و ست کن و بعد ماژول دوم.

 

ولی خوب کلا این کار خیلی مناسب نیست شما با همون یه ماژول می تونی به هر آدرس و پورتی اطلاعات بفرستی یعنی هرموقع که بخوای می تونی آدرس ماژول رو عوض کنی و به پورتی که می خوای اطلاعات بفرستی و یا دریافت کنی



#39 rainy_2016

rainy_2016

    مبتدی

  • Members
  • ستاره
  • 2 ارسال

ارسالی 17 December 2016 - 12:34 PM

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



#40 hamidhafez

hamidhafez

    کاربر متخصص

  • Members
  • ستارهستارهستارهستاره
  • 95 ارسال

ارسالی 17 December 2016 - 12:39 PM

شما باید آدرسی که داخل گیرنده ست می کنی دقیقا همون آدرس فرستنده باشه و بعد فرستنده رو روی پورت گیرنده ست کنی و اطلاعاتی که می خوای رو ارسال کنی . شما با هر بار ارسال می تونی 32 بایت اطلاعات ارسال کنی . اگه بخوای متوجه بشی کدوم فرستنده الان ارسال کرده می تونی بایت اول هر ارسالتو عددی به عنوان آدرس فرستنده بدی و اینطوری داخل گیرنده می تونی متوجه بشی که کدوم فرستنده الان اطلاعات رو برات ارسال کرده.





همچنین به nrf, ارسال کامل, ارسال بیسیم, رادیویی, nrf 2 چیپ نیز برچسب خورده است