Control pid con lm629
Microcontrolador: PIC18F4520.
Frecuencia de trabajo (Fosc) = 10.00 MHz. Un ciclo de trabajo del microcontrolador = 4/Fosc = 400ns.
Circuito Procesador LM629N-6. Máx. FCLK = 6.00 MHz. Es la frecuencia a la que estamos ocupándolo. Todos los tiempos en los diagramas de tiempo son proporcionados por las hojas de datos con un oscilador a 6.00 MHz.Este es el inicio del programa, en donde se definen variables, puerto para el bus de datos y para el bus de control, señales de control y el set de instrucciones del circuito procesador LM629 y funciones esenciales para su manejo.
A continuación explicaré, de acuerdo al orden indicado aquí arriba, las funciones secundarias esenciales para poder manipular correctamente al LM629.LM629_Rd_Byte
Esta función lo que hace es, primero, configurar los 8 bits del bus de datos (PORTD) como entradas digitales. Mediante el registro correspondiente para configurarlo de esta manera (en este caso, TRISD). Después espera 2 ciclos de reloj. Y por último regresa el dato que está en el DATABUS, es decir, hace la lectura.
LM629_Wr_Byte
Esta función, contraria a la lectura de un byte,configura los 8 bits del bus de datos (PORTD) como salidas digitales. Mediante el registro TRIS correspondiente (TRISD). Esta función requiere el dato “output”, que es el valor que se sacará por el bus de datos, una vez configurado como salida.
LM629_StatusByte
Esta función se dedica a la lectura del byte de estado del LM629. Se desarrolló de acuerdo al diagrama de tiempo proporcionado por lahoja de datos. Si se dan cuenta se tiene que flanquear las terminales /CS, /PS y /RD, y también, hace uso de la función para leer un byte. Después de leer el byte, lo guarda en la variable status y lo regresa en ella. Con este diagrama, creo yo, es más fácil entender el código mostrado. T7 = 0ns, T8 = 30ns, T9 = 30ns, T10 = 180ns, T11 = 0 ns, T12 = 180ns (revisen la hoja de datos porque varios deestos tiempos son mínimos y otros máximos).
LM629_BusyCheck
Esta función verifica el estado del “Busy bit” del LM629. Este bit es usado para determinar si el procesador LM629 está ocupado=1 / libre=0 al escribir o leer algún dato. Corresponde al bit 0 del Status Byte, por tanto, para acceder a él, se tiene que leer el propio Status Byte, y después verificar el estado de dicho bit.LM629_Cmd
Esta función se dedica a la escritura de un comando en el LM629. Requiere de un dato “cmd” que es aquel que contiene el comando respectivo del set de instrucciones del LM629, definido al inicio del programa. Como puede observarse en el diagrama de tiempo, antes de llamar a esta función, se tiene que verificar el estado del “Busy bit”. Si está libre, entonces se hace su llamado, queprimero escribe el comando en el bus de datos y flanquea las terminales /CS, /PS y /WR, para que tenga efecto la escritura del comando en el LM629. T7 = 0ns, T8 = 30ns, T9 = 30ns, T14 = 100ns, T15 = 50ns, T16 = 120 (revisen la hoja de datos porque varios de estos tiempos son mínimos y otros máximos).
LM629_Wr_Word
Esta función escribe una “word” (16 bits = 2 bytes, un byte alto y un byte bajo,en este orden). Requiere de parámetros el byte alto y el byte bajo. Primero se configura el DATABUS como salida. Y de acuerdo al diagrama de tiempos, primero, se verifica el estado del “Busybit” antes de ser llamada esta función, si se encuentra libre, entonces, se hará la escritura del byte alto, y posteriormente, el byte bajo. Para esto, es necesario flanquear las terminales /CS, /PS, /WR, en elorden cronológico y con los tiempos (mínimos o máximos) mostrados en el diagrama de tiempo (revisen la hoja de datos porque varios de estos tiempos son mínimos y otros máximos), para que la escritura de la “word” tenga efecto en el LM629.
LM629_Init
En la nota de aplicación AN-693, se muestra una guía para la programación de la inicialización del hardware LM628/LM629. Aquí les muestro...
Regístrate para leer el documento completo.