X-Git-Url: https://git.realraum.at/?a=blobdiff_plain;f=rf433rcv%2Frf433rcv.pde;h=f46449904f89728a1ddd3f93acf2016867f4ae04;hb=26a46e58c6449468c98df0b7a5f94870bb9c4aea;hp=fa4afbb2e46c6bcd4a23e73d0dcf71c69e15733c;hpb=d1cb582de8efadfa0ca4a26e872d813f6d5a1571;p=svn42.git diff --git a/rf433rcv/rf433rcv.pde b/rf433rcv/rf433rcv.pde index fa4afbb..f464499 100644 --- a/rf433rcv/rf433rcv.pde +++ b/rf433rcv/rf433rcv.pde @@ -115,20 +115,46 @@ void stop_timer() // stop the timer TIMSK1 = 0; // disable timer interrupt } -byte rf433_data=0; -byte rf433_cnt=0; +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) { - rf433_data<<=1; - if (digitalRead(RF433_PIN) == HIGH) - rf433_data |=1; - rf433_cnt++; - if (rf433_cnt>7) + byte sample = digitalRead(RF433_PIN); + if (last_sample!=sample && sample==HIGH) { - Serial.print(rf433_data); - rf433_cnt=0; - rf433_data=0; + 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}; @@ -161,7 +187,7 @@ void setup() digitalWrite(RF433_PIN, LOW); // turn of pullup resistors Serial.begin(57600); - Serial.println("starting timer"); +// Serial.println("starting timer"); start_timer(); }