En temps réel OS / LCD à bord de Discovery 12 $ (4 / 6 étapes)

Étape 4: Autre Hardware / Software astuces

Il y a quelques autres trucs passe dans le code source que j’ai fournis dans le présent instructible qui est à noter.

Date / Time Code :

Pour calculer date / temps j’ai utilisé les fonctions de bibliothèque clib.  Cette ia un peu délicat car clib utilise malloc pour saisir mandrins de mémoire.  Cela pose des problèmes à un RTOS qu’il faut au commutateur de tâche.  La solution est d’obtenir clib d’utiliser les fonctions malloc dans l’OS au lieu des fonctions malloc dans la bibliothèque.  Heureusement, certains mec sympa sur Internet il triés et apporté une solution.  Voir le site web de Michal Demin pour plus d’informations.

Ainsi, le matériel utilise le cristal de 32,768 kHz externe pour garder une incrémentation de compteur 32 bits une fois par seconde.  Le compteur est sauvegarde sur batterie (cellule de pièce de monnaie) et ne se réinitialise pas jamais.  Réinitialisation matérielle, le débogage, ou flashage ne réinitialise pas le compteur !  Le compteur peut être défini via le logiciel, cependant.  Si la valeur pour le nombre de secondes depuis le 1er janvier 1970 rend clib heureux.  Une fois réglée, il y a un tas de fonctions clib pour calculer le temps.  Remarque, une date / heure / fuseau horaire, clib peut inverser calculer le nombre de secondes pour vous.

Une fois que clib connaît le fuseau horaire, la date / d’heure est prêts à aller.  La date / heure sur l’écran LCD est bon quel que soit l’heure d’été, les années bissextiles ou tout autres cochonneries que je ne comprends pas.  En effet, une fois définie, la date / heure doit être bonne année pour les années (autres que la dérive).

Pour régler la date / heure, j’ai décommenter une section de code (regardez dans ctime.c vers le haut) qui effectue le calcul du temps inversé.  Le compteur 32 bits est mises à jour et le programme se poursuit.  Puis, j’ai en commentaire la date / time code qui définit l’heure et reflasher le micro.  C’est un hack méchant - mais, j’ai juste manqué de piratage de jus pour écrire du code de bouton pour régler l’heure / date.  N’hésitez pas.

Console de débogage :

Je viens de commencer à écrire du code pour ajouter une console de débogage.  L’idée est, prendre l’un des canaux UART inutilisés et l’utiliser pour les messages de débogage d’application.  La console peut aussi être interactive afin que des messages répétitifs peuvent être basculés sur et en dehors.  J’ai utilisé ce donc je peux regarder les valeurs analogiques défiler.  Il est agréable de pouvoir à son tour ce sur et en dehors.

Caractéristiques de la console de débogage comprennent :

  • Debug console s’exécute comme une tâche distincte - la tâche de priorité le plus bas.  Conçu pour être à faible impact sur le système.
  • Autres tâches peuvent appeler « vDebugPrintf() » pour envoyer un message mis en forme sur le débogage de port série.
    • Les messages formatés sont chargés dans une file FIFO de l’OS.
    • La tâche déboguer transfère continuellement le caractère hors de la file d’attente FIFO et sur le port série.
    • Le code source léger de vDebugPrintf est fournit donc vous pouvez ajouter vos propres trucs spéciaux.

Sortie automatique RC PWM :

Deux broches ont été mis en place avec une sortie PWM de 50Hz.  L’idée est que ces broches seront utilisés pour piloter les moteurs servo RC à l’avenir.  Avec une écriture simple sur un registre micro que le facteur de marche de la sortie PWM peut être modifiée, un moteur servo RC connectés répondrait alors mon déménagement vers la nouvelle position.

Encore une fois, c’est dire combien il est facile d’installation et contrôle le matériel.  Générer une sortie PWM avec micro seconde résolution sans quelque assistance matérielle serait un souci majeur.  Le matériel de bras, c’est tout à facile.

Automatique analogique/numériques Conversions :

Partie de mon matériel lors de l’initialisation comprend la mise en place quelques canaux circonstancielle.  Droit maintenant, j’ai quatre paramètres de canaux qui utilisent un autre canal DMA.  Après qu’une conversion est terminée, le canal DMA copie la valeur dans un buffer RAM automatiquement.  Le convertisseur analogique à numérique que se déplace sur l’autre broche automatiquement.  L’ensemble du processus se répète maintes et maintes fois sans toute surcharge du processeur.

Par conséquent, le tampon de RAM a toujours l’analogue plus tard (plus haut à ce jour) à des valeurs numériques.  Utilisation simple, les valeurs de la mémoire RAM de la mémoire tampon et savent qu’ils sont les plus fraîches.  Garder les valeurs de la RAM à jour est terminée sans aucune interruption du micro !

Compteur inactivité de l’UC :

Lorsque l’OS n’a aucun travail à faire (toutes les tâches sont dans un état d’inactivité) le système d’exploitation appelle une autre fonction de rappel d’utilisateur appelée « vApplicationIdleHook() ».  J’ai programmé cette fonction simplement incrémenter un compteur 32 bits.

Après qu’une seconde écoulé (100 graduations OS) la valeur du compteur peut être imprimée dans la console de débogage.  Le compteur est alors remis à zéro et le processus se répète.

En regardant l’imprimé de console de débogage de l’inactivité à crochet, nous pouvons voir combien temps d’inactivité il est dans l’OS.  Un peu comme regarder le graphique de charge CPU sur un PC.

Même avec tout ce qui se passe dans le système d’exploitation, transferts de données LCD, analogue à la conversion numérique, sorties de PWM RC, LED se tourner, les grilles de crochet ralenti jusqu'à plus de 350 000 impulsions par seconde !  Tout simplement incroyable, il y a certains beaucoup chevaux surplus Considérant combien le CPU est déjà fait.  Ce bébé a des jambes !

Articles Liés

La température sur écran LCD 16 x 2

La température sur écran LCD 16 x 2

Dans mon précédent post, j'ai affiché la température sur serial monitor. Aujourd'hui, je vais vous montrer comment afficher la température de la sonde thermique à un WC1602A0 de LCD 16 x 2. Hier, j'ai pensé que mon écran est cassé, mais je lui ai don
Arduino Nano : BMP180 la pression barométrique et la température I2C afficheur LCD 2 X 16 avec Visuino

Arduino Nano : BMP180 la pression barométrique et la température I2C afficheur LCD 2 X 16 avec Visuino

Le BMP180 est un capteur de température et Arduino de pression barométrique combiné très populaire. J'ai déjà fait Instuctable avec BMP180. Un certain nombre de personnes a toutefois demandé comment vous pouvez connecter un autre périphérique I2C sur
Affichage température sur écran LCD à l’aide de STS-21(I2C)

Affichage température sur écran LCD à l’aide de STS-21(I2C)

SalutSalutations bonnes..!! J'ai (Somanshu Choudhary) pour le compte d'entreprises de technologie Dcube va pour mesurer la température à l'aide d'Arduino nano et affichage sur 16 X 2 LCD c'est l'une des applications de I2C protocole pour lire des don
Affichage de la température sur écran LCD

Affichage de la température sur écran LCD

J'ai réunira deux projets dans ce instructable.Je démontrerai comment mesurer la température à l'aide d'une sonde de température LM35 et un Arduino, puis affichez la température sur une série LCD 16 X 2 en Celsius et Fahrenheit.Vous pouvez trouver le
PICAXE - capteur de température DS18B20 pour LCD

PICAXE - capteur de température DS18B20 pour LCD

ceci est mon premier dessin Picaxe, projet de programme et de la construction. Ce projet connecte un capteur DS18B20 à un LCD parallèle en utilisant un PICAXE 20 X 2. Il mesure la température de la pièce et lit les à l'écran chaque seconde ou deux. C
Arduino alimenté par sonde de température avec écran LCD sortie première fois auteur entrée

Arduino alimenté par sonde de température avec écran LCD sortie première fois auteur entrée

Jamais été un gars un peu de concours, mais j'ai avancé et entré dans pour le premier concours d'auteur de temps, si vous aimez mon intructable ou même d'apprendre quelque chose de nouveau et je pense j'ai gagné votre vote s'il vous plaît ! =]Bonjour
La température DHT11 distance Wi-Fi une humidité I2C afficheur LCD 2 X 16 avec deux ESP8266 et Visuino

La température DHT11 distance Wi-Fi une humidité I2C afficheur LCD 2 X 16 avec deux ESP8266 et Visuino

ESP8266 modules sont contrôleurs seul grand peuplement faible coût avec construit en Wi-Fi, et j'ai déjà fait un clin d'oeil simple instructable avec module ESP8266 NodeMCU.L'avantage de ESP8266 sur l'Arduino et autres contrôleurs est le builtin Wi-F
Temp. Capteur affichage sur écran LCD w / Arduino

Temp. Capteur affichage sur écran LCD w / Arduino

Ce qu'il fait essentiellement :Ce projet arduino détecte la température de la sonde de température. Lorsqu'il détecte la température, il affiche sur le moniteur série, que j'ai personnellement pense est évidemment très gênant. Maintenant pour résoudr
ATTiny84 + LCD + température LM35 capteur

ATTiny84 + LCD + température LM35 capteur

Il s'agit d'un capteur de température simple construit avec un ATtiny84, LM35 et un écran LCD 16 x 1 caractère. Il est fait pour courir sur 3 piles AA ou 4,5 volts. Je l'ai fait comme un projet pour savoir comment transférer des projets Arduino dans
Arduino temps & Temp affichage bouclier

Arduino temps & Temp affichage bouclier

un autre projet, je travaille sur requis une minuterie bonne, mais plus je lis sur l'Arduino, j'ai réalisé que je ne pouvais pas faire un temporisateur précis en utilisant un Arduino qui était déjà consacré à d'autres tâches. L'Arduino perdra toujour
ORP / pH / température Data Logger

ORP / pH / température Data Logger

comme un professionnel de la qualité de l'eau travaillant dans le domaine de l'eau potable, je sais combien il est important de surveiller avec précision les niveaux de désinfectant dans l'eau potable qui obtient a servi au public.  Habituellement, c
Conseil développement Atmega16/32 avec écran LCD

Conseil développement Atmega16/32 avec écran LCD

cette instructable montre, comment faire votre propre Conseil développement pour processeurs Atmega16 ou Atmega32. L'Internet est plein de conseils de développement faits maison, mais je pense qu'il n'y a place à gauche pour un autre. Ce Conseil d'ad
Tweetez votre température environnante et surveiller n’importe où !

Tweetez votre température environnante et surveiller n’importe où !

Salut tout le monde !Je suis Geeve George un MAKER fièrement de l'Inde! J'ai commencé à faire à l'âge de 10 ans et mon zèle pour faire encore continue comme je suis fascinée par les possibilités infinies et les possibilités qu'offre la technologie !C
Utiliser twitter et le temps de poster des notes et la température de la porte du Bureau

Utiliser twitter et le temps de poster des notes et la température de la porte du Bureau

Synopsis========L'objectif de ce projet est d'utiliser un compte Twitter pour envoyerNotes de la porte de votre bureau, qui est équipé d'un 20 x 4 LCD(affichage). Ce projet présente essentiellement une mise en œuvre del'idée abordée dans cet article