I have a TRW-24G module connected to an attiny85, which is connected to a USBtinyISP, and OS X. I also have an accompanying TRW-24G connected to the Nordic USB Serial Converter. The attiny85 runs the following code, and the serial port is receiving nothing.
/*
* PB4 CE
* PB3 CS
* PB2 CLK1
* PB1 DR1
* PB0 DATA
*/
#include <avr/io.h>
#define F_CPU 1000000UL
#include <util/delay.h>
#define sbi(var, mask) ((var) |= (unsigned char)(1 << mask))
#define cbi(var, mask) ((var) &= (unsigned char)(~(1 << mask)))
unsigned char address[]= {0xE7, 0xE7, 0xE7, 0xE7, 0xE7};
unsigned char configWord[]= {0b10100011, 0b01101110, 0b00000100};
void ioinit(void);
void configtransceiver(void);
void write(unsigned int message);
void send(unsigned int message);
int delay= 50;
int main(){
ioinit();
while(1){
send(0b01010111010011110101001001001011);
_delay_ms(500);
}
}
void write(unsigned int message){
sbi(DDRB, PB0); //DATA output for MCU master
for(int i= 7; i>=0; i--){
if(message & (1<<i)){sbi(PORTB, PB0);}
else{cbi(PORTB, PB0);}
sbi(PORTB, PB2);
_delay_us(delay);
cbi(PORTB, PB2);
_delay_us(delay);
}
}
void ioinit(void){
sbi(DDRB, PB3); sbi(DDRB, PB4); //CS and CE outputs
configtransceiver();
}
void configtransceiver(void){
sbi(PORTB, PB3); //CS high
_delay_us(delay);
for(int i= 0; i < 3; i++){
write(configWord[i]);
}
cbi(PORTB, PB3); //CS low
}
void send(unsigned int message){
sbi(PORTB, PB4); //CE HIGH
_delay_us(delay);
for(int i= 0; i<5; i++){
write(address[i]);
}
write(message);
cbi(PORTB, PB4); //CE LOW, begin Shockburst
}