RELAIS F1ZGU
(PROGRAMMATION)
Le programme a été écrit en BASCOM qui est un basic
particulier pour les produits de la famille 51.
Il est évident que ce "compilateur" facilite
grandement la tâche du développeur grâce à l'intégration de routines de gestion de
l'afficheur LCD, du port série et des liaisons I2C.
CAHIER DES CHARGES.
Assurer la gestion de détection d'une porteuse
et commander la mise en marche de l'émetteur d'une manière temporisée. (gestion
d'un K de passage de transmission, gestion d'un beep fin de transmission...)
Gérer à heures et minutes fixes l'identification
en CW ou VOCAL du Relais.
Permettre son paramétrage à distance par
DTMF.
- Son mode de fonctionnement CW ou VOCAL
- Son Arrêt / Marche (mode ZZZ)
- Ses temporisations (Anti-bavard , minutes indicatif, ...)
- accès par code secret
- consultation de l'état du relais (température, temps
d'émission ....)
- Activation et gestion du mode PERROQUET
Etre paramétrable
par une liaison série interne sur site.
Gérer des compteurs de temps d'activité
et de nombre de commandes.
Pouvoir s'auto-gérer en cas de problème (mode
minimal - watchdog)
ORGANISATION du PROGRAMME.
Le programme est scindé en 4 parties:
- La gestion de la détection de porteuse et la
gestion du mode phonie
- Un gestionnaire de tâche temporel (heure
d'indicatif, temporisations..)
- Un gestionnaire de paramétrage par la liaison
série.
- La gestion de la réception et du traitement des
codes DTMF.
- Les sub-routines.
Sources.txt
sources.bas
Il n'est pas facile d'expliquer la programmation
complète du programme, mais voici une liste de ce qu'il sait faire avec quelques
commentaires pour les spécialistes.
- Le gestionnaire temporel sous interruption ITDS1307,
traite toutes les secondes une série de tâches liées au temps. Si l'émetteur est en
marche il incrémente le temps d'émission qui sert à des fins statistiques mais aussi
pour l'antibavard. Si il n'y a pas d'émission , on surveille l'heure et les minutes pour
pouvoir transmettre l'indicatif à des moments précis (toutes le 10,15 ou 30 minutes).
- Le gestionnaire temporel est bloqué par arrêt de
l'interruption pendant certaines phases de liaison série pour paramétrage (pour être
tranquille).
- La gestion du DTMF se fait juste après une
détection de porteuse. En premier point on attend soit une étoile qui indique que c'est
un code public, soit un dièse qui indique que c'est un code privé. Si c'est le cas, on
quitte le programme standard pour aller dans un programme de traitement particulier.
- Le code public permet notamment de débloquer
l'antibavard par un code simple *1 (bulletin d'info), ou de recevoir des données télémétriques du
relais *2 ou simplement un message vocal *3
- Le code privé (secret) est composé de 4 chiffres
qui permettent d'accéder à un menu de codes de commandes qui elles permettent de
modifier les paramètres du relais. (dont la modification du code).
- il y a un deuxième code en dur en cas de perte du
code paramétrable (à n'utiliser qu'en cas de grand malheur...)
- Un time-out est lancé dès la réception du
code DTMF, si au bout de 30 secondes on ne reçoit plus de commande, la logique du relais
revient en mode attente (normal quoi..)
- Les paramètres du relais (tempo, mode ..) sont
stockées en EEPROM deux par deux grâce aux sub routines WEEPROM et REE¨PROM.
- Le mode VE (verbose) permet d'afficher sur la
liaison série plein de paramètres du relais pendant son fonctionnement, il est surtout
utilisé à des fins de debug ou de sav (par exemple pour vérifier que l'on reçoit bien
les codes DTMF).
- Par la liaison série on peut presque tout
paramétrer grâce a un jeu de commande d'une lettre puis d'une valeur.
- Le mode dialogue série RXDATA ne fonctionne que
quand le relais n'est pas en émission.
- Toutes les commandes LCD concernent l'envoi de
données à l'afficheur LCD.
Quelques explications des variables.
Ne pas oublier que l'on n'a que 128 octets de RAM, donc
parfois on optimise !!!!