X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=rf433rcv%2Frf433rcv.pde;h=f46449904f89728a1ddd3f93acf2016867f4ae04;hb=1e468cadc32cce96f3ce3349b9fa9547465f5738;hp=8b44f74a3aa5cd21f0a2a8750cfa1f409af2f09d;hpb=749d6051ced0b4942b62c355ca2b4858eec2e7e7;p=svn42.git diff --git a/rf433rcv/rf433rcv.pde b/rf433rcv/rf433rcv.pde index 8b44f74..f464499 100644 --- a/rf433rcv/rf433rcv.pde +++ b/rf433rcv/rf433rcv.pde @@ -115,9 +115,46 @@ void stop_timer() // stop the timer TIMSK1 = 0; // disable timer interrupt } +union { + byte uint8[4]; + uint32_t uint32; +} rf433_data; +byte rf433_hi_cnt=0; +byte rf433_lo_cnt=0; +byte last_sample=0; +int valid=0; ISR(TIMER1_COMPA_vect) { - digitalRead(RF433_PIN); + byte sample = digitalRead(RF433_PIN); + if (last_sample!=sample && sample==HIGH) + { + if ( rf433_lo_cnt > 2 && rf433_lo_cnt<6 && rf433_hi_cnt>10 && rf433_hi_cnt < 14) + { + rf433_data.uint32<<=1; + rf433_data.uint32|=1; + valid++; + } else if (rf433_hi_cnt > 2 && rf433_hi_cnt<6 && rf433_lo_cnt>10 && rf433_lo_cnt < 14) { + rf433_data.uint32<<=1; + valid++; + } else if (rf433_hi_cnt > 2 && rf433_hi_cnt<6 && rf433_lo_cnt>120 && rf433_lo_cnt < 128 && valid >=24) { + //rf433_data.uint8[3]=0; + //Serial.print(rf433_data.uint32); + Serial.print(rf433_data.uint8[0],BYTE); + Serial.print(rf433_data.uint8[1],BYTE); + Serial.print(rf433_data.uint8[2],BYTE); + //Serial.print(rf433_data.uint8[3],BYTE); + } else { + valid=0; + rf433_data.uint32=0; + } + rf433_hi_cnt=0; + rf433_lo_cnt=0; + } + if (sample == HIGH) + rf433_hi_cnt++; + else + rf433_lo_cnt++; + last_sample=sample; } //unsigned long wm_start_[3]={0,0,0}; @@ -150,6 +187,7 @@ void setup() digitalWrite(RF433_PIN, LOW); // turn of pullup resistors Serial.begin(57600); +// Serial.println("starting timer"); start_timer(); }