#define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n))
#define RF_SEND_BUFFER_LEN_MAX 502
+
+union multiint {
+ uint16_t u16;
+ uint8_t u8[2];
+} __attribute__((packed));
+
volatile uint16_t output_count=0;
volatile uint8_t active_buffer=0;
volatile uint16_t send_buffer=0;
volatile uint8_t capture=0;
volatile uint16_t rf_send_buf_pos=0; //count of bits in rf_send_buffer that should be sent
-volatile uint16_t rf_send_buf_len=0; //count of bits in rf_send_buffer that should be sent
+volatile union multiint rf_send_buf_len; //count of bits in rf_send_buffer that should be sent
volatile uint8_t rf_send_count=0; // number of repetitions (times rf_send gets reloaded;
uint8_t read_buffer[64]; // buffer for reading usb signals
uint8_t write_buffer[2][64]; // buffer for writing usb signals
{
int8_t buffer_pos = 1;
if(!rf_send_buf_offset) {
- rf_send_buf_len=read_buffer[2] | (read_buffer[1]<<8); //rf_send_buf_offset*8;
+ rf_send_buf_len.u8[1]=read_buffer[1];
+ rf_send_buf_len.u8[0]=read_buffer[2];
buffer_pos+=2;
}
while(buffer_pos < r && rf_send_buf_offset<RF_SEND_BUFFER_LEN_MAX)
}
else if (read_buffer[0]=='s') //send
{
+ //write_buffer[0][0]=rf_send_buf_len.u8[1];
+ //write_buffer[0][1]=rf_send_buf_len.u8[0];
+ //usb_rawhid_send(write_buffer, 23);
capture=0;
rf_send_buf_pos=0;
rf_send_count=read_buffer[1]+1;
ISR(TIMER0_COMPA_vect)
{
PORTF^=2;
- if (rf_send_count && rf_send_buf_pos<rf_send_buf_len)
+ if (rf_send_count && rf_send_buf_pos<rf_send_buf_len.u16)
{
if ( rf_send_buffer[rf_send_buf_pos/8] & (1<< (rf_send_buf_pos%8)))
{
- PORTF&=~1;
- } else {
PORTF|=1;
+ } else {
+ PORTF&=~1;
}
//rf_send_buffer[rf_send/8]>>=1;
rf_send_buf_pos++;
PORTF&=~1;
if (capture) {
write_buffer[active_buffer][output_count/8]<<=1;
- write_buffer[active_buffer][output_count++/8]|=PINB&1;
+ write_buffer[active_buffer][output_count++/8]|=PIND&1;
if (output_count>=64*8)
{
output_count=0;