نمایش نتایج 1 تا 4 از 4

نام تاپیک: مشکل با ماژول RFM12b

  1. #1
    کاربر دائمی آواتار Alfred188
    تاریخ عضویت
    دی 1389
    محل زندگی
    مازندران
    پست
    288

    مشکل با ماژول RFM12b

    سلام، من چندتا ماژول RFM12b خریدم ولی هنوز نتونستم باهاشون اطلاعاتی ارسال و دریافت کنم
    مدارم رو با 3.3 ولت بستم
    اینم کدهام:
    فرستنده:
    #include <mega16.h> #include <stdlib.h> 
    #include <stdio.h>
    #include <delay.h>
    #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 PORTD
    #define PIN_IRQ PIND
    #define DDR_IRQ DDRD


    #define PORT_DATA PORTD
    #define PIN_DATA PIND
    #define DDR_DATA DDRD


    #define PB7 3//--\
    #define PB6 2// |
    #define RFXX_SCK 7// |
    #define RFXX_SDO 6// |RF_PORT
    #define RFXX_SDI 5// |
    #define RFXX_SEL 4// |
    #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 &=~(1<<RF12_IRQ)
    #define WAIT_IRQ_LOW() while(PIND&(1<<RF12_IRQ))


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


    #define RFM12_Reset PORTB.0
    #define ON 0
    #define OFF 1
    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=0;
    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(0x80F3);//EL,EF,433band,12.0pF
    //RFsend_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
    //RFsend_WRT_CMD(0xC640);//A140=430.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(0xCA83);//@PWR,NO RSTRIC,!st,!fi,OE,EN
    //RFsend_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
    //RFsend_WRT_CMD(0xE000);//NOT USE
    //RFsend_WRT_CMD(0xC800);//NOT USE
    //RFsend_WRT_CMD(0xC040);//1.66MHz,2.2V


    RFsend_WRT_CMD(0x80F8); //EL,EF,915band,12.5pF
    RFsend_WRT_CMD(0x8239); //!er,!ebb,ET,ES,EX,!eb,!ew,DC
    RFsend_WRT_CMD(0xAA6B); //frequency select
    RFsend_WRT_CMD(0xC647); //bit rate = 4.8kbps
    RFsend_WRT_CMD(0x94C2); //VDI,FAST,BW=67kHz,0dBm,-91dBm
    RFsend_WRT_CMD(0xC2AC); //AL,!ml,DIG,DQD4
    RFsend_WRT_CMD(0xCA81); //FIFO8,SYNC,!ff,DR
    RFsend_WRT_CMD(0xCED4); //SYNC=2DD4پG
    RFsend_WRT_CMD(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN
    RFsend_WRT_CMD(0x9820); //!mp,deviation=45kHz,MAX OUT
    // writeCmd(0xCC17); //OB1پCOB0, LPX,پIddyپCDDITپCBW0
    RFsend_WRT_CMD(0xE000); //NOT USE
    RFsend_WRT_CMD(0xC800); //NOT USE
    RFsend_WRT_CMD(0xC040); //1.66MHz,2.2V
    }





    void RF12_SEND(unsigned char aByte)
    {
    //while(PIND&(1<<2));//wait for previously TX over
    RFsend_WRT_CMD(0xB800+aByte);
    LOW_SEL(); //Reset Rfm12_cs
    while(PINB.6!=1);//Bitwait Rfm12_sdo , Set
    }





    void DataSend(unsigned char Device)
    {
    RFsend_PORT_INIT();
    RF12send_INIT();
    DDRD|=(1<<RF12_DATA);
    PORTD|=(1<<RF12_DATA);// SET nFFS pin HI when using TX register
    DDRD&=~(1<<2); //PD2(INT0)
    RFsend_WRT_CMD(0x0000);//read status register
    RFsend_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
    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(Device);
    RF12_SEND(0xAA);//DUMMY BYTE
    RF12_SEND(0xAA);//DUMMY BYTE
    RF12_SEND(0xAA);//DUMMY BYTE
    RFsend_WRT_CMD(0x8201);
    }



    unsigned char i;
    void main(void)
    {
    // Global enable interrupts
    #asm("cli");
    // Input/Output Ports initialization
    // Port B initialization
    DDRB.0=0;//Reset PIN For RFM12B
    PORTB.0=1;//0 For Reset
    DDRB.4=1;
    DDRB.5=0;
    DDRB.6=1;
    DDRD.7=1;


    // Port C initialization
    PORTC=0x00;
    DDRC=0x00;
    // Port D initialization


    PORTD=0x00;
    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: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 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: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;


    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;


    // 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;
    while(1)
    {
    DataSend(i);
    i++;
    delay_ms(500);
    };
    }


    گیرنده:
    //ATMEGA16 SIDE | RF12 SIDE // SCK---------------->SCK 
    // MISO--------------->SDO
    // MOSI--------------->SDI
    // SS----------------->nSEL


    #include <mega16.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <delay.h>


    // Alphanumeric LCD Module functions
    #asm
    .equ __lcd_port=0x1B ;PORTA
    #endasm
    #include <lcd.h>


    #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 PORTD
    #define PIN_IRQ PIND
    #define DDR_IRQ DDRD


    #define PORT_DATA PORTD
    #define PIN_DATA PIND
    #define DDR_DATA DDRD


    #define PB7 3//--\
    #define PB6 2// |
    #define RFXX_SCK 7// |
    #define RFXX_SDO 6// |RF_PORT
    #define RFXX_SDI 5// |
    #define RFXX_SEL 4// |
    #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 &=~(1<<RF12_IRQ)
    #define WAIT_IRQ_LOW() while(PIND&(1<<RF12_IRQ))


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


    #define RFM12_Reset PORTB.0
    #define ON 0
    #define OFF 1


    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(0x80F7);//EL,EF,433band,11.5pF
    //RFrecieve_WRT_CMD(0x82D9);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
    //RFrecieve_WRT_CMD(0xA640);//434MHz
    //RFrecieve_WRT_CMD(0xC647);//4.8kbps
    //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(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN
    //RFrecieve_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
    //RFrecieve_WRT_CMD(0xE000);//NOT USE
    //RFrecieve_WRT_CMD(0xC800);//NOT USE
    //RFrecieve_WRT_CMD(0xC040);//1.66MHz,2.2V

    // RFrecieve_WRT_CMD(0x80F3);
    // RFrecieve_WRT_CMD(0x82D9);
    // RFrecieve_WRT_CMD(0xA640);
    // RFrecieve_WRT_CMD(0xC606);
    // RFrecieve_WRT_CMD(0x94A2);
    // RFrecieve_WRT_CMD(0xC2AC);
    // RFrecieve_WRT_CMD(0xCA83);
    // RFrecieve_WRT_CMD(0xCED4);
    // RFrecieve_WRT_CMD(0xC483);
    // RFrecieve_WRT_CMD(0x9850);
    // RFrecieve_WRT_CMD(0xCC57);
    // RFrecieve_WRT_CMD(0xE000);
    // RFrecieve_WRT_CMD(0xC800);
    // RFrecieve_WRT_CMD(0xC040);


    RFrecieve_WRT_CMD(0x80F8); //EL,EF,915band,12.5pF
    RFrecieve_WRT_CMD(0x82D9); //!er,!ebb,ET,ES,EX,!eb,!ew,DC
    RFrecieve_WRT_CMD(0xAA6B); //frequency select
    RFrecieve_WRT_CMD(0xC647); //bit rate = 4.8kbps
    RFrecieve_WRT_CMD(0x94C2); //VDI,FAST,BW=67kHz,0dBm,-91dBm
    RFrecieve_WRT_CMD(0xC2AC); //AL,!ml,DIG,DQD4
    RFrecieve_WRT_CMD(0xCA81); //FIFO8,SYNC,!ff,DR
    RFrecieve_WRT_CMD(0xCED4); //SYNC=2DD4پG
    RFrecieve_WRT_CMD(0xC483); //@PWR,NO RSTRIC,!st,!fi,OE,EN
    RFrecieve_WRT_CMD(0x9820); //!mp,deviation=45kHz,MAX OUT
    // writeCmd(0xCC17); //OB1پCOB0, LPX,پIddyپCDDITپCBW0
    RFrecieve_WRT_CMD(0xE000); //NOT USE
    RFrecieve_WRT_CMD(0xC800); //NOT USE
    RFrecieve_WRT_CMD(0xC040); //1.66MHz,2.2V
    }


    unsigned char RF12_RECV(void)
    {
    unsigned int FIFO_data;
    //WAIT_IRQ_LOW();
    LOW_SEL(); //Reset Rfm12_cs
    while(PINB.6!=1);//Bitwait Rfm12_sdo , Set
    //RFrecieve_WRT_CMD(0x0000);
    FIFO_data=RFrecieve_WRT_CMD(0xB000);
    return(FIFO_data&0x00FF);
    }


    unsigned char uChRecieve=0;
    unsigned char DataRecieve(void)
    {
    //Initialize command port
    RFrecieve_PORT_INIT();
    //Initialize RF12 chip
    RF12recieve_INIT();
    //Init FIFO
    RFrecieve_WRT_CMD(0x82D9);
    //Enable FIFO
    RFrecieve_WRT_CMD(0xCA83);
    //Disable FIFO
    RFrecieve_WRT_CMD(0xCA81);
    uChRecieve=RF12_RECV();
    return(uChRecieve);
    }


    unsigned char lcd_buff[10];
    void main(void)
    {
    // Input/Output Ports initialization
    // Port B initialization
    DDRB.0=0;//Reset PIN For RFM12B
    PORTB.0=1;//0 For Reset
    DDRB.4=1;
    DDRB.5=0;
    DDRB.6=1;
    DDRD.7=1;


    // Port C initialization
    PORTC=0x00;
    DDRC=0x00;
    // Port D initialization


    PORTD=0x00;
    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: Timer 1 Stopped
    // Mode: Normal top=FFFFh
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer 1 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: Timer 2 Stopped
    // Mode: Normal top=FFh
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;


    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;


    // 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_init(16);
    lcd_clear();
    lcd_putsf("Ready");
    delay_ms(100);


    while(1)
    {


    uChRecieve=DataRecieve();
    delay_ms(100);
    lcd_clear();
    sprintf(lcd_buff,"%d",uChRecieve);
    lcd_puts(lcd_buff);
    delay_ms(500);
    };
    }

  2. #2
    کاربر دائمی
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    Mashhad
    پست
    192

    نقل قول: مشکل با ماژول RFM12b

    فکر میکنم نمونه کد آماده برای سند و رسیو با RFM12 دارم اگه پیدا کردم قرار میدم

    فقط مطمئنید ماژول با 3.3 درایو میشه ؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    فروردین 1393
    محل زندگی
    Mashhad
    پست
    192

    نقل قول: مشکل با ماژول RFM12b

    با عرض پوزش برنامه برای send receive با pt2262-72 بود ! تنها PCB های مربوط به RFM12 موجود بود !

  4. #4
    کاربر دائمی آواتار Alfred188
    تاریخ عضویت
    دی 1389
    محل زندگی
    مازندران
    پست
    288

    نقل قول: مشکل با ماژول RFM12b

    نقل قول نوشته شده توسط viiictor مشاهده تاپیک
    با عرض پوزش برنامه برای send receive با pt2262-72 بود ! تنها PCB های مربوط به RFM12 موجود بود !
    ببخشید کار با pt2262-72 چطوری هست؟دیتا هم میشه باهاش جابجا کرد؟ تا چه فاصله ای؟ ممنون

تاپیک های مشابه

  1. مشکل با ماژول بانک
    نوشته شده توسط bahar_1984_n در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: شنبه 31 فروردین 1392, 19:39 عصر
  2. درخواست برطرف کردن مشکل یک ماژول
    نوشته شده توسط kalemati12 در بخش PHP
    پاسخ: 3
    آخرین پست: جمعه 11 اسفند 1391, 15:56 عصر
  3. مشکل در ماژول SMS
    نوشته شده توسط pasargadteam در بخش PHP
    پاسخ: 1
    آخرین پست: پنج شنبه 28 دی 1391, 16:13 عصر
  4. مشکل در ماژول تب ساز در جوملا
    نوشته شده توسط NeMeSiS7 در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: یک شنبه 24 دی 1391, 22:40 عصر
  5. مشکل در ماژول و کلاس
    نوشته شده توسط saeed-213 در بخش برنامه نویسی در 6 VB
    پاسخ: 1
    آخرین پست: دوشنبه 20 خرداد 1387, 00:34 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •