Como ya os dije en la entrada anterior, una vez os expliqué por encima como funciona el sistema de mensajería entre los dos núcleos del F28377D, toca ponerlo a prueba.
He diseñado dos programas, uno para cada CPU, sencillos en los que se puede ver de forma clara como utilizar este sistema de mensajería. El programa, como he dicho es muy sencillo, la CPU1 envia un mensaje compuesto por 3 bytes, uno de comando, otro de dirección y otro de dato, una vez enviados, hace saltar la interrupción del canal 1 del IPC en la CPU2. Esta, una vez ha almacenado los datos e las variables correspondientes, le devuelve un valor, y hace que en la CPU1 salte la interrupción del canal 0 del IPC, que lee el valor devuelto. Los códigos son los siguientes:
Lo primero que hacemos en los dos núcleos es inicializarlos mediante la función InitSysCtrl(), que se encuentra en el archivo F2837xD_SysCtrl.c. En esta función se inicializa el PLL y el oscilador para obtener una velocidad de 190MHz. Después, en la CPU1 se inicializan los GPIO. Aquí, en el caso que lo necesitaramos, seria donde la CPU1 cedería el control de los GPIO correspondientes a la CPU2. En este caso no se ha hecho. Una vez hecho esto, todo lo relacionado con la inicialización del PIE i las interrupciones se hace del mimo modo que en cualquier C28. Lo siguiente es en la CPU1 preparar el mensaje que queremos mandar, escribirlo en los registros correspondientes y activar la interrupción del IPC1 en la CPU2. Mientras en esta vamos a bucle principal a esperar a que salte la interrupción. Una vez han llegado los datos, los pasamos a la variables correspondientes, y devolvemos un valor de respuesta. Para avisar a la CPU1 que hemos recibido correctamente los datos, activamos la interrupción del IPC0 en la CPU1, y este lee la respuesta.
A partir de este programa se pueden hacer otros más complejos y utilizando mas periféricos. Espero que os resulte interesante y probéis estos potentes microcontroladores.
No hay comentarios:
Publicar un comentario