در AVR توسط
سلام خسته نباشید.

بنده میخام یه پروژه با میکروکنترلر atmega8 و ماژول RF24l01 طزاحی کنم اما نمیدونم چجوری میشه کتابخانه این ماژول رو به پروژه اضافه کرد.داخل اینترنت هم تحقیق کردم اما موفق نشدم .اگه امکان داره راهنمایی کنید.با تشکر از شما و سایت خوبتون

3 پاسخ

0 امتیاز
توسط jahandideh
 
بهترین پاسخ

سلام، شخصا خیلی وقت پیش با این ماژول برای مدت خیلی کوتاه در حد آشنایی و سلام و علیک سلام کار کردم و نمونه کد و موارد لازم را در لینک زیر تقریبا 5 سال پیش گذاشتم. 

مهم تر از همه در چه محیطی کد میزنید: CodeVsionAVR، Atmel Studio و...؟ 

ولی در کل داستان اضافه گردن کتابخونه به پروژه ها یکسال است ولی بسته به کیفیت کتابخونه فرق میکنه. مثلا اگر در آردوینو کار میکنید این کار خیلی ساده است ولی در محیط های دیگر شاید لازم باشه فایل کتابخونه را باز کنید و شماره پایه های spi را عوض کنید...برای ATmega32 در لینک زیر یک نمونه پروژه است چک کنید احتمالا متوجه بشید. شما معمولا وقتی کتابخونه ای را دانلود میکنید دوتا فایل دارین ( بعضی وقتا فقط یک فایل) به اسم مثلا nRF24L01+.h در این مثال و اینو در کدتون فراخوانی میکنید با دستور include و بعد اگر لازم باشه یکسری پایه ها و... را در فایل کتابخونه کانفیگ یا عوض میکنید و بعد از توابع آن در کدتون استفاده میکنید.

دانلود دیتاشیت و مثال راه اندازی ماژول +nRF24L01

0 امتیاز
توسط
سلام.ممنون از پاسخگویی شما.

جناب مهندس بخاطر کوچک بودن پروژه بنده از atmega8 استفاده میکنم و در محیط کدویژن برنامه مینویسم البته بدون اردینو.این پروژ شما رو هم قبلا دانلود کردم اما موفق نشدم اونو بندازم روی atmega8 من فقط  کتابخانشو میخام چجوری میتونم اضافه کنم به پروژه خودم بدون اردینو.خیلی درگیرشم.
توسط jahandideh
اول از همه ببخشید دیر جواب میدم چون هفته ای یک روز وقت میکنم جواب بدم واقعا امری زمانبر است با توجه به تعداد کامنت ها و سوالات.

خب در زیر سعی میکنم بیشتر در این مورد توضیح بدم. البته در نظر داشته باشید که این پروژه را 5 سال پیش یکبار تست کردم و نویسنده کد هم من نیستم. و اگر جایی مشکل داشت به بزرگی خودتان ببخشید. و در ضمن خواهشا سوال تکراری ایجاد نکنید موردی که ایجاد کرده بودید پاک شد فقط برای سوالات دیگر میتونید ایجاد کنید برای این سوال فقط زیر همین سوال بنویسید.
0 امتیاز
توسط jahandideh

در ادامه توضیحات قبل:

شما در پروژه لینک بالا دوتا پوشه دارین : My R و My S خیلی یکی فرستنده و دیگری دریافت کننده است. Send Receive 

داخل هر پوشه یک فایل کد و یک فایل کتابخونه است با بقیه کاری نداشته باشید اونا را «کدویژن» تولید کرده. nRF24L01+.h , S-R.c  که یکی کتابخونه و دیگری سورس کد پروژه است. 

تغییرات nRF24L01+.h

کتابخونه یا nRF24L01+.h را باز باید بکنید و یکسری تغییرات اعمال کنید. (بهتر بود نویسنده کتابخونه فایل کتابخونه را دو تیکه کنه ولی به هر حال دستش درد نکنه اینم نعمتی است.)  تغییرات به شرح زیر هستن:

نوع میکروکنترلر را تغییر بدید به mega8 

#include <mega32.h>

تغییر دوم پایه های زیر هستن که باید ببینید کجا وصل کردین تغییر بدین:

 

#define CE PORTB.3
#define CSN PORTB.4

طرف در کد از External Interrupt 2 یا وقفه خارجی شماره 2 استفاده کرده باید ببینید در ATmega8 این هستش که هیچ اگر نیست باید ایجا یک تغییراتی را اعمال کنید. یعنی بیایین ببینید چه وقفه خارجی در ATmega8 داریم که جایگزین کنین ولی به احتمال زیاد هستش و فقط به پایش دقت کنید.

 

interrupt [EXT_INT2] void ext_int2_isr(void)

و در این فایل یک تابعی به اسم nRF_Config هم هست که باید پایه ها و رجیسترهای آن را برای میکروکنترلر ATmega8 تغییر بدید شایدم نمیخواد باید چک کنید. کدهای زیر را در این فایل ببینید:

 

        // Port B initialization
    // Func7=Out Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In
    // State7=0 State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T
    PORTB=0x00;
    DDRB=0xB0;

  // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: On
    // INT2 Mode: Falling Edge
    GICR|=0x20;
    MCUCR=0x00;
    MCUCSR=0x00;
    GIFR=0x20;
   

    // SPI initialization
    // SPI Type: Master
    // SPI Clock Rate: 2000.000 kHz
    // SPI Clock Phase: Cycle Start
    // SPI Clock Polarity: Low
    // SPI Data Order: MSB First
    SPCR=0x50;
    SPSR=0x00;

 

نکته خیلی مهم: این تغییرات باید در فایل سمت فرستند هم اعمال بشن. 

خب تا اینجا ما فایل کتابخونه را تغییر دادیم یا پورتش کردیم به مگا8 الان وقت اینه که بریم فایل سورس را دست کاری کنیم.

تغییر فایل سورس  S-R.c

توی این فایلم باید نوع میکروکنترلر را تغییر بدید و البته باید از منو Project -> Configure کدویژن هم نوع میکروکنترلر را عوض کنید.

 

#include <mega32.h>

در ضمن به کلاک میکروکنترلر دقت کنید. خیلی دقت کنید از همان منو Project -> Configure مقدارش را تنظیم و در موقع پروگرم کردن «فیوزبیت» ها را هم تنظیم کنید.

این پروژه LCD هم داره اگر لازم ندارین باید حذفش کنید از کد و تنظیمات. و صد در صد لازمه پایه هاش را تنظیم کنید اگر میخواهید استفاده کنید.

در فایل S-R.c هم باید این تغییرات اعمال بشن حواستون باشه. 

خب فک کنم اینا را تغییر بدید با دقت باید بتونید پروژه را پورتش کنید به مگا8 و نهایتا اگر به میکروکنترلر تسلط ندارین میتونید آموزش ها را ببینید یا از مگا32 استفاده کنید.

مطالب زیر را هم ببینید میتونه شما را کمک کنه:

...