|
|
|
15-6-1999 - IMPORTANTE:
Servidor Vulcano no funciona
- Acabo de recibir notificación de un
problema hardware en este servidor, que
se espera solucionar lo antes posible.
Como esa máquina es el servidor del
laboratorio de Sistemas Digitales, no
podréis acceder a vuestros ficheros
hasta que este error se solucione.
Perdonad las molestias.
28-5-1999
- Sugerencias práctica 3
- Ya ha pasado la primera semana con esta
nueva práctica. ¿que tal ha ido el diseño?
¿Teneis ya estructurado el
funcionamiento del programa? ¿Habeis
empezado a escribir código?
Aqui van unas sugerencias para el diseño
del programa. En cualquier caso solo son
eso, sugerencia. Estoy seguro que no es
la mejor forma de enfocar el problema y
que alguno de vosotros ya ha pensado en
otras estructuras mejores.
La intención de este mensaje no es que
cambies vuestros diseño si ya los teneis
hechos. unicamnete es una ayuda para
aquellos grupos que andan un poco
perdidos.
El programa debe realizar 3
tareas básicas:
1.- Refresco de displays: cada 5ms (para
una frecuencia de 50Hz). La rutina se
deberá encargar de activar el siguiente
display y cambiar el dato que se muestra.
Como es una rutina que se ejecuta muy
frecuentemente debe tardar poco tiempo en
ejecutarse. No es necesario calcular cada
vez el valor que se va a visualizar, pues
esots solo cambian 1 vez por segundo (o
cuando se pulsaun boton) por lo que se
puede precalcular los datos a visualizar,
guardarlos en unas posiciones de memoriay
en esta rutina simplemente sacar el dato
correcto por el puerto de salida.
2.- Comprobación de pulsadores: Deberá
ocurrir con una frecuencia suficiente
para que no se pierdan pulsaciones de
teclas (tipicamente 50 ms) . Ademas se
deberá tener en cuenta las pulsaciones
largas y detectar el cambio de estado de
cada tecla y no unicamente cuando está
activa. Lo más facil es comprobar tecla
por tecla y cuando se detecte una pulsación
realizar las tareas correspondientes.
3.- Actualización de datos: esto ocurre
cada segundo. Se toman las vueltas que se
han dado y se calcula la nuveva velocidad,
la velocidad media, etc. En este momento
también se pueden calcular los valores
de cada display. Esta es una rutina que
durara bastante tiempo y hay que tener
cuidado para no perder la actualización
de los displays.
Adicionalmente se podría considerar la
tarea de contar las vueltas de la rueda.
Si no se a conectado a un contador hay
que tener en cuenta la frecuencia máxima
de los impulsos de nueva vuelta y
comprobar la correspondiente linea de
entrada periodicamente. Por lo demas el
proceso es como el de un botón,(incluso
se podria incluir en la misma rutina).
Consideraciones con respecto a la
temporización.
Este programa es bastante
complejo, y su duración muy dependiente
de los distintos estados del sistema, por
lo que no es muy recomendable realizar
retardos software. Lo más facil es
utilizar temporizadores (TIMER0) para
llevar la cuenta de los 5 ms de refresco.
El resto de tiempos se puede hacer por
software llevando la cuenta del número
de veces que se ha vencido el
temporizador hasta llegar a 50 ms o 1 s.
Un problema adicional es que la rutina de
actualización de datos es posible que
tarde más de 5 ms, por lo que se debería
partir en varias partes de duración
menor del tiempo de refresco.
Una solución mejor (o más sencilla) es
utilizar un microcontrolador de la gama
media, que tiene interrupciones.
Activamos la interrupción de fin de
cuenta del TIMER0 y nos avisa cuando
pasan 5 ms para refrescar los displays.
En este último caso en el programa
principal se realizarian los calculos de
actualizar los datos y aunque duren más
de 5 ms no importa pues la interrupción
para los calculos para refrescar el
display.
OJO: la rutina de actualizar datos no
puede llamarse desde la rutina de
tratamiento de la interrupción pues
entonces no se soluciona el problema.
Siempre hay que conseguir que la rutina
de interrupción sea lo más corta (en
tiempo) posible.
Otras dudas comunes:
- Si los datos de velocidades y
distancias los alamcenais en binario
tendreis que implementar una rutina para
descomponer el dato binario en unidades,
decenas... El algoritmo a utilizar es
divididir entre 100 y obtienes las
centenas el resto lo divides entre 10 y
tienes las decenas y el resto son las
unidades.(para los decimales se
multiplica por 10).
- Los displays no traducen de binario (o
BCB) al dato de 7 segmentos, debereis
hacerlo por software (una tabla?).
25-5-1999
- Nueva versión de MPALB 4.10
- Ya está disponible la última versión
del entorno de desarrollo de Microchip.
La podeis encontrar en el servidor ftp de
la escuela: MPLAB 4.10.
25-5-1999
- Comienzo práctica 3
- Hoy comienza la tercera y última práctica
del Laboratorio de Sistemas Digitales. El
enunciado lo podeis encontrar en este
servidor web, en reprografia o en el
servidor ftp de la asignatura.
La fecha de entrega es el 8 de Julio de
1999 (no de Junio, hay un
error en el enunciado)
- La información de
microchip se puede encontrar también http://gtm.tel.uva.es/lsd/index.htm.
El único inconveniente es que no esta
información no está del todo
actualizada pues es de enero de 1999. Aun
así la mayoria de las 'Application notes'
no se han modificado desde entonces.
|