Estoy probando el sensor de temperatura infrarrojo. Está conectado a SP485 (convertidor rs485 a rs232?) Que está conectado a ZYNQ, FPGA.
TengoqueingresarAltocuandoenvíoTx.Despuésdequesehayanenviadotodoslosmensajes,ingresaréBajoenestepinHabilitar.
ElenfoquesimpleeshacerconunanchodebitGPIO.Haceraltajustoantesdeescribir().DespuésdequefinaliceWrite(),hagaGPIOBAJO.Pensé...serátrabajo.peronofueElcódigoessimilaralsiguiente...(Yousolabibliotecalibmodbusparacomunicarmeusandors485)
write(fd,"1",1); // make gpio(enable pin) high.
req_length = modbus_send_raw_request(ctx, raw_req, 6 * sizeof(uint8_t)); //write
write(fd,"0",1);//After write(), make gpio low to receive messages from sensor.
int response_length = modbus_receive_confirmation(ctx, rsp);
Este código no estaba funcionando correctamente. Escribir () no es escribir inmediatamente .. o la prosess está trabajando de forma independiente (por lo que existe la posibilidad de que cuando ingrese Low, write () no esté terminado).
En realidad no sé la razón. es solo mi asumiendo
Así que agregué usleep ();
write(fd,"1",1); // make gpio(enable pin) high.
req_length = modbus_send_raw_request(ctx, raw_req, 6 * sizeof(uint8_t)); //write
usleep(9050); //waite until write is finished
write(fd,"0",1);//After write(), make gpio low to receive messages from sensor.
int response_length = modbus_receive_confirmation(ctx, rsp);'
este código funciona a veces ... tampoco es la mejor respuesta. el resultado es aquí . Después de 1'22, está funcionando.
habilitar Pin está conectado a FPGA (ZYNQ)
Es difícil agregar otro circuito para controlar el pin de habilitación. es más conveniente hacer un diseño en el FPGA.
¿Debo controlar esto por software? (controlando gpio) o Hardware?
Déjame saber la mejor manera, enfoque .. Gracias.