Étape 3: Spin Basics
« Imagine si BASIC et PASCAL accroché au bar temps et 9 mois plus tard une nouvelle langue sauté - Eh bien c’est SPIN pour vous. » - Ben Heck
Spin est le langage de haut niveau plus couramment utilisé pour l’hélice sans doute parce qu’il est (1) facile et (2) il est un interprète de spin sur la Prop. Il y a autres langues là-bas, mais j’ai pensé que je voudrais parler de Spin, parce que c’est le seul que je connais le mieux.
VOTRE PREMIER PROGRAMME
Prêt pour votre premier programme ? C’est ici :
Suivre le programme ci-dessus, mettez-la dans l’outil de l’hélice et appuyez sur F10. Il sera rapidement compiler et charger dans l’hélice. Le code se mettra à clignoter une LED connectée à P0 autre chaque seconde (1/2 Hertz) pour toujours. Nous allons décomposer chaque ligne pour comprendre ce qu’il fait ;
PUB principale
Spin est organisé en blocs ;
PUB et PRI
Ces 2 blocs tenez le code réel. Si vous êtes familier avec php ou BASIC ou C, ceux-ci fonctionnent beaucoup comme fonctions. Ils ont des noms (le nom de ce bloc est « principal »), et vous pouvez leur transmettre des valeurs (function(passedval)).
Les blocs restants ne sont pas nécessaires pour un programme valide ;
CON
CON est titulaire d’une des constantes programme. S’il y a une constante que vous utiliser tout au long du programme, le CON block vous permet de le changer une fois et il apparaîtra chaque fois que vous utilisez. Voici un exemple du programme léger blinky utilisant un bloc CON ;
VAR
Le bloc VAR détient des variables de programme. Dans le programme de lumières blinky, je n’ai pas utilisé toutes les variables système, mais voici une version de blinky lumières à l’aide de variables
Il y a 2 pâtés de maisons plus, DAT et OBJ, mais nous allons ignorer ceux qui pour l’instant - OBJ est utile lors de l’incorporation de code de quelqu'un d’autre, et DAT est un autre endroit pour tenir des variables, il est également où vous mettez le code assembleur (si vous voulez l’utiliser).
Toute façon - retour à notre programme d’origine. La ligne suivante est :
dira [0]: = 1
Chaque broche sur l’hélice peut être définie pour une entrée ou une sortie. Lorsque l’hélice Boote, chaque broche est définie comme une entrée, donc nous devrons mener une sortie la valeur P0.
Pour définir P0 en tant que sortie, nous allons modifier la valeur de dira [0] 1. La: = est un opérateur d’assignation en vrille. Pouvez-vous deviner comment vous définiriez P10 à une sortie ? dira [10]: = 1. Vous pouvez également modifier une gamme de broches avec une seule commande. Pour changer de P0, P1, P2 et P3, il suffit d’utiliser dira [0..3]: = 1.
Répétez
Répétez raconte l’hélice pour exécuter un bloc de code plusieurs fois. Vous pouvez spécifier une condition répéter (j’ai répéter de 1 à 100) ou juste répéter éternellement de ne pas spécifier quoi que ce soit d’autre. Ce bloc de répétition se répétera pour toujours.
Code pour être répété est délimité par des tabulations. Notez les lignes gris douces sous le bloc répéter ? L’outil hélice mettre ces lignes gris là pour vous montrer à quel code est dans la boucle de répétition.
outa [0]: = 1
outa raconte l’hélice pour relier la broche à la masse ou à V +. outa fonctionne exactement comme le dira, vous pouvez définir la sortie d’une seule broche (outa [10]: = 1) ou d’un groupe de pins (outa [0..3]: = 1). Notez qu’outa n’est significative que si le code pin a été basculé vers une sortie avec dira.
En outre, l’hélice utilise une logique de Tri-state. Chaque broche peut être connecter pour sol, V +, ou mis dans un état de haute impédance.
Un état de haute impédance permet au sens de la broche si il est connecter au sol ou V +, sans modifier le signal. Il laisse plusieurs codes PIN partagent le même canal de données et faire des choses comme charlieplexing.
Connecter la broche à la masse avec :
dira [pin]: = 1
outa [pin]: = 0
Connecter la broche à V +, avec :
dira [pin]: = 1
outa [pin]: = 1
sens si la broche est reliée à un signal faible ou élevé (état de haute impédance) :
dira [pin]: = 0 (valeur par défaut au démarrage)
pinstatus: = ina [pin]
Ina fonctionne tout comme l’outa et dira, sauf il est en lecture seule. Si la broche est définie en tant qu’entrée, ina tiendra la valeur d’entrée actuelle.