Пример #1
0
void mrf24j40_long_addr_write(uns16 addr, uns8 data){

        #ifndef __PIC32MX__
	        clear_pin(mrf24j40_cs_port, mrf24j40_cs_pin);

	        addr = addr & 0b0000001111111111; 	// <9:0> bits
	        addr = addr << 5;

	        set_bit(addr, 15);	// long addresss
	        set_bit(addr, 4);	// set for write

	        spi_hw_transmit(addr >> 8 );
	        spi_hw_transmit(addr & 0x00ff);
	        spi_hw_transmit(data);
	
	        set_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
        #endif
        #ifdef __PIC32MX__
			ZIGCS=0;
			addr=((addr<<1)&0x7FF)|0x801;
			addr<<=4;
			SPI_write(addr>>8);
			SPI_write(addr);
			SPI_write(data);
			ZIGCS=1;     
		#endif   	        
}
Пример #2
0
uns8 mrf24j40_long_addr_read(uns16 addr){

	uns8 result;
        #ifndef __PIC32MX__	
	        clear_pin(mrf24j40_cs_port, mrf24j40_cs_pin);

	        addr = addr & 0b0000001111111111; 	// <9:0> bits
	        addr = addr << 5;
	        set_bit(addr, 15);	// long addresss
	        spi_hw_transmit(addr >> 8);
	        spi_hw_transmit(addr & 0x00ff);
	        result = spi_hw_receive();	

	        set_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
        #endif
        #ifdef __PIC32MX__
			ZIGCS=0;
			addr=((addr<<1)&0x7FE)|0x800;
			addr<<=4;
			SPI_write(addr>>8);
			SPI_write(addr);
			result=SPI_read();
			ZIGCS=1;        
        #endif
	return result;
}	
Пример #3
0
void mrf24j40_short_addr_write(uns8 addr, uns8 data) {
        #ifndef __PIC32MX__
	        clear_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
	        addr = addr & 0b00111111;	// <5:0> bits
	        addr = addr << 1;	// LSB = 0, means read
	        set_bit(addr, 0);	// write

	        spi_hw_transmit(addr);
	        spi_hw_transmit(data);

	        set_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
        #endif
        #ifdef __PIC32MX__
        	addr=((addr<<1)&0x7F)|1;
			ZIGCS=0;
			SPI_write(addr);
			SPI_write(data);
			ZIGCS=1;
		#endif	
}	
Пример #4
0
uns8 mrf24j40_short_addr_read(uns8 addr)
{
        #ifndef __PIC32MX__
	        clear_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
	        addr = addr & 0b00111111;	// <5:0> bits
	        addr = addr << 1;	// LSB = 0, means read
	        spi_hw_transmit(addr);
	        uns8 result = spi_hw_receive();
	        set_pin(mrf24j40_cs_port, mrf24j40_cs_pin);
        #endif
        #ifdef __PIC32MX__
	        addr = (addr << 1) & 0x7E;
	        ZIGCS=0; // CS must be held low while communicationg with MRF24J40
	        SPI_write(addr);
	        u8 result = SPI_read();
	        ZIGCS=1; // end of communication
        #endif	                	        
	return result;
}