En tiempo real OS / LCD a bordo de Discovery $12 (4 / 6 paso)

Paso 4: Otro Hardware / Software trucos

Hay algunas otras cosas sucediendo en el código fuente que he proporcionado en este instructible que merece la pena señalar.

Fecha / hora de código:

Para calcular la fecha / hora utiliza las funciones de biblioteca de clib.  Este ia un poco complicado porque clib usa malloc para tomar platos de memoria.  Esto causa problemas para un RTOS que necesita interruptor de tarea.  La solución es conseguir clib para utilizar las funciones malloc en el sistema operativo en lugar de las funciones malloc en la biblioteca.  Por suerte, algún buen bloke en Internet clasificados hacia fuera y ha proporcionado una solución.  Consulte sitio de web de Michal Demin para obtener más información.

Así, el hardware utiliza el cristal de 32,768 kHz externo para mantener un contador de 32 bits incremento una vez por segundo.  El contador es con respaldo de batería (pila de monedas) y no consigue reiniciar nunca.  Reajustes de hardware, la depuración, y volver a grabar no reiniciar el contador!  El contador se puede configurar mediante software, sin embargo.  El valor para el número de segundos desde 01 de enero de 1970 hace clib feliz.  Una vez configurado, hay un montón de funciones clib para calcular el tiempo.  Nota, dada una fecha / hora / zona horaria, puede revertir la clib calcular el número de segundos para usted.

Una vez clib sabe la zona horaria, la fecha de las funciones de tiempo están listas para ir.  La fecha o tiempo en la pantalla LCD es buena independientemente del horario de verano, año bisiesto o cualquier otra basura que no entiendo.  En efecto, una vez ajustada, la fecha / tiempo debe ser bueno todo el año por años (aparte de deriva).

Para ajustar la fecha / hora, quite el comentario de una sección de código (busque en ctime.c cerca de la cima) que hace el cálculo de tiempo de reversa.  Se actualiza el contador de 32 bits y el programa continúa.  Luego, comente la fecha / tiempo código que establece la hora y reflash el micro.  Es un hack desagradable - pero, sólo corrí fuera hacking jugo para escribir código botón para ajustar la hora / fecha.  Siéntase libre.

Consola de depuración:

Apenas comencé a escribir algo de código para agregar una consola de depuración.  La idea es, tomar uno de los canales no utilizados de la UART y uso de mensajes de depuración de la aplicación.  La consola también puede ser interactiva para que mensajes repetitivos pueden ser fijados encendido y apagado.  Yo he usado por lo que puedo ver a valores analógicos desplazarse.  Es bueno poder convertir esta encendido y apagado.

Caracteristicas de la consola de depuración:

  • Depurar la consola funciona como una tarea separada - la tarea de prioridad más bajo.  Diseñado para ser de bajo impacto en el sistema.
  • Otras tareas pueden llamar "vDebugPrintf()" para enviar un mensaje con formato a la depuración puerto serie.
    • Los mensajes con formato se cargan en una cola FIFO de OS.
    • La tarea de depurar continuamente transfiere el carácter fuera de la cola FIFO y en el puerto serie.
    • El código fuente liviano de vDebugPrintf es proporcionar así que puedes añadir tus propias cosas especiales.

Salida de PWM RC automático:

Dos pernos han sido setup con una salida PWM de 50Hz.  La idea es que estos pernos se utilizará para conducir los motores servos RC en el futuro.  Con un simple de la escritura en un registro micro que se puede cambiar el ciclo de trabajo de la salida PWM, un servomotor de RC conectado entonces respondería mi mudanza a la nueva posición.

Otra vez, esto sólo demuestra lo fácil que es para control y configuración de hardware.  Generar una salida PWM con micro segunda resolución sin alguna ayuda del hardware sería una molestia importante.  El hardware de brazo facilita este todos.

Automático analógico a Digital conversiones:

Parte de mi hardware inicialización incluye establecer unos canales de AtoD.  Derecho ahora, he conseguido cuatro configuración de canales que utiliza un canal DMA.  Después de una conversión es completa, el canal DMA copia el valor en un búfer de RAM automáticamente.  El convertidor analógico a digital que se mueve hacia el siguiente pin automáticamente.  Todo el proceso se repite una y otra vez sin ninguna sobrecarga de la CPU.

Por lo tanto, el búfer de RAM siempre tiene el último (más arriba hasta la fecha) de analógico a digitales valores.  Uso simple los valores del RAM buffer y saben son los más frescos.  Mantener actualizados los valores de RAM todo se hace sin ninguna interrupción de la micro!

CPU Idle contador:

Cuando el sistema operativo no tiene ningún trabajo que hacer (todas las tareas están en estado de inactividad) el OS llama a otra función de devolución de llamada de usuario llamada "vApplicationIdleHook()".  Programado esta función simplemente incrementar un contador de 32 bits.

Después de un segundo (garrapatas de OS 100) el valor del contador se puede imprimir en la consola de depuración.  Entonces se restablece el contador a cero y se repite el proceso.

Viendo la impresión de la consola de depuración desde el ralentí el gancho podemos ver es cuánto tiempo de inactividad en el sistema operativo.  Un poco como mirar el gráfico de carga de CPU en un PC.

Incluso con todo lo que está sucediendo en el sistema operativo, las transferencias de datos de LCD, de analógico a digitales conversiones, salidas de PWM de RC, LED jugueteando, los estantes de gancho inactivo por más de 350.000 cuentas por segundo!  Simplemente impresionante, hay algunos mucho potencia sobrado teniendo en cuenta cuánto la CPU ya está haciendo.  Este bebé tiene unas piernas!

Artículos Relacionados

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

necesitaba un reloj para mi oficina en casa (donde me paso las mañanas del fin de semana construyendo robots y tal) y quería que encajen en la decoración de mi banco de trabajo electrónica. Me decidí a construir uno con todas las "entrañas" expu
Rastreador de vuelos en tiempo Real de ADS-B y dispositivo de monitorización utilizando Intel Edison

Rastreador de vuelos en tiempo Real de ADS-B y dispositivo de monitorización utilizando Intel Edison

Vigilancia dependiente automática-Broadcast (ADS-B) es un sistema de vigilancia satelital precisa. ADS-B utiliza tecnología GPS para determinar la ubicación de la aeronave, velocidad y otros datos y difunde que estaciones de información a una red de
Reloj en tiempo real con PIC18F452

Reloj en tiempo real con PIC18F452

Bienvenido a usted. Aquí estoy diseñado un reloj de tiempo Real utilizando el microcontrolador PIC18F452. Voy a explicar cómo diseñar el reloj en tiempo Real utilizando el microcontrolador PIC. RTC usando PIC18F452PIC es avance microcontrolador serie
Reloj de tiempo real utilizando AT89s52

Reloj de tiempo real utilizando AT89s52

WELCOME BACK, esto es shubham Trivedi y hoy voy a diseño de reloj en tiempo Real utilizando el microcontrolador At89s52. El microcontrolador AT89S52 es el corazón de este proyecto. DS1307 IC se utiliza como RTC. Necesaria de este IC DS1307 I2C interf
Monitor en tiempo real Web basado hogar energía uso

Monitor en tiempo real Web basado hogar energía uso

un monitor de uso de energía del hogar basado en la web en tiempo real detalles de este Instructable. El resultado final es un cuadro vivo de una página web que se actualiza cada 10 segundos con el uso de potencia instantánea para toda mi casa. La co
Reloj de tiempo Real de Arduino con alarma y sensores ambientales

Reloj de tiempo Real de Arduino con alarma y sensores ambientales

Reloj de Arduino, con respaldo de batería (reloj en tiempo real), tiempo, fecha, alarma, temperatura, humedad, presión, LCD, salida, entrada de teclado, dormir modo, blanco de iluminación (4 X) LED LCD con control de intensidadPaso 1: Lista de piezas
Arduino Aquaponics: reloj de tiempo Real parte I

Arduino Aquaponics: reloj de tiempo Real parte I

necesidad fundamental de AA de cualquier sistema de control es la capacidad de registrar el tiempo.  Como lo que somos conscientes, el Arduino tiene tres métodos que puede emplear:1. serie.  Varias veces superar el tiempo de la conexión en serie.2. e
Trazado de ECG en tiempo real de Pi frambuesa

Trazado de ECG en tiempo real de Pi frambuesa

trazado de ECG en tiempo real de Raspberry PiTL084 x3 tarjeta de señal de ECGFrambuesa Pi MCP3008 ECG señal lector y servidor webservidor Web de Apache tomcathttp://www.youtube.com/watch?v=sBC65qsSEkU&feature=youtu.beañadir a bordo: Junta de bricolaj
Noteu: Dispositivo de notificación en tiempo real USB

Noteu: Dispositivo de notificación en tiempo real USB

¿Qué es Noteu?Por favor haga clic abajo para visitar nuestra página de Kickstarter para obtener más información y si su interés para usted pre-ordenar un modelo de producción. https://www.Kickstarter.com/projects/Jackt/noteu-...Noteu es uno de los pr
Dispositivo de notificación en tiempo real USB

Dispositivo de notificación en tiempo real USB

¿Qué es Noteu?Por favor haga clic abajo para visitar nuestra página de Kickstarter para obtener más información y si su interés para usted pre-ordenar un modelo de producción.https://www.Kickstarter.com/projects/Jackt/noteu-u...Noteu es una de las pr
Monitor en tiempo real de BitCoin Price con matriz de LED Arduino y 1Sheeld

Monitor en tiempo real de BitCoin Price con matriz de LED Arduino y 1Sheeld

Básicamente, estos proyectos ilustran cómo actualizar el precio del BitCoin en USD en tiempo real y el precio que se muestra en una gran matriz de LED que hemos hackeado para dejarla comunicarse con Arduino en lugar de la PC.Hemos enfrentado algunos
Módulos de reloj en tiempo Real compatible con Arduino #5 (DS1307 y DS3231)

Módulos de reloj en tiempo Real compatible con Arduino #5 (DS1307 y DS3231)

Un módulo de reloj en tiempo Real (RTC) es que un RTC es un RTC. ¿Verdad? Mal!Mientras estos dos ECA muy común, compatible con Arduino un aspecto muy similar y están conectados a través del I2C (pronunciado ojo cuadrado, u ojo ojo) bus de comunicacio
Berlín reloj, Arduino Nano, DS1307 reloj en tiempo Real. 74HC595N 8 Bit Shift Register.

Berlín reloj, Arduino Nano, DS1307 reloj en tiempo Real. 74HC595N 8 Bit Shift Register.

Hace algún tiempo he querido construir un reloj de Berlín. ¿Realmente no sé por qué? Igual lo "diferente" a la hora.¿Cómo funciona?A partir de la parte inferior hay 4 amarillo enciende cada luz representa 1 minuto, así que si no hay ninguno en e
Montar un Kit de reloj de tiempo Real Adafruit DS1307

Montar un Kit de reloj de tiempo Real Adafruit DS1307

Sería justo decir que las industrias Adafruit ya ha hecho un gran trabajo de documentación de su Kit de reloj de tiempo Real DS1307. De hecho, sus instrucciones son mucho mejores que nada que tengo que ofrecer ya que incluye a todo tipo de archivos,