Paso 2: Software molestias
El software debería ser bastante fácil: en una figura de lazo hacia fuera si es tiempo de hacer un ciclo PID, hacerlo; Compruebe si la salida PWM necesita atención, a continuación, modificarla; en caso contrario, compruebe si la interfaz de usuario necesita atención.
En la práctica tenemos un par de temas en el PICAXE.
1] no hay funciones de tiempo, fuera de las funciones de retardo.
2] no hay le permiten jugar con las interrupciones hardware real
3] las interrupciones "suaves" son muy lentas y sólo puede tener una definida.
4] variables son registros. Si desea utilizar la RAM, peek y poke del mismo
5] salida serie es poco golpeado y cuelga el código para la duración de la transferencia.
6] podemos solamente usar 16 GoSub llamadas en el software, o perder un espacio del programa en otros lugares.
La última fue bastante fácil de solucionar... Me deshice de GoSubs tantos como sea posible por algún código en guarnición.
Así que, para evitar los aspectos de tiempo, encontré un post en los foros sobre cómo peek/poke el hardware registros para ejecutar el temporizador. Todavía tendríamos a encuestar por desbordamientos, pero es mejor que nada.
A continuación, ya que no podemos definir interrupciones reales, tuvimos que hacer el mejor del que hemos tenido. Lo pongo al lado "A" de codificador rotatorio. Cada vez que se movió la perilla, deben activar una interrupción y ver si el lado "B" fue alta o baja nos diría la dirección. Si se mueve demasiado rápido, perderá la pista, pero eso es lo que tenemos.
El botón es encuestado. Nada emocionante allí. Nosotros simple seguimiento de cuántos desbordamientos del contador se está llevado a cabo hacia abajo para ver si se ha apretado un poco o mucho.
#4 es inexcusable en un lenguaje de alto nivel. El compilador debe ser manejar esto a menos que indique lo contrario. Debido a esto, usted verá un montón de cargas dentro y fuera de memoria todo el código.
Los retrasos de la serie son bastante graves. Esto significa que si usted escribe más de 2 caracteres a la pantalla, se perderá un desbordamiento del temporizador. Yo no molestaba para trabajar alrededor de él. El momento de PID no es precisa, y tampoco es el PWM tiempo... sin embargo, es menos del 1% desviación, por lo que está bien en esta aplicación.