اطلاعیه

Collapse
No announcement yet.

راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو)

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

    #16
    پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

    من هدراشو واسه mega8 ویرایش کردم اما جواب نگرفتم فایل ویرایش شده رو اون پایین ضمیمه کردم. اگه ممکنه یه کمکی بهم بکنید
    فرستنده
    کد:
    #include <mega8.h>
    #include <delay.h>
    #include <nrf24l01p.h>
    
    void main(void)
    {
    char payload[4];
    payload[0]=3;
    payload[1]=111;
    payload[2]=112;
    payload[3]=113;
    nrf_config(0);
    delay_ms(1000);
    sent();
    
    while (1)
       {
       if(nrf_state!=0)
        {
        sent_actived=1;
        nrf_state=0;
        }
       }
    }
    گیرنده
    کد:
    #include <mega8.h>
    #include <delay.h>
    #include <nrf24l01p.h>
    #include <alcd.h>
    void main(void)
    {
    int a;
    
    lcd_init(16);
    nrf_config(1);
    while (1)
       {
       if(nrf_state==1)
        {
        a=payload[1]; 
        nrf_state=0;
        } 
        lcd_gotoxy(0,0);
        lcd_putchar(a);
       }
    }
    فایل های پیوست شده

    دیدگاه


      #17
      پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

      یه نکته مهم: من گفتم این هدر از int2 استفاده میکنه که در mega 16 یا mega32 پین PORTB.2 هست ولی mega8 اینتراپت 2 نداره.
      شما چند بایت میخواید بفرستید؟ من برا 1 بایت براتون تصحیح میکنم برا بیشترم فرقی نمیکنه:
      اولا که شما نباید آرایه payload رو تعریف میکردین. بعدم تو دریافت چرا int تعریف کردی بعد یک بایت ریختی توش؟؟؟!!!
      یه چیز دیگه: با include کردن هدر delay.h کلاک میکرو رو مشخص کن(من 8MHz مشخص کردم)
      میکرو رو مگا16 فرض کردم
      کد فرستنده:
      کد:
      #include <mega16.h>
      #define xtal 8000000
      #include <delay.h>
      #include <nrf24l01p.h>
      
      void main(void)
      {
      nrf_config(0);
      while (1)
         {
         if(nrf_state!=0)
          {
          sent_actived=1;
          nrf_state=0;
          }
          payload[0]=1;
          payload[1]='M';
          sent();
         }
      }
      گیرنده:

      کد:
      #include <mega16.h>
      #define xtal 8000000
      #include <delay.h>
      #include <nrf24l01p.h>
      #include <alcd.h>
      void main(void)
      {
      unsigned char c;
      lcd_init(16);
      nrf_config(1);
      while (1)
         {
         if(nrf_state==1)
          {
          c=payload[1]; 
          nrf_state=0;
          } 
          lcd_gotoxy(0,0);
          lcd_putchar(c);
         }
      }
      الان ماژول پیشم نیست تست کنم . ولی باید درست کار کنه و حرف M (اول اسمت :icon_razz رو lcd طرف گیرنده نمایش بده.
      درضمن همینطور که میبینی فرستنده پشت سرهم دره میفرسته که مشکل نداره.
      راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
      کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
      نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
      http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
      انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

      دیدگاه


        #18
        پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

        ا هواسم نبود اگه ویرایش کردید که درسته(سازگار با مگا8).فقط پایه ها رو درست ببندید

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

        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

        دیدگاه


          #19
          پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

          برنامرو نوشتم اما بازم جواب نداد تو فایل هدر interrupt [EXT_INT2] void ext2_isr() رو به interrupt [EXT_INT0] void ext0_isr() تبدیل کردم جای پینای spi و اینتراپتم درست کردم. :angry:

          دیدگاه


            #20
            پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

            بیا با این هدر امتحان کن، اگه جواب گرفتی خبر بده . گفتم که ماژول در دسترس ندارم الان.(هرچه سریعتر امتحان کن و خبر بده - من آنلاینم تا موقعی که ج بگیری)

            http://mortazavi91.persiangig.com/Codes/nrf24l01p%28mega8%29.rar
            راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
            کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
            نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
            http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
            انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

            دیدگاه


              #21
              پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

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

              اضافه شده در تاریخ :
              مهندس خواهش میکنم به این مشکلم هم یه نگاه بنداز
              http://www.eca.ir/forum2/index.php?topic=78616.0

              دیدگاه


                #22
                پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                نوشته اصلی توسط mohammadfa91
                مهندس خواهش میکنم به این مشکلم هم یه نگاه بنداز
                http://www.eca.ir/forum2/index.php?topic=78616.0
                من آرم اصلا کار نکردم . ولی خوب با چه کامپایلری کامپایل کردید؟چون اینا اکثرا با یک کامپایلر خاص کامپایل میشه. ولی فکر میکنم با کیل سازگار باشه. کجاشو ارور میده؟ با هر کامپایلری کامپایل میکنید باید هدر اصلی به صورت LPC17xx.h باشه
                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                دیدگاه


                  #23
                  پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                  نوشته اصلی توسط RubeuS
                  من آرم اصلا کار نکردم . ولی خوب با چه کامپایلری کامپایل کردید؟چون اینا اکثرا با یک کامپایلر خاص کامپایل میشه. ولی فکر میکنم با کیل سازگار باشه. کجاشو ارور میده؟ با هر کامپایلری کامپایل میکنید باید هدر اصلی به صورت LPC17xx.h باشه
                  اگه کار نکردید که هیچی. چون بحثش تو یه تاپیک نمی گنجه
                  در مورد attiny 25 -45- 85 چطور میشه هدر نوشت ؟ چون یه پروژه دارم که باید واسه گیرنده از attiny استفاده کنم. در attiny ظاهرا باید از USI به عنوان SPI استفاده کرد.
                  این هدر های شما واسه کامپایلر کدویژن هست. یه سری هدر گذاشتن که واسه زبان c با هسته AVR GCC هست (مثل AVR Stdio و Win AVR ) که با زبان c کدویژن فرق داره. کلا تبدیل اینا به هم خودش مصیبته

                  دیدگاه


                    #24
                    پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                    مگه میشه spi نداشته باشن پس چه هجوری با پروگرمرا معمولی پروگرام میشن . یه سر به اینجا بزنید:
                    http://www.atmel.com/devices/ATTINY25.aspx?tab=parameters

                    اگرم میکرویی باشه که spi نداشته باشه بازم میشه ماژول رو باش درایو کرد ( spi نرم افزاری)
                    بله برا کامپایلر کدویژنه .

                    مصیبت؟! فکر نمیکنم . (ایشالله تا چند وقت دیگه برا winavr هم میزارم)
                    راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                    کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                    نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                    http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                    انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                    دیدگاه


                      #25
                      پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                      SPI داره اما اسم رجیسترش USI هست یکم فرق داره

                      دیدگاه


                        #26
                        پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                        خوب شما هم اسم رجیستر رو به همون شکل تو هدر تغییر بده
                        تو سری مگا دوتا رجیستر spcr و spdr هست هرجایی تو هدر اینارو دیدی به همون اسما که برا tiny25 تعریف شده تغییر بده . اگرم وضعیت بیتاش فرق داره ،هرجور تمایل داری تنظیمش کن. شما فقط باید رجیسترهای میکروتون رو دقیقا همون جایی که من برا مگا تنظیم کردم،تنظیم کنی.ولی بازم میگم فکر نمیکنم راه اندازی این ماژول با tiny بدرد بخوره(یعنی فقط میتونی ماژول رو راه بندازی و باش بازی کنی).
                        راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                        کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                        نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                        http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                        انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                        دیدگاه


                          #27
                          پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                          این طور که من دیدم تو این سایت http://gizmosnack.blogspot.se/2013/0...1-and-avr.html فرق رجیسترهای tiny و mega کم نیست
                          من واسه پروژم جا گرفتن برام خیلی اهمیت داره (در حد میلیمتر) mega8 smd نسبت به tiny پایه های زیادتر و جا گیرتری داره

                          دیدگاه


                            #28
                            پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                            سلام دوستان من با ارسال ارقامی که از تبدیل انالوگ به دیجیتال و ارسال اون به طریق SPI هست مشکل پیدا کردم کسی میتونه کمک کنه :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:

                            دیدگاه


                              #29
                              پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                              سلام
                              آقا سید من از هدری که دادین استفاده کردم
                              چون میکروی smd استفاده میکنم هین لحیم کاری پایه ای که ce رو بهش وصل کردم کنده شد و مجبور شدم تو هدر اون پایه رو به b1 بدم
                              الان برنامه تا جایی که nrf رو کانفیگ میکنه پیش میره :sad:
                              ولی وقتی sent میکنم مثل اینکه توی sent میمونه و دیگه هیچکاری نمیکنه :sad:
                              البته اینکه میگم توی sent میمونه واسه اینه که من یه کانتر دارم که میشموره بعد عدد رو با ماژول میفرسته برای گیرنده از اینجا فهمیدم تو sent گیر میکنه چون کانتر رو دادم به اینتراپت و وقتی میکرو رو ریست میکنم اون شمارش های قبل رو نشون میده ولی باز مثل اینکه توی sent میمونه
                              ممنون میشم زود ج بدی :applause:
                              مرسی

                              کدش هم اینه(برای فرستنده):
                              کد:
                              #include <mega32.h>
                              #include <delay.h>
                              #include <stdio.h>
                              #include <stdlib.h>
                              #include <nrf24l01p.h>
                              
                              
                              
                              eeprom int i=0,m3=0,a=0,b=0,c=0,d=0;
                              char temp[8],ml[5];
                              // Alphanumeric LCD Module functions
                              #asm
                                .equ __lcd_port=0x1B ;PORTA
                              #endasm
                              #include <lcd.h>
                              
                              // External Interrupt 1 service routine
                              interrupt [EXT_INT1] void ext_int1_isr(void)
                              {
                              // Place your code here
                               i++;
                              }
                              
                              // Declare your global variables here
                              
                              void main(void)
                              {
                              
                              nrf_config(0);
                              // Declare your local variables here
                              
                              // Input/Output Ports initialization
                              // Port A initialization
                              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                              PORTA=0x00;
                              DDRA=0x00;
                              
                              // Port B initialization
                              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                              PORTB=0x00;
                              DDRB=0x00;
                              
                              // Port C initialization
                              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                              // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                              PORTC=0x00;
                              DDRC=0x00;
                              
                              // Port D initialization
                              // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                              // State7=T State6=T State5=P State4=T State3=T State2=T State1=T State0=T 
                              PORTD=0x20;
                              DDRD=0x00;
                              
                              // Timer/Counter 0 initialization
                              // Clock source: System Clock
                              // Clock value: Timer 0 Stopped
                              // Mode: Normal top=FFh
                              // OC0 output: Disconnected
                              TCCR0=0x00;
                              TCNT0=0x00;
                              OCR0=0x00;
                              
                              // Timer/Counter 1 initialization
                              // Clock source: System Clock
                              // Clock value: Timer1 Stopped
                              // Mode: Normal top=FFFFh
                              // OC1A output: Discon.
                              // OC1B output: Discon.
                              // Noise Canceler: Off
                              // Input Capture on Falling Edge
                              // Timer1 Overflow Interrupt: Off
                              // Input Capture Interrupt: Off
                              // Compare A Match Interrupt: Off
                              // Compare B Match Interrupt: Off
                              TCCR1A=0x00;
                              TCCR1B=0x00;
                              TCNT1H=0x00;
                              TCNT1L=0x00;
                              ICR1H=0x00;
                              ICR1L=0x00;
                              OCR1AH=0x00;
                              OCR1AL=0x00;
                              OCR1BH=0x00;
                              OCR1BL=0x00;
                              
                              // Timer/Counter 2 initialization
                              // Clock source: System Clock
                              // Clock value: Timer2 Stopped
                              // Mode: Normal top=FFh
                              // OC2 output: Disconnected
                              ASSR=0x00;
                              TCCR2=0x00;
                              TCNT2=0x00;
                              OCR2=0x00;
                              
                              // External Interrupt(s) initialization
                              // INT0: Off
                              // INT1: On
                              // INT1 Mode: Rising Edge
                              // INT2: Off
                              GICR|=0x80;
                              MCUCR=0x0C;
                              MCUCSR=0x00;
                              GIFR=0x80;
                              
                              // Timer(s)/Counter(s) Interrupt(s) initialization
                              TIMSK=0x00;
                              
                              // Analog Comparator initialization
                              // Analog Comparator: Off
                              // Analog Comparator Input Capture by Timer/Counter 1: Off
                              ACSR=0x80;
                              SFIOR=0x00;
                              
                              // LCD module initialization
                              lcd_init(8);
                              
                              // Global enable interrupts
                              #asm("sei")
                              
                              
                               lcd_putsf("Barnameh");
                               lcd_gotoxy(0,1);
                               lcd_putsf("Mohsen");
                               delay_ms(450);
                               lcd_clear(); 
                               
                               while(1){ 
                               
                                  lcd_gotoxy(0,0);
                                  lcd_putsf("mL=");
                                  itoa(i,ml);
                                  lcd_puts(ml);
                                  if(i>=9999){
                                  m3++;
                                  i=0;
                                  } 
                               lcd_gotoxy(0,1); 
                                 a=m3/1000;
                                 b=m3/100;
                                 c=m3/10;
                                 d=m3%10;
                               sprintf(temp,"M3=%d%d%d%d",a,b,c,d);
                               lcd_puts(temp);
                               
                               if(nrf_state!=0)
                                  {
                                  sent_actived=1;
                                  nrf_state=0;
                                  }
                                  payload[0]=1;
                                  payload[1]='M';
                                  sent();
                                  lcd_putsf("data send shod");
                                  delay_ms(5000);
                                  }
                                 
                                  
                                 
                              }
                              زکات علم نشر آن است

                              دیدگاه


                                #30
                                پاسخ : راه اندازی ماژول nrf24l01p (ارتباط بیسیم بین دو میکرو)

                                سلام
                                1- میتونید پایه ce ماژول را به vcc وصل کنید به طوری که همیشه در وضعیت high باشه.

                                2- من درست متوجه نشدم ؛ میخواید با ماژول چی بفرستید.(کلا پروژه تون را توضیح بدید)

                                (درضمن یه توصیه برادرانه بتون میکنم . از این کدویزارد و از این جفنگیاد استفاده نکنید)
                                راه اندازی ماژول nrf24l01p برای codevision (ارتباط بیسیم بین دو میکرو) : http://www.eca.ir/forum2/index.php?topic=78587.0
                                کوچ کردن از کدویژن به http://www.eca.ir/forum2/index.php?topic=81025.0 : AtmelStudio
                                نحوه نوشتن اصولی یک لایبرری و درایور نرم افزاری( بصورت ساده) : http://www.eca.ir/forum2/index.php?topic=81071
                                http://www.eca.ir/forum2/index.php?topic=82130.0 سفارش راه انداز ماژول های مختلف توسط اعضای انجمن
                                انشالله به زودی تاپیک ها به روز رسانی خواهد شد،

                                دیدگاه

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