X-Git-Url: https://git.realraum.at/?p=svn42.git;a=blobdiff_plain;f=rf433rcv%2Fteensy%2Fexample.c;h=df393abe7bce9fa37e628c37aad41c98c9765792;hp=70526260120561daca92ab6a801ce3a7bee0b9c7;hb=5b00dab1a7d2ac2d8a593f0bd6e85a7194e2c9bd;hpb=ac71234587241032871cfb0745471f011fcbb943 diff --git a/rf433rcv/teensy/example.c b/rf433rcv/teensy/example.c index 7052626..df393ab 100644 --- a/rf433rcv/teensy/example.c +++ b/rf433rcv/teensy/example.c @@ -29,12 +29,18 @@ #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 @@ -113,9 +119,10 @@ int main(void) capture=0; else if (read_buffer[0]=='f') //fill send buffer { - uint8_t buffer_pos = 1; + 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>=1; rf_send_buf_pos++; @@ -165,7 +175,7 @@ ISR(TIMER0_COMPA_vect) 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;