Notice Notice en Français du BS2-IC.
Transcription
Notice Notice en Français du BS2-IC.
MANUEL D’UTILISATION BASIC Stamp II SOMMAIRE 1 Configuration requise 2 Liste du matériel fourni 3 Connexion au PC 4 Brochage du Stamp II 8 Programmation du Basic Stamp II • La directive VAR - définition de variables • La directive CON - définition de constantes • La directive DATA - définition de données • Expression utilisées pendant l’exécution 9 Instructions BASIC 5 Utilisation de l’éditeur • Installation de l’éditeur • Lancement de l’éditeur • Options de la ligne de commande • Entrée et édition des programmes • Touches de fonctions de l’éditeur • Chargement des programmes • Sauvegarde des programmes • Utilisation du couper - coller • Utilisation de la recherche et remplacement 6 Résumé du jeu d’instructions 7 Organisation de la mémoire BRANCH BUTTON COUNT DEBUG DTMFOUT END FOR ... NEXT FREQOUT GOSUB GOTO HIGH IF ... THEN INPUT LOOKDOWN LOOKUP Instructions BASIC (suite) LOW NAP OUTPUT PAUSE PULSIN PULSOUT PWM RANDOM RCTIME READ RETURN REVERSE SERIN SEROUT SHIFTIN SHIFTOUT SLEEP STOP TOGGLE WRITE XOUT 1 - configuration requise 3 - connexion au pc Pour pouvoir utiliser le kit de développement, il vous faut disposer d’un compatible PC dont voici la configuration minimum : Pour programmer le Stamp II vous devez le connecter au PC et exécuter l’éditeur et le logiciel de téléchargement. Dans la suite de cette notice, on suppose que vous êtes en possession d’un circuit BS2 et de sa carte support présentée cidessous. • • • • Lecteur de disquette 3,5 pouces. Port série. 128 K de RAM. MS DOS 2.0 ou supérieur. Pour alimenter le Stamp, nous vous recommandons d’utiliser une simple pile de 9 volts. Si vous voulez employer une alimentation externe, vous pouvez utiliser n’importe quelle source délivrant de 5 à 15 volts continus. Si vous utilisez une source qui délivre 5 volts, reliez-la à la borne + 5 volts ou VDD du Stamp. Cela alimentera directement le Stamp sans passer par son propre régulateur. Si vous utilisez une source qui délivre de 5 à 15 volts, employez l’entrée PWR ou Vin afin de passer par le régulateur 5 volts du Stamp Pour relier le Stamp au PC, procédez de la façon suivante : a) Enfichez le circuit BS2 à 24 pattes dans le support prévu à cet effet sur la carte de circuit imprimé fournie. Attention ! Le sens correct est tel que les mots “Parallax BS2-IC” se trouvent du côté du bouton de Reset. b) Avec votre kit de développement vous avez du recevoir un cordon muni à chaque extrémité d’une prise DB 9. Connectez l’extrémité femelle de ce cordon dans la prise d’un port série libre de votre PC. c) Connectez l’autre extrémité du câble sur le connecteur du circuit imprimé du Stamp II. d) Alimentez le Stamp avec l’une des méthodes décrites ci-avant. Attention : si vous connectez une source de tension supérieure à 5 volts à la borne + 5 V ou VDD du Stamp, vous pouvez l’endommager irrémédiablement. Zone prototype 2 - liste du matériel fourni Si vous avez acheté le kit de développement, vous devez y avoir trouvé les éléments suivants : • Câble de programmation du Stamp I (port parallèle DB 25 vers fiche à 3 broches). • Manuel du Stamp I. • Notes d’application du Stamp I (contenues dans le manuel). • Câble de programmation du Stamp II (port série DB 9 vers DB 9). • Manuel du Stamp II (que vous êtes en train de lire). • Disquette 3,5 pouces. Selectronic Clips pour pile Connecteur d’ E/S Poussoir de RESET Support du BS2 Connecteur RS 232 Connecteur d’ E/S BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 1 4 - Brochage du Stamp L’éditeur va se lancer après quelques secondes. L’écran est bleu sombre avec une ligne en haut qui permet d’accéder à l’aide en ligne. Hormis cette ligne, tout l’écran est disponible pour entrer vos programmes BASIC. OPTIONS DE LA LIGNE DE COMMANDE Trois option peuvent être utilisées sur la ligne de commande de lancement de l’éditeur ce sont : 1) STAMP2 nom de fichier : qui lance l’éditeur et charge le fichier dont le nom est spécifié. 2) STAMP2 /m : qui lance l’éditeur en mode affichage monochrome ce qui peut donner une affichage plus lisible, particulièrement sur les ordinateurs portables. 3) STAMP2 /n : qui précise quel port série est utilisé pour la connexion au Stamp II. n doit être compris entre 1 et 4. Patte Nom Description Commentaire _________________________________________________________________ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 TX RX ATN GND P0 P1 P2 P3 P4 P5 P6 P7 P8 P9 P10 P11 P12 P13 P14 P15 +5V** RES GND PWR** Sortie série Entrée série Reset actif haut Masse série Entrée/sortie 0 Entrée/sortie 1 Entrée/sortie 2 Entrée/sortie 3 Entrée/sortie 4 Entrée/sortie 5 Entrée/sortie 6 Entrée/sortie 7 Entrée/sortie 8 Entrée/sortie 9 Entrée/sortie 10 Entrée/sortie 11 Entrée/sortie 12 Entrée/sortie 13 Entrée/sortie 14 Entrée/sortie 15 Alim +5 volts Reset actif bas Masse système Entrée régulateur A relier à la patte 2 de la DB 9 du PC * A relier à la patte 3 de la DB 9 du PC * A relier à la patte 4 de la DB 9 du PC * A relier à la patte 5 de la DB 9 du PC * Nous avons essayé de rendre cet éditeur aussi intuitif d’emploi que possible : pour aller vers le haut appuyez sur la touche “flèche haut” du curseur ; pour mettre en surbrillance un caractère sur la droite, actionnez shift et la touche “flèche à droite”, et ainsi de suite. • Chargement et sauvegarde d’un programme. • Déplacement du curseur d’un caractère, d’un mot, d’une ligne, d’un écran ou au début ou à la fin d’une ligne. • Mise en surbrillance d’un caractère, d’un mot, d’une ligne, d’un écran, depuis le début ou jusqu’à la fin d’une ligne. • Couper, copier et coller du texte mis en surbrillance. • Rechercher et/ou remplacer du texte. Entrée 5 volts ou sortie régulée 5 volts Mettre au niveau bas pour un Reset Entrée +5 à +15 volts du régulateur ** : En fonctionnement normal le Stamp II consomme environ 7 mA. Dans divers modes de repos la consommation peut être réduite jusqu’à 50 µA. 5 - Utilisation de l’éditeur INSTALLATION DE L’ÉDITEUR Placez la disquette fournie dans votre lecteur. Sur votre disque dur créez un D C:\STAMP2 répertoire que vous appellerez STAMP2 (par exemple) en frappant : MD Copiez tous les fichiers du répertoire STAMP2 de la disquette dans ce répertoire en frappant : COPY A:\STAMP2\*.*,C:\STAMP2 LANCEMENT DE L’ÉDITEUR Avec le Stamp II connecté et alimenté, placez-vous dans le répertoire approprié en frappant : CD STAMP2 Une fois dans ce répertoire, vous pouvez lancer l’éditeur en frappant la commande suivante : STAMP2 Selectronic ENTRÉE ET ÉDITION DES PROGRAMMES La majorité des fonctions de l’éditeur est simple à utiliser. De plus, en une seule action sur des touches vous pouvez obtenir les fonctions suivantes : * : Pour une détection automatique du port série utilisé par le Stamp II, il doit également y avoir une connexion entre DSR (patte 6) et RTS (patte 7) dans la prise DB 9 utilisée. Cette connexion est faite sur le circuit imprimé support du Stamp II. Si vous n’utilisez pas ce circuit imprimé, réalisez cette connexion vousmême ou utilisez une option de la ligne de commande du logiciel pour préciser le port série à utiliser. 2 Normalement, le logiciel détecte automatiquement le port série utilisé grâce à la connexion entre DSR et RTS de la liaison série. Si cette connexion n’existe pas vous devez impérativement utiliser cette dernière option pour préciser le port série utilisé. TOUCHES DE FONCTIONS DE L’ÉDITEUR Vous trouverez ci-dessous la liste complète des touches de fonctions de l’éditeur avec leur effet. F1 Alt-R Alt-L Alt-M Alt-S Alt-I Alt-Q Entrée (Enter) Tab Flèche à gauche Flèche à droite Flèche en haut Flèche en bas Ctrl-Flèche gauche Ctrl-Flèche droite Home Fin (End) Page haute Page basse Ctrl-Page haute Ctrl-Page basse Affiche un écran d’aide Télécharge le programme et lance l’exécution Charge le programme depuis le disque Affiche l’affectation mémoire Sauvegarde le programme sur disque Indique la version de l’interpréteur Basic Quitte l’éditeur et retourne au DOS Entre l’information et descend d’une ligne Même fonction qu’entrée Déplace d’un caractère vers la gauche Déplace d’un caractère vers la droite Déplace d’une ligne vers le haut Déplace d’une ligne vers le bas Déplace d’un mot vers la gauche Déplace d’un mot vers la droite Déplace au début de la ligne Déplace à la fin de la ligne Déplace d’un écran vers le haut Déplace d’un écran vers le bas Déplace au début du fichier Déplace à la fin du fichier Shift-Flèche gauche Shift-Flèche droite Shift-Flèche haute Shift-Flèche basse Shift-Ctrl-Flèche gauch Shift-Ctrl-Flèche droite Shift-Home Shift-Fin Shift-Page haute Shift-Page basse Mise en surbrillance d’un caractère à gauche Mise en surbrillance d’un caractère à droite Mise en surbrillance d’une ligne vers le haut Mise en surbrillance d’une ligne vers le bas Mise en surbrillance d’un mot à gauche Mise en surbrillance d’un mot à droite Mise en surbrillance jusqu’au début de la ligne Mise en surbrillance jusqu’à la fin de la ligne Mise en surbrillance d’un écran vers le haut Mise en surbrillance d’un écran vers le bas BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr Shift-Ctrl-Page haute Shift-Ctrl-Page basse Shift-Insertion Mise en surbrillance jusqu’au début de la ligne Mise en surbrillance jusqu’à la fin de la ligne Mise en surbrillance du mot où est le curseur ESC Annule la surbrillance en cours Retour arrière Suppression Shift-Retour arrière Shift-Suppression Ctrl-Retour arrière Efface un caractère à gauche Efface le caractère sous le curseur Efface du caractère de gauche au début de la ligne Efface jusqu’à la fin de la ligne Efface la ligne Alt-X Alt-C Alt-V Alt-F Alt N Coupe le texte mis en surbrillance Copie le texte mis en surbrillance Colle le texte coupé ou copié à l’endroit du curseur Recherche une chaîne de caractères Passe à l’apparition suivante de la chaîne recherche sans remplacement, frappez “Entrée” à la place de la chaîne de remplacement. • L’éditeur efface alors la boîte de dialogue et met en surbrillance la première apparition de la chaîne. Pour la remplacer frappez Alt-V (coller de la fonction couper- coller). Pour passer à l’apparition suivante frappez Alt-N. Vous trouverez ci-dessous une liste des instructions du Basic du Stamp II. Celles repérées par une étoile (*) sont nouvelles ou très nettement améliorées par rapport au Basic du Stamp I. 6 - Résumé du jeu d’instructions BRANCHEMENTS CHARGEMENT DES PROGRAMMES Pour charger un programme depuis un fichier disque, frappez Alt-L. Un boîte de dialogue apparaît et vous demande le nom du fichier désiré. Si vous frappez le nom d’un programme qui existe effectivement il est chargé, dans le cas contraire un message d’erreur est affiché. Si vous changez d’avis, frappez ESC à la place du nom demandé. IF ... THEN BRANCH GOTO GOSUB RETURN Comparaison et branchement conditionnel. Branchement à une adresse spécifiée par un décalage. Branchement à une adresse. Appel de sous programme (imbrication maximum 4). Retour de sous programme. BOUCLES FOR .. NEXT Boucle FOR ... NEXT. SAUVEGARDE DES PROGRAMMES Pour sauvegarder un programme sur disque, frappez Alt-S. Un boîte de dialogue s’affiche demandant le nom que vous voulez donner au fichier. Après avoir donné ce nom l’éditeur sauvegarde votre programme. INSTRUCTIONS NUMÉRIQUES LOOKUP LOOKDOWN UTILISATION DU COUPER-COLLER Comme pour la majorité des logiciels actuels, l’éditeur du Stamp supporte les fonctions de couper-coller. Ceci permet de faire facilement d’importantes modifications à votre programme ou bien encore de répéter facilement des sous programmes identiques. Cette fonction s’applique au texte préalablement mis en surbrillance et utilise un presse-papier intermédiaire qui est une zone mémoire spéciale de l’éditeur prévue pour cela. Lors d’un ordre couper ou copier, le texte est copié dans le presse-papier. Lors d’un ordre coller, il est copié du presse-papier vers l’emplacement où se trouve le curseur. Notez bien que couper du texte n’est pas équivalent à l’effacer car si, dans les deux cas, le texte est bien enlevé d’où il se trouve, l’effacement le détruit définitivement alors que la fonction couper le met dans le presse-papier. Voici un exemple simple d’utilisation de ces commandes : • Commencez par mettre un texte en surbrillance, disons du curseur à la fin de la ligne par exemple. Pour cela frappez Shift-Fin. Tout ce qui se trouve du curseur à la fin de la ligne doit passer en surbrillance. • Ensuite frappez Alt-X. Le texte doit disparaître. • Amenez alors le curseur à l’endroit désiré puis frappez Alt-V. Le texte doit réapparaître, poussant si nécessaire ce qui lui fait suite. RANDOM Cherche une donnée spécifiée par un index dans une liste et la place dans une variable. Cherche la présence d’une donnée dans une liste et indique sa position. Génère un nombre pseudo aléatoire. ENTRÉES/SORTIES NUMÉRIQUES INPUT OUTPUT REVERSE LOW HIGH TOGGLE PULSIN PULSOUT BUTTON *SHIFTIN *SHIFTOUT *COUNT *XOUT Met une patte en entrée. Met une patte en sortie. Inverse la fonction d’une patte (sortie - entrée et vice versa). Met une patte au niveau bas. Met une patte au niveau haut. Met une patte en sortie et inverse son niveau. Mesure la durée d’une impulsion en entrée (résolution 2 µs). Génère une impulsion en inversant temporairement le niveau d’une patte (résolution 2 µs). Anti-rebondissement d’un poussoir, répétition automatique, branchement à une adresse s’il est en état stable. Décale des bits en entrée depuis un registre à décalage parallèle - série. Décale des bits en sortie vers un registre à décalage série - parallèle. Compte le nombre de périodes sur une patte pendant un temps déterminé (0 à 125 kHz si rapport cyclique de 50 %). Génère des codes pour le système de télécommande par le secteur américain X 10. ENTRÉES/SORTIES SÉRIES La première étape aurait pu être remplacée par Alt-C au lieu de Alt-X si nous avions voulu copier le texte sans l’enlever de son emplacement initial. UTILISATION DE LA RECHERCHE ET REMPLACEMENT L’éditeur dispose d’une fonction vous permettant de rechercher du texte et de le remplacer si vous le souhaitez. Cette fonction s’avère très utile si vous décidez, par exemple, de changer le nom d’une variable. Avec cette commande cela ne prend que quelques secondes pour agir sur tout votre programme alors que ce serait très fastidieux dans le cas contraire. Pour utiliser cette fonction frappez Alt-F. Une boîte de dialogue apparaît et vous demande la chaîne de caractères à recherche ainsi qu’une chaîne de remplacement optionnelle. Voici comment procéder : *SERIN Reçoit des caractères sur une liaison série avec de très nombreuses possibilités de paramétrage (voir description détaillée de cette instruction). *SEROUT Emet des caractères sous forme série (idem SERIN). ENTRÉES/SORTIES ANALOGIQUES PWM *RCTIME • Frappez la chaîne à rechercher. Si elle contient “Entrée” ou “Tab” vous pouvez les inclure en frappant “Ctrl-Entrée” ou “Ctrl-Tab”. • Frappez la chaîne de remplacement si nécessaire. Elle sera placée dans le presse-papier. Lors de chaque apparition de la chaîne recherchée, il vous sera alors demandé si vous voulez la remplacer ou pas. Si vous voulez juste faire une Selectronic Génère un signal impulsionnel modulé en largeur puis remet la patte correspondante en entrée. Cette instruction peut être utilisée pour générer une tension comprise entre 0 et 5 volts en utilisant un filtre R-C. Mesure le temps de charge ou décharge d’une cellule R-C. Peut être utilisée pour mesurer la valeur d’un potentiomètre. SONS *FREQOUT *DTMFOUT Génère une ou deux sinusoïdes à la fréquence spécifiée, chacune de 0 à 32 767 Hz. Génère les signaux de numérotation téléphonique DTMF. BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 3 ACCÈS À L’EEPROM *DATA Stocke des données dans l’EEPROM avant d’y télécharger le programme BASIC. Lit un octet de l’EEPROM et le met dans une variable. Ecrit un octet dans l’EEPROM. READ WRITE INSTRUCTIONS TEMPORELLES PAUSE Suspend l’exécution du programme de 0 à 65536 ms. CONTRÔLE DU PROGRAMME NAP Mise en mode sommeil pendant un court instant. La consommation est réduite. Mise en mode sommeil de 1 à 65535 secondes. La consommation est réduite à 50 µA environ. Mise en mode sommeil jusqu’à détection d’une connexion avec le PC. La consommation est réduite à 50 µA. SLEEP END MISE AU POINT DES PROGRAMMES DEBUG Le mot $0 est accessible au moyen des noms symboliques suivants : INS INL INH INA INB INC IND IN0 à IN15 Le BS2 dispose de 2 K de mémoire EEPROM utilisée pour stocker le programme Basic et les données. La mémoire non utilisée directement par le programme peut être utilisée en phase d’exécution du programme. Cette mémoire est uniquement affectée par les opérations de téléchargement du programme ou par l’exécution de ce dernier. OCTET $000 DÉBUT DES DONNÉES DÉBUT DES DONNÉES Le BS 2 contient aussi 32 octets de RAM qui servent d’emplacements pour les variables et pour les entrées/sorties. Cette mémoire est accessible sous forme de mots, octets, quartets ou bits. Chaque fois qu’une nouvelle exécution du programme Basic est lancée, cette mémoire est remise à zéro. En résumé, la mémoire EEPROM de 2 K ne sert qu’au programme et aux données et n’est affectée que DÉBUT DES DONNÉES par un téléchargement de programme ou son exécution. Elle supporte les coupures d’alimentation (c’est de DÉBUT DES DONNÉES l’EEPROM). La mémoire vive ou RAM de 32 octets est utilisée par OCTET $000 les variables d’exécution et les entrées/sorties. Elle est remise à zéro à chaque mise sous tension, lors d’un Reset ou suite à un téléchargement. La mémoire EEPROM de 2 K est organisée comme indiqué fig. 1 La mémoire RAM de 32 octets est organisée de la façon suivante : Mot Bits Description L/E _________________________________________________________________ $0 0000 0000 0000 0000 Etat des pattes en entrées Lecture seule $1 0000 0000 0000 0000 Latch des données en sortie L/E $2 0000 0000 0000 0000 Sens des entrées/sorties L/E $3 0000 0000 0000 0000 Variable à usage général L/E $4 0000 0000 0000 0000 Variable à usage général L/E $5 0000 0000 0000 0000 Variable à usage général L/E $6 0000 0000 0000 0000 Variable à usage général L/E $7 0000 0000 0000 0000 Variable à usage général L/E $8 0000 0000 0000 0000 Variable à usage général L/E $9 0000 0000 0000 0000 Variable à usage général L/E $A 0000 0000 0000 0000 Variable à usage général L/E $B 0000 0000 0000 0000 Variable à usage général L/E $C 0000 0000 0000 0000 Variable à usage général L/E $D 0000 0000 0000 0000 Variable à usage général L/E $E 0000 0000 0000 0000 Variable à usage général L/E $F 0000 0000 0000 0000 Variable à usage général L/E Selectronic Le mot entier L’octet bas de INS L’octet haut de INS Le quartet bas de INL Le quartet haut de INL Le quartet bas de INH Le quartet haut de INH Le bit 0 de INS - correspond à la patte P0 Le bit 15 de INS - correspond à la patte P15 Le mot $1 correspond aux latchs de données des sorties. Si une patte est en entrée la données écrite dans le latch correspondant est sans effet. Ce mot peut être lu et écrit à tout instant quel que soit le sens programmé pour les différentes lignes d’entrées/sorties. Envoie les valeurs des variables au PC en phase de mise au point de programme. 7 - Organisation de la mémoire 4 Le mot $0 indique toujours l’état de toutes les lignes d’entrées/sorties, qu’elles soient programmées en entrées ou en sorties. Sa lecture pour les pattes programmées en sortie indique l’état qui sort sur les pattes correspondantes. Le mot $1 est accessible au moyen des noms symboliques suivants : OUTS OUTL OUTH OUTA OUTB OUTC OUTD OUT0 à OUT15 Le mot entier L’octet bas de OUTS L’octet haut de OUTS Le quartet bas de OUTL Le quartet haut de OUTL Le quartet bas de OUTH Le quartet haut de OUTH Le bit 0 de OUTS - correspond à la patte P0 Le bit 15 de OUTS - correspond à la patte P15 Le mot $2 contient les bits de programmation du sens de fonctionnement des lignes d’entrées/sorties. Pour mettre une ligne en entrée, le bit correspondant à sa position doit être mis à zéro et pour mettre une ligne en sortie il doit être mis à un. Le mot $2 est accessible au moyen des noms symboliques suivants : DIRS DIRL DIRH DIRA DIRB DIRC DIRD DIR0 à DIR15 Le mot entier L’octet bas de DIRS L’octet haut de DIRS Le quartet bas de DIRL Le quartet haut de DIRL Le quartet bas de DIRH Le quartet haut de DIRH Le bit 0 de DIRS - correspond à la patte P0 Le bit 15 de DIRS - correspond à la patte P15 Les mots $3 à $F sont utilisables pour des variables à usage général et n’ont pas de noms prédéfinis. La directive VAR, présentée ci-après, peut être utilisée pour leur en affecter. Comme tous les interpréteurs, celui du Basic Stamp II supporte deux types d’instructions ou directives : celles utilisées lors de la compilation et celles utilisées lors de l’exécution. Les directives de compilation sont traitées lors de la compilation du programme (commandes Alt-R ou Alt-M) et ne génèrent aucun code exécutable. Les directives d’exécution sont traitées lors de la compilation mais génèrent du code exécutable qui est ensuite traité pendant l’exécution. Il n’existe que trois directives de compilation : VAR, CON et DATA. LA DIRECTIVE VAR - DÉFINITION DE VARIABLES Votre programme doit impérativement commencer par les déclarations de toutes les variables qu’il utilise. La directive VAR assigne des noms symboliques aux variables en RAM non utilisées par les entrées/sorties c’est à dire les mots $3 à $F. La directive VAR s’utilise de la façon suivante : sym1 sym2 sym3 sym4 VAR VAR VAR VAR bit nib byte word définit une variable de type bit définit une variable de type quartet définit une variable de type octet définit une variable de type mot BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr Après la définition du type de variable on peut placer un nombre entre parenthèses pour définir la taille d’un tableau, par exemple : La syntaxe à utiliser est la suivante : symbole CON expression • symbole est un nom unique pour cette constante ; sym5 VAR nib(10) définit un tableau de 10 quartets. • expression est une expression pouvant être calculée en phase de compilation. Il est également possible de définir des variables dans des variables appelées aussi variables alias. Par exemple : sym6 VAR sym4.highbit sym7 VAR sym4.lowbit sym8 VAR sym2 Les expressions utilisées peuvent contenir un ou plusieurs des opérateurs suivants : + * / << >> & | ^ crée une variable bit avec le bit de poids fort de sym4 crée une variable bit avec le bit de poids faible de sym crée un autre nom pour la variable sym2. Cette façon de procéder fait appel à des modificateurs, placés après le nom de la variable initiale et dont ils sont séparés par un point, afin de définir le type de la variable alias. Ces modificateurs sont les suivants : LOWBYTE HIGHBYTE BYE0 BYTE1 LOWNIB HIGHNIB NIB0 NIB1 NIB2 NIB3 LOWBIT HIGHBIT BIT0 à BIT3 BIT4 à BIT7 BIT8 à BIT15 Octet bas d’un mot Octet haut d’un mot Octet 0 ou bas d’un mot Octet 1 ou haut d’un mot Quartet bas d’un mot ou octet Quartet haut d’un mot ou octet Quartet 0 d’un mot ou octet Quartet 1 d’un mot ou octet Quartet 2 d’un mot Quartet 3 d’un mot Bit de poids faible d’un mot, octet ou quartet Bit de poids fort d’un mot, octet ou quartet Bit 0 d’un mot, octet ou quartet Bit 3 d’un mot, octet ou quartet Bit 4 d’un mot ou octet Bit 7 d’un mot ou octet Bit 8 d’un mot Bit 15 d’un mot. En résumé, la directive VAR est utilisée pour déclarer des variables seules ou des variables au sein de variables avec la syntaxe suivante : Pour des variables seules : symbole VAR taille(tableau) symbole est un nom unique pour une variable ; taille peut être WORD, BYTE, NIB ou BIT ; tableau est optionnel et indique la taille d’un tableau. Pour des variables dans des variables : symbole VAR variable.modificateur symbole est un nom unique pour une variable ; variable est le nom d’une variable déjà définie ; modificateur correspond à un des codes cités ci-avant. Le compilateur groupe les variables par taille et leur assigne la RAM inutilisée. La commande Alt-M permet de voir le résultat de cette opération. N’oubliez pas que vous pouvez créer des variables alias pour les pattes d’entrées/sorties ; ainsi : poussoir VAR in5 permet de lire l’état de P5 au travers du nom de variable poussoir. Note à l’attention des utilisateurs de Stamp I : W0 à W12 ainsi que B0 à B25 sont reconnus par le compilateur afin de permettre l’utilisation de programmes initialement écrits pour le Stamp I. Il est donc inutile de les définir en début de programme. LA DIRECTIVE “CON” - DÉFINITION DE CONSTANTES La directive CON permet de définir des constantes et de leur affecter un nom selon un principe similaire à celui de la directive VAR. Selectronic addition soustraction multiplication division entière décalage à gauche décalage à droite ET logique OU logique OU EXCLUSIF logique LA DIRECTIVE DATA - DÉFINITION DE DONNÉES La directive DATA est utilisée pour définir des données dans l’espace EEPROM non utilisé directement par votre programme. Initialement le pointeur des données ainsi définies est mis à zéro ; il avance ensuite unité par unité pour chaque octet de donnée déclaré. Habituellement la directive DATA est précédée par un symbole. Ce symbole est affecté par le compilateur au pointeur de données. Ce pointeur de données peut être modifié à tout instant en utilisant le symbole @suivi par la nouvelle valeur à lui affecter. La directive DATA peut être utilisée de deux façons différentes selon qu’elle s’applique à des données définies ou indéfinies. Voici quelques exemples : DONNÉES DÉFINIES : ex1 DATA 0,1,2,3,4,5,6,7,8,9 ex2 DATA word1000 ex3 DATA 0(256) dix octets sont définis définit deux octets $E8 et $03 initialise 256 octets à 0 DONNÉES INDÉFINIES : ex4 DATA ex5 DATA (1024) word (16) réserve 1 K octets indéfinis réserve 16 mots indéfinis. Il importe de noter que les données définies et les programmes sont toujours téléchargés en mémoire EEPROM du BS2 alors que les données indéfinies ne le sont pas. Ceci permet éventuellement de changer de programme tout en conservant les mêmes données sous réserve d’avoir fait attention à leur emplacement exact. La commande Alt-M permet de voir l’affectation mémoire de l’EEPROM et donc peut vous aider pour ce genre d’opération. EN RÉSUMÉ : • La directive DATA peut être précédée par un symbole qui est affecté à la valeur du pointeur de données. • Les données sont par défaut en octets mais le mot WORD peut être utilisé pour définir des données sur deux octets. • Le symbole @ peut être utilisé pour modifier la valeur du pointeur de données. • Des données définies peuvent être répétées en utilisant un nombre compris entre parenthèses placé immédiatement après. • De l’espace peut être réservé pour des données indéfinies en utilisant un nombre compris entre parenthèses, non précédé par une valeur de donnée. • Une directive DATA peut faire référence aux symboles d’autres directives DATA préalablement définies. EXPRESSION UTILISÉES PENDANT L’EXÉCUTION Les expressions utilisées pendant l’exécution du programme peuvent contenir des variables, des constantes, des opérateurs et des parenthèses. Elles sont calculées en utilisant de l’arithmétique entière sur 16 bits. CONSTANTES Les constantes peuvent être déclarées de quatre manières différentes : décimal, binaire, hexadécimal ou ASCII. Les nombres hexadécimaux sont précédés du symbole dollar ($). Les nombres binaires du symbole pour cent (%) et les constantes ASCII sont comprises entre BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 5 des doubles guillemets (“ “). Si aucun de ces symboles n’est utilisé, les constantes sont présumées être en décimal. Voici quelques exemples Les opérateurs à deux éléments de plus faible priorité suivants peuvent aussi être utilisés : 100 $64 %0110110 “A” “Hello” < <= = => > <> Décimal Hexadécimal Binaire A en ASCII (65 ou $41) “H”, “e”, “l”, “l”, “o” en ASCII VARIABLES Les variables peuvent être utilisées de multiples façons : variable variable.highbit variable(index) inférieur à inférieur ou égal à égal à supérieur ou égal à supérieur à différent de Nota : ces opérateurs de comparaison fournissent 0 comme résultat si la comparaison est fausse ou $FFFF si elle est vraie. Ces résultats peuvent ainsi être combinés avec NOT, AND, OR et XOR pour réaliser des tests complexes. variable utilisée normalement utilisation d’un modificateur une variable suivie par une expression est indexée comme un tableau dont le premier élément est repéré par l’index 0. 6 - Résumé du jeu d’instructions BRANCH Si une variable a été définie sous la forme : chaîne VAR byte(10), elle peut être utilisées sous une des formes suivantes : Branche à l’adresse spécifiée par un index. BRANCH index (adresse 0, adresse 1, ...., adresse N) chaîne chaîne(0) chaîne(1) chaîne(9) chaîne.lownib(index) chaîne.lowbit(index) le premier octet le premier octet le deuxième octet le dixième et dernier octet index peut varier de 0 à 19 index peut varier de 0 à 79. OPÉRATEURS ARITHMÉTIQUES Index est une constante ou une variable qui précise quelle adresse va être utilisée (0 à N). Adresse X est une étiquette définissant une adresse. Exemple : branch b2, (abc, def, ghi) ‘va à l’adresse abc si b2 vaut 0 ‘va à l’adresse def si b2 vaut 1 ‘va à l’adresse ghi si b2 vaut 2 ‘continue en séquence si b2 est une autre valeur Il existe deux types d’opérateurs différents, les opérateurs à un élément et les opérateurs à deux éléments. Les opérateurs à un élément précèdent toujours une variable ou une constante et ont la priorité la plus élevée. Voici leur liste : SQR racine carrée d’un nombre non signé sur 16 bits valeur absolue d’un nombre signé sur 16 bits complément à 1 d’une donnée sur 16 bits complément à 2 d’une donnée sur 16 bits (négation) décodage d’une valeur sur 4 bits (ex. 0 ->1, 3 ->8, etc ... ) encodage d’une valeur sur 16 bits (ex. 32768 -> 15, 8192 -> 13 ) cosinus d’une valeur sur 8 bits. Résultat dans la plage +/-127 ; le cercle trigonométrique varie de 0 à 255. sinus d’une valeur sur 8 bits. Résultat dans la plage +/- 127. ABS ~ DCD NCD COS SIN Les opérateurs à deux éléments suivants peuvent être utilisés : + * ** */ / // MIN MAX & | ^ DIG << >> REV addition soustraction multiplication multiplication (fournit le mot de poids fort du résultat) multiplication (fournit le mot de poids faible du résultat) division (fournit le quotient) division (fournit le reste) maintient une variable supérieure ou égale à une valeur maintient une variable inférieure ou égale à une valeur ET logique OU logique OU exclusif logique extrait un chiffre (ex. 12345 dig 3 donne 2) décalage à gauche décalage à droite inverse l’ordre des bits Les opérateurs à un élément ont priorité sur les opérateurs à deux éléments ; de plus les expressions sont évaluées de la gauche vers la droite. Des parenthèses peuvent être utilisées pour modifier ces priorités. Le nombre maximum de parenthèses utilisables est de huit. Des opérateurs binaires sont disponibles pour les expressions conditionnelles faisant intervenir IF ; ce sont : NOT AND, OR, XOR 6 priorité la plus élevée priorité la plus élevée des opérateurs binaires à deux éléments. Selectronic BUTTON Lit l’état d’un poussoir et effectue un anti-rebondissement, l’auto-répétition, le branchement si le poussoir est dans un état stable. BUTTON patte, étatbas, délai, vitesse, variable, étatcible, adresse Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. Etatbas est une constante ou variable logique (0 ou 1) qui précise l’état logique du poussoir lorsqu’il est appuyé. Délai est une constante ou variable de 0 à 255 qui indique pendant combien de temps le poussoir doit être actionné pour générer un fonction de répétition automatique. Si délai vaut 0 les fonctions d’anti-rebondissement et de répétition automatique sont inhibées. Si délai vaut 255 l’antirebondissement a lieu mais pas la répétition automatique. Vitesse est une constante ou variable de 0 à 255 qui précise la vitesse de la répétition automatique. Cette vitesse est exprimé en nombre de cycle de l’instruction BUTTON. Variable est la variable de travail de BUTTON. Elle doit être mise à zéro avant la première utilisation de cette instruction. Etatcible est une constante ou variable logique qui précise dans quel état doit être le poussoir pour que le branchement ait lieu ( 0 = non appuyé, 1 = appuyé). A d r e s s e est une étiquette qui précise l’adresse où va brancher le programme lorsque le poussoir sera dans l’état définit par étatcible. COUNT Compte le nombre de périodes sur une patte pendant un certain temps. COUNT patte,période,variable mot Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser ; patte qui est placée en entrée. Période indique le nombre de millisecondes pendant lequel le comptage va avoir lieu. Variable mot est une variable de type mot (16 bits) dans laquelle est placé le résultat. Si une plage de variation de cette variable de 0 à 255 suffit, une variable de type octet peut être utilisée. Le signal appliqué à la patte utilisée doit avoir des états hauts et bas d’une durée au moins égale à 4 µs ce qui limite la fréquence maximum utilisable à 125 kHz (en supposant un rapport cyclique de 50 %). BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr DEBUG DTMFOUT Affiche des variables et des messages sur l’écran du PC aux fins de mise au point. Génère les tonalités de numérotation téléphonique DTMF. DTMFOUT patte,{on,off,}[touche, touche, ...] DEBUG données Les données qui suivent l’instruction DEBUG sont affichées sur l’écran du PC lors de l’exécution de cette dernière. De multiples directives de formatage et de multiples types de variables sont utilisables. DEBUG peut être suivi de plusieurs variables et chaînes de caractères séparées par des virgules. Les chaînes de caractères sont affichées telles quelles, les variables sont formatées conformément à un certain nombre de préfixes ASC? STR variable octet STR variable octet\n REP DEC DEC1-DEC5 donnée\n donnée donnée SDEC SDEC1-SDEC5 donnée donnée HEX HEX1-HEX4 donnée donnée SHEX SHEX1-SHEX4 donnée donnée IHEX IHEX1-IHEX4 donnée donnée ISHEX donnée ISHEX1-ISHEX4 donnée BIN BIN1-BIN16 donnée donnée SBIN SBIN1-SBIN16 donnée donnée IBIN IBIN1-IBIN16 donnée donnée ISBIN donnée ISBIN1-ISBIN16 donnée affiche la valeur ASCII avec la relation = affiche la valeur d’un tableau d’octets jusqu’à 0 affiche la valeur de n éléments d’un tableau d’octets affiche la donnée n fois affiche la donnée en décimal affiche la donnée en décimal 1 à 5 chiffres affiche la donnée en décimal signé affiche la donnée en décimal signé 1 à 5 chiffres affiche la donnée en hexadécimal affiche la donnée en hexadécimal 1 à 4 chiffres affiche la donnée en hexadécimal signé affiche la donnée en hexadécimal signé 1 à 4 chiffres affiche la donnée en hexadécimal avec $ affiche la donnée en hexadécimal avec $ 1 à 4 chiffres affiche la donnée en hexadécimal signé avec $ affiche la donnée en hexadécimal signé avec $1 à 4 chiffres affiche la donnée en binaire affiche la donnée en binaire 1 à 4 chiffres affiche la donnée en binaire signé affiche la donnée en binaire signé 1 à 4 chiffres affiche la donnée en binaire avec % affiche la donnée en binaire avec % 1 à 4 chiffres affiche la donnée en binaire signé avec % affiche la donnée en binaire signé avec % 1 à 4 chiffres Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. Elle est placée en sortie pour la durée de l’instruction. Les état on (marche) et off (arrêt) sont par défaut de 200 ms et 50 ms. On et off sont optionnels et permettent de modifier les deux valeurs par défaut. Ils sont exprimés en ms. Touche indique quelles tonalités on souhaite générer conformément à l’affectation normalisé DTMF des touches des claviers de téléphone. 0 à 9 correspondent aux chiffres 0 à 9, 10 correspond à *, 11 correspond à # et 12 à 15 correspondent aux lettres A à D disponibles sur certains claviers. La patte choisie peut être filtrée par une cellule R-C pour disposer d’une sinusoïde “propre”. Il est également possible de piloter directement un hautparleur haute impédance selon le schéma ci-dessous. Le condensateur série est nécessaire sauf si vous utilisez un haut-parleur piézo électrique. Le condensateur en parallèle sur le haut-parleur est optionnel mais utile pour réduire les bruits à haute fréquence. END Termine un programme END Fait passer le Stamp en mode sommeil pour une durée indéfinie. Toutes les 2,3 secondes environ, les entrées/sorties passent en haute impédance pendant 18 ms. La consommation du circuit dans ce mode est de l’ordre de 50 µA. END n’utilise aucun paramètre et ne peut être terminée que par un Reset matériel. FOR ... NEXT Réalise une boucle de type FOR ... NEXT DEBUG peut également être suivi par un certain nombre de directives de formatage interprétées par le PC ; ce sont : CLS HOME BELL BKSP TAB CR efface l’écran et positionne le curseur en haut à gauche positionne le curseur en haut à gauche génère un “bip” sur le haut-parleur du PC déplace le curseur d’une position vers la gauche déplace le curseur de huit colonnes vers la droite retour chariot et saut ligne. Exemple de programme utilisant DEBUG : abc loop1: loop2: VARbyte DEBUG cls,bell DEBUG sdec? sin abc abc = abc+1 if abc<>0 then loop2 pause 1000 goto loop1 Selectronic ‘définit une variable octet appelée abc ‘efface l’écran et génère un “bip” ‘affiche le sinus signé décimal de abc ‘incrémente abc ‘boucle jusqu’au débordement de abc ‘pause pendant une seconde ‘répète le programme FOR variable = début TO fin {STEP pas} NEXT Pas est une donnée optionnelle et précise de combien doit être incrémentée ou décrémentée la variable de boucle. En son absence, le pas est fixé à +1. Aucun signe ne doit être précisé pour la variable Pas car celui-ci est déterminé automatiquement par le compilateur en fonction des valeurs début et fin. La variable est rendue égale à la valeur début puis le code compris entre FOR et NEXT est exécuté. La variable est alors incrémentée de 1 (ou du pas spécifié par la directive optionnelle STEP) et, si elle n’est pas égale ou supérieure à fin, les instructions comprises entre FOR et NEXT sont exécutées à nouveau et ainsi de suite. Lorsque la variable devient égale ou supérieure à fin, le programme continue en séquence après NEXT. Quelles que soient les valeurs de début et de fin la boucle est toujours exécutée au moins une fois. Un programme peut comporter autant de boucles FOR - NEXT que vous le souhaitez mais il ne faut pas imbriquer les unes dans les autres plus de 16 boucles. BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 7 FREQOUT INPUT Génère un signal périodique pendant un certain temps. Place une patte en entrée. FREQOUT patte, milliseconde, fréq1 {,freq2} Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. Elle est placée en sortie pour la durée de l’instruction. Milliseconde indique la durée de génération du signal en millisecondes. Freq1 indique la première fréquence à générer en Hz (de 0 à 32 767). Freq2 est optionnel est indique la deuxième fréquence à générer. INPUT patte Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. Place la patte correspondante en entrée ce qui permet ensuite au programme de lire le niveau logique auquel elle se trouve. Cette instruction est sans effet sur le latch de sortie de la patte sélectionnée. La patte choisie peut être filtrée par une cellule R-C pour disposer d’une sinusoïde “propre”. Il est également possible de piloter directement un hautparleur haute impédance selon le schéma ci-dessous. LOOKDOWN Cherche une valeur et fournit un index de sa position. LOOKDOWN référence, ??[valeur0, valeur1, ... valeurN], variable Le condensateur série est nécessaire sauf si vous utilisez un haut-parleur piézo électrique. Le condensateur en parallèle sur le haut-parleur est optionnel mais utile pour réduire les bruits à haute fréquence. GOSUB Exécute un saut à un sous-programme avec retour ultérieur. Référence est la constante ou la variable dont vous recherchez la présence dans une liste de valeurs. ?? est un des opérateurs de comparaison autorisés (voir ci-avant dans ce manuel). La valeur par défaut est =. Valeur0 à ValeurN est la liste des valeurs auxquelles va être comparée la référence. Variable contient le résultat de la recherche ou n’est pas affectée si la recherche est négative. L’instruction compare une liste de valeurs avec une référence. Si une égalité est trouvée, elle place le numéro de rang de cette valeur (de 0 à N) dans la variable. Si aucune valeur ne concorde, la variable n’est pas affectée. Si par exemple la liste de valeurs est : 4, 13, 15, 28, 8 et que la référence est 15, la variable contiendra 2 puisque 15 est la troisième valeur de la liste et que le décompte commence à partir de 0. GOSUB adresse A d r e s s e est une étiquette qui indique l’adresse de début du sousprogramme. LOOKUP Recherche une variable en fonction de la valeur d’un index. Exécute un saut au sous-programme dont l’adresse est spécifiée. Lorsque le sous-programme est terminé, l’instruction RETURN (voir ce mot) fait poursuivre l’exécution à l’instruction qui suit GOSUB. On peut utiliser jusqu’à 255 GOSUB dans un seul et même programme mais il ne faut pas en imbriquer plus de 4. GOTO Exécute un saut à un autre point du programme. GOTO adresse LOOKUP index,[valeur0, valeur1, ..., valeurN],variable Index spécifie la position de la valeur de la liste qui doit être placée dans la variable. Valeur0 à ValeurN est la liste des valeurs disponibles. Variable contient le résultat de l’instruction. Recherche la valeur spécifiée par l’index dans la liste de valeurs et place celle-ci dans la variable. Si par exemple la liste de valeurs est 2, 13, 15, 28 et 8 et que l’index vaille 1, la valeur placée dans la variable sera 13 puisque le décompte commence à partir de 0. Si l’index est plus grand que le nombre de valeurs disponibles, la variable n’est pas affectée. Adresse est une étiquette qui indique l’adresse à laquelle se poursuit l’exécution du programme. LOW Fait passer une patte en sortie et au niveau logique bas. HIGH Fait passer une patte en sortie et au niveau logique haut. LOW patte Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. La patte spécifiée est mise en sortie et au niveau logique bas. HIGH patte Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. La patte spécifiée est mise en sortie et au niveau logique haut. NAP Place le circuit en sommeil un court instant. IF ... THEN Branchement conditionnel. IF expression conditionnelle THEN adresse Adresse est une étiquette qui indique l’adresse à laquelle se continue l’exécution du programme si la comparaison est vraie c’est à dire si le résultat de l’expression conditionnelle est différente de zéro. NAP x x est une constante ou variable qui spécifie la durée de ce mode selon le tableau ci-dessous. Cette instruction place le Stamp en mode sommeil pour une courte durée. Lorsque ce délai est expiré, les entrées/sorties passent en haute impédance pendant 18 ms et l’exécution du programme reprend à l’instruction suivante. Dans le cas contraire, le programme continue son exécution en séquence. 8 Selectronic BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr Valeur de x Nombre de secondes _____________________________________ 0 0,018 1 0,036 2 0,072 3 0,140 4 0,290 5 0,580 6 1,200 7 2,300 OUTPUT Place une patte en sortie. OUTPUT patte Patte est une constante ou variable (0 à 15) qui indique le numéro de patte à utiliser. Place la patte choisie en sortie. Le latch de sortie correspondant n’est pas affecté. L’instruction génère un signal impulsionnel modulé en durée sur la patte spécifiée et place ensuite celle-ci en entrée. Cette instruction peut être utilisée pour produire très facilement une tension analogique grâce à une résistance et un condensateur comme indiqué sur le schéma ci-après. Compte tenu de la décharge inévitable du condensateur au fil du temps, l’instruction doit être répétée régulièrement pour mettre à jour ou rafraîchir cette charge. RANDOM Génère un nombre pseudo aléatoire. PAUSE Effectue une pause de durée variable. PAUSE millisecondes Millisecondes est une constante ou variable de 0 à 65535 qui spécifie la durée de la pause. Suspend l’exécution du programme pendant un certain nombre de millisecondes. RANDOM variable mot Variable est utilisée à la fois comme variable de travail et pour récupérer le nombre pseudo aléatoire généré par l’instruction. Attention cette variable est nécessairement de type mot de 16 bits. Cette variable est traitée 16 fois de suite afin de changer tous ses bits. PULSIN RCTIME Mesure la durée d’une impulsion en entrée. PULSIN patte, état, variable Mesure le temps de charge/décharge d’une cellule R-C. RCTIME patte, état, variable Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Etat est une constante ou variable égale à 0 ou 1 qui indique sur quel état de la patte doit avoir lieu la mesure. Variable est utilisée pour stocker le résultat de la mesure compris entre 1 et 65535. Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Etat indique l’état dans lequel doit être la patte pendant la mesure. Variable contient le résultat de la mesure sur 16 bits. La résolution est de 2 µs et si un débordement se produit (temps supérieur à 131 ms environ), la variable est mise à zéro. La patte correspondante est mise en entrée et la durée de l’impulsion qui y est appliquée est mesurée avec une résolution de 2 µs. Si un débordement de la variable se produit c’est à dire si l’impulsion dure plus que 65535 * 2 µs, soit environ 131 ms, la variable est mise à zéro. Cette instruction est utile pour mesurer le temps de charge ou décharge d’un condensateur. Comme le niveau logique bas des entrées du Stamp est d’environ 1,4 volt il est préférable de faire décroître la tension du condensateur de 5 volts vers le niveau bas ce qui donne une plage utile de 3,6 volts. PULSOUT Génère une impulsion calibrée en sortie. PULSOUT patte, temps Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Temps est une constante ou variable de 0 à 65535 qui spécifie la durée de l’impulsion par pas de 2 µs. L’instruction génère une impulsion en inversant le niveau de la patte pendant le laps de temps spécifié. Si “temps” est nul, aucune impulsion n’est générée. PWM Ainsi par exemple pour mesurer la valeur d’un potentiomètre il suffit de réaliser le schéma ci contre. Le programme n’a plus alors qu’à mettre la patte choisie au niveau haut pour décharger le condensateur puis exécuter une instruction RCTIME pour mesurer son temps de charge. Le résultat de cette instruction correspond alors à la valeur du potentiomètre à un coefficient multiplicateur près. Nota : la résistance de 10 ohms est nécessaire pour éviter un court-circuit éventuel entre un état haut de la patte utilisée et la masse. Génère un signal impulsionnel modulé en largeur pendant un certain temps. PWM patte, rapport cyclique, cycles Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Rapport cyclique est une constante ou variable de 0 à 255 qui précise le rapport cyclique. Cycles est une constante ou variable de 0 à 255 qui spécifie le nombre de périodes du signal à générer. Chaque cycle prend environ 1 ms. Selectronic Exemple de programme : pot VAR word loop: HIGH 1 PAUSE 1 RCTIME 0,1,pot DEBUG ?pot GOTO loop ‘place la sortie au niveau haut ‘attend que le condensateur soit déchargé ‘réalise la mesure ‘affiche le résultat de la mesure sur le PC ‘répète le processus. BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 9 Voici quelques exemples de valeurs pour “mode” : READ Lit un octet dans l’EEPROM. READ adresse, variable Adresse est une constante ou variable de 0 à 2047 qui spécifie l’adresse à lire. Variable reçoit la valeur lue dans la mémoire EEPROM. RETURN Retour de sous-programme. 3313 3313+$2000 3313+$4000 3313+$6000 813 396 188 84+$6000 32 6 300 bauds, 8 bits, pas de parité, données vraies 300 bauds, 7 bits, parité, données vraies 300 bauds, 8 bits, pas de parité, données inversées 300 bauds, 7 bits, parité, données inversées 1200 bauds, 8 bits, pas de parité, données vraies 2400 bauds, 8 bits, pas de parité, données vraies 4800 bauds, 8 bits, pas de parité, données vraies 9600 bauds, 7 bits, parité, données inversées 19200 bauds, 8 bits, pas de parité, données vraies 38400 bauds, 8 bits, pas de parité, données vraies. Errp est une étiquette optionnelle qui indique où doit se brancher le programme en cas d’erreur de parité. RETURN Fait poursuivre l’exécution du programme à l’instruction qui suit immédiatement le GOSUB ayant appelé le sous-programme se terminant par cette instruction. RETURN n’utilise aucun paramètre. Si RETURN est exécuté sans GOSUB préalable l’exécution du programme en cours reprend au début. REVERSE Timeout est une valeur optionnelle qui indique combien de temps attendre avant de brancher à l’étiquette Etiqt. Le temps est mesuré en ms et “timeout” peut varier de 1 à 65535. Donnée est la ou les données reçues et respecte les conventions ci-après : variable STR tableau\L{\E} Inverse le sens de fonctionnement d’une patte. REVERSE patte Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Inverse le sens de fonctionnement de la patte spécifiée. Si elle était entrée elle devient sortie et vice versa. L’état du latch de sortie correspondant n’est pas affecté. SERIN Réception de données sous forme série asynchrone. SERIN patte r {\patte f},mode, {errp,}{timeout,etiqt,}[donnée] SKIP L WAITSTR tableau WAITSTR tableau\L WAIT (valeur, valeur, ...) DEC variable DEC1-DEC5 variable SDEC variable SDEC1-SDEC5 variable HEX variable HEX1-HEX4 variable SHEX variable SHEX1-SHEX4 variable Initialise une liaison série sur l’une des pattes du Stamp, configure cette liaison et attend un ou plusieurs qualifieurs optionnels avant de prendre en compte les données reçues. IHEX variable Patte r est une constante ou variable de 0 à 16 spécifiant le numéro de patte utilisée pour la réception des données. Elle peut prendre la valeur de 0 à 15 pour une patte normale et reçoit alors des niveaux TTL ou prendre la valeur 16 et recevoir des niveaux pseudo RS 232 via l’entrée RX (patte 2) du BS-II. * Si une patte TTL est utilisée, le fonctionnement est assuré avec des circuits travaillant au même niveau. Une réception RS 232 sur une patte TTL est possible sous réserve de placer en série une résistance de 22 kohms faute de quoi l’entrée TTL risque d’être détruite. * La patte 2 est prévue pour recevoir directement des niveaux RS 232 de + ou - 10 volts d’amplitude. Aucune résistance série n’est donc nécessaire. * Dans tous les cas le seuil haut/bas est de 1,4 volts ce qui signifie que tout signal de niveau inférieur est vu comme étant un zéro et tout signal de niveau supérieur comme étant un un. ISHEX variable IHEX1-IHEX4 variable ISHEX1-ISHEX4 variable BIN variable BIN1-BIN16 variable SBIN variable SBIN1-SBIN16 variable IBIN variable IBIN1-IBIN16 variable ISBIN variable ISBIN1-ISBIN16 variable place la donnée reçue dans la variable reçoit une suite de données placées dans le tableau d’octets de longueur L avec le caractère de fin optionnel E (des zéros remplissent les octets manquants éventuels). reçoit mais ignore L octets attend un tableau d’octets terminé par un zéro attend un tableau d’octets de longueur L attend jusqu’à une séquence de six octets reçoit une donnée en décimal reçoit une donnée en décimal de 1 à 5 chiffres reçoit une donnée en décimal signé reçoit une donnée en décimal signé de 1 à 5 chiffres reçoit une donnée en hexadécimal reçoit une donnée en hexadécimal de 1 à 4 chiffres reçoit une donnée en hexadécimal signé reçoit une donnée en hexadécimal signé de 1 à 4 chiffres reçoit une donnée en hexadécimal précédée de $ reçoit une donnée en hexadécimal précédée de $ de 1 à 4 chiffres reçoit une donnée en hexadécimal signé précédée de $ reçoit une donnée en hexadécimal signé précédée de $ de 1 à 4 chiffres reçoit une donnée en binaire reçoit une donnée en binaire de 1 à 4 chiffres reçoit une donnée en binaire signé reçoit une donnée en binaire signé de 1 à 4 chiffres reçoit une donnée en binaire précédée de % reçoit une donnée en binaire précédée de % de 1 à 4 chiffres reçoit une donnée en binaire signé précédée de % reçoit une donnée en binaire signé précédée de % de 1 à 4 chiffres Patte f est une constante ou variable optionnelle de 0 à 15 spécifiant le numéro de patte utilisée pour les protocoles de dialogue. Mode est une valeur composite spécifiant le mode de fonctionnement de la liaison série conformément aux indications ci-dessous. * Les bits 0 à 12 de “mode” correspondent à la période de l’horloge bit exprimée en microsecondes et diminuée de 20. * Le bit 13 est à zéro pour une transmission sur 8 bits sans parité et à un pour une transmission sur 7 bits avec parité paire. * Le bit 14 est à zéro pour une émission de données “vraies” et à un pour une émission de données “inversées”. * Le bit 15 n’est pas utilisé par SERIN. Une formule simple permet de calculer la période bit de la transmission codée sur les bits 1 à 12 : int ( 1 000 000 / vitesse en bauds) - 20. 10 Selectronic SEROUT Emission de données sous forme série asynchrone. SEROUT patte t, mode, {tempo,}[donnée] ou SEROUT patte t {\patte f},mode, {timeout,etiqt,}[donnée] Initialise une liaison série sur l’une des pattes du Stamp, configure cette liaison et émet un ou plusieurs caractères sous forme série asynchrone. Patte t est une constante ou variable de 0 à 16 spécifiant le numéro de patte utilisée pour l’émission des données. Elle peut prendre la valeur de 0 à 15 pour une patte normale et émet alors des niveaux TTL ou prendre la valeur 16 et émettre des niveaux pseudo RS 232 via la sortie TX (patte 1) du BS-II. BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr * Si une patte TTL est utilisée, le fonctionnement est assuré avec des circuits travaillant au même niveau. Une émission vers des équipements RS 232 depuis une patte TTL est possible mais si ces équipements nécessitent de vrais niveaux RS 232, ils risquent alors de ne pas fonctionner correctement. * La patte 1 est prévue pour émettre directement des pseudos niveaux RS 232 variant entre + 5 volts et le niveau présent sur RX. Si RX est raccordée à un équipement RS 232 véritable, une tension de - 10 à - 12 volts y est présente et le système fonctionne alors correctement. Patte f est une constante ou variable optionnelle de 0 à 15 spécifiant le numéro de patte utilisée pour les protocoles de dialogue. Mode est une valeur composite spécifiant le mode de fonctionnement de la liaison série conformément aux indications ci-dessous. * Les bits 0 à 12 de “mode” correspondent à la période de l’horloge bit exprimée en microsecondes et diminuée de 20. * Le bit 13 est à zéro pour une transmission sur 8 bits sans parité et à un pour une transmission sur 7 bits avec parité paire. * Le bit 14 est à zéro pour une émission de données “vraies” et à un pour une émission de données “inversées”. * Le bit 15 est à zéro pour une sortie normale et à un pour une sortie de type drain ouvert/source ouverte. Si la patte RS 232 (patte 1) est spécifiée pour patte t les bits 14 et 15 de “mode” sont ignorés sauf pour patte f. Une formule simple permet de calculer la période bit de la transmission codée sur les bits 1 à 12 : Variable contient la donnée reçue. Bits est un nombre de bits optionnel qui peut varier de 1 à 16 avec 8 comme valeur par défaut. Les symboles suivants sont définis pour être utilisés avec SHIFTIN : MSBPRE LSBPRE MSBPOST LSBPOST égal à 0 égal à 1 égal à 2 égal à 3. SHIFTOUT Décale des bits en sortie de manière synchrone. SHIFTOUT patte d, patte c, mode, [donnée {\bits}, ...] Patte d est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour les données. Patte c est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour l’horloge. Mode dépend du mode de travail selon le tableau ci-dessous : Mode Données ______________________ 0 LSB en premier 1 MSB en premier int ( 1 000 000 / vitesse en bauds) - 20. Donnée contient la donnée à émettre. Voici quelques exemples de valeurs pour “mode” : 3313 3313+$2000 3313+$4000 3313+$6000 813 396 188 84+$6000 32 6 300 bauds, 8 bits, pas de parité, données vraies 300 bauds, 7 bits, parité, données vraies 300 bauds, 8 bits, pas de parité, données inversées 300 bauds, 7 bits, parité, données inversées 1200 bauds, 8 bits, pas de parité, données vraies 2400 bauds, 8 bits, pas de parité, données vraies 4800 bauds, 8 bits, pas de parité, données vraies 9600 bauds, 7 bits, parité, données inversées 19200 bauds, 8 bits, pas de parité, données vraies 38400 bauds, 8 bits, pas de parité, données vraies. Timeout est une valeur optionnelle qui indique combien de temps attendre avant de brancher à l’étiquette Etiqt. Le temps est mesuré en ms et “timeout” peut varier de 1 à 65535. L’utilisation de “timeout” et de son étiquette associée est seulement significative dans le cas de l’emploi d’un protocole de dialogue (patte f). Tempo est une valeur optionnelle qui indique combien de temps attendre entre chaque octet transmis. Le temps est indiqué en ms et peut varier de 1 à 65 535 ms. Tempo ne doit être employée que si le protocole de dialogue n’est pas utilisé. Donnée est la ou les données à émettre et respecte les conventions de formatage vues pour l’instruction DEBUG. Vous êtes priés de vous reporter à la description de cette instruction pour plus de précisions à ce sujet. SHIFTIN Bits est un nombre de bits optionnel qui peut varier de 1 à 16 avec 8 comme valeur par défaut. Les symboles suivants sont définis pour être utilisés avec SHIFTOUT : LSBFIRST MSBFISRT égal à 0 égal à 1 Les données sont fournies en sortie à environ 16 kbits par seconde. SLEEP Passe en mode sommeil pendant X secondes. SLEEP x x est une constante ou variable de 0 à 65535 qui spécifie la durée du mode sommeil. Cette instruction met le Stamp en mode sommeil pendant un certain nombre de secondes. Toutes les 2,3 secondes environ, les entrées/sorties passent en haute impédance pendant 18 ms. La résolution de cette instruction est de 2,3 secondes et sa précision est donc supérieure à 1 % pour des périodes relativement longues vis à vis de cette dernière. Lorsque le délai spécifié est écoulé, l’exécution reprend avec l’instruction suivante. Décale des bits en entrée de manière synchrone. SHIFTIN patte d, patte c, mode, [variable {\bits}, ...] Patte d est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour les données. Patte c est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour l’horloge. Mode dépend du mode de travail selon le tableau ci-dessous : Mode Données Horloge _____________________________________________________________ _ 0 MSB en premier Données valides sur front montant 1 LSB en premier Données valides sur front montant 2 MSB en premier Données valides sur front descendant 3 LSB en premier Données valides sur front descendant Selectronic STOP Arrête l’exécution. STOP L’exécution du programme est arrêtée mais le mode basse consommation n’est pas activé. Cette instruction est donc identique à END mais maintient les entrées/sorties à leurs niveau sans jamais les faire passer en haute impédance. Seul un Reset matériel permet de quitter le mode STOP. BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr 11 TOGGLE Place une patte en sortie et change son niveau. NOTES TOGGLE patte Patte est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée. Cette instruction met la patte spécifiée en sortie si elle ne l’était pas déjà et change son état (haut vers bas ou vice versa). WRITE Ecrit un octet dans l’EEPROM. WRITE adresse, donnée Adresse est une constante ou variable de 0 à 2047 qui spécifie l’adresse où écrire. Donnée est une constante ou variable de 0 à 255 à écrire dans la mémoire EEPROM. Cette instruction écrit la donnée à l’adresse spécifiée dans la mémoire EEPROM. XOUT Génère des codes compatibles du système X10. XOUT patte m,patte z, [maison\touche {\cycles, ...}] Patte m est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour la commande de modulation. Elle est mise en sortie au niveau bas. Patte z est une constante ou variable de 0 à 15 spécifiant le numéro de patte utilisée pour l’information de détection de passage par zéro des modules X10. Maison est le code “maison” du système X10 où les lettres A à P sont remplacées respectivement par les chiffres 0 à 15. Touche est le numéro des touches des claviers X10 avec la correspondance touches 1 à 16 -> nombres 0 à 15 ou un des codes de commande indiqué ci-dessous. Cycles est une valeur optionnelle qui remplace celle de deux prise par défaut. Elle ne doit être utilisée que pour les commandes “dim” et “bright”. Symboles des commandes X10 Valeurs _____________________________________ UNITON %10010 UNITOFF %11010 UNITSOFF %11100 LIGHTSON %10100 DIM %11110 BRIGHT %10110 Le tableau ci_après indique comment connecter un Stamp II aux modules d’interface X10 standards PL513 ou TW523. N° des pattes des modules Pattes du Stamp II __________________________________________ 1 patte z 2 GND 3 GND 4 patte m Nota : les modules X10 ne sont pas distribués en France au moment où ces lignes sont écrites. Le contenu du présent manuel est la propriété de SELECTRONIC et protégé par copyright. Toute reproduction complète ou même partielle est strictement illicite. Pour obtenir un autre exemplaire de ce manuel, veuillez contacter SELECTRONIC. 12 Selectronic BP 513 - 59022 LILLE CEDEX - Tél. : 03 28 55 03 28 - Télécopie : 03 28 55 03 29 . www.selectronic.fr