PIC-BASIC PB-3B (2009)

Voici donc le décryptage de ce que ne peut pas faire cette version de PIC BASIC.
J'espère qu'il sera exhaustif et sans erreur

- Schéma / fonctions
- Variables
- Fonctions

Retour.

Schéma (revendeur) et tableau des fonctions / liaison correspondantes :


Il est à noter que sur la platine d'expérimentation le quartz est en fait un résonnateur.

Up

Variables 

Seulement de type BYTE soit 8 bits non signés 0 à 255 et INTEGER soit 16 bits non signés 0 à 65535.
Pas de LONG
Pas de SINGLE
Pas de STRING

Attention donc aux multiplications avec décimales, on est tenté de faire pour parer ce problème d'après la notice :
    I et J étant des INTEGER (plus grande variable autorisée)
    I=J*122/100    pour faire l'équivalent de I=J*1,22
    si cela fonctionne pour une valeur de J=25 => 25*122=3050 puis 3050/100=30 d'ou I=30
    cela ne fonctionne plus si J=550 en effet 550*122=67100 hors l'INTEGER s'arrête à 65535 on se retrouve donc avec
    550*122=1565 d'ou 1565/100=15 au lieu de 671, notable différence.

    Ce problème est très concret, car si l'on utilise un servomoteur, la largeur des impulsions doit aller de 1mS à 2mS, dans la fonction SERVO le pas étant de 0,8uS il faut 1250 pas pour couvrir le déplacement, si la commande est associée à une lecture d'entrée analogique aillant donc 1023 pas, le ratio est de 1250/1023=1,22189

    Une solution consiste à déclarer au moins une variable supplémentaire :
    K INTEGER et on fait donc :
    I=J
    K=J*22/100
    I=I+K
    Pour J=550 on obtient : I=550, puis 550*22=12100 (Ok pour integer) d'ou K=12100/100=121 et enfin I=550+121=671
    mais c'est reculer un peu le problème (jusqu'à J=2978)....
    On peut penser faire : I=J+J*22/100, mais le compilateur déclare la formule "too complex".

Up

Fonctions inutilisables avec cette version de PIC :

ABS() Valeur absolue
ASC() Code ASCII d'un caractère
BCLR Efface le Buffer RS232
BLEN() Nombre de données dans le buffer RS232
CHR() Caractère d'un code ASCII
CINT() conversion Single en Integer
CLNG() conversion Single en Long
COS() Cosinus
CSNG() Conversion Long en Single
DACOUNT Génération tension analogique
DEC() Retourne valeur décimale dans une chaîne
EEREAD() Lecture données depuis l'EEprom
EEWRITE Ecriture de données en EEprom
EPADIN() Entrée clavier
EXP() Exponentielle
FLOAT() Conversion numérique en texte
GET Réception RS232
HEX Conversion hexa en texte
LEFT() Extraction de caractère à gauche d'une chaîne
LEN() Longueur d'une chaîne
LOG() Logarithme
LOG10() Logarithme décimal
MID() Extraction de caractère d'une chaîne
ON...GOSUB Appel de sous routine indexée
ON INT() GOSUB Interruption sur un port
ON RECV GOSUB Interruption sur réception RS232
POW() Valeur d'X exposant Y
PUT Emission RS232
RESET Initialise le PIC
RIGHT() Extraction de caractère à droite d'une chaîne
SET ONINT Activation/désactivation interruptions
SET ONRECV Activation/désactivation interruptions RS232
SET ONTIMER Activation/désactivation des timers
SET RS232 Déclare la vitesse de transmission RS232
SIN() Sinus
SQR() Racine carrée
TIME() Lecture de l'horloge
TIMESET Mise à jour de l'horloge
VAL() Conversion texte en Integer
VALSNG() Conversion texte en Single

A suivre...

Up

Retour Robotique

Retour accueil.