Implementing discrete PID controllers: Benchmarking manual vs. Automatic generation of embedded code