arduino code for reserch immo synhronization,
need flash arduino and connect rx2 rx1 out & out2,
more info registred users
Код: Выбрать все
#include <Arduino.h>
#include <SoftwareSerial.h>
#include <TimerOne.h>
#define out 8
#define out2 7
#define rx1 5/// s
#define rx2 6 ///s
#define force 4
#include "crc16.h"
uint8_t bitsCount;
volatile byte rxmozg[8];
volatile byte rxconv[8];
volatile byte huy[128]={0};
int zalup[128];
byte hcrc;
byte lcrc;
byte brute [8]={0xFE,0x98,0xE0,0x06,0x60,0x80,0x20,0xC0};
byte brutes [6]={0x22,0x22,0x22,0x22,0x22,0x22};
byte brute2 [8]={0x80,0xFE,0x80,0x80,0xFE,0x80,0x80,0xFE};
volatile byte mybyte;
volatile byte mybyteread;
volatile int cnt=0;
volatile int icnt=0;
volatile int a;
volatile int a2;
volatile int cant2;
volatile int cant3;
volatile byte recono_read[8];
volatile byte recono_out[8];
CRC16 crc;
uint16_t crc_out;
uint16_t calc_crc(char *msg,int n);
uint16_t crc_xmodem_update (uint16_t crc, uint8_t data);
char CRC1 [6] = {
0x22, 0x22, 0x22, 0x22, 0x22, 0x22
}; //('6E00000B0002')
void schit(){
a = digitalRead(rx1);
a2 = digitalRead(rx2);
bitWrite(mybyte, icnt,a);
bitWrite(mybyteread, icnt,a2);
recono_read[cant2]=mybyteread;
recono_out[cant2]=mybyte;
if(recono_out[cant2]!=0xFF){huy[cant3]=recono_read[cant2];}
digitalWrite(out,bitRead(recono_read[cant2],icnt));
///digitalWrite(out,bitRead(huy[cant3],icnt));
digitalWrite(out2,bitRead(recono_out[cant2],icnt));
icnt++;
if(icnt>7){icnt=0;cant2++;cant3++;if(cant2>5){cant2=0;}if(cant3>127){cant3=0;}}
}
void setup() {
pinMode(rx1,INPUT_PULLUP);
pinMode(rx2,INPUT_PULLUP);
pinMode(out,OUTPUT);
pinMode(out2,OUTPUT);
Serial.begin(9600);
Serial.println("uzHack");
crc_out = calc_crc(CRC1,6); //Calculate CRC on-the-fly
Serial.println(crc_out,HEX); //(CRC should = 0x0F08)
Timer1.initialize(200); //Set the timer period in uS (this function will attempt to match using the available prescaller settings
//Set the timer 1 IRQ fucntion to be called
Timer1.attachInterrupt(schit); // attach the service routine here
//Timer1.stop(); //stop the timer
Timer1.start(); //stop the timer
//Timer1.restart(); //set the clock to zero
//Timer1.setPeriod(10000); //Set the timer period in uS (this function will attempt to match using the available prescaller settings
delay(3000);
}
int i =0;
int i2 =0;
byte readr [8];
void loop() {
// for(int i12 =0;i12<6;i12++){
// CRC1[i] = char(readr[i12]);
// }
crc_out = calc_crc(CRC1,6); //Calculate CRC on-the-fly
/// Serial.println(crc_out,HEX);
hcrc = crc_out>> 8;
lcrc = crc_out & 0xFF;
Serial.println("------------------");
Serial.println(mybyte,HEX);
Serial.println(mybyteread,HEX);
Serial.println("------------------");
/// mySerial2.write(mySerial.read());
}
uint16_t calc_crc(char *msg,int n)
{ uint16_t x = 0;
while(n--) {
x = crc_xmodem_update(x, (uint16_t)*msg++);
}
return(x);}
uint16_t crc_xmodem_update (uint16_t crc, uint8_t data)
{ int i;
crc = crc ^ ((uint16_t)data << 8);
for (i=0; i<8; i++) {
if (crc & 0x8000)
crc = (crc << 1) ^ 0x1021; //(polynomial = 0x1021)
else
crc <<= 1;
}
return crc;
}