Modtronix SBC65EC Révision 3

Transcription

Modtronix SBC65EC Révision 3
Modtronix SBC65EC Révision 3
CPU: PIC18F6627 ; EEPROM 24LC512
Mise en service du module
Connecter au PC – réglage Ethernet sur 10.1.0.2
test avec browser sur http://10.1.0.1
Les caractéristiques du module SBC65EC sont:
– HW: V3.01
– BLN: V1.00 (bootloader)
– SW: V3.10 - 2009 May 29 (software)
Note: certaines explications se réfèrent à la version précédentes, V3.06. Les path sont modifiés en
conséquence.
Code source
Téléchargé depuis : http://www.modtronix.com/product_info.php?products_id=196#apps
Déballé dans : c:\Users\Yves\Documents\Pic\Soft\websrvr65\demo_webserver\src\
Structure:
└───demo_webserver
├───doxygen
│
└───html
└───src
├───net
└───webpages
├───compress
├───default
├───html_io
├───js_adc
├───js_io
├───pinstate
└───webterm
└───src
Outils de chargement Modtronix Network Bootloader
Installé, mais ne déamarre pas par le menu! Il faut le lancer par:
"C:\Program Files\Modtronix Engineering\Netloader V107\bin\go_jre150_05.bat"
Essais de modification: \src\webpages\pinstate\index.htm et le cgi.
Résultat: plus de page visible par le browser! Affiche: Not found.
Essais de recharger le tout
\Pic\Soft\websrvr65\demo_webserver\src\out\websrvr65_mc_hw221.hex
et c:\Users\Yves\Documents\Pic\Soft\websrvr65_v310\src\webpages\default.img
c'est OK!
Envoi d'images avec Total Commander par ftp
Il n'y pas de possibilité de voir le répertoire (commande non reconnue). De plus, suite l'envoi du
fichier, la déconnexion est automatique. Il faut parfois s'y prendre à 2 fois pour que la page s'affiche
correctement.
html_io.img
js_adc.img
js_io.img
webterm.img
Lance java (demande d'ancienne version)
Travailler avec Network Bootloader
L'image « pinstate.img » n'ayant pas fonctionné, je ré-essaie sa compilation, ce qui provoque une
exception java!
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.modtronix.netloader.Mxfsee.createOutputFile(Mxfsee.java:86)
at com.modtronix.netloader.PaneWebfiles.btnCompileActionPerformed(PaneWe
bfiles.java:713)
La solution est dans le fichier « filelist.mxweb », qui est une sorte de makefile. Or la pinstate.img
fait référence à un dossier inexistant. Je le corrige ainsi:
outfile = .\..\pinstate.img
Soit le répertoire immédiatement supérieur; et tout fonctionne correctement.
Adaptation du bootloader pour java 1.6
Batch, adapté de go_jre150_05.bat :
"c:\Program Files\Java\jre1.6.0\bin\java.exe" -cp
"../conf/;../patches/;../lib/jlfgr-1_0.jar;../lib/log4j.jar;../lib/dom4j1.6.1.jar;../lib/jaxen-1.1b8.jar;modtronix.jar"
com.modtronix.netloader.Application
Outil de développement intégré MPLAB
Télécharger « MPLAB Integrated Development Environment » depuis le site de
http://www.microchip.com/: Home Products Home Page Development Tools Main Page
La version 8.30 pèse 95 Mb – zippé. Attention: à l'installation, il y a tentative de fermer les
applications ouvertes!! Dont l'antivirus Avast, p. Exemple.
Le Hitech C compiler est installé depuis l'Internet.
Compilateurs HI-TECH PICC-18 et MPLAB C18
Télécharger sur le site (licence étudiant/hobby)
http://www.microchip.com/stellent/idcplg?
IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en010014&part=SW006011
HCPIC18P-PRO-9.63PL1.exe
• Installation dans: c:\Program Files\HI-TECH Software\PICC-18\PRO\9.63\
• Installation du MPLAB C18 C Compiler (Student version), lien sur le site de modtronix.
Malgré les config par défaut, ouvrir un projet donne:
Environnement – le projet
On peut travailler de 2 manières:
1) par projet (.mcp)
2) par worspace (.mcw)
Dans ce cas, plusieurs projets peuvent être chargés. On active le projet désiré. En plus de la version,
on a :
websrvr65_ht_hwXXX ou websrvr65_mc_hwXXX (les versions websrvr65_nobl_ht_hwXXX ne
comportent pas le boot loader « no boot loader ») - A éviter pour le développement '_ht_ pour le HiTech; '_mc_ pour le MCC
Par projet, il faut encore spécifier le compilateur (Project/Select langage toolsuite...)
Quant à la version XXX, par exemple 211, il ne faut pas s'étonner qu'elle diffère de la version du
hard, car Modtronix indique:
All SBC65EC boards with HW version higher than HW2.11, use the HW2.11 projects.
Copie de projet – udate
Pour travailler sur une copie du projet, de manière à revenir à 100% sur une version fonctionnelle,
passer par les étapes suivantes:
1) copier tout les répertoires dans un nouveau (ex. Projet_03)
2) renommer le .mcp; ex: projet_03.mcp
3) Dans l'IDE MPLAB, choisir Projet->Open et introduire le projet_xy.mcp désiré
Le fichier .mcp conteint des path relatif.
Test avec le compilateur HI-TECH
Skipping file.
There is no tool to process the file with the given suffix.
L'erreur initiale vient du choix de compilateur à refaire;
•
\Pic\Soft\websrvr65_v306\src\projdefs.h:312:Error [1099] "Board type not
defined!"
Il faut définir BRD_SBC65EC et HAS_BOOTLOADER dans: les Options/Build options/Projet.
Il reste les erreurs:
Error
Error
"itoa"
[984] .\net\helpers.h; 80.44 type redeclaré
[1098] .\net\helpers.h; 80.44 conflit de déclaration pour la variable
...
Sur le forum , Modtronix répond que le HI-Tech n'est plus supporté, car moins efficace que le
MCC18, par ailleur gratuit en version « étudiant »...
Tests avec MCC18
Il est installé dans c:\MCC18
Config
Mais reste le pb, la config ne définit pas le compilateur , il faut l'indiquer dans Project/Select
langage toolsuite:
Options du projet
Pour que le projet compile, il faut encore mettre à jour les options du projet: activer le Projet / Build
option... / Projet (bas de la liste):
Sans quoi des erreurs de définitions surviennent.
Path source
Suivant la longueur du Path, la compilation passerait, à un bémol près:
Error - Source file
'C:\Users\Yves\Documents\Pic\Soft\websrvr65_v310\src\net\arptsk.c' name exceeds
file format maximum of 62 characters.
Solution Vista/Windows 7: créer un lien de type jonction dans la racine (ainsi, la sauvegarde des
données de l'utilisateur fonctionne)
C:\>mklink /j Pic c:\Users\Yves\Documents\Pic
Jonction créée pour Pic <<===>> c:\Users\Yves\Documents\Pic
Solution générale: déplacer le répertoire de manière à être plus proche de la racine.
HEX final:
c:\Pic\Soft\websrvr65_v310\out\websrvr65_mc_hw211.hex 180750 bytes
Changer l'adresse IP par défaut à 10.1.1.1
Dans le fichier projdefs.h, au lieu de 10.1.0.1, on passe à 10.1.1.1:
* Use these defines to define the default IP address of the device.
*/
#define MY_DEFAULT_IP_ADDR_BYTE1
(10)
#define MY_DEFAULT_IP_ADDR_BYTE2
(1)
#define MY_DEFAULT_IP_ADDR_BYTE3
(1)
#if defined(DEMO_MODE)
#define MY_DEFAULT_IP_ADDR_BYTE4
(50)
#else
#define MY_DEFAULT_IP_ADDR_BYTE4
(1)
#endif
Compréhension du système – part WEB
Page html
Le système WEB démarre sur index.htm, composé d'une table à 2 colonnes, dont celle de gauche
comporte une série de liens qui s'adressent à une cellule du tableau de droite:
home
Menu 1
Menu 2
Menu 3
...
<td width="100%" height="100%" valign=top>
<iframe width="100%" height="100%" name=main
src="intro.htm" scrolling="auto" frameborder=0>
</iframe>
</td>
Un menu comporte la référence sur un *.cgi, ainsi:
<td class=menuBtn><a href="ioval.cgi" target=main>Etat des prises </a></td>
Ici, un clic sur l'ancre définie sur « ioval.cgi » va le lancer. Le résultat du cgi sera affiché dans la
cellule du tableau nommée « main » (ex. ci-dessus)
Script CGI
la page combinée (extension .cgi) contient un mixte de fonctions en javascript, de html contenant
des tableaux dont les cellules sont complétées par un appel en javascript. Si le script commence par
la lettre 'x', tel que x<nom>.cgi, une vérification d'autorisation est faite (sécurité, authentication
required).
Les scripts sont 'parsés' et les codes reconnus remplacés par une valeur. Par exemple, le fichier
in_a2.cgi, verra la valeur de %a02 substituée par '0' ou '1' selon l'état 0V ou 5V de la pin du port A2
du CPU.
fonctions en Javascript
Les javascripts sont inclus dans le HTML par l'inclusion d'un fichier '*.js' :
<script src="lib01.js"></script>
-ou- écrit directement dans la page, tel:
<script type="text/javascript">
if (%l03 == 0)
sectags();
else
{
acfg(%k31,%k32 /*adcon1 and adcon2*/ );
}
</script>
Script
Fonctions, commentaires
Fichiers page
cmdcfg65.js
uccfg(cmdL,cmdH,cmdrL,cmdrH,fl)
scfgSubmit()
xccfg.cgi
iocfg65.js
drawCheckboxesRow(label,id, mask, value)
iocfg(ta,tb,tc,tf,tg,pa,pb,pc,pf,pg)
xiocfg.cgi
lib01.js
Sectags()
*.cgi
demomsg()
toHex(dec) /* convert decimal value (0 - 255) to hexadecimal */
selOpt(sel, type, val)/* Select the option (in the given Select) with
the given string value.
Type is [s, i, x] for [str, int, hex] option */
getByte(val,def)/* Checks given value and returns a value from
0-255.*/
getCbxHex(id,inverted)/*
* Returns the uppercase hex value of 8 checkboxes with id's =
id0, id1 .... id7
* - id = id or each checkbox. 0 to 7 is appended to id string
* - inverted
*/
getCbxByte(id,inverted)/*
* Returns the decimal byte value of 8 checkboxes with id's = id0,
id1 .... id7
* - id = id or each checkbox. 0 to 7 is appended to id string
* - inverted
*/
netcfg01.js
ncfg(i1,i2,i3,i4,g1,g2,g3,g4,s1,s2,s3,s4,m1,m2,m3,m4,m5,m6,net xncfg.cgi
Flags,a,n)/*
* Displays network configuration page
* - i1 to i4 = IP address
* - g1 to g4 = Gateway address
* - s1 to s4 = Subnet Mask
* - m1 to m6 = MAC address
* - netFlags = Netflags
* - a = AppConfig array
* - n = NetBIOS name
*/
ncfgSubmit()
pwmcfg65.js
pwmcfg(mode, enable, freq)
pcfgSubmit()
XPCFG.CGI
sercfg65.js
ucfg(baud1)
XUCFG.CGI
syscfg65.js
elePos(e)
ttShow(evt)/* ToolTip Show */
function ttHide(evt)/* ToolTip Hide */
ttInit()
scfg(user, stackVer, appVer, bootDly, serDly, sysFlags, hasBL)
XSCFG.CGI
XUSER.CGI
webcfg65.js
webcfg(fl,fl2,portL,portH)
XWCFG.CGI
Modification des javascripts
Il n'est pas aisé de mettre au point, voir de modifier des javascripts. Les problèmes sont:
– les fautes de codage
– l'appel par page WEB
– la mise en cache
Pour les fautes de codage, il faut activer la console d'erreur de Firefox , menu Outils.
Le plus simple est d'essayer au niveau fichier en utilisant une page html de test. On évite de devoir
recompiler et charger le tout sur le module.
La mise en cache des script est particulièrement énervant, car les modifications/corrections
apportées n'ont pas d'effet sur la page... Les moyens sont:
– de procéder par Shift – reload (page initiale);
– d'ouvrir le résultat dans une nouvelle fenêtre;
– de vider le cache par Outils -> Effacer mes traces
PT32E : Commande du bloc LED par GET
Le bloc LED sur le print PT32E (document pt24er1.doc) est commandé par un IC 74HC595. Les
pattes du port c utilisées sont c0: data, c1: clock, c2: latch.
La disposition des LEDs est la suivante:
2
4
6
8
1
3
5
7
Avec: 8: première valeur introduite dans le registre, 1 la dernière.
Les valeurs sont introduite au moyen de commandes GET en série; c0, c1, c2 sont programmés en
sortie.
• Commande pour 'clocker' la valeur 1: c0=1&c1=1&c1=0
• Commande GET pour 'clocker' la valeur 0: c0=0&c1=1&c1=0
• Commande de latch – positione les LEDs: c2=1&c2=0
Le plus simple est de préparer la commande dans Notepad, sur plusieurs lignes (Firefox n'est pas
sensible au retour ligne); et de copier-coller le tout dans la fenêtre URL du navigateur.
Extinction de toutes LEDs:
Chaque ligne modifie la variable et envoie deux coup de clock 1->0, 1->0. Au final, c2 copie le
registre sur les sorties activant les LEDs (note: il n'est pas utile de répéter la mise à 0 de c0, mais
c'est plus pratique pour comprendre ce que l'on fait et l'homogénéité des commandes préparées)
http://10.1.1.1/?
c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&
c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&
c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&
c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&
c2=1&c2=0
Allumage de toutes LEDs:
http://10.1.1.1/?
c0=1&c1=1&c1=0&c0=1&c1=1&c1=0&
c0=1&c1=1&c1=0&c0=1&c1=1&c1=0&
c0=1&c1=1&c1=0&c0=1&c1=1&c1=0&
c0=1&c1=1&c1=0&c0=1&c1=1&c1=0&
c2=1&c2=0
Allumage par paire: 11001100
Commande complète:
http://10.1.1.1/?
c0=1&c1=1&c1=0&c0=1&c1=1&c1=0&c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&c0=1&c1=1&c1
=0&c0=1&c1=1&c1=0&c0=0&c1=1&c1=0&c0=0&c1=1&c1=0&c2=1&c2=0
Analyse du code interpréteur
Code C impliqué
Mxwebsrvr.c - Boucle principale main()
La boucle principale main() est dans mxwebsrvr.c, par une boucle while(1) après les initialisations.
– (343) la variable aliveCntrMain sert de watch-dog
– (348) Elle fait clignoter le LED par B6 à 1 Hz
– différentes tâches, via StackTask()
– (379) HTTPServer(), puis FTPServer(), sont appelées
– (387) DiscoveryTask() renseigne un broadcast en renvoyant l'adresse MAC dans
announce.c
– (395) ProcessIO() contient les applications spécifiques – tourne à 10 ms
– (399) le code debug affiche le décompte et la nouvelle adresse IP si le DHCP a renouvelé
l'adresse du board
–
Une nouvelle tâche hardware/software devrait être introduite dans ProcessIO().
Le soft ajouté doit être exécuté rapidement, ou, si la tâche est longue, elle doit être divisée en petit
blocs. Ceci part d'un principe de multi-tâche coopératif.
Httpexec.c – traitement des requêtes HTTP
Le code de la fonction (188) execNameValueCmd() est placé dans cmd.c.
– (82) Des constantes pour les réponses sont mises en ROM char texte[] = « valeur »;
– (139) la fonction HTTPExecGetCmd() est un call-back du serveur HTTP. Elle traite de
toutes les configurations: Port I/O, ADC, PWM, USART, LAN, etc.
– (298) la fct HTTPGetVar() est un call-back du serveur HTTP. Elle est appelée lors de la
substitution de variables (tags) dans la page à servir. Un mécanisme indique si c'est le 1er
appel. La fct ne retourne qu'un chr à la fois; plusieurs appels sont nécessaires pour tout
passer, avec un mécanisme de flags HTTP_START_OF_VAR / HTTP_END_OF_VAR que
doit gérer l'application.
– (395) l'utilisateur est testé: USER_ADMIN ou USER_GUEST
– (257) fct HTTPGetVar(), lecture variables , mise en structure getTagInfo et appel de
cmdGetTag(&getTagInfo) dans cmd.c
Ce module doit être mis à jour et augmenté pour supporter des nouveaux formats et sortir des
valeurs ou des états internes dans une page WEB, par la fonction HTTPGetVar() - détails ciaprès.
La fontion HTTPGetVar()
Cette fonction se charge de substituer les tags des script ou contenu dans l'HTML par la valeur d'une
variable (ou de variables).
Modèle: WORD HTTPGetVar(HTTP_INFO* httpInfo, BYTE* val)
Fonctionnement
La fonction principale HTTPServer() l'appelle dès qu'un tag est rencontré dans la page à servir. Par
le paramètre 'val' on connait l'état du traitement, qui vaut HTTP_START_OF_VAR au départ.
Il faut ensuite retourner les caractères un à un, lorsque c'est fini, faire pointer 'val' sur
HTTP_END_OF_VAR.
Ne rien retourner (terminé immédiatement)
*val = '0';
return HTTP_END_OF_VAR;
Renvoyer un string local
La technique consiste à faire pointer 'val' sur le début de la chaîne préalablement établie, et lorsque
ce pointeur est sur le '\0' final, retourner HTTP_END_OF_VAR. Entre-temps, 'val' nous sert de
pointeur courant entre les appels.
*val = strTmp[(BYTE)ref];
if ( strTmp[(BYTE)ref] == '\0' )
return HTTP_END_OF_VAR;
(BYTE)ref++;
return ref;
Note: le \'0' final n'est pas vraiment utilisé, si ce n'est pour marquer la fin du string et renvoyer
HTTP_END_OF_VAR. Comme 'ref' est un byte, il n'est pas possible d'envoyer plus de 255
caractères à la fois.
Fonction annexes:
static WORD cmdGetROMStringVar(BYTE ref, BYTE* val, ROM char* str)
Rend une chaîne statique définie en ROM
static WORD cmdGetEepromStringVar(BYTE ref, BYTE* val, WORD adr)
Pointer avec 'adr' sur une chaîne fixe, en EEPROM.
static WORD cmdGetWordVar(BYTE ref, BYTE* val, WORD w)
Rend un mot w au format décimal, par itoa()
static WORD cmdGetWordHexVar(BYTE ref, BYTE* val, WORD w)
Rend la valeur d'un byte en hexa
Cmd.c; cmd.h – traitement des commandes HTTP et GET
l'analyse d'une requête GET ou UDP est décrite dans le fichier cmd.h.
Les commandes actuelles sont:
Code
Usage
Exemple
a-j
commandes des ports a à j
sur ce module: ports a à g
k
Config bytes.
Positionne les bytes (ou les
bits) de configuration du CPU
dans la plage 00..FF
b=FF mets les 8 pins du port b à 1 (le HEX doit être
en majuscules!)
a0=0 : met la pin 0 du port a à 0
b1p=9: fait une pulse de 9 us sur b1
c2n=5: fait une pulse nég. De 5 us
ac0=1: configure a0 en sortie
ac0r=1:configure a0 en sortie, mais permanent
(même après power-up)
k2A=15: le registre TRIS du port F, à l'adresse 2A
est positionné avec 00001111, soit 0xF
k2A=H0F: idem, mais valeur en hexa
k05b6=1: positionne le bit 6 du registre 0x05
k05b6=0: clear le bit 6 du registre 0x05
l
Commande générale
la
lb
ln
la=user1: log l'utilisateur « user1 »
lb=123xyz: indique le nouveau password « 123xyz »
ln=modul09: indique le nouveau nom NetBIOS du
module comme « modul09 »
m
Commande courte
m=r: reset du module!
m=l: le module va demander un login
m=o: le module va dé-logguer l'utilisateur
n
Commandes sérielles
Pas implémenté
w
Commande PWM
W1=128: positionne la largeur d'impulsion à 50%
sur le timer 1
Une machine d'états finis permet de suivre le traitement des commandes.
(137) Elle est définie par une énumération SM_CMDX.
Fonctions de traitement des commandes:
– (142) fct cmdInit(): initialisation
– (172) fct cmdTask(): appelée toute les 2 ms, traite les cmd UDP, TCP et en mode GET
– (540) fct execNameValueCmd(): traite les paires nom=valeur selon le tableau ci-dessus
Une nouvelle fonctionnalité devrait être intégrée à execNameValueCmd(), en créant un nouveau
groupe de commandes. L'interprétation des paramètres, ainsi que la syntaxe est prise en charge
ici. Il faut stocker les valeurs et les états indiqués par la nouvelle commande.
PIN I/O à disposition
Recommandation Modtronic
Page: http://forum.modtronix.com/index.php?topic=491.0
–
–
–
–
–
Ports A0 – A5
Ports B0 – B5
Ports C0, C1, C2, C5
Ports F0 – F7
Ports G0 - G3 (Marked as D0, D1, D6 and D7 on prototype daughter board)
Avec les indications/restrictions suivantes:
–
–
–
–
–
A4 est Open Collecteur: ne pas utiliser en sortie
B6, B7 sont utilisés pour la programmation (B6 pour la LED rouge)
C6, C7 sont utilisés par l'USART 1
F7 pourra être utilisé pour le CS de la FRAM
G1 et G2 sont utilisés par l'USART 2; G0, G2 par le CAN Bus du board SBC68EC
Mémoire à disposition
Infos de la page http://forum.modtronix.com/index.php?topic=491.0
Il y a 3 types de mémoires: EEPROM interne, Flash interne, EEPROM externe
L'EEPROM interne – taille 1024 bytes
Utilisation par le serveur: 256 bytes nécessaires pour le Stack. Il est envisagé de le pousser à 512
bytes; il faut donc n'utiliser que les 512 restant au maximum!
Flash interne – taille 98K
2K sont WR protect, contiennent le bootloader
32K utilisées par le Stack
64K libres
EEPROM Externe - taille 64K
64 bytes sont réservés par défaut pour le démarrage de l'application principale. Ecrire ces bytes va
corrompre le démarrage du système!
32786 bytes pour le fichier « default.img », soit l'ensemble des pages WEB compressées.
32 K libres.
Pour changer la réservation: il faut modifier "FSEE_RESERVE_BLOCK" défini dans le fichier
« projdefs.h ». De plus, il faut écrire 128 bytes à la fois
Ecrire les données dans l'EEPROM Interne convient, vu la faible quantité. Les fct pour
lire/écrire existent: appcfgGetc() et appcfgPutc().
Horloge RTC DS 1307
Ajout du code issu de http://forum.modtronix.com/index.php?topic=688.0, soit : uSysClk.h,
uSysClk.c, uDS1307.h, uDS1307.c;
Modif de :
– mxwebsrvr.c, fonction main():
– uDS1307.c, #include "user\uSysClk.h"
– uSysClk.c, idem + supression #include Main.h
– fct void FC_SystemClock(bool BOOL Clk10ms)
//update ons and wave flags and DB_SystemClock.Alive
FC_SystemClock(0);
//Update date/time from RTC
if (DB_SystemClock_RequestRTCUpdate)
{
DS1307_ReadSysDateTime();
}
Configuration de Debug
Câblage
Installer une liaison sérielle entre l'ordinateur qui reçoit le « Modtronix embedded debugger », une
fiche de conversion RS232 <--> USB fonctionne. La vitesse par défaut est 57600 Bd.
Compilation « Debug »
Le code du projet est compilé en mode DEBUG si la ligne contenant la définition: #define
DEBUG_OFF est commentée, dans le fichier "projdefs.h" du projet à debugger.
Dans son propre projet, on aura préalablement prévu en compilation conditionnelle des codes de
DEBUG par des émissions de caractères du genre:
#if (DEBUG_CMD >= LOG_WARN)
debugPutMsg(1);
//@mxd:1:Invalid offset for configuration byte = %s
debugPutByte(name[1]);
debugPutByte(name[2]);
debugPutByte(0);
//Null terminate string
#endif
Fichier de configuration mxdebug.xml
Les codes émis doivent être interprétés par le Débugger. Une configuration est décrite dans le
fichier mxdebug.xml
Les code 127 à 255 représentent un message, mais seuls les codes de 0xD0 à 0xDF sont libres pour
une extension « customisée ».
Outil « Embedded Debugger »
Ici, le débugger est connecté via le COM4 à 57600 Bd (en fait, virtuel par le driver USB du câble
sériel).
Vide au départ, la fenêtre affiche les onglets dès que le répertoire du projet est sélectionné.
Ici: C:\users\Yves\Documents\Pic\Soft\websrvr65_v310\src, où se trouve mxdebug.xml.
Attention: à l'enclenchement du PC, le module peut déjà envoyer des codes qui sont pris par
Windows par une souris!! Le Debugger ne fonctionnera pas!