<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>LabElectronica/RoMAA-FW</title><revhistory><revision><revnumber>42</revnumber><date>2013-01-26 15:47:38</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>41</revnumber><date>2013-01-26 15:45:48</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>40</revnumber><date>2012-11-15 21:45:49</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>39</revnumber><date>2012-11-05 23:27:52</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>38</revnumber><date>2012-11-05 23:13:44</date><authorinitials>SantiagoPerez</authorinitials><revremark>Se cambia nombre desde &quot;LabElectronica/RoMAAFirmware23&quot;</revremark></revision><revision><revnumber>37</revnumber><date>2012-11-05 23:04:58</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>36</revnumber><date>2012-11-05 22:38:09</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>35</revnumber><date>2012-11-05 21:34:57</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>34</revnumber><date>2012-11-05 21:32:15</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>33</revnumber><date>2012-11-05 21:24:09</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>32</revnumber><date>2012-10-30 23:23:11</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>31</revnumber><date>2012-10-30 22:39:26</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>30</revnumber><date>2012-10-30 22:35:01</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>29</revnumber><date>2012-10-30 22:30:28</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>28</revnumber><date>2012-10-30 22:05:52</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>27</revnumber><date>2012-06-05 23:00:54</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>26</revnumber><date>2012-06-05 18:58:29</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>25</revnumber><date>2012-06-04 19:32:01</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>24</revnumber><date>2012-06-01 19:29:32</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>23</revnumber><date>2012-06-01 19:25:30</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>22</revnumber><date>2012-06-01 19:23:51</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>21</revnumber><date>2012-06-01 19:21:54</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>20</revnumber><date>2012-06-01 19:21:29</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>19</revnumber><date>2012-05-31 22:05:48</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>18</revnumber><date>2012-05-28 22:22:47</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>17</revnumber><date>2012-05-28 22:14:30</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>16</revnumber><date>2012-05-28 21:59:08</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>15</revnumber><date>2012-05-23 22:36:51</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>14</revnumber><date>2012-05-23 22:36:22</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>13</revnumber><date>2012-05-23 22:34:44</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>12</revnumber><date>2012-05-23 22:33:01</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>11</revnumber><date>2012-05-23 19:42:12</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>10</revnumber><date>2012-05-23 19:39:57</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>9</revnumber><date>2012-05-23 19:39:17</date><authorinitials>SantiagoPerez</authorinitials></revision><revision><revnumber>8</revnumber><date>2011-12-13 01:49:45</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>7</revnumber><date>2011-12-13 01:48:53</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>6</revnumber><date>2011-12-05 22:15:10</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-12-05 22:13:31</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-12-05 22:03:39</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-12-05 21:36:49</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-12-05 21:31:19</date><authorinitials>localhost</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-12-05 20:58:22</date><authorinitials>localhost</authorinitials></revision></revhistory></articleinfo><section><title>Firmware del robot móvil RoMAA-II</title></section><section><title>Objetivos</title><para>Aquí se documentarán y organizarán todas las investigaciones y desarrollos ha realizar y realizados para la optimización del firmware de la plataforma robótica móvil RoMAA-II, en su aplicación con el sistema operativo en tiempo real FreeRTOS. </para></section><section><title>Caracteterísitcas generales del FW</title><section><title>Trabajos iniciales</title></section><section><title>FreeRTOS</title></section><section><title>Modo de funcionamiento</title><section><title>Tareas</title></section></section></section><section><title>Versiones del FW</title><section><title>v2.5 - 2012/12/20 - Final Estable</title><para>Esta es la versión final estable del FW del RoMAA 2012. Para ver todas las versiones y modificaciones del FW, <ulink url="http://ciii.frc.utn.edu.ar/LabElectronica/RoMAA-FW/Versiones%20FW">aquí</ulink>. </para></section><section><title>v2.3 - 2012/09/20 - Innovar</title><para>Esta es la versión estable del FW del RoMAA, utilizada en INNOVAR 2012. Para ver todas las versiones y modificaciones del FW, <ulink url="http://ciii.frc.utn.edu.ar/LabElectronica/RoMAA-FW/Versiones%20FW">aquí</ulink>. </para></section></section><section><title>Información para usuarios del RoMAA-II</title><section><title>Características generales de la       plataforma</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/CaracteristicasGenerales#">Link a características generales de la       plataforma. Diferencias entre RoMAAs</ulink> </para></section><section><title>Funcionamiento básico</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAAFirmware23/FuncionamientoBasico#">Funcionamiento básico</ulink> </para><para>Encendido, apagado, reseteo, etc. </para><para>Grabación del FW </para></section><section><title>Condiciones inicales</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAAFirmware23/Condiciones%20iniciales#">Condiciones iniciales</ulink> </para></section><section><title>Lógica simple de funcionamiento</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAAFirmware23/LogicaFuncionamiento#">Lógica simple de funcionamiento del FW</ulink> </para><section><title>Comandos</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAAFirmware23/Comandos#">Comandos</ulink>: Se  describen todos los comandos disponibles para la utiización de la  plataforma y los básicos iniciales para comenzar en cualquier aplicación  de nivel superior a desarrollar. </para><para>Descripción agrupada por tipos de comandos </para><para>Detalle del efecto que tienen sobre el RoMAA, en            que secuencia debería usarse </para><para>Detalle de la trama, envío y recepción a            codificar </para></section></section></section><section><title>Información para desarrolladores del FW del RoMAA-II</title><section><title>Repositorio</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAAFirmware23/Repositorio#">Repositorio</ulink></para><para>Creación  del tag v2.2 disponible para utilizar con ambos RoMAAs. Creación y  utilización del trunk v2.3 para el desarrollo del proyecto. </para><para>El  código que actualmente se utiliza tanto en el  RoMAA II como en el  RoMAA original esta basado en el desarrollado para  el proyecto  &quot;Hardware de Control de Plataforma Robótica Móvil con  Arquitectura ARM7  y RTOS embebido. Caracterización&quot;. Tesis de grado para  obtener el  título de Ing. en electrónica de Santiago Pérez y Martín  Baudino <ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/FreeRTOSLpc2114Web#">Ir</ulink>. </para><para>La versión en desarrollo actual (v2.4) se encuentra en el repositorio <ulink url="http://proyectos.ciii.frc.utn.edu.ar/romaa_firmware">romaa_firmware</ulink>. Y se puede descargar del servidor con: </para><screen><![CDATA[hg clone https://proyectos.ciii.frc.utn.edu.ar/hg/romaa_firmware romaa_firmware_v2.4_trunk]]></screen></section><section><title>Archivos que componen el proyecto</title></section><section><title>CiiiEmbLibs</title><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/CiiiEmbLibs#">CiiiEmbLibs</ulink> </para></section><section><title>FreeRTOS</title></section><section><title>Funcionamiento del FW</title><section><title>Compilación y Makefile</title></section><section><title>Lógica general</title></section><section><title>Condiciones iniciales</title></section><section><title>Descripción por partes del FW</title><para>El programa principal del firmware está dividido en tres partes principales, que se describen en los links a continuación: </para><itemizedlist><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/main#">Main</ulink></para><para>es la función principal del firmware, que de inicio a las tareas, inicializaciones de variables y configuración de hardware, ejecutándose solo una vez y finalizando con la entrega del control del flujo del programa y sincronización de tareas al scheduler del FreeRTOS. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/tasks#">Tareas</ulink></para><para>son 5 tareas en total, que el FreeRTOS sincroniza para que funcionen en pseudoparalelo, según las prioridades asignadas a las mismas y los tiempos de repetición de cada una de ellas. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/interrupts#">Interrupciones</ulink></para><para>se usan con dos propósitos fundamentales. Por un lado, la lectura de los encoders, único sensor de realimentación de velocidad utilizado en el movimiento de la plataforma; y por el otro lado, para el timer que utiliza el scheduler del FreeRTOS en la sincronización de todas las tareas y recursos. </para></listitem></itemizedlist></section><section><title>Modificaciones detalladas entre versiones</title></section></section><section><title>Cambios significativos y problemáticas resueltas relevantes</title><orderedlist numeration="arabic"><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Memoria#">Memoria</ulink></para><para>Estudiar e implementar el uso optimizado de memoria de la aplicación con FreeRTOS<emphasis role="strong">.</emphasis> </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Grabaci%C3%B3n%20del%20Firmware#">Grabación del Firmware con LPC2isp</ulink></para><para>Estudio y corrección de los problemas de grabación con el software LPC2isp. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/PID#">PID</ulink></para><para>Implementación de la codificación del PID del cuadricóptero QA3, variables, recursos del FreeRTOS e interacción con las demás tareas. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/VariosAplicacion#">Varios Aplicación</ulink></para><para>Optimización y utilización de varios recursos y configuraciones del FreeRTOS para la aplicación. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Interrupciones%20y%20RTOS#">Interrupciones y RTOS</ulink></para><para>Estudio e implementación de las interrupciones bajo programación segura con los recursos del FreeRTOS. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Uso%20y%20medici%C3%B3n%20de%20los%20recursos%20del%20micro#">Uso y medición de los recursos del micro</ulink></para><para>Estudio e implementación de mediciones de recursos del micro, FreeRTOS y aplicación </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Compilacion#">Compilación</ulink></para><para>Errores posibles en la compilación y como solucionarlos. </para></listitem><listitem><para><ulink url="https://ciii.frc.utn.edu.ar/wiki/LabElectronica/RoMAA-FW/wiki/LabElectronica/RoMAA-FW/Makefile#">Makefile</ulink></para><para>Errores posibles en el Makefile y como solucionarlos. </para></listitem></orderedlist></section></section></article>