اطلاعیه

Collapse
No announcement yet.

نحوه استفاده صحیح از ماژول rfm12b

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

    #16
    پاسخ : نحوه استفاده صحیح از ماژول rfm12b

    کتابخونه buffer موجود در AVRLIb رو ببنید . به زبان Cآ‌ هست . میتونید تبدیلش کنید برای codevision .
    فتو بلاگ من
    کاردستی ها :
    روبات شطرنج باز ( یادگار دوران جوانی )
    فارسی نویسی مستقیم در نمایشگر های گرافیکی
    کتابچه خود آموز زبان توصیف سخت افزار Verilog

    دیدگاه


      #17
      پاسخ : نحوه استفاده صحیح از ماژول rfm01,02

      سلام.من میخوام از طریق spi اطلاعات اندازه گیری دما با adc را توسط ماژول های rfm01وrfm02 ارسال کنم و روی lcd بر روی slave نمایش بدم .

      با سیم اون رو جواب گرفتم حالا نمیدونم که با این ماژول چه جوری ارتباط spi بین دو میکرو را بیسیم کنم .از میکرو ATMEGA32 استفاده میکنم.

      ممنون میشم اگر راهنماییم کننین.

      دیدگاه


        #18
        پاسخ : نحوه استفاده صحیح از ماژول rfm12b

        سلام ببینید ماژول هایی رو که ذکر کردید مثل همون rfm12 هستند و حتی از لحاظ برنامه هم تفاوتی با rfm12 ندارند فقط rfm12 می تواند هم فرستنده و هم گیرنده باشد من خوشبختانه مشکلاتم با این ماژول حل شد و توجه شما را به چند نکته جلب می کنم
        1- بدلیل اینکه باندی که این فرستنده ها از آن استفاده می کنند خالی نیست به همین جهت احتمال نرسیدن اطلاعات به گیرنده بسیار قوی است لذا برای اون که این مشکل رو بتونید حل کنید باید از به این صورت عمل کنید
        1- اگر ایستگاه A اطلاعاتی رو بخواد برای ایستگاه B ارسال کنه باید ایستگاه A اطلاعاتش رو بفرسته و ایستگاه B در صورتی که cksum ارسال شده از طرف فرستنده با cksum که خودش از روی اطلاعات رسیده بدست می آره برابر بود گیرنده علامتی مثل فرستادن حرف T برای ایستگاه A ارسال کنه تا ایستگاه A متوجه بشه کهاطلاعات درست به مقصد رسیده ولی اگر ایستگاه A تاییدی از ایستکاه B دریافت نکنه فرض رو براین باید بذاره که اطلاعات درست منتقل نشده و دوباره اطلاعاتی رو که ارسال کرده ارسال کنه و این سیکل رو انقدر ادامه بده که ایستگاه B حرف T رو مبنی بر صحت اطلاعات ارسال کنه پس هم ایستگاه A و هم ایستگاه B باید قادر با ارسال و دریافت دیتا باشند لذا من توصیه میکنم که از ماژول RFm12 استفاده کنید چرا در این صورت مجبورید 4 تا ماژول بخرید
        برای برنامه نویسی اون هم نگران نباید یک گشتی توی سایت بزنید برنامه کاملش توسط دوستان قرار داده شده فقط نکته جالب اینکه در هربار اجرا شدن سیکل ارسال شما قادریک بسته های دیتا با طول متغییر از یک بایت تا 100 بایت رو یک جا ارسال کنید من خودم برنامه مورد احتیاج رو به همین صورت نوشتم و خیلی خوب هم کار میکنه چون هربار اجرای سیکل ارسال و دریافت طولانی هست بهتر است که از این روش استفاده کنید
        اگر باز هم مشکلی بود در خدمتم
        به دیگران بیاموز تا بتو بیاموزند
        bioosun@gmail.com

        دیدگاه


          #19
          پاسخ : نحوه استفاده صحیح از ماژول rfm12b

          سلام.خیلی ممنون از راهنمایی تون. من با bascom کار میکنم و نمیدونم چطور با اون راه اندازیش کنم.برنامه موجود در datasheet با codevision هستش اگر امکان داره بفرمایید که با bascom چطور میتونم این ماژول ها رو درایو کنم؟

          با تشکر فراوان

          دیدگاه


            #20
            پاسخ : نحوه استفاده صحیح از ماژول rfm12b

            برای این کار لازمه تا شما تمام توابع پایه رو که در کامپایلر codevion داده شده تحلیل کنید و سپس اونها رو با بیسیک بازنویسی کنید که کار خیلی مشکلی در پیش رو دارید و از انجا که کامپایلر bascom پر از اشکال های جور واجور است خیلی سخت جواب بگیرید (( من اولین کامپایلری که یاد گرفتم برای AVR ، bascom بود و تا مدتها ازش استفاده میکردم ولی با بزرگ شدن برنامه ها اشکالات نابهنجاری ازش دیدم و برای همیشه باهاش خداحافظی کردم و توی یک پروژه که با هاش انجام دادم حسابی اعتبارم رو زیر سئوال برد اولش چون C خوب بلد نبودم با تمام کسانی که ازش بد می گفتند مقابله می کردم ولی بعد که حسابی سر کارم گذاشت دیگه مجبوری رفتم و codevion یاد گرفتم و خیلی ازش راضی هستم برای یاد گرفتنش فقط کافی کتاب بسیار خوب آقای ره افروز انتشارات نص رو تهیه کنی و دوهفته هم وقت بذاری البته قبلش باید یک مقدار C یاد بگیری که در حدی که توی دانشگاه یاد میدن کفایت می کنه ))
            به دیگران بیاموز تا بتو بیاموزند
            bioosun@gmail.com

            دیدگاه


              #21
              پاسخ : نحوه استفاده صحیح از ماژول rfm12b

              سلام آقای رستمی.

              من ماژول rfm12b رو گرفتم ولی نتونستم اونو راه بندازم اگه کمکم کنید ممنون میشم.

              چند تا سوال هم داشتم:

              اول اینکه این ماژول دو تا جای آنتن داره سیم آنتنو به کدومشون باید وصل کنم؟؟؟؟

              من دو تا atmega 32 رو از طریق ارتباط spi به هم وصل کردم و با سیم اطلاعات از master به slave فرستاده

              میشه ولی وقتی از ماژول استفاده میکنم اطلاعات منتقل نمیشه!!!!!!!!!!!!!!!!

              به نظزم میاد اطلاعات از طرف master فرستاده میشه ولی اونطرف از طرف slave گرفته نمیشه!!!!

              آخا وقتی یه بایت داده رو میفرستم پایه nirq بالا کشیده میشه!!!

              به نظر شما مشکل کجاست؟؟

              در ضمن من فعلا دارم از بسکام استفاده میکنم و از برنامه توی دیتاشیت هم سر در نمیارم!!!

              اگه براتون امکان داره یه توضیح مختصر در مود پاهه های ماژول بدید ممنون میشم.

              راستی پایه ها رو هم مصل دیتا شیت متصل کردم

              در master



              SCK--------------->SCK
              MISO--------------->SDO
              MOSI--------------->SDI
              SS--------------->nSEL
              INT0<---------------nIRQ

              و در slave

              SCK--------------->SCK
              MISO--------------->SDO
              MOSI--------------->SDI
              SS--------------->nSEL
              INT0<---------------nIRQ

              و پایه 9 رو هم در مستر هم در تابع با یه مقاومت 10k به vcc متصل کردم

              منتظر پاسخ شما هستم .

              ممنون
              majid_valentin بی پرواست.جسورانه می پرسد.رودروایسی ندارد.هر چه دلش خواست می گوید!!
              اهل مراعات نیست.
              معنی ساخت و پاخت را نمیداند.
              بزرگ و کوچک را نمیشناسد ..
              بی باکی را یواشکی آموخته. در تاریکی می نشیند و روشنایی را می پاید.
              پر انرژی و با نشاط است واز سانسور و فیلترینگ غمین است نیش دارند اما آزار ندارد!!!!

              دیدگاه


                #22
                پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                سلام دوست عزیز برای آنتن دو جا وجود داره که یکی از اونها زمین ! پس با مولتی متر امتحان کن به اونی وصل کن که زمین نیست . از روی مدار چاپی هم میتونی متوجه بشی
                درمورد برنامه هم کمکی نمیتونم بکنم چون با بسکام راهش ننداختم . باز هم میگم برید codevition یاد بگیرید ضرر نمیکنید من تا چند دقیقه قبل داشتم کتاب میکرو pic رو مطالعه می کردم شاید هیچ وقت هم ازش استفاده نکنم ولی خیالم راحته که اگه مجبور به استفاده ازش بشم مشکلی نخواهم داشت :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
                به دیگران بیاموز تا بتو بیاموزند
                bioosun@gmail.com

                دیدگاه


                  #23
                  پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                  سلام آقای رستمی

                  ممنون از راهنماییتون.

                  خودم به این نتیجه رسیدم که برم دنبال کدویژن ولی قبلش می خوام حداقل یه جواب کوچولو :mrgreen: از

                  این مدار بگیرم تا حداقل یه انگیزه بشه با شتاب بیشتری برم دنبال کدویژن!!!!!!!

                  می خواستم که اگه براتون مقدور هست در مورد کلیات این ماژول یه توضیح بدید واقعا ممنون میشم!!!


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

                  چه جوری میشه فرکانس کاری فرستنده و گیرنده رو تغییر داد؟؟؟

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

                  اینهکه باید برنامه نویسیش کنم؟؟؟

                  شرمنده که اینقدر سوالاتم زیاد شد!!!!! :redface:

                  باور کنید کلی پول این ماژولو دادم !!!!وقتی دارم لحیم کاریش میکنم دستام میلرزه!!!! :cry2:

                  majid_valentin بی پرواست.جسورانه می پرسد.رودروایسی ندارد.هر چه دلش خواست می گوید!!
                  اهل مراعات نیست.
                  معنی ساخت و پاخت را نمیداند.
                  بزرگ و کوچک را نمیشناسد ..
                  بی باکی را یواشکی آموخته. در تاریکی می نشیند و روشنایی را می پاید.
                  پر انرژی و با نشاط است واز سانسور و فیلترینگ غمین است نیش دارند اما آزار ندارد!!!!

                  دیدگاه


                    #24
                    پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                    نوشته اصلی توسط مصطفی رستمی
                    ... و از انجا که کامپایلر bascom پر از اشکال های جور واجور است خیلی سخت جواب بگیرید ...
                    1: من سال پیش پروژه پلیس راه الکترونیکی را که هم اکنون به نام اینجانب ثبت هم شده را برای ارائه به جشنواره خوارزمی ساختم که مقام اول استانی را گرفت اما به دلایلی تو مسابقات کشوری حاظر نشدم ... را با همین ماژول(RFM12) و کمپایلر Bascom ساختم خیلی هم عالی کار میکرد
                    البته راه اندازی اون خیلی دنگ و فنگ داره مثلا در برنامه نویسی فرکانس ماژول و سرعت و ... را باید برای ماژول تعریف کنیم ، درسته که ماژول ما مثلا 433MHz هست اما باز باید در برنامه تعریف بشه و الی آخر
                    دوما Bascom به جز تولید کد بالاتر (کمی بالاتر) و در نهایت کاهش سرعت عملیات هیچ چیزی از کمپایلرهای دیگه کم نداره (میتونم براتون اثبات کنم)

                    دیدگاه


                      #25
                      پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                      نوشته اصلی توسط AVRMicro


                      1: من سال پیش پروژه پلیس راه الکترونیکی را که هم اکنون به نام اینجانب ثبت هم شده را برای ارائه به جشنواره خوارزمی ساختم که مقام اول استانی را گرفت اما به دلایلی تو مسابقات کشوری حاظر نشدم ... را با همین ماژول(RFM12) و کمپایلر Bascom ساختم خیلی هم عالی کار میکرد
                      البته راه اندازی اون خیلی دنگ و فنگ داره مثلا در برنامه نویسی فرکانس ماژول و سرعت و ... را باید برای ماژول تعریف کنیم ، درسته که ماژول ما مثلا 433MHz هست اما باز باید در برنامه تعریف بشه و الی آخر
                      دوما Bascom به جز تولید کد بالاتر (کمی بالاتر) و در نهایت کاهش سرعت عملیات هیچ چیزی از کمپایلرهای دیگه کم نداره (میتونم براتون اثبات کنم)

                      سلام ممنون از پاسختون

                      براتون امکان داره کد برنامتونو با نقشه برام بفرستید؟؟؟

                      یا منو راهنمایی کنید؟

                      ممنون میشم

                      majid_valentin بی پرواست.جسورانه می پرسد.رودروایسی ندارد.هر چه دلش خواست می گوید!!
                      اهل مراعات نیست.
                      معنی ساخت و پاخت را نمیداند.
                      بزرگ و کوچک را نمیشناسد ..
                      بی باکی را یواشکی آموخته. در تاریکی می نشیند و روشنایی را می پاید.
                      پر انرژی و با نشاط است واز سانسور و فیلترینگ غمین است نیش دارند اما آزار ندارد!!!!

                      دیدگاه


                        #26
                        پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                        درباره basic یک سری به فرم های خارجی بزنید . چندتا برنامه درست حسابی رو میشناسید که با بیسیک نوشته شده؟ ........!!!!!!! آیا به غیر این است 90 درصد برنامه ها با زبان c در اینترنت موجود است . آیا این همه کاربرavr در سرتاسر جهان اشتباه می کنند و یا پول ندارد کامپایلر basic بخرند ؟
                        به دیگران بیاموز تا بتو بیاموزند
                        bioosun@gmail.com

                        دیدگاه


                          #27
                          پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                          من میخوام 2 تا میکرو Atmega64 و Atmega32 رو با این ماژول شبکه کنم که بتونم دیتا ارسال و دریافت کنم .
                          میشه خیلی دقیق بگید نحوه اتصالش چجوری هستش . چون میخوام تو عید PCB شو بزنم .

                          دیدگاه


                            #28
                            پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                            به سایت تولید کننده ماژول مراجعه کنید همه چیز به علاوه یک برنامه sample نیز در این سایت وجود داره مطالب قبلی رو که بنده و دیگر دوستان نوشته اند خوب مطالعه کنید انشا... به مشکل برخورد نخواهید کرد . ( توی سایت در قسمت جستجو بنویسید RFM12 و کل مطالب مربوطه را خوب مطالعه کنید . یادم است که یک شماتیک و برنامه پلود کرده بودم !!! )
                            به دیگران بیاموز تا بتو بیاموزند
                            bioosun@gmail.com

                            دیدگاه


                              #29
                              پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                              سلام آقای رستمی من برنامه گیرنده شما رو تغییر دادم تا اطلاعات رو روی lcd نمایش بده و جای پین into

                              رو عوض کردم ولی اصلا هیچی دریافت نمیشه !!!!!!!!!!


                              لطفا اگه براتون امکان داره کمکم کنید ممنون میشم.


                              #include <mega8.h>
                              #include <stdlib.h>
                              #include <stdio.h>
                              #include <delay.h>
                              char buff[16];
                              bit QC_flag;
                              // Alphanumeric LCD Module functions
                              #asm
                              .equ __lcd_port=0x12
                              #endasm
                              #include <lcd.h>
                              /*Connections

                              ATMEGA8 SIDE RF12 SIDE
                              SCK--------------->SCK
                              MISO--------------->SDO
                              MOSI--------------->SDI
                              SS--------------->nSEL
                              INT0<---------------nIRQ

                              PD6: LED GREEN
                              PD7: LED RED

                              */
                              //****************************define**************** *****************//


                              #define DDR_IN 0
                              #define DDR_OUT 1

                              #define PORT_SEL PORTB
                              #define PIN_SEL PINB
                              #define DDR_SEL DDRB

                              #define PORT_SDI PORTB
                              #define PIN_SDI PINB
                              #define DDR_SDI DDRB

                              #define PORT_SCK PORTB
                              #define PIN_SCK PINB
                              #define DDR_SCK DDRB

                              #define PORT_SDO PORTB
                              #define PIN_SDO PINB
                              #define DDR_SDO DDRB

                              #define PORT_IRQ PORTC
                              #define PIN_IRQ PINC
                              #define DDR_IRQ DDRC

                              #define PORT_DATA PORTC
                              #define PIN_DATA PINC
                              #define DDR_DATA DDRC

                              #define PB7 7//--\
                              #define PB6 6// |
                              #define RFXX_SCK 5// |
                              #define RFXX_SDO 4// |RF_PORT
                              #define RFXX_SDI 3// |
                              #define RFXX_SEL 2// |
                              #define NC 1// |
                              #define PB0 0//--/

                              #define SEL_OUTPUT() DDR_SEL |= (1<<RFXX_SEL)
                              #define HI_SEL() PORT_SEL|= (1<<RFXX_SEL)
                              #define LOW_SEL() PORT_SEL&=~(1<<RFXX_SEL)

                              #define SDI_OUTPUT() DDR_SDI |= (1<<RFXX_SDI)
                              #define HI_SDI() PORT_SDI|= (1<<RFXX_SDI)
                              #define LOW_SDI() PORT_SDI&=~(1<<RFXX_SDI)

                              #define SDO_INPUT() DDR_SDO&= ~(1<<RFXX_SDO)
                              #define LOW_SDO() PORT_SDO&= (1<<RFXX_SDO)
                              #define SDO_HI() PIN_SDO&(1<<RFXX_SDO)

                              #define SCK_OUTPUT() DDR_SCK |= (1<<RFXX_SCK)
                              #define HI_SCK() PORT_SCK|= (1<<RFXX_SCK)
                              #define LOW_SCK() PORT_SCK&=~(1<<RFXX_SCK)

                              ////////////////////////////////
                              #define RF12_IRQ 2
                              #define IRQ_IN() DDR_IRQ.2=0 ///////////MAJID
                              #define WAIT_IRQ_LOW() while(PINC.2)/////////majid
                              //////////////////////////////

                              #define RF12_DATA 4//PD4
                              #define DATA_OUT() DDR_DATA|=1<<RF12_DATA
                              #define HI_DATA() PORT_DATA|=1<<RF12_DATA

                              #define LEDG_OUTPUT() DDRC.5=1;
                              #define LEDR_OUTPUT() DDRC.4=1;

                              #define LEDG_ON() PORTC.5=1;
                              #define LEDG_OFF() PORTC.5=0;
                              #define LEDR_ON() PORTC.4=1;
                              #define LEDR_OFF() PORTC.4=0;

                              //****************************** *******************************//
                              /////////////////////////////////////////////////////////////////
                              // ********************basic function for recive data ********//
                              /////////////////////////////////////////////////////////////////
                              void RFrecieve_PORT_INIT(void){
                              HI_SEL();
                              HI_SDI();
                              LOW_SCK();
                              //SET nFFS pin HI when using FIFO
                              HI_DATA();
                              SEL_OUTPUT();
                              SDI_OUTPUT();
                              SDO_INPUT();
                              SCK_OUTPUT();
                              IRQ_IN();
                              DATA_OUT();
                              }

                              unsigned int RFrecieve_WRT_CMD(unsigned int aCmd){
                              unsigned char i;
                              unsigned int temp;
                              temp=0;
                              LOW_SCK();
                              LOW_SEL();
                              for(i=0;i<16;i++){
                              if(aCmd&0x8000){
                              HI_SDI();
                              }else{
                              LOW_SDI();
                              }
                              HI_SCK();
                              temp<<=1;
                              if(SDO_HI()){
                              temp|=0x0001;
                              }
                              LOW_SCK();

                              aCmd<<=1;
                              };
                              HI_SEL();
                              return(temp);
                              }

                              void RF12recieve_INIT(void){
                              RFrecieve_WRT_CMD(0x80E7);//EL,EF,868band,11.5pF
                              RFrecieve_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
                              RFrecieve_WRT_CMD(0xA640);//860.8MHz
                              RFrecieve_WRT_CMD(0xC647);//100kbps
                              RFrecieve_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm
                              RFrecieve_WRT_CMD(0xC2AC);//AL,!ml,DIG,DQD4
                              RFrecieve_WRT_CMD(0xCA81);//FIFO8,SYNC,!ff,DR
                              RFrecieve_WRT_CMD(0xCED4);//SYNC=2DD4
                              RFrecieve_WRT_CMD(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN
                              RFrecieve_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
                              RFrecieve_WRT_CMD(0xCC67);//OB1,OB0,!1PX,!DDY,DDIT,BWO
                              RFrecieve_WRT_CMD(0xE000);//NOT USE
                              RFrecieve_WRT_CMD(0xC800);//NOT USE
                              RFrecieve_WRT_CMD(0xC400);//1.66MHz,2.2V
                              }

                              unsigned char RF12_RECV(void){
                              unsigned int FIFO_data;
                              IRQ_IN();//ezafe kardam1
                              PORTC.2=1;// ADDED
                              WAIT_IRQ_LOW();
                              RFrecieve_WRT_CMD(0x0000);
                              FIFO_data=RFrecieve_WRT_CMD(0xB000);
                              return(FIFO_data & 0x00FF);
                              }
                              ////////////////////////////////////////////////////////////////////////////////
                              //************************* basic functon for transmiting data****************//
                              ////////////////////////////////////////////////////////////////////////////////
                              void RFsend_PORT_INIT(void){
                              HI_SEL();
                              HI_SDI();
                              LOW_SCK();
                              SEL_OUTPUT();
                              SDI_OUTPUT();
                              SDO_INPUT();
                              SCK_OUTPUT();
                              }

                              unsigned int RFsend_WRT_CMD(unsigned int aCmd){
                              unsigned char i;
                              unsigned int temp;
                              LOW_SCK();
                              LOW_SEL();
                              for(i=0;i<16;i++){
                              temp<<=1;
                              if(SDO_HI()){
                              temp|=0x0001;
                              }
                              LOW_SCK();
                              if(aCmd&0x8000){
                              HI_SDI();

                              }else{
                              LOW_SDI();
                              }
                              HI_SCK();
                              aCmd<<=1;
                              };
                              LOW_SCK();
                              HI_SEL();
                              return(temp);
                              }

                              void RF12send_INIT(void){
                              RFsend_WRT_CMD(0x80E7);//EL,EF,868band,12.0pF
                              RFsend_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
                              RFsend_WRT_CMD(0xA640);//860.8MHz
                              RFsend_WRT_CMD(0xC647);//19.2kbps
                              RFsend_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm
                              RFsend_WRT_CMD(0xC2AC);//AL,!ml,DIG,DQD4
                              RFsend_WRT_CMD(0xCA81);//FIFO8,SYNC,!ff,DR
                              RFsend_WRT_CMD(0xCED4);//SYNC=2DD4
                              RFsend_WRT_CMD(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN
                              RFsend_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
                              RFsend_WRT_CMD(0xCC67);//OB1,OB0,!1PX,!DDY,DDIT,BWO
                              RFsend_WRT_CMD(0xE000);//NOT USE
                              RFsend_WRT_CMD(0xC800);//NOT USE
                              RFsend_WRT_CMD(0xC400);//1.66MHz,2.2V
                              }

                              void RF12_SEND(unsigned char aByte){
                              while(PIND&(1<<2));//wait for previously TX over
                              RFsend_WRT_CMD(0xB800+aByte);
                              }

                              ////////////////////////////////////////////////////////////////////
                              ///////////////////////////main function for data recieve//////////
                              ///////////////////////////////////////////////////////////////////

                              void DataRecieve(void)
                              {
                              unsigned char i;
                              unsigned char ChkSum;

                              //Initialize command port
                              RFrecieve_PORT_INIT();

                              //Initialize RF12 chip
                              RF12recieve_INIT();

                              //Init FIFO
                              RFrecieve_WRT_CMD(0xCA81);
                              //Enable FIFO
                              RFrecieve_WRT_CMD(0xCA83);
                              ChkSum=0;
                              // Receive payload data
                              for(i=0;i<16;i++){
                              buff[i]=RF12_RECV();
                              ChkSum+=buff;
                              }
                              //Receive Check sum
                              i=RF12_RECV();
                              //Disable FIFO
                              RFrecieve_WRT_CMD(0xCA81);

                              if(ChkSum==i){
                              QC_flag=1;
                              }
                              else
                              {
                              QC_flag=0;
                              };
                              }

                              //////////////////////////////////////////////////////////////////
                              ////////////////////// main function for send data///////////////
                              /////////////////////////////////////////////////////////////////

                              void DataSend(void)
                              {
                              unsigned char ChkSum;
                              unsigned char ack='F';
                              unsigned int FIFO_data;
                              //khodam ezaf kerdam
                              ack='F';
                              FIFO_data=0;
                              ///////////
                              DDRB=0x00;
                              DDRC=0x00;
                              RFsend_PORT_INIT();
                              RF12send_INIT();

                              DDRC|=(1<<RF12_DATA);
                              PORTC|=(1<<RF12_DATA);// SET nFFS pin HI when using TX register
                              DDRC&=~(1<<2); //PD2(INT0)

                              LEDR_ON();
                              RFsend_WRT_CMD(0x0000);//read status register
                              RFsend_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC

                              ChkSum=0;
                              RF12_SEND(0xAA);//PREAMBLE
                              RF12_SEND(0xAA);//PREAMBLE
                              RF12_SEND(0xAA);//PREAMBLE
                              RF12_SEND(0x2D);//SYNC HI BYTE
                              RF12_SEND(0xD4);//SYNC LOW BYTE

                              RF12_SEND(buff[0]);//DATA BYTE 0
                              ChkSum+=buff[0];
                              RF12_SEND(buff[1]);//DATA BYTE 1
                              ChkSum+=buff[1];
                              RF12_SEND(buff[2]);
                              ChkSum+=buff[2];
                              RF12_SEND(buff[3]);
                              ChkSum+=buff[3];
                              RF12_SEND(buff[4]);
                              ChkSum+=buff[4];
                              RF12_SEND(buff[5]);
                              ChkSum+=buff[5];
                              RF12_SEND(buff[6]);
                              ChkSum+=buff[6];
                              RF12_SEND(buff[7]);
                              ChkSum+=buff[7];
                              RF12_SEND(buff[8]);
                              ChkSum+=buff[8];
                              RF12_SEND(buff[9]);
                              ChkSum+=buff[9];
                              RF12_SEND(buff[10]);
                              ChkSum+=buff[10];
                              RF12_SEND(buff[11]);
                              ChkSum+=buff[11];
                              RF12_SEND(buff[12]);
                              ChkSum+=buff[12];
                              RF12_SEND(buff[13]);
                              ChkSum+=buff[13];
                              RF12_SEND(buff[14]);
                              ChkSum+=buff[14];
                              RF12_SEND(buff[15]); //DATA BYTE 15
                              ChkSum+=buff[15];
                              RF12_SEND(ChkSum);
                              RF12_SEND(0xAA);//DUMMY BYTE
                              RF12_SEND(0xAA);//DUMMY BYTE
                              RF12_SEND(0xAA);//DUMMY BYTE
                              RFsend_WRT_CMD(0x8201);

                              }

                              ////////////////////////////////////////////////////////////////////
                              ///////////////////////////////////////////////////////////////////



                              // Declare your global variables here

                              void main(void)
                              {
                              char str[40];
                              LEDG_OFF();
                              LEDR_OFF();
                              // LCD module initialization
                              lcd_init(20);
                              while (1)
                              {
                              DataRecieve();
                              if(QC_flag==1){
                              sprintf(str,"%d",buff);
                              lcd_puts(str);
                              DDRC.4=1;
                              PORTC.4=0;
                              DDRC.5=1;
                              PORTC.5=0;
                              }
                              else{
                              DDRC.4=0;
                              PORTC.4=0;
                              DDRC.5=0;
                              PORTC.5=0;
                              }


                              }


                              #pragma warn-
                              }

                              majid_valentin بی پرواست.جسورانه می پرسد.رودروایسی ندارد.هر چه دلش خواست می گوید!!
                              اهل مراعات نیست.
                              معنی ساخت و پاخت را نمیداند.
                              بزرگ و کوچک را نمیشناسد ..
                              بی باکی را یواشکی آموخته. در تاریکی می نشیند و روشنایی را می پاید.
                              پر انرژی و با نشاط است واز سانسور و فیلترینگ غمین است نیش دارند اما آزار ندارد!!!!

                              دیدگاه


                                #30
                                پاسخ : نحوه استفاده صحیح از ماژول rfm12b

                                lسلام من با ماژول hm-tr همین شرکت hope rf کار کردم که half duplex هست یه نرم افزار configurate کامل داره که میشه از طریق پورت کام کانال بندیش کرد وباود رو وفرمت داده سریال رو تنضیم کرد در عرض نیم ساعت راش انداختم از ایران چیپ خریدم با آنتن 16 هزار تومن دو مودل تی تی ال وrs 232 داره نتیجه گرفتم فقط یه جا نوشته تو دیتا شیت که زیر سرعت 9600kbp مشکلی نیست ولی بالاتر 32 بایت رو پشت سر هم میفرسته و بعد منتظر دریافت میشه اینجاش مبهم بود اگه کسی فهمید توضیح بده ممنون میشم

                                دیدگاه

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