Étape 5: Une note au sujet de Spin
Peu importe, ce projet a été développé avec la puce de l’hélice, qui est plus facilement écrit en Spin.
Il s’agit d’un bon moment de souligner la bonne volonté envers la communauté open source de parallaxe. La puce de l’hélice est maintenant complètement programmable en C/C++ grâce à la création de SImpleIDE. La majorité de ce projet a été écrit en SimpleIDE en raison de sa facilité d’installation sous Linux et pour accesiblity aux ports de communication.
https://sites.google.com/site/propellergcc/documentation/simpleide
Alors que je préférerais pour coder ce projet en C++ (pour l’utilisation de tableaux 2D et pour une courbe d’apprentissage moins profonde) tout exemple de code que j’ai écrits pour ce projet sera en vrille. Cela a été fait afin de maximiser la fonctionnalité avant l’échéance du concours.
Essorage : Passez par valeur
Passage de variables par valeur en essorage est très similaire à c ++. La seule différence majeure est que, lorsque vous déclarez une variable locale dans Spin, vous ne nommez pas un type, (c’est à dire octet, mot, long). Ils sont trompeurs car il le fait apparaître comme Spin a allocation de mémoire dynamique ; pour tous, j’ai été en mesure de dire, c’est pas le cas.
Essorage : Passer par référence
Il est relativement facile de passer des variables dans Spin. Cependant, il est différent de C++ en ce que vous ne passez pas un pointeur, vous simplement passez l’adresse de mémoire par valeur et déréférencez l’adresse au sein de la fonction. J’ai utilisé cette méthode de passage de paramètres abondamment tout en développant divers vector math fonction. Dans l’exemple suivant, nous remplissons toutes les variables dans les deux tableaux avec le numéro 1. Emplacements de mémoire sont récupérés avec le "symbole et la mémoire des endroits sont déréférencés en redéclarant le type de variable et en mettant la variable dans"[]":
Essorage : Float mathématiques
Flotteur math à Spin est une douleur géante. J’ai trouvé quatre bibliothèques différentes pour l’utilisation des mathématiques de flotteur en vrille, qu’ils utilisent des nombres différents de CMV et fonctionner à des vitesses de la différence et sont assez explicites. Une chose à noter : Si vous êtes déclarer une constante ou une variable à une valeur spécifique directement dans votre code et que vous envisagez d’utiliser des opérations en virgule flottante, vous devez veiller à ce que vous mettez une virgule à la fin de chaque numéro.
Essorage : Registres spéciaux
Il y a des registres spéciaux un peu en vrille. Je vais courir à travers quelques unes ici, mais si vous êtes vraiment sérieux au sujet de l’utilisation de la puce de l’hélice, vous devriez certainement lire les notes de publication d’application, ainsi que télécharger une copie du manuel sur votre ordinateur. La plupart de ces registres sera utilisée dans les exemples de code sur l’étape suivante.
DIRA : Ce registre détermine qui puce IOs sur l’hélice sont sorties et qui constituent des entrées. Vous pouvez écrire à ces registres en utilisant le binaire, décimal ou hexadécimal. La manière plus intuitive, cependant, est binaire. Chaque bit dans le Registre constitue l’un de l’hélice 32 IOs. Assignant un 0 ou un 1 à ce petit assignera que IO comme une entrée ou sortie.
CTRA/CTRB : Ces deux registres de définir les modes de comptage utilisées par chaque minuterie. Nous utilisons deux compteur différent selon que nous sommes mesurer une longueur d’impulsion ou une écriture.
APSS/PHSB : Ces registres sont où les valeurs accumulées générés par nos comptoirs sont en fait stockées. Sur son mode de base, le nombre de cycles d’horloge temps écoulé est stocké ici.
FRQA/FRQB : Ces registres contiennent un facteur qui fait évoluer le compteur chaque fois qu’il stocke à PHSA/B.
Si tout ce parler de minuteries et modes comptage est inconnu pour vous, vous devriez certainement lire la malgré il ne serait pas tout à fait être nécessaire, je recommande fortement en lisant tous les modes de comptage d’hélice. En utilisant le compteur correctement vous donnera un contrôle incroyable sur les fonctionnalités d’e/s bas niveau et permettra de que vous fudge votre chemin à travers presque tous les protocoles de communication numériques :
http://www.parallaxsemiconductor.com/an001