سلام دوستان به شدت و فوری نیاز به کمک دارم.
این کدی که این پایین هست کد فرستنده گیرنده هست که با این ماژول نوشته شده که قراره وقتی یک کلید تو مدار فرستنده زده میشه ارسال داده شروع بشه و در سمت گیرنده یک بازر فعال بشه بعد در گیرنده با زدن یک کلید بازر غیر فعال بشه.
ولی مساله این بود که با این که با هر بار اجرای کد بدون زدن کلید ال ای دی ها چشمک میزدند یعنی شرظی که برای زدن کلید گذاشتم انگار دیده نمیشه اصلا!!!!!!!
لطفا در این مورد راهنمایی کنید منو.خیلی عجله دارم. :angry: :cry:
این هم کد گیرنده اولیه:
این کدی که این پایین هست کد فرستنده گیرنده هست که با این ماژول نوشته شده که قراره وقتی یک کلید تو مدار فرستنده زده میشه ارسال داده شروع بشه و در سمت گیرنده یک بازر فعال بشه بعد در گیرنده با زدن یک کلید بازر غیر فعال بشه.
ولی مساله این بود که با این که با هر بار اجرای کد بدون زدن کلید ال ای دی ها چشمک میزدند یعنی شرظی که برای زدن کلید گذاشتم انگار دیده نمیشه اصلا!!!!!!!
لطفا در این مورد راهنمایی کنید منو.خیلی عجله دارم. :angry: :cry:

این برنامه فرستنده اولیه است که شرط کلیدو نمیبینه: |
کد:
#include <mega8.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_DATA PORTD #define PIN_DATA PIND #define DDR_DATA DDRD #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 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_DATA 4//PD4 #define DATA_OUT DDR_DATA|=1<<RF12_DATA #define HI_DATA PORT_DATA|=1<<RF12_DATA #define LEDG_OUTPUT() DDRD|=~(1<<6) #define LEDR_OUTPUT() DDRD|=~(1<<7) #define LEDG_ON() PORTD&=~(1<<6) #define LEDG_OFF() PORTD|=~(1<<6) #define LEDR_ON() PORTD&=~(1<<7) #define LEDR_OFF() PORTD|=~(1<<7) void RFXX_PORT_INIT(void){ HI_SEL(); HI_SDI(); LOW_SCK(); SEL_OUTPUT(); SDI_OUTPUT(); SDO_INPUT(); SCK_OUTPUT(); } unsigned int RFXX_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 RF12_INIT(void){ RFXX_WRT_CMD(0x80D7);//EL,EF,433band,12.0pF RFXX_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC RFXX_WRT_CMD(0xA640);//A140=430.8MHz RFXX_WRT_CMD(0xC647);//19.2kbps RFXX_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm RFXX_WRT_CMD(0xC2AC);//AL,!ml,DIG,DQD4 RFXX_WRT_CMD(0xCA81);//FIFO8,SYNC,!ff,DR RFXX_WRT_CMD(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN RFXX_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT RFXX_WRT_CMD(0xE000);//NOT USE RFXX_WRT_CMD(0xC800);//NOT USE RFXX_WRT_CMD(0xC400);//1.66MHz,2.2V } void RF12_SEND(unsigned char aByte){ while(PIND&(1<<2));//wait for previously TX over RFXX_WRT_CMD(0xB800+aByte); } void Delay_ms(unsigned char amS){ unsigned char i; unsigned int j; for(i=0;i<amS;i++)for(j=0;j<91;j++); } void main(void) { unsigned int i,j; int data; DDRB=0x00;//PB INPUT; DDRD=0x00;//PD INPUT; PORTD.1=1; if(PIND.1==0){ #asm("cli"); DDRC.5=0; PORTC.5=1; //POWER ON indication: both LEDR and LEDG blink 3 times delay_ms(300); LEDG_OFF(); LEDR_OFF(); LEDG_OUTPUT(); LEDR_OUTPUT(); for(i=0;i<3;i++){ Delay_ms(200); LEDG_ON(); LEDR_ON(); Delay_ms(200); LEDG_OFF(); LEDR_OFF(); } // // LEDG_OFF(); // LEDR_OFF(); PORTD.6=0; PORTD.7=0; RFXX_PORT_INIT(); RF12_INIT(); DDRD|=(1<<RF12_DATA); PORTD|=(1<<RF12_DATA);// SET nFFS pin HI when using TX register DDRD&=~(1<<2); //PD2(INT0) while(1){ if(PINC.5==0){ //khodam LEDR_ON(); RFXX_WRT_CMD(0x0000);//read status register RFXX_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 //---------------------------------------------your byte----------------------------------------- data=12; // baraye nemoone in byte ro barabare 12 gharar midam va too girande // check mikonam age hamin adad resid ye LED rooshan o khamoosh mikonam RF12_SEND(data); // IT IS YOUR BYTE TO SEND TO RECEIVER (A NUMBER BETWEEN 0-255) //---------------------------------------------your byte----------------------------------------- RF12_SEND(0xAA);//DUMMY BYTE RF12_SEND(0xAA);//DUMMY BYTE RF12_SEND(0xAA);//DUMMY BYTE RFXX_WRT_CMD(0x8201); LEDR_OFF(); LEDG_OFF(); // PORTD.6=0; // PORTD.7=0; for(i=0;i<3000;i++)for(j=0;j<123;j++);//sleep moment. }; } }
کد:
#include <mega8.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 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 &=~(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 LEDG_OUTPUT() DDRD|=~(1<<6) #define LEDR_OUTPUT() DDRD|=~(1<<7) #define LEDG_ON() PORTD&=~(1<<6) #define LEDG_OFF() PORTD|= (1<<6) #define LEDR_ON() PORTD&=~(1<<7) #define LEDR_OFF() PORTD|= (1<<7) void RFXX_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 RFXX_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 RF12_INIT(void){ RFXX_WRT_CMD(0x80D7);//EL,EF,433band,11.5pF RFXX_WRT_CMD(0x82D9);//!er,!ebb,ET,ES,EX,!eb,!ew,DC RFXX_WRT_CMD(0xA640);//434MHz RFXX_WRT_CMD(0xC647);//4.8kbps RFXX_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm RFXX_WRT_CMD(0xC2AC);//AL,!ml,DIG,DQD4 RFXX_WRT_CMD(0xCA81);//FIFO8,SYNC,!ff,DR RFXX_WRT_CMD(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN RFXX_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT RFXX_WRT_CMD(0xE000);//NOT USE RFXX_WRT_CMD(0xC800);//NOT USE RFXX_WRT_CMD(0xC400);//1.66MHz,2.2V } unsigned char RF12_RECV(void){ unsigned int FIFO_data; WAIT_IRQ_LOW(); RFXX_WRT_CMD(0x0000); FIFO_data=RFXX_WRT_CMD(0xB000); return(FIFO_data&0x00FF); } void Delay_ms(unsigned char amS){ unsigned char i; unsigned int j; for(i=0;i<amS;i++)for(j=0;j<914;j++); } void main(void) { int data; unsigned int i; unsigned char ChkSum; DDRC.4=1; //khodam DDRC.5=0; //khodam //POWER ON indication: both LEDR and LEDG blink 3 times LEDG_OFF(); LEDR_OFF(); LEDG_OUTPUT(); LEDR_OUTPUT(); for(i=0;i<3;i++){ Delay_ms(50); LEDG_ON(); LEDR_ON(); Delay_ms(50); LEDG_OFF(); LEDR_OFF(); } LEDG_OFF(); LEDR_OFF(); //Initialize command port RFXX_PORT_INIT(); //Initialize RF12 chip RF12_INIT(); //Init FIFO RFXX_WRT_CMD(0xCA81); while(1){ //Enable FIFO RFXX_WRT_CMD(0xCA83); ChkSum=0; //-----------------------------------recive data ----------------------- //Receive Data data=RF12_RECV(); //-----------------------------------recive data ----------------------- //Disable FIFO RFXX_WRT_CMD(0xCA81); if(data==12) { while(PINC.5!=0) { PORTC.4=1;//khodam LEDG_ON(); Delay_ms(10); LEDG_OFF(); } } }
دیدگاه