PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل درrfm12b



asadi843
11-04-2011, 20:03
سلام
کسی میدونه این دو حلقه در راه اندازی rfm12b برا چیه ؟
حلقه for و int main در فایل پیوست

ghaem313
11-04-2011, 21:38
اون for که شمارندش 16 است برای پروتکل spi 16 بیتی است

asadi843
12-04-2011, 18:26
سلام تشکر از جوابتون
ولی می خواستم ببینم این recv و cmd تو حلقه برا چیه ؟ وتویint حلقهfor هزار واون یکی برا چیه و rfsend برا چیه و چرا تکرار کرده

ghaem313
13-04-2011, 14:33
بیبین این for بخشی از تابع

unsigned int writeCmd(unsigned int cmd)
هستش این تابع همون طور که از شکلش معلوم هست موقع فراخوانی متغییری به اسم cmd رو میگیره و یک متغیر int رو بر میگردونه که در انتهای تابع نوشته return recv
برای تنظیم کردن ماژول باید کد های 16 بیتی ارسال کرد که هر کدوم یه چیزی رو تنظیم میکنن مثلا برای کانفیگ کردن از یک کد که با 80 شروع میشه استفاده میکنن و تو قسمت زیر نگه کنی برای دادن تنظیمات اولیه به ماژول این کد ها رو براش فزستاده این کد ها جای متغییر cmd که مخفف کامند هست قرار میگیرن و چون ماژول اول بیت پر ارزش رو میگیره cmd رو با عدد (8000h=10000000000000000) که فقط یه دونه یک در قسمت msb داره and میکنه وبعد اگر جوابش یک باشه یعنی این بیک یک بوده پس یک ارسال میشه و اگر صفر باشه صفر ارسال میشه cmd تا 16 بار شیفت پیدا میکنه ود همین حین اطلاعاتی که از ماژول میگیره را تو recv میریزه

void rfInit() {
writeCmd(0x80E7); //EL,EF,868band,12.0pF
writeCmd(0x8239); //!er,!ebb,ET,ES,EX,!eb,!ew,DC
writeCmd(0xA640); //frequency select
writeCmd(0xC647); //4.8kbps
writeCmd(0x94A0); //VDI,FAST,134kHz,0dBm,-103dBm
writeCmd(0xC2AC); //AL,!ml,DIG,DQD4
writeCmd(0xCA81); //FIFO8,SYNC,!ff,DR
writeCmd(0xCED4); //SYNC=2DD4 , AG
writeCmd(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN
writeCmd(0x9850); //!mp,90kHz,MAX OUT
writeCmd(0xCC17); //OB1 , ACOB0, LPX,Iddy,CDDIT,CBW0
writeCmd(0xE000); //NOT USED
writeCmd(0xC800); //NOT USED
writeCmd(0xC040); //1.66MHz,2.2V
}


الان دیگه وقت ندارم بقیه ش رو فردا تایپ میکنم

asadi843
13-04-2011, 16:57
ممنون از راهنمایی این قسمت
منتها تو حلقه int main دو حلقه for برا چیه ؟ و تکرار rfsend برای چیه ؟:o

ghaem313
16-04-2011, 13:19
ممنون از راهنمایی این قسمت
منتها تو حلقه int main دو حلقه for برا چیه ؟ و تکرار rfsend برای چیه ؟:o
اون فقط یه تاخیره
اگر به دستور for نگاه کی میبینی که برای اولی باید دومی اجرا بشه و برای دومی هیچی جز افزایش j این تاخیر شاید به این علته که ماژول گیرنده initial بشه بعد برایش داده بره


تاخیره دوم هم واسه اینهکه led چشمک بزنه

تکرار rfsend هم برای اینه که 16 بایت رو پشت سر هم بفرسته.در مورد فستادن هم اگر خواستی تو ضیح بدم

asadi843
16-04-2011, 18:18
بازم تشکر از آقای قائم عزیز بالاخره یکی هست به دادمون برسه
دیتا شیتشا خوندم ولی اگه توضیح بدین ممنون می شوم
یه سوال دیگه با avr16a میشه rfm12b را راه اندازی کرد ؟
یه جایی خوندم مثل اینکه نمیشه
سوال دیگه برنامه راحتتر از این با c نمیتونید معرفی کنید ؟

ghaem313
16-04-2011, 20:57
بازم تشکر از آقای قائم عزیز بالاخره یکی هست به دادمون برسه
دیتا شیتشا خوندم ولی اگه توضیح بدین ممنون می شوم
یه سوال دیگه با avr16a میشه rfm12b را راه اندازی کرد ؟
یه جایی خوندم مثل اینکه نمیشه
سوال دیگه برنامه راحتتر از این با c نمیتونید معرفی کنید ؟

اول بگو اين avr16a چيه؟

asadi843
17-04-2011, 10:59
تغذیه 2.8 تا 5 ولت داره و مثل اینکه کریستال پایین تری نسبت به 16 داره(8) ولی نمیدونم خروجی بافرش چند ولته ؟

ghaem313
17-04-2011, 12:51
من همين الان يه سرچي زدم جر سايت خودمون و همين تاپيك چيزي در مورد avr16a پيدا نكردم فكركنم منظور شما سري L باشه.بله سري L مثل mega8L كه آخر اسم آي سي هست رو ميشه بهش وصل كرد وتغذيه 3.3 به آي سي و ماژول داد
محدوده فركانسي L بين 0تا8 مگاهرتز
محدود ولتاژ 2.7 تا 5.5

asadi843
17-04-2011, 13:10
16a سری جدیده که با هر دو منبع کار میکنه مثل همون 16l هستش
به نظر سما برنامه را می شه ساده تر از اینش کرد ؟
می شه از پایه های دیگه این ماژول استفاده کرد ؟ نقل قول از کسی که میگفت برنامه راحتتر از این را میشه باهاش بنویسی ؟
اگه مایل باشید تا برنامه گیرنده را هم بررسی کنیم شاید بدرد بقیه هم بخوره ؟
با تشکر

ghaem313
18-04-2011, 23:56
بله حق با شماست من تو كتاب ها اين سري رونديده بودم (به دليل چاپ قديم بودن وكپي از روي هم) و تو سايت اتمل هم با وجود اين كه زياد مدل ها رو ديدم ولي دقت نكرده بودم . اين سري هم محدوده ولتاژش از 2.7 تا5.5 هست هم فركانسش تا 16 مگ

اما ماژول
اكثر ديتا شيت خود ماژول را مي گيرن كه بخش هايي از ديتا شيت آي سي داخل ماژوله اما كامل ترين مرجع براي كار با ماژول استفاده از ديتا شيت خود آي سي rf12 هست كه از لينك زير مي توني دانلودش كني

You can see links before reply

من تازه ويندوز عوض كردم و آكروبات ريدرم 6 ه و فايل بالا رو باز نمي كنه انشا الله يدونه نسخه جديد تر كه نصب كردم برات چند تا قسمت عكس ميذارم كه نحوه ارتباط گرفتن و فرستادن ديتا رو نشون ميده

البته با اين روش هنوز بايد كامند ها رو با spi بفرستي ولي ديتا رو ميشه از با پايه هاي ديگه بگيري و يا بفرستي كه به سخت تر شدن (البته به نظر بعضيا) منجر ميشه و راحت ترين روش همينه كه پايه هاي كمتري رااشغال ميكنه و چون دمو ماژول هم بر همين مبناست اكثرا با همبن روش برنامه رو نوشتن

asadi843
19-04-2011, 01:18
من وارد نیستم ولی خوب اگه پایه های دیگه کاربرد زیاد ی نداشتن که سازنده ساده ترش می کرد؟
حالا نمیدونم کجا خوندم ولی نوشته بود که چرا از حلقه بینهایت استفاده میشه ومنتظر بمونه تا دیتا برسه و چند مورد دیگه که از پایه های دیگه استفاده بشه (بیخیال خیلی مهم نیست)
راستی یه سوال دیگه با میکرو آرم sam7x256 میشه ماژول را راه اندازی کرد ؟(ندیدم جایی راه اندازی کرده باشه )
اگه مایل باشی تا برنامه گیرنده را بذارم ؟
وبعد ان شا... rfm12bp را بررسی کنیم ؟
بازم تشکر از تخصیص وقتتون

ghaem313
20-04-2011, 20:10
با آرم sam7x256 هم ميشه .به علاوه اين آي سي spi با 8 و16 بيت داره



من وارد نیستم ولی خوب اگه پایه های دیگه کاربرد زیاد ی نداشتن که سازنده ساده ترش می کرد؟


من هم نگفتم پايه هاش كاربردي نداري.گفتم ساده ترين راه براي راه اندازي همينه كه تو دمو نوشته
من هم همون نوشته را كه شما خونديد خوندم
You can see links before reply

سلام دوستان
موضوع RFM12B موضوع جدیدی نیست. ولی توجه کردین که چه کد های گنگ و بی مصرفی برای این ماژول توی اینترنت هست؟ مثل کد ضعیفی که مثلا حتی توی خود دیتا شیت این ماژول هست یا کد وطنی سایت You can see links before reply که نمونه برداری دقیق از کد دیتا شیت هست.

اما مشکل این برنامه ها چیه؟ مشکل فرق بین روش Polling و روش Interrupt برای انتظار کشیدن رسیدن داده ها هستش. به این معنی که شما برای دریافت داده ، روتین دریافت داده رو مرتبا توی یک حلقه بی نهایت قرار میدین تا یک وقتی اگر فرستنده میل داشت چیزی ارسال کند، روتین داده بتواندآن را دریافت کند.
همچنین مشکل دوم که توی کد ضعیف موجود در این دیتا شیت هست، ماکروی WAIT_IRQ_LOW هست که باز هم یک حلقه هست که وقت CPUرو بی مورد اشغال میکنه و اگر فرستنده چیری نفرسته میکرو توی این حلقه گیر میکنه و پروژه میخوابد.

راه حلی که بنده پیشنهاد میکنم استفاده از اینتراپت هستش. پایه 5 ماژول که FFIT نام داره بعد از دریافت صحیح یک کاراکتر پایین میره و همونجا میمونه تا وقتی که بایت رسیده رو از FIFO بخونین.
حالا می تونید این پایه رو به پایه ی وقفه خارجی میکرو (مثلاINT0 برای AVR) وصل کنید تا با دریافت داده میکرو اینتراپت داده و بلافاصله بایت را بخوانید تا برای بایت بعد آماده شوید.


خوب اگر pdf ي كه گذاشتم دانلود كرده باشي تو صفحه 7 ش اينا رو ميبيني
You can see links before reply (You can see links before reply)
پين 6 و7 آي سي كه همون پين هايFSK/DATA/nFFS وDCLK/CFIL/FFIT ماژول هستند در ژيكره بندي هاي مختلف نقش متفاوتي دارند
همون طور كه در جدول معلومه
در مد فرستنده
با el=0 پايه 6 ميشه ديتا رو فرستاد به ماژول
با el=1 پايه 6 دسترسي به رجيستر TX رو فراهم ميكنه

در مد گيرنده
پايه 6 پايه7
ef=0 خروجي ديتا كلاك براي RX
ef=1 دسترسي به رجيستر RX وقفه براي گرفتن اطلاعات ffit


تو صغحه هاي 23 24 25 همين ديتا شيت در مورد كار كردن با همين روش توضيح داده شده و اگر به نودار هاي زماني اين بخش نگاه كنيد متوجه ميشيد كه پروتكل spi سر جاش هست ولي براي گرفتن اطلاعات و يا ارسال اطلاعات روش ديگر ي جايگزين شده

asadi843
23-04-2011, 12:35
برنامه که برا avr نوشته شده را میشه تو arm هم پیاده سازی کرد ؟
یا باید کار خاصی کرد؟

ghaem313
23-04-2011, 14:36
برنامه چون با c نوشته شده قابل پياده سازي تو ي هر ميكرويي كه كامپايلر c داشته باشه هست
اما بايد تغييرا لازم رو بدي

مثلا اگر برنامه اي رو براي مگا32 با پورتa نوشتي بايد پورتش رو تو مگا هشت عوض كني چون پورت a نداره


اما برنامه بايد ساد تر بشه چون spi شانزده بيتي داريم و به توابعي همچون write0 ,write1,writecmd نداري و بايد چند تابع جديد تعريف كني

در مورد ارتباط با ماژول به روش ديگه علاقه به ادامه بحث نداري؟ديگر دوستان كه در اين رابطه اطلاعات بيش تر دارن و اين امكان ماژول را راه اندختن هم تشريف بيارن .تاپيك شكل چت پيدا كرده

alikazemi
23-04-2011, 19:41
سلام و خسته نباشيد به برو بچه هاي فعال !
RFM12 يا RFM12b يا RFM12bp كدومشون بدون آنتن كار ميكنه ؟

من يه ماژول كوچيك بدون آنتن مي خوام كه براي ارتباط دو طرفه با ميكرو بردش حداقل 100 متر

خيلي ممنون مي شم اگه راهنمايي كنيد.

asadi843
24-04-2011, 12:09
اطلاعات جزئی در مورد بقیه پایه ها دارم
ولی خوب اگه بشه بدمون نمی یاد یاد بگیریم
تا حالا خودتون یا کسی را ندیدین که با آرم راه اندازیش کرده باشه ؟

ghaem313
24-04-2011, 19:29
سلام و خسته نباشيد به برو بچه هاي فعال !
RFM12 يا RFM12b يا RFM12bp كدومشون بدون آنتن كار ميكنه ؟

من يه ماژول كوچيك بدون آنتن مي خوام كه براي ارتباط دو طرفه با ميكرو بردش حداقل 100 متر

خيلي ممنون مي شم اگه راهنمايي كنيد.
من تو يكي از بخش ها خوندم بدون آنتن ماژول ميسوزه

من خودم هنوز با آرم كار رو شروع نكردم كه برسه به راه اندازي ماژول rfm12

hrx
25-04-2011, 17:57
rfm12b بدون آنتن بردی در حد چند سانتی متر داردو با یک سیم حدود 18 سانت هم کارش راه می افتد . rfm12bp بدون آنتن اگر به تغذیه متصل شود میسوزه و نیاز به آنتن با امپدانس 50 اهم داره (در ضمن شکل ظاهری آنتن هم اهمیت داره).وقتی آنتن 50 اهمی را می گذارید جریانی معادل با جریان عبوری از یک مقاومت 50 اهم از محل آنتن کشیده میشود و اگر آنتنی نگذارید این جریان خیلی بیشتر میشه و باعث سوختن طبقه تقویت کننده میشود.
در ضمن یک مشکلی که با rfm12 برای من پیش آمده اینه که هر کار کردم که در محدوده فرکانسی 430.24 تا 439.7575 کانالهای فرکانسی مجزا تعیین کنم نمیشد و کانالها در هم اختلال ایجاد میکردنند حتی پهنای باند گیرنده را کاهش و فرکانس فرستنده ها را با گامهای یک مگاهرتز تنظیم کردم و به عبارتی 9 فرستنده دارم با فرکانسهای 430.24 و 431.24 و 432.24 و... ولی تداخل فرکانس وجود دارد . اگه کسی میدونه مشکل چیه یک کمکی برسونه.(خواهشا)
:(:(:(:(:x:x

mohammadttl
11-06-2013, 16:47
وقتی فرستنده گیرنده بدون rxen و txen استفاده میکنم بردش در حد فضای یک خونه هستش ولی وقتی از پایه های rxen و txen استفاده میکنم بردش زیاد نمیشه.آیا حتما در اینصورت باید آنتن بذارم؟؟؟آنتن که نگذاشته بودم آیا طبقه تقویت کنندم سوخته؟

rfbook
12-06-2013, 00:16
سلام

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

شما پایه vcc-pa را به ولتاژ 9 تا 12 ولت متصل کردین و پایه txen , rxen را موقع ارسال و دریافت 0 و 1 می کنید ؟

اون خط ترکی که از پایه ماژول به سمت آنتن میره حتماً مستقیم باشه و طول زیادی نداشته باشه .
تا اونجایی که میتونین به ماژول نزدیک باشه

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

ورژن ماژول و فرکانس ماژول و ولتاژی که rfm12bp را با اون راه اندازی کردین ؟