Go Down

Topic: [SOLUCIONADO] Una función (Read 873 times) previous topic - next topic

peptro

Gracias a todos.
Un saludo

peptro

#16
Oct 29, 2011, 04:03 pm Last Edit: Oct 29, 2011, 04:05 pm by peptro Reason: 1
Al final  he conseguido solucionar el problema.
Gracias  a todos de nuevo.

Sergegsx

si no pones como este post no sirve para el futuro.
para que otros puedan beneficiarse del tiempo que emplearon los usuarios en ayudarte a ti, y tu propio tiempo investigandolo, pon como lo solucionaste y así aprendemos todos.
ver mi firma.

peptro

Tienes toda la razón, aquí está el código

#define setTempoVd 50 
int esclavo; 
int salida; 
unsigned char rxByte = 0;
unsigned char rxConta = 0;
unsigned char CRC8 = 0;
unsigned char txrxSet =0;
char i = 0;
unsigned long tempoStop=0;
void setup(){
  Serial.begin(9600); 
}
void loop(){
   if (Serial.available() > 0) Decode();
   if (txrxSet == 1) if (tempoStop< millis()){
          txrxSet = 0;
  } 
}
void Decode(){
  tempoStop= millis() +  setTempoVd;
  txrxSet = 1;
  rxByte= Serial.read();
  if (rxByte== 0xFF && rxConta ==0){
    CRC8=0;
    rxConta++;
  } 
  else if (rxConta == 1){
    CRC_8(rxByte);
    esclavo = rxByte;
    rxConta++; 
  }
  else if (rxConta == 2){
    CRC_8(rxByte);
    salida = rxByte;
    rxConta++; 
  }
  else if (rxConta == 3){
      if (CRC8 ==rxByte){
        }
    rxConta=0; 
  }
}
void CRC_8(unsigned char b){
  for(char i = 0; i < 8; b = b >> 1, i++){
   if((b ^ CRC8) & 1) CRC8 = ((CRC8 ^ 0x18) >> 1) | 0x80;
   else CRC8 = (CRC8 >> 1) & ~0x80;
  }
}

Sergegsx


Go Up