Bonjour,
Je suis entrain de rechercher une solution pour réaliser une carte électronique afin de pouvoir réaliser une testeur ADSL et je ne sais pas par ou je dois commencer si vous avez une idée merci de me guider un peut pour le départ.
-----
Bonjour,
Je suis entrain de rechercher une solution pour réaliser une carte électronique afin de pouvoir réaliser une testeur ADSL et je ne sais pas par ou je dois commencer si vous avez une idée merci de me guider un peut pour le départ.
Bonjour amdouni61,
Sans vouloir t’embêter, pourquoi réaliser une telle carte alors que c'est une fonction de base de tout routeur ou box x ?
Autre que bien sur l’électronique pour l’électronique.
Il y à même des routeurs type DLink, Zyxel, Cisco et bien d'autres qui donne des résultats plus fiable que les données télécoms.
Cordialement,
je veut réaliser un testeur qui me donne la valeur de synchronisation entre le modem de l'abonné et le DSLAM et cette valeur comme vous l'avez mentionné est plus fiable dans les routeur ... donc je veut lire cette valeur du modem dans mon testeur
Soit,
Sachant qu'avec, pour exemple un routeur zyxell, les valeurs d'atténuations entre le circuit modem et le circuit routeur sont inférieur à 1db, je ne vois toujours pas l’intérêt.
Ceci dit, si tu veux réellement réaliser un tel montage, le principe est de ce baser sur la conception d'un modem ADSL2+ (connexion à 20Mbits) puis sur un processeur programmé pour effectuer les tests de trame via le circuit de modem, ce qui me fais revenir sur ma première remarque soit.
Un routeur le fait très bien.
Le tous sauf erreur de ma part (après 7 ans de DVI France télécom).
Cordialement,
Voici mon cahier de charge pour que tu puisse comprendre l'interet de ce projet
a) Origine du projet
Le Groupe d’Intervention Local Multi-techniques Alsace Sud a pour mission, entre
autres, de maintenir les équipements ADSL*, et est en charge du test de ceux-ci lors de mises
en service ou de dérangements, qui sont en nombre toujours croissant, en corrélation directe
avec l’augmentation de la demande du grand public et des professionnels.
Ces tests, réalisés au niveau du répartiteur général, sont composés de deux parties
essentielles :
- La vérification de la présence de synchronisation au niveau du répartiteur, entre un
modem de type abonné et un équipement du DSLAM* à tester, ce qui implique la
présence d’alimentation, de tonalité, et de signal.
- La vérification de la connexion au FAI*, de la vitesse de connexion (temps
d’affichage de différentes pages de test, envoi de pièce jointe volumineuse, transfert
FTP* de fichiers de tests de 100ko, 1Mo et 10Mo) et de l’absence de déconnexion
intempestive.
A l’issue de ces tests, si plusieurs équipements (modems au niveau du DSLAM) sur
une même carte sont défectueux, le GILM procède à son remplacement dans les plus brefs
délais. Mais attention, un paramètre n’a pas été pris en compte : l’abonné ne se situe pas
forcément juste à côté du central téléphonique ! Ainsi, si un technicien a obtenu la
synchronisation de son modem avec le DSLAM au niveau du répartiteur, il est possible qu’il
ne l’aie pas à quelques dizaines de mètres du central. Et c’est bien là tout le problème : le
technicien considère que le plot est bon au central, mais ne tient pas compte de
l’affaiblissement introduit par la ligne qui va jusque chez l’abonné. Il est donc possible qu’un
abonné situé loin du central ne puisse pas se synchroniser avec le DSLAM, alors qu’un test au
répartiteur est réussi.
Bien que les cartes modems des DSLAM soient réalisées en grandes séries, et que les
composants y soient à la même température, il existe de grandes disparités en matière de
synchronisation et de connexion d’un équipement à l’autre sur une même carte.
C’est de cette constatation que je suis parti pour élaborer le sujet de mon projet de fin
de DUT.
b) Cahier des charges
Réaliser un outil permettant de tester les plots ADSL (Asymmetric Digital Subscriber
Line) signalés hors service en simulant une ligne téléphonique d’abonné et indiquer jusqu’à
quel affaiblissement le modem de l’abonné se synchronise avec le DSLAM (Digital
Subscriber Line Access Multiplexer).
Le but de cette étude est donc de concevoir un appareil doté d’une ligne artificielle à
affaiblissement variable qui teste la synchronisation entre un modem donné et l’équipement à
tester pour différentes valeurs d’affaiblissement et de donner la valeur maximale, pour savoir
si un plot ADSL peut être remis à la disposition d’un client.
C'est effectivement beaucoup plus claire comme projet ,
Mais là je ne vais pas t’être d'un grand secoure.
Par simple curiosité, excuse moi si j'ai pas tout saisi, ou seront effectués les tests ? Chez l'abonné ou au répartiteur ?
Cette question est simplement pour exclure toutes causes autres qu'électronique (Ex: installation filaire client vétuste, Raccordement clients défectueux, Présence des vieux condensateurs de test de boucle dans les prises...).
Et dans quel sens ? vers le modem ou routeur de l'abonné ou vers les équipements du provideur ?
En y réfléchissant d'avantage, les deux seraient utile !
Je vois une quantité assez effrayante de problème potentiels, mais on va s’intéresser à ce qui est mentionné.Ainsi, si un technicien a obtenu la
synchronisation de son modem avec le DSLAM au niveau du répartiteur, il est possible qu’il
ne l’aie pas à quelques dizaines de mètres du central. Et c’est bien là tout le problème : le
technicien considère que le plot est bon au central, mais ne tient pas compte de
l’affaiblissement introduit par la ligne qui va jusque chez l’abonné. Il est donc possible qu’un
abonné situé loin du central ne puisse pas se synchroniser avec le DSLAM, alors qu’un test au
répartiteur est réussi.
C'est vrai qu'un test local ne sera généralement pas représentatif de la situation réelle, mais ce n'est pas (beaucoup) pour les raisons évoquées: dans de bonnes conditions, les modems DSL sont capables de synchroniser avec des atténuations (pures) hallucinantes: ce n'est pas là qu'est le problème.
Ce qui cause réellement les problèmes est une dégradation du rapport S/N, et la présence de bruit impulsif.
Le bruit provient en premier lieu des autres paires DSL sur le même câble (FEXT et NEXT), et des perturbateurs indépendants: station de radio AM, équipements de chauffage RF et autres. Si le signal désiré est atténué et que des perturbateurs sont présents, il y a un moment ou le rapport S/N va devenir trop faible. Si on ne simule que la composante "atténuation ligne", on aura des résultats complètement irréalistes
Le hardware n'est pour rien dans le variations observées: sauf panne véritable, les canaux sont interchangeables dans une même carte, ou même dans deux cartes différentes mais de même niveau: il va y avoir des différences de port à port, parce que certaines paires sont plus exposées au crosstalk notamment, et il va y avoir des différences aléatoires selon le moment où le bruit survient pendant la procédure de handshaking: celle-ci est très complexe et comporte typiquement des centaines d'étapes sur différentes couches du protocole: il y aura inévitablement des différence de résultat même dans des conditions apparemment totalement identiques, une fois ça marche, une fois ça ne marche pas.Bien que les cartes modems des DSLAM soient réalisées en grandes séries, et que les
composants y soient à la même température, il existe de grandes disparités en matière de
synchronisation et de connexion d’un équipement à l’autre sur une même carte.
C’est de cette constatation que je suis parti pour élaborer le sujet de mon projet de fin
de DUT.
S'il s'agit de reproduire simplement les paramètres d'une ligne de longueur variable, ce n'est pas très compliqué, des dizaines de simulateurs de ligne présents sur le marché le font, et très bien, et de manière programmable à distance si on veut. Par contre, sans introduire de bruit, ça ne signifie pas grand chose: dans des conditions "calmes", une synchro doit être possible autour de -100dBm, mais introduire du bruit de manière aveugle ne sert pas à grand chose non plus, sachant que ce sera généralement la cause réelle des problèmes constatés.b) Cahier des charges
Réaliser un outil permettant de tester les plots ADSL (Asymmetric Digital Subscriber
Line) signalés hors service en simulant une ligne téléphonique d’abonné et indiquer jusqu’à
quel affaiblissement le modem de l’abonné se synchronise avec le DSLAM (Digital
Subscriber Line Access Multiplexer).
Le but de cette étude est donc de concevoir un appareil doté d’une ligne artificielle à
affaiblissement variable qui teste la synchronisation entre un modem donné et l’équipement à
tester pour différentes valeurs d’affaiblissement et de donner la valeur maximale, pour savoir
si un plot ADSL peut être remis à la disposition d’un client.
Quant à vraiment s'introduire au niveau des couches basses du protocole, c'est probablement irréaliste vu l'extrême complexité, et le fait que le hardware ne vient que de quelques fondeurs qui ne donnent leur datasheets qu'à des acteurs reconnus, sous NDA.
Pas de complexes: je suis comme toi. Juste mieux.
Bonsoir tous le monde , j'aimerais bien vous montrer l'étape ou je suis arriver et j'ai besoin de votre aide pour m'aider à corriger quelques problémes dans la programmation et la conception de ma carte de testeur ADSL: j'ai un probléme avec la simulation sur isis, je sais pas comment faire la simulation on absence du signal ADSL donc comment je peut générer un signal semblant au signal ADSL,
La carte et composé de 3 partie :
Modification au modem pour l'acquisition du signal de synchronisation
Carte principale
et ligne d'affaiblissement artificiel variable.
La réalisation des lignes d’affaiblissement, dont la géométrie en H s’est imposée
naturellement pour simuler une ligne bifilaire torsadée. Chaque cellule de la ligne
d’affaiblissement artificielle est composée de 5 impédances, qui sont des
combinaisons de résistances. Les calculs effectués pour trouver la valeur de ces
composants ont été vus au chapitre précédent, dans l’ « application sur les lignes
d’affaiblissement artificielles »
Le circuit entourant le microcontrôleur : quartz, reset, programmation, ainsi que les
entrées/sorties, c’est à dire l’arrivée du signal de synchronisation et la commutation
des relais, et l’allumage ou l’extinction des leds appropriées.
Les pattes spécifiques du microcontrôleur :
- VDD est relié au potentiel 5V
- VSS est relié à la masse
- le reset fonctionne en ramenant le potentiel 0V sur la patte « masterclear » MCLR\
- Un quartz de 4 MHz est branché entre les pattes « oscillator1 » OSC1 et
« oscillator2 » OSC2, et chaque patte du quartz est reliée à la masse par un
condensateur de petite valeur, pour permettre l’oscillation.
- J’ai mis un connecteur DB9 sur le boîtier pour réaliser la programmation ICSP : In
Circuit Serial Programming, de ce connecteur arrivent les signaux masterclear, data,
et clock sur les broches masterclear, RB7, et RB6.
Les entrées-sorties :
- Il n’y a qu’une seule entrée dans mon circuit : le signal de synchronisation venant du
modem arrive sur la patte RA2.
- Les pattes RB1 à RB5 sont les sorties qui vont sur le driver de relais, et qui
permettent de commuter les relais pour sélectionner l’une ou l’autre des cellules
d’affaiblissement.
- Les pattes RA0 et RA1 sont reliées à la led bicolore, RA0 commande le rouge, RA1
le vert.
- On commande l’allumage ou l’extinction des leds rouges (valeur de
l’affaiblissement) grâce à un circuit en collecteur ouvert sur RA4. Au final, j’ai préféré
toujours laisser allumé les leds indiquant la valeur de l’affaiblissement en cours pour
savoir où en est le test.
- La modification du modem : deux solutions se présentaient à moi pour extraire le
signal de synchronisation du modem et le ramener en entrée du microcontrôleur : soit
prendre directement le signal ADSL, ce qui aurait nécessité un traitement du signal
pour détecter la synchronisation, soit capter le signal lumineux de la diode
électroluminescente de synchronisation du modem, c’est la solution que j’ai retenue
pour des raisons de praticité, puisqu’il suffit de suivre l’état de la led pour savoir si le
modem est synchronisé, la gestion au niveau du microcontrôleur est donc plus facile.
Le but du petit circuit que j’ai implanté dans le modem de test est d’extraire le
signal de synchronisation : j’ai donc soudé une résistance de 4,7k entre la cathode de
la led de synchronisation et la base d’un transistor PNP, dont le collecteur alimente un
opto-coupleur, dont la sortie est ramenée sur un fil disponible du connecteur RJ45 du
modem. Ainsi, quand on branche le câble qui relie mon outil de test et le modem, le
signal de synchronisation est ramené vers le microcontrôleur.
Conception initiale du programme – Description
Au début du test du modem du DSLAM, le microcontrôleur attend qu’une première
synchronisation ait lieu à 0 dB d’affaiblissement, c’est à dire que le modem est directement
relié au DSLAM via le répartiteur général. Après cette première synchronisation réussie, le
microcontrôleur sélectionne un affaiblissement de 50 dB et attend la synchronisation. La suite
de la recherche est dichotomique : on peut rechercher une synchronisation au maximum
jusqu’à 77 dB.
Les sorties 1 à 5 du port B du 16F84 sont associées à chacune des cellules
d’affaiblissement : ainsi, en combinant les sorties, on obtient des affaiblissements de 0, 2, 5, 7,
10, 12, 15, 17, 20, 22, 25, 27, 30, 32, 35, 37, 40, 42, 45, 47, 50, 52, 55, 57, 60, 62, 65, 67, 70,
72, 75 et 77 dB.
Ainsi, pour faire un test de synchronisation à 27 dB :
------- 40dB ------- 20dB ------- 10dB ------- 5dB ------- 2dB -------
Patte du 16F84 : RB5 RB4 RB3 RB2 RB1
Exemple pour 27dB : 0 1 0 1 1
D’où la valeur du port B en binaire : 0001 0110
Le programme principal : Il a pour rôle d’initialiser le microcontrôleur et les variables,
ainsi que de choisir l’affaiblissement utilisé pour réaliser les tests en fonction de la présence
ou non de synchronisation, indication transmise par la routine d’interruption via une variable.
En cours et en fin de programme, le programme principal affiche :
- l’état courant sur la led bicolore :
Si la diode électroluminescente bicolore d’état est rouge, le modem n’est pas
synchronisé, en attente d’une tentative de synchronisation.
Si elle est verte clignotante, cela signifie que le test de synchronisation s’est bien
déroulé.
Si elle est de couleur orange, le test de l’équipement du DSLAM est achevé.
- l’affaiblissement maximal avec lequel le DSLAM et le modem de test ont pu se
synchroniser.
La fonction d’interruption : Le signal de synchronisation est ramené du modem sur
une des pattes du microcontrôleur. J’utilise une fonction d’interruption qui analyse l’état de
led de synchronisation du modem toutes les 65ms et détecte ses changements d’état. La led de
synchronisation du modem clignotant avec une période d’environ une seconde, la fonction
d’interruption confirme l’état « synchronisé » ou « non synchronisé » si la led ne change pas
d’état pendant plus de deux secondes, si des changements interviennent, on est dans l’état « en
cours de synchronisation ».
La fonction d’interruption a également pour rôle de décrémenter un compteur qui est
utilisé dans les autres sous programmes, il est donc facile de gérer une temporisation.
Les sous-programmes : ils sont au nombre de 5.
- Le premier n’est utilisé qu’une fois au début du programme, il a pour rôle d’attendre
la première synchronisation réussie, de manière à ce que le programme principal ne considère
pas le plot mauvais, puisque les modems des DSLAM de marque LUCENT doivent essayer
de se synchroniser plusieurs fois avant d’y parvenir, cela permet également ne pas considérer
un plot hors service, alors que le connecteur de test n’est pas branché au répartiteur.
- Le second a pour rôle d’attendre un état stable, « synchronisé » ou « non
synchronisé », ce qui permet de passer au test suivant.
- Le troisième, qui attend l’état « en cours de synchronisation», est inséré dans le
programme entre un changement d’affaiblissement et le sous-programme qui attend un état
fixe (« synchronisé » ou « non synchronisé »), de façon à ne pas considérer un équipement
mauvais, alors que le DSLAM n’a pas eu temps de tenter une nouvelle synchronisation.
- Le quatrième sous-programme a été conçu après les premiers tests et sert à « faire
décrocher » le modem de test. En effet, si un test de synchronisation était réussi, et que le saut
d’affaiblissement n’était pas assez important, le modem, dans certains cas, restait synchronisé,
et faussait ainsi le test suivant. On introduit donc entre deux tests l’affaiblissement le plus
important (77 dB), le modem se désynchronise à coups sûr.
- Le dernier sous-programme est une simple temporisation qui utilise la scrutation de
variable.
carte principale.jpgLAAV.jpgLAAV1.jpgmodification modem.jpg
Le Program en C++: (PIC C Compiler)
#include <16f877.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20Mhz)
#include <lcd.c>
#define "0db" 0b00000000
#define "2db" 0b00000010
#define "5db" 0b00000100
#define "7db" 0b00000110
#define "10db" 0b00001000
#define "12db" 0b00001010
#define "15db" 0b00001100
#define "17db" 0b00001110
#define "20db" 0b00010000
#define "22db" 0b00010010
#define "25db" 0b00010100
#define "27db" 0b00010110
#define "30db" 0b00011000
#define "32db" 0b00011010
#define "35db" 0b00011100
#define "37db" 0b00011110
#define "40db" 0b00100000
#define "42db" 0b00100010
#define "45db" 0b00100100
#define "47db" 0b00100110
#define "50db" 0b00101000
#define "52db" 0b00101010
#define "55db" 0b00101100
#define "57db" 0b00101110
#define "60db" 0b00110000
#define "62db" 0b00110010
#define "65db" 0b00110100
#define "67db" 0b00110110
#define "70db" 0b00111000
#define "72db" 0b00111010
#define "75db" 0b00111100
#define "77db" 0b00111110
#define led_rouge PIN_A0
#define led_verte PIN_A1
#define vesu_led PIN_A4
#define opto PIN_A2
#define EN_COURS 0
#define NOK 1
#define OK 2
#define INDEFINI 3
#define UNE_MINUTE 900
#define DEUX_SECONDES 30
#define UNE_SECONDE 15
#define DEMIE_SECONDE 8
#define QUART_SECONDE 3
static unsigned synchro, attend, variation, niveau, i, poids;
static unsigned int temp;
static int8 etat_precedent;
static void attend_ok(void);
static void attend_ok_nok(void);
static void attend_en_cours(void);
static void tempo(void);
static void decrochage_modem(void);
static void interrupt_isr(void)
{
if (opto == etat_precedent)
{
if (attend == 0)
{
variation = 0;
if (etat_precedent == 0)
{
OUTPUT_LOW(PIN_A0);
OUTPUT_HIGH(PIN_A1);
synchro = OK;
delay_ms(1000);
lcd_init();
printf(lcd_putc,"\fSynchro");
}
else
{
OUTPUT_HIGH(PIN_A0);
OUTPUT_LOW(PIN_A1);
synchro == NOK;
delay_ms(1000);
lcd_init();
printf(lcd_putc,"\fNo Synchro");
}
attend= delay_ms(2000);
}
else
attend--;
}
else
{
etat_precedent = opto;
OUTPUT_LOW(PIN_A0);
PIN_A1==!etat_precedent;
variation = variation + 1;
delay_ms(2000);
if(variation > 3)
synchro = EN_COURS;
else
synchro = INDEFINI;
}
if (temp != 0)
temp--;
}
void main()
{
{
SET_TRIS_A (0b11101100);
SET_TRIS_C (0b11000000);
OUTPUT_A(0b00010011);
OUTPUT_C (0b00000000);
}
OUTPUT_A(0b00000011);
poids = 0b00000001;
for(i=0;i<6;i++)
{
OUTPUT_C (poids);
temp = QUART_SECONDE;
tempo();
poids =2;
}
for(i=0;i<6;i++)
{
OUTPUT_B(poids);
temp = QUART_SECONDE;
tempo();
poids =2;
}
OUTPUT_C(0b00000000);
variation = 0;
attend = DEUX_SECONDES;
etat_precedent = opto;
niveau = 0b00000000;
attend_ok();
decrochage_modem();
OUTPUT_C("50dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "50dB";
decrochage_modem();
OUTPUT_C("60dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "60dB";
decrochage_modem();
OUTPUT_C ("70dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau ="70dB";
decrochage_modem();
OUTPUT_C("75dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "75dB";
OUTPUT_C("77dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "77dB";
}
}
else
{
OUTPUT_C ("72dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
niveau = "72dB";
}
}
else
{
OUTPUT_C("65dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "65dB";
decrochage_modem();
OUTPUT_C("67dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
niveau = "67dB";
}
else
{
OUTPUT_C ("62dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
niveau = "62dB";
}
}
}
else
{
OUTPUT_C("55dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "55dB";
decrochage_modem();
OUTPUT_C("57dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
niveau = "57dB";
}
else
{
OUTPUT_C("52dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
niveau = "52dB";
}
}
}
else
{
OUTPUT_C("25dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "25dB";
decrochage_modem();
OUTPUT_C("37dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "37dB";
decrochage_modem();
OUTPUT_C("45dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "45dB";
decrochage_modem();
OUTPUT_C("47dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "47dB";
}
}
else
{
OUTPUT_C("42dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "42dB";
}
else
{
OUTPUT_C("40dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "40dB";
}
}
}
}
else
{
OUTPUT_C("32dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "32dB";
decrochage_modem();
OUTPUT_C("35dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "35dB";
}
}
else
{
OUTPUT_C("27dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "27dB";
decrochage_modem();
OUTPUT_C("30dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = ("30dB");
}
}
}
}
}
else
{
OUTPUT_C("12dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "12dB";
decrochage_modem();
OUTPUT_C("17dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "17dB";
decrochage_modem();
OUTPUT_C("20db");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "20dB";
decrochage_modem();
OUTPUT_C("22dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "22dB";
}
}
}
else
{
OUTPUT_C("15dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "15dB";
}
}
}
else
{
OUTPUT_C("5dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "5dB";
decrochage_modem();
OUTPUT_C("7dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "7dB";
decrochage_modem();
OUTPUT_C("10dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "10dB";
}
}
}
else
{
OUTPUT_C("2dB");
attend_en_cours();
attend_ok_nok();
if(synchro == OK)
{
niveau = "2dB";
}
}
}
}
}
OUTPUT_C(niveau);
OUTPUT_A(0b00000011);
}
static void attend_ok(void)
{
while(true)
if(synchro == OK)
break;
}
static void attend_ok_nok(void)
{
temp=UNE_MINUTE;
while(temp>1)
{
if((synchro == OK) | (synchro == NOK))
break;
}
}
static void attend_en_cours(void)
{
temp=UNE_MINUTE;
while(temp>1)
{
if(synchro == EN_COURS)
break;
}
}
static void decrochage_modem(void)
{
OUTPUT_B("77dB");
while(true)
{
if(synchro == NOK)
break;
}
}
static void tempo(void)
{
while(temp != 0)
{
}
}