Hemos estado yendo todos los días al laboratorio, pero no nos ha dado tiempo a integrar todo.
Los filtros parece que no estaban preparados, y nos daba un segmentation fault al intentar que funcionase todo junto. hemos estado varias horas probando cosas e intentando encontrar la fuente del error pero no nos ha dado tiempo a encontrarlo.
Estuvimos hasta 1 minuto antes de las presentaciones de las practicas intentando arreglarlo, y al final hicimos un video corto con el móvil de algunos módulos funcionando por separado, aun que con las prisas ha quedado un video cutre, en el que se aprecia poco la funcionalidad de cada módulo.
http://www.youtube.com/watch?v=ZJaozARW4nI
sábado, 26 de mayo de 2012
Sesión 21
Hemos comprobado que funciona el SW y HW de los LEDs aun que hemos estado un rato intentando deducir por que se encendían los que no tenían que encenderse----> el enunciado de la práctica estaba mal.
Por otro lado nos hemos dado cuenta de que las interrupciones iban lentas debido a los printk(), sin ellos van perfectas.
Con lo cual nuestro objetivo en la práctica se ha cumplido. Ahora falta la integración con la otra pareja.
Por otro lado nos hemos dado cuenta de que las interrupciones iban lentas debido a los printk(), sin ellos van perfectas.
Con lo cual nuestro objetivo en la práctica se ha cumplido. Ahora falta la integración con la otra pareja.
viernes, 18 de mayo de 2012
Sesiones 19,20
En estos dos días hemos conseguido que funcione más o menos todo con la salvedad de que las interrupciones no se generan a la frecuencia que deberían.
Y a parte aún no hemos probado el hardware de la matriz de LEDs. Nos ha llevado bastante tiempo soldar todo y poner los cables correctamente para dicho hardware. Aquí se puede ver como ha quedado (nos hemos valido de una placa de puntos para las conexiones):
El problema ahora reside básicamente en integrar todo con la otra pareja (Carlos y Jorge).

Otra cosa que no había comentado, es que el error que nos daba el ADC, era debido a la placa 9441, (la verde que se aprecia en la foto) que nos servía como interfaz para la comunicación con el ordenador.
Así que hemos tenido que recurrir a una conexión por ethernet con la placa, valiedonos de un pequeño servidor FTP para la transferencia de archivos.
Y a parte aún no hemos probado el hardware de la matriz de LEDs. Nos ha llevado bastante tiempo soldar todo y poner los cables correctamente para dicho hardware. Aquí se puede ver como ha quedado (nos hemos valido de una placa de puntos para las conexiones):
El problema ahora reside básicamente en integrar todo con la otra pareja (Carlos y Jorge).

Otra cosa que no había comentado, es que el error que nos daba el ADC, era debido a la placa 9441, (la verde que se aprecia en la foto) que nos servía como interfaz para la comunicación con el ordenador.
Así que hemos tenido que recurrir a una conexión por ethernet con la placa, valiedonos de un pequeño servidor FTP para la transferencia de archivos.
miércoles, 16 de mayo de 2012
Sesión 18
Hoy hemos estado varias horas en el laboratorio y hemos hecho principalmente 2 cosas:
1- Soldar el hardware de la matriz de LEDs
2- Reestructurar un poco los driver, de tal manera que para hacer la lectura del ADC no haya que pasar por el plano de usuario, sino que el driver de interrupciones recurra al del ADC para efectuar la lectura.
El programa no acaba de funcionar, esperamos mañana conseguir que funcione.
El viernes hemos quedado con la otra pareja para unificar la practica así que a ver si mañana funciona.
1- Soldar el hardware de la matriz de LEDs
2- Reestructurar un poco los driver, de tal manera que para hacer la lectura del ADC no haya que pasar por el plano de usuario, sino que el driver de interrupciones recurra al del ADC para efectuar la lectura.
El programa no acaba de funcionar, esperamos mañana conseguir que funcione.
El viernes hemos quedado con la otra pareja para unificar la practica así que a ver si mañana funciona.
sábado, 12 de mayo de 2012
Sesiones 15,16,17.
Esta semana hemos ido tres dias al laboratorio.
El Martes fue bastante frustrante: aún no conseguíamos que funcionase el ADC. Estuvimos 1h y media con nuestro tutor intentando solucionar el problema ( siempre leía el valor FFF7FFFF).
Después de no conseguir nada en toda la mañana Álvaro nos recomendo centrarnos en lo demás y el buscaría el problema del ADC.
El Jueves nos centramos en las interrupciones y los LEDs.
-En cuanto a las interrupciones, tuvimos que "buscar teoría" en internet ya que nosotros no tenemos ninguna experiencia con previa con drivers. Después de un rato conseguimos más o menos entender como funcionaba el manejador de interrupciones: es una forma de "instalar" una fuente de interrupción, hacer que el sistema sea sensible a ella y definir una rutina de atención.
Aún así nos quedaron algunas dudas.
-En cuanto a los LEDs, estuvimos mirando los diversos manuales y no acabábamos de comprender del todo como funcionaba el interfaz de entrada/salida.
Por un lado hay registros del EP9301 (chip) y por otro lado de la TS7400 (la placa). Al parecer había varios registros que tocaban las mismas cosas. Como no lo teníamos muy claro lo que hicimos fue programar el driver usando los registros del EP9301.
El objetivo básicamente era implementar una función de usuario "enciendeLeds( int banda, int nivel)" que encendiese los leds correspondientes a esa banda y ese nivel(utilizando el driver correspondiente).
Estuvimos un buen rato pensando como pasarle la banda de ganancia y el nivel de energía al driver desde la aplicación de usuario. Finalmente conseguimos terminar el driver aun que aún no sabíamos si habíamos usado los registros correctos.
El viernes descubrimos que debíamos usar los registros de la TS7400 para entrada/salida. Tuvimos que modificar el driver e investigar acerca de la función "write(...)" ya que nos daba un error al ejecutarla.
También estuvimos pensando como conectar el hardware con la matriz de LEDs, ya que todos los pines de la placa están muy juntos y además hay una pequeña placa para facilitar la conexión con el ordenador que los tapa (como se puede apreciar en la foto de la placa que subimos hace unas semanas).
Ideamos una forma utilizando una "placa auxiliar" para sacar las lineas, aún que todavia no la hemos implementado.
En cuanto a las interrupciones, conseguimos solucionar las dudas que teníamos y hemos terminado el driver en casa.
Vamos bastante retrasados así que este martes esperamos que funcionen las interrupciones y que no nos lleve mucho tiempo conectar la matriz de LEDs con el sistema que hemos ideado.
Respecto al ADC, Álvaro nos ha dicho que ha encontrado el problema así que esperamos hacer que funcione también.
Un esquema general:
El Martes fue bastante frustrante: aún no conseguíamos que funcionase el ADC. Estuvimos 1h y media con nuestro tutor intentando solucionar el problema ( siempre leía el valor FFF7FFFF).
Después de no conseguir nada en toda la mañana Álvaro nos recomendo centrarnos en lo demás y el buscaría el problema del ADC.
El Jueves nos centramos en las interrupciones y los LEDs.
-En cuanto a las interrupciones, tuvimos que "buscar teoría" en internet ya que nosotros no tenemos ninguna experiencia con previa con drivers. Después de un rato conseguimos más o menos entender como funcionaba el manejador de interrupciones: es una forma de "instalar" una fuente de interrupción, hacer que el sistema sea sensible a ella y definir una rutina de atención.
Aún así nos quedaron algunas dudas.
-En cuanto a los LEDs, estuvimos mirando los diversos manuales y no acabábamos de comprender del todo como funcionaba el interfaz de entrada/salida.
Por un lado hay registros del EP9301 (chip) y por otro lado de la TS7400 (la placa). Al parecer había varios registros que tocaban las mismas cosas. Como no lo teníamos muy claro lo que hicimos fue programar el driver usando los registros del EP9301.
El objetivo básicamente era implementar una función de usuario "enciendeLeds( int banda, int nivel)" que encendiese los leds correspondientes a esa banda y ese nivel(utilizando el driver correspondiente).
Estuvimos un buen rato pensando como pasarle la banda de ganancia y el nivel de energía al driver desde la aplicación de usuario. Finalmente conseguimos terminar el driver aun que aún no sabíamos si habíamos usado los registros correctos.
El viernes descubrimos que debíamos usar los registros de la TS7400 para entrada/salida. Tuvimos que modificar el driver e investigar acerca de la función "write(...)" ya que nos daba un error al ejecutarla.
También estuvimos pensando como conectar el hardware con la matriz de LEDs, ya que todos los pines de la placa están muy juntos y además hay una pequeña placa para facilitar la conexión con el ordenador que los tapa (como se puede apreciar en la foto de la placa que subimos hace unas semanas).
Ideamos una forma utilizando una "placa auxiliar" para sacar las lineas, aún que todavia no la hemos implementado.
En cuanto a las interrupciones, conseguimos solucionar las dudas que teníamos y hemos terminado el driver en casa.
Vamos bastante retrasados así que este martes esperamos que funcionen las interrupciones y que no nos lleve mucho tiempo conectar la matriz de LEDs con el sistema que hemos ideado.
Respecto al ADC, Álvaro nos ha dicho que ha encontrado el problema así que esperamos hacer que funcione también.
Un esquema general:
jueves, 3 de mayo de 2012
Sesión 14.
Hoy hemos estado investigando como implementar el vúmetro y hemos planeado como codificar el driver y la aplicación de usuario correspondiente.
Utilizaremos la interfaz GPIO (general purpose input/output). Por lo que hemos pensado no será muy difícil implementarlo: sólo habrá que configurar los registros PxDDR y enviar los datos por los PxDR.
Emplearemos el puerto F (3 bits) para seleccionar la banda (filas), y el puerto A (8 bits) para indicar el nivel de energía (columnas).
Esperamos no tener problemas de mapeado también con estos registros.
Utilizaremos la interfaz GPIO (general purpose input/output). Por lo que hemos pensado no será muy difícil implementarlo: sólo habrá que configurar los registros PxDDR y enviar los datos por los PxDR.
Emplearemos el puerto F (3 bits) para seleccionar la banda (filas), y el puerto A (8 bits) para indicar el nivel de energía (columnas).
Esperamos no tener problemas de mapeado también con estos registros.
Sesiones 11,12,13.
La semana pasada hemos ido 3 dias laboratorio, sin embargo no hemos conseguido solucionar los problemas con el mapeado.
Por lo visto, la rutina descrita en la entrada anterior no asigna las direcciones correctas a los registros.
He aquí una captura de lo que creemos que es el problema:
La dirección del registro ADC RESULT debería ser: 0x8090008
Y como se puede apreciar en la captura, al hacer el remapeo le asigna la dirección 0xD4047008
Hemos estado muy bloqueados, así que hemos optado por ir haciendo lo relacionado con los LEDs y las interrupciones hasta que nuestro tutor pueda ayudarnos con el ADC.
Vamos bastante retrasados así que esperamos poder solucionar los problemas de mapeado pronto.
Por lo visto, la rutina descrita en la entrada anterior no asigna las direcciones correctas a los registros.
He aquí una captura de lo que creemos que es el problema:
La dirección del registro ADC RESULT debería ser: 0x8090008
Y como se puede apreciar en la captura, al hacer el remapeo le asigna la dirección 0xD4047008
Hemos estado muy bloqueados, así que hemos optado por ir haciendo lo relacionado con los LEDs y las interrupciones hasta que nuestro tutor pueda ayudarnos con el ADC.
Vamos bastante retrasados así que esperamos poder solucionar los problemas de mapeado pronto.
Suscribirse a:
Comentarios (Atom)

+14.18.47.png)