با سلام .
بنده دوتا ماژول +nrf24l01 گرفتم و با کتابخانه و برنامه ای ک دوستمون منطقه ازاد قرار داده بودند، اون رو برای دوتا 18f452 کامپایل کردم.
اما کامل جواب نگرفتم.
کامپایلر ccs 4.130 و میکرو هم 18f452 . برنامه رو هم قرار میدم.
مشکل اینه ک اون مقداری ک قراره از یک طرف فرستاده بشه،توی سمت گیرنده ک با پورت سریال ب کامپیوتر وصله با علامت سوال جایگزین شده است.
ممنون
سمت فرستنده:
بنده دوتا ماژول +nrf24l01 گرفتم و با کتابخانه و برنامه ای ک دوستمون منطقه ازاد قرار داده بودند، اون رو برای دوتا 18f452 کامپایل کردم.
اما کامل جواب نگرفتم.
کامپایلر ccs 4.130 و میکرو هم 18f452 . برنامه رو هم قرار میدم.
مشکل اینه ک اون مقداری ک قراره از یک طرف فرستاده بشه،توی سمت گیرنده ک با پورت سریال ب کامپیوتر وصله با علامت سوال جایگزین شده است.
ممنون
سمت فرستنده:
کد:
#include <18f452.h> #device PASS_STRINGS = IN_RAM #use delay(xtal=20MHz) #include <stdio.h> #include <nrf2401.h> #FUSES NOWDT //No Watch Dog Timer #use rs232(baud=4800, UART1, ERRORS) #define CE pin_d0 void main() { int8 da=0; setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_16); init_NRF24L01(); delay_ms(100); mirf_config_rx_mod(); while(TRUE) { mirf_Reads_PAYLOAD(mirf_PAYLOAD); printf("=Reads_PAYLOAD=%s\n\r",read_bufer); da=mirf_read_reg(STATUS); printf("STATUS=%X \n\r",da); da=(da| 0x70); mirf_write_reg(STATUS,da); da=mirf_read_reg(STATUS); printf("STATUS=%X \n\r",da); delay_ms(500); } }
کد:
#include <18f452.h> #device PASS_STRINGS = IN_RAM #use delay(xtal=20MHz) #include <nrf2401.h> #include <stdio.h> #FUSES NOWDT,HS //No Watch Dog Timer #define CE pin_d0 void main() { int8 da; setup_spi(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_16); init_NRF24L01(); delay_ms(500); mirf_config_tx_mod(); while(TRUE) { mirf_send_data(mirf_PAYLOAD); da=mirf_status(); da=(da| 0x70); mirf_write_reg(STATUS,da); delay_ms(10); } }
و فایل کتابخانه ماژول :
کد:
#define mirf_CSN_hi output_high(PIN_A5); #define mirf_CSN_lo output_low(PIN_A5); #define mirf_CE_hi output_high(PIN_D0); #define mirf_CE_lo output_low(PIN_D0); #define RADDR (byte *)"HADI0"//addres Recive #define TADDR (byte *)"HADI0"//adrres transfer /* Memory Map */ #define CONFIG 0x00 #define EN_AA 0x01 #define EN_RXADDR 0x02 #define SETUP_AW 0x03 #define SETUP_RETR 0x04 #define RF_CH 0x05 #define RF_SETUP 0x06 #define STATUS 0x07 #define OBSERVE_TX 0x08 #define CD 0x09 #define RX_ADDR_P0 0x0A #define RX_ADDR_P1 0x0B #define RX_ADDR_P2 0x0C #define RX_ADDR_P3 0x0D #define RX_ADDR_P4 0x0E #define RX_ADDR_P5 0x0F #define TX_ADDR 0x10 #define RX_PW_P0 0x11 #define RX_PW_P1 0x12 #define RX_PW_P2 0x13 #define RX_PW_P3 0x14 #define RX_PW_P4 0x15 #define RX_PW_P5 0x16 #define FIFO_STATUS 0x17 /* Bit Mnemonics */ #define MASK_RX_DR 6 #define MASK_TX_DS 5 #define MASK_MAX_RT 4 #define EN_CRC 3 #define CRCO 2 #define PWR_UP 1 #define PRIM_RX 0 #define ENAA_P5 5 #define ENAA_P4 4 #define ENAA_P3 3 #define ENAA_P2 2 #define ENAA_P1 1 #define ENAA_P0 0 #define ERX_P5 5 #define ERX_P4 4 #define ERX_P3 3 #define ERX_P2 2 #define ERX_P1 1 #define ERX_P0 0 #define AW 0 #define ARD 4 #define ARC 0 #define PLL_LOCK 4 #define RF_DR 3 #define RF_PWR 1 #define LNA_HCURR 0 #define RX_DR 6 #define TX_DS 5 #define MAX_RT 4 #define RX_P_NO 1 #define TX_FULL 0 #define PLOS_CNT 4 #define ARC_CNT 0 #define TX_REUSE 6 #define FIFO_FULL 5 #define TX_EMPTY 4 #define RX_FULL 1 #define RX_EMPTY 0 /* Instruction Mnemonics */ #define R_REGISTER 0x00 #define W_REGISTER 0x20 #define REGISTER_MASK 0x1F #define R_RX_PAYLOAD 0x61 #define W_TX_PAYLOAD 0xA0 #define FLUSH_TX 0xE1 #define FLUSH_RX 0xE2 #define REUSE_TX_PL 0xE3 #define NOP 0xFF #define mirf_CH 2 #define mirf_PAYLOAD 16 int8 bufer[40]; int8 read_bufer[5]; int8 send_buffer[mirf_PAYLOAD]={"Salam Bar Mahdi"}; ///************************************************************************************** void mirf_config_tx_mod(void); void mirf_config_rx_mod(void); void init_NRF24L01(void); int8 mirf_read_reg(int8 reg); void mirf_write_reg(int8 reg,int8 value ); void fu_FLUSH_TX_RX(void); void set_address_rx_tx(int8 reg,int8 *address,int8 WIDTH); void mirf_read_reg_array(int8 reg,int8 WIDTH); void mirf_Reads_PAYLOAD(int8 WIDTH); void mirf_send_data(int8 WIDTH); int8 mirf_status(void); int8 mirf_data_ready(void); int8 mirf_max_rt_reached(void); ///************************************************************************************** void mirf_config_rx_mod(void){ mirf_write_reg(EN_AA, 0x01); mirf_write_reg(EN_RXADDR,0x01); mirf_write_reg(SETUP_AW,0x03); mirf_write_reg(SETUP_RETR, 0x18); mirf_write_reg(RF_CH, mirf_CH); mirf_write_reg(RF_SETUP, 0x07); set_address_rx_tx(RX_ADDR_P0, TADDR, 5); set_address_rx_tx(TX_ADDR, TADDR, 5); mirf_write_reg(RX_PW_P0, mirf_PAYLOAD); mirf_write_reg(CONFIG, 0x0B); } ///************************************************************************************** void mirf_config_tx_mod(void){ mirf_write_reg(EN_AA, 0x01); mirf_write_reg(EN_RXADDR,0x01); mirf_write_reg(SETUP_AW,0x03); mirf_write_reg(SETUP_RETR, 0x18); mirf_write_reg(RF_CH, mirf_CH); mirf_write_reg(RF_SETUP, 0x07); set_address_rx_tx(RX_ADDR_P0, TADDR, 5); set_address_rx_tx(TX_ADDR,TADDR, 5); mirf_write_reg(RX_PW_P0, mirf_PAYLOAD); mirf_write_reg(CONFIG, 0x0A); } ///************************************************************************************** void init_NRF24L01(void){ mirf_CE_lo; mirf_CSN_hi; } ///************************************************************************************** int8 mirf_status(void){ int8 data,merge; merge=(R_REGISTER|(REGISTER_MASK & STATUS)); mirf_CSN_lo; spi_write(merge); data =spi_read (NOP); mirf_CSN_hi; return(data); } ///************************************************************************************** int8 mirf_data_ready(void){ int8 data,merge; merge=(R_REGISTER|(REGISTER_MASK & STATUS)); mirf_CSN_lo; spi_write(merge); data =spi_read (NOP); mirf_CSN_hi; data=data & (1<<RX_DR); return(data); } ///************************************************************************************** int8 mirf_max_rt_reached(void){ int8 data,merge; merge=(R_REGISTER|(REGISTER_MASK & STATUS)); mirf_CSN_lo; spi_write(merge); data =spi_read (NOP); mirf_CSN_hi; data=data & (1<<MAX_RT); return(data); } ///************************************************************************************** int8 mirf_read_reg(int8 reg) { int8 data,merge; merge=(R_REGISTER|(REGISTER_MASK & reg)); mirf_CSN_lo; spi_write(merge); data =spi_read (NOP); mirf_CSN_hi; return(data); } ///************************************************************************************** void mirf_write_reg(int8 reg,int8 value ){ int8 merge; merge=(W_REGISTER|(REGISTER_MASK & reg)); mirf_CSN_lo; spi_write(merge); spi_write (value); mirf_CSN_hi; } ///************************************************************************************** void fu_FLUSH_TX_RX(void){ mirf_CSN_lo; spi_write(FLUSH_TX); mirf_CSN_hi; // mirf_CSN_lo; spi_write(FLUSH_TX); mirf_CSN_hi; } ///************************************************************************************** void set_address_rx_tx(int8 reg,int8 *address,int8 WIDTH){ int8 merge,i=0; merge=(W_REGISTER|(REGISTER_MASK & reg)); mirf_CSN_lo; spi_write(merge); while(i<WIDTH){ merge=address[i]; spi_write(merge); i++; } mirf_CSN_hi; } ///************************************************************************************** void mirf_read_reg_array(int8 reg,int8 WIDTH){ int8 i=0,merge; merge=(R_REGISTER|(REGISTER_MASK & reg)); mirf_CSN_lo; spi_write(merge); while(i<WIDTH){ bufer[i] =spi_read (NOP); i++; } mirf_CSN_hi; } ///************************************************************************************** void mirf_Reads_PAYLOAD(int8 WIDTH){ int8 i=0; mirf_CE_hi; mirf_CSN_lo; spi_write(R_RX_PAYLOAD); while(i<WIDTH){ read_bufer[i] =spi_read (NOP); i++; } mirf_CSN_hi; mirf_CSN_lo; spi_write(FLUSH_RX); mirf_CSN_hi; } ///************************************************************************************** void mirf_send_data(int8 WIDTH){ int8 i=0,merge=0; mirf_CSN_lo; spi_write(FLUSH_TX); mirf_CSN_hi; mirf_CE_hi; mirf_CSN_lo; spi_write(W_TX_PAYLOAD); while(i<WIDTH){ merge=send_buffer[i] ; spi_write(merge); i++; } mirf_CSN_hi; mirf_CE_hi; // Start transmission delay_us(50); mirf_CE_lo; }
اینم از لینک عکس :
http://www.4shared.com/photo/dTxGoXd_ba/noproblem.html
:sad:
اضافه شده در تاریخ :
ایا اندازه بافر در قسمت گیرنده و فرستنده باید یکی باشد؟
دیدگاه