Bon, après quelques heures de galère pour essayer mon premier programme, j'appelle à l'aide.
Petite précision avant :
J'ai beaucoup programmé en assembleur par le passé (il y a ... 20ans déjà) mais je me rends compte que ça va beaucoup m'aider.
Je veux dire que les commandes ne me poseront pas de problème de compréhension (var, if-else, subroutine etc.)
J'ai également assimilé que SIOC n'est pas séquenciel mais évenementiel (mais ai-je bien compris justement ?).
Une fois assimilé la syntaxe, ça devrait aller de ce coté !
Par contre, je pèche dans la compréhension de l'ordre d'écriture des commandes !
Je veux dire que je ne vois pas la logique dans l'ordre d'écriture de certaines variables ou commandes.
Voilà mon premier programme pour faire clignoter une LED (out 42 de ma master)
J'ai voulu en même temps faire appel à une subroutine ... Pas une bonne idée peut-être ?
En voilà le texte :
// timer
// Var 0000, name init, value 0 // Variable d'initialisation
Var 0100, name clignote_LED, link IOCARD_OUT, Output 42 // Led clignotante
Var 0101, name voyant_LED, link IOCARD_OUT, Output 46 // Pour controler si inter = 1
Var 0110, name start_timer_SW, link IOCARD_SW, Input 4 // Inter démarrage timer
{
IF &start_timer_SW = 1 // Inter timer ON
{
&voyant_LED = 1 // Indique inter = on
CALL &clignote_sub // Appel subr timer
}
ELSE
{
&clignote_LED = 0 // LED clignotante off
&clignot = 0 // Stop timer
&voyant_LED = 0 // Indique inter = off
}
}
Var 0200, name clignote_sub, Link SUBRUTINE // Timer
Var 0300, name clignot, value 10
{
&clignot = TIMER 0, -1, 50 // De 10 a 0 pas -1 cycle 1s
L0 = MOD &clignot, 2
&clignote_LED = L0 // Clignotement LED 42
}
C'est la ligne Var 0300 ... qui me pose PB (il y a peut-être aussi d'autres erreurs) :
- Là ou elle est, ça clignote mais en permanence (alors que je veux 5 cycles) et de façon ératique.
Si je met cette ligne en début (après Var 0101 par Ex.) : le timer ne démarre pas !
Si elle est dans le "if" avant le "call", j'ai une erreur de compilation !!!
Petite précision que j'ai découvert et n'est expliquée nulle part (dans ce que j'ai lu !) :
Il faut mettre un espace après les // dans une ligne de commande sinon "erreur" à la compilation !
Merci d'avance pour vos remarques et explications
