Professional Documents
Culture Documents
cours
POUR ÉLECTRONICIENS
Partie 8 : le DelphiStamp
Detlef Overbeek, Anton Vogelaar et Siegfried Zuhr
Le DelphiStamp est un minuscule contrôleur-gigogne uni- une partie du serveur M485. Il est possible, par le biais
versel et rapide doté d’une mémoire de bonne taille et de ce serveur, d’accéder à la RAM, la Flash, l’EEPROM,
de fonctions d’entrées et de sorties. Le BIOS embarqué aux registres et registres d’E/S, un moyen très puissant
permet une exécution autonome sur le DelphiStamp de pour le débogage de programmes. Le serveur sert égale-
progiciels développés en Delphi. Mais il est également ment à la communication avec une interface utilisateur
possible d’utiliser une application PC écrite en Delphi en graphique (GUI = Graphic User Interface) externe.
tant qu’organe de commande pour une application exé- Les pilotes résidents servent au support des LED et cava-
cutée par le DelphiStamp. liers embarqués, de l’affichage à 16 caractères, d’un
moteur pas à pas bipolaire, d’un bouton-poussoir, de
Le ATMega128 mis à contribution est un processeur RISC 7 LED montées en forme de dé et d’un potentiomètre,
travaillant à une fréquence d’horloge de 14,745 6 MHz. mais ils servent également au serveur d’interface. Ce der-
La plupart des instructions sont exécutées en une unique nier veille à ce que l’état du matériel connecté cor-
impulsion d’horloge de quelque 68 ns. Le code de pro- responde au contenu d’un enregistrement de données
gramme se trouve dans la mémoire Flash. Comme les (data record) en RAM. Ce processus de répète 20 fois
instructions, exception faite des instructions JMP, LDS et par seconde. On dispose d’une DLL permettant de com-
STS, ont une taille de 2 octets, ce ne sont pas moins de muniquer avec cet enregistrement depuis une application
quelque 60 000 lignes de programme en assembleur Delphi (M485.dll). C’est ainsi que le DelphiStamp peut
que l’on peut mettre dans la mémoire Flash. Les derniers faire office d’interface.
8 Koctets sont protégés et contiennent le BIOS.
Le BIOS comporte 4 modules : le chargeur (loader), le
serveur M485, les pilotes résidents et le serveur d’inter- Configurations matérielles
face (cf. figure 1). Le chargeur permet de stocker du Nous avons, de manière à permettre de se faire rapide-
code objet dans la mémoire Flash en passant par l’inter- ment la main sur le DelphiStamp, imaginé différentes
face RS-232. La communication entre le DelphiStamp et configurations matérielles standard au niveau des possi-
le PC se fait selon le protocole M485. Le chargeur est bilités d’E/S (cf. figure 2). On pourra, si tant est que le
70 elektor - 10/2005
matériel externe est branché en respect de ce schéma,
mettre à contribution le serveur d’interface, les pilotes
standard et un programme de test des Entrées/Sorties.
On pourra, par exemple, brancher un moteur pas à pas
bipolaire à pas de 1,8 ° en mode demi-pas (soit
400 pas/tour). Il est également possible de « lire » un
potentiomètre (tension comprise entre 0 et 1,56 V) et de
piloter 7 LED. La ligne RS485 permet de réaliser un
réseau d’une longueur maximale de 1 000 mètres
auquel on pourra connecter un maximum de 128 appa-
reils. Un affichage alphanumérique permet de visualiser
un maximum de 16 caractères.
Figure 1. Structuration des différentes unités fonctionnelles
au coeur du DelphiStamp.
DelphiStamp en contrôleur
En mode contrôleur il n’y a pas, en utilisation normale,
de liaison avec un PC. Ce n’est pas une mauvaise idée, rents algorithmes de pilotage sont écrits sous forme d’uni-
si l’on veut être assuré que le contrôleur fonctionne cor- tés distinctes. Dès que la simulation travaille correcte-
rectement, de développer et de simuler sur PC le progi- ment, le compilateur croisé PasAvr convertit les unités de
ciel du contrôleur. Une forme Delphi dotée de compo- pilotage en un fichier .hex binaire qui comporte le code
sants visuels se substituera au matériel externe. Les diffé- objet pour le DelphiStamp. Le programme Mon485
Caractéristiques
ATMega128 : 128 Koctets de Flash – 4 Koctets de RAM – 4 Koctets d’EEPROM – 4 temporisateurs ( timers) – CAN
(Convertisseur A/N) 10 bits avec 15 kéch/s – Comparateur analogique – Mode de sommeil – 2 UARTS pour RS-232
et RS-485 – I2C – 25 entrées/sorties numériques – Interface JTAG et ISP
Tension d’alimentation 6 à 9 V CC (régulée sur la carte, ne convient pas à des charges externes)
Consommation de courant : 10 µA en mode de sommeil
Specs des E/S numériques : 30 mA de source @ chute de 1 V, 40 mA de drain @ chute de 1 V
On trouvera la fiche de caractéristique à l’adresse : www.atmel.com/dyn/resources/prod_documents/doc2467.pdf.
Pour une description exhaustive de chacune des instructions :
http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf
+5V
LCD
D5 D1
VDD
VSS
R/W
VO
RS
D0
D1
D2
D3
D4
D5
D6
D7
E
GND
RX
TX
1 2 3 4 5 6 7 8 9 10 11 12 13 14
JP1
+5V
1 32 D6 D4 D2
TX VDD
R1 2 31 R1
RX PB0 390 Ω
47 Ω
3 30 R2
PE7 PB1 390 Ω
4 29 R3
PE6 PB2 390 Ω
5 28 R4
PE5 PB3 390 Ω
P1 6 DELPHI 27 R5
PE4 PB4 390 Ω
100k 7 STAMP 26 R6 D7 D3
PE3 PB5 390 Ω
R2 8 25 R7
PE2 PB6 390 Ω
47 Ω
9 24
PF0
10 23
+5V PF1
11 22
PD0
12 21
+VDD PF3
1A R1 13 20
PA0
47 Ω
14 19 JP2
M PA1
15 18 S1
C1 1B P1 PA2 845A 845A
16 17
C1 GND 845B 845B
+5V 1000µ 40V 2A 2B
10k 10n
1 6 7 16 11
R1
Q1A
Q1B
Q2A
Q2B
VBB
34k
10 14
VCC EN2
2
8 PH1
REF 3
EN1
9 15
RC PH2
0Ω68
56k
11k
680p 3W 3W
040240 - 8 - 13
Figure 2. Les différentes options d’E/S du DelphiStamp. Avec les pilotes standard, l’interfaçage de ce matériel ne pose pas de problème.
10/2005 - elektor 71
Compilation croisée et transfert
Demo.prj est le « containeur » de fichiers pour le reste
des fichiers du projet de démonstration du contrôleur du
DelphiStamp (cf. figure 4).
UMain.pas comporte le code « power-on » et tous les
vecteurs d’interruption. Cette unité est identique pour
quasiment toutes les applications Delphi et est fournie
sous forme de modèle (template) avec le set.
Au niveau des fonctionnalités, Drivers.pas est similaire à
UDrivers.pas, que nous utilisons avec le programme de
simulation. L’implémentation est différente vu qu’il s’agit
cette fois de piloter du vrai matériel. On pourra, pour le
matériel standard, utiliser les pilotes résidents présents
dans le BIOS.
UControl.pas intègre les fonctionnalités du contrôleur et
est une copie de UControl.pas du simulateur.
PasAvr est le compilateur croisé fourni avec le set.
PasAvr.exe convertit le projet Demo.prj en un fichier,
Demo.hex. Le programme ne connaît pas de limitation de
Figure 3. PDemo.prj est le containeur comportant tous les fichiers durée d’utilisation ni de taille du fichier .hex produit.
faisant partie du projet de simulation Delphi. PasAvr possède son propre IDE et simulateur pour l’écri-
ture de programmes en Pascal et assembleur hors du
cadre de Delphi.
Demo.hex contient le code objet de format Inter hex pro-
fourni avec l’ensemble du DelphiStamp écrit ce fichier duit et destiné au contrôleur ATMega128.
.hex dans le mémoire Flash du DelphiStamp, le pro- Le programme moniteur Mon485 accompagnant le set
gramme étant ensuite lancé. Le contrôleur travaille en permet de communiquer avec le loader sur le DelphiS-
autonome et la liaison vers le PC est coupée. tamp. Cet outil se charge de faire en sorte que le code
objet fourni soit programmé dans la mémoire Flash. Le
programme sera lancé soit par le biais de Mon485 soit
Simulation par une réinitialisation du DelphiStamp.
PDemo.prj est le « containeur » dans lequel se trouvent
tous les fichiers faisant partie du projet de simulation (cf.
figure 3). Le DelphiStamp en interface
Commençons par décrire le projet à réaliser. Pour piloter
DMain.pas est un module de données (datamodule) ne un moteur pas à pas il doit y avoir, sur le PC, une forme
pouvant de ce fait pas comporter de composants visuels faisant office de console de commande. Le moteur est
tels que le TTimer. Ce module simule le vecteur d’alimen- relié au DelphiStamp au travers d’un circuit de com-
tation (Power On) et les autres interruptions par le biais mande (driver). La forme comporte un potentiomètre à
d’événements Delphi. glissière permettant de piloter la position de 0 à 360 °,
FGUI.pas est du type TForm. Il peut comporter des com- organe épaulé par 3 boutons numériques permettant un
posants visuels. Ces composants visuels se substituent le positionnement rapide à 0, 180 et 360 °. Nous avons en
matériel externe au contrôleur tels qu’interrupteurs, LED, outre connecté au DelphiStamp un affichage LCD permet-
LCD, moteur etc. tant une lecture de l’angle paramétré.
UDrivers.pas comporte les pilotes permettant la com- Le programme de pilotage tournant sur le PC est écrit en
mande de FGUI.pas. Delphi. On a, sur le DelphiStamp, exécution d’un serveur
UControl.pas intègre l’algorithme de commande et est d’interface chargé d’assurer une synchronisation entre le
compatible avec le compilateur croisé PasAvr. matériel connecté au système et les paramètres écrits par
Figure 4. Demo.prj est le fichier-containeur pour le reste des fichiers du projet de démonstration du contrôleur.
72 elektor - 10/2005
le programme tournant sur le PC vers le DelphiStamp.
Il est important, dans le cas de programmes com-
plexes, si l’on veut réduire au maximum le risque d’er-
reur, de découper ceux-ci en blocs logiques. Delphi
propose à cet effet les pièces suivantes : unit, library,
form et datamodule.
Le projet Delphi PInf1.dpr est subdivisé en 5 parties
(cf. figure 5).
– Le datamodule DMain.pas est, outre une unit, un
containeur pour des composants non visuels tels que tem-
porisateurs. Ce datamodule met à disposition un power-
on event et un temporisateur de manière à pouvoir four-
nir de nouvelles informations au DelphiStamp toutes les
200 ms.
– La forme UGUI.pas est une unit pouvant intégrer des
composants visuels. Cette forme comporte un potentiomè-
tre à glissière TTrackBar et 3 TButton. Ces boutons sont
combinés au potentiomètre à glissière en vue d’obtenir Figure 5. Le projet Delphi PInf1.dpr se subdivise en 5 parties.
un positionnement rapide à 0, 180 et 360 °.
– L’unit UControl.pas contient la fonctionnalité de l’appli-
cation. La procédure ControlInit initialise l’ensemble du
matériel lors de l’application de la tension d’alimentation Version en Delphi
(power-on). La procédure ControlExe rafraîchit le serveur Comme d’habitude nous démarrons au coeur de l’IDE
d’interface du DelphiStamp toutes les 200 ms. La commu- Delphi, un nouveau projet par:
nication avec le DelphiStamp et le GUI se fait par le biais Fichier->Nouveau->Application
des pilotes de l’unité UDrivers.pas. et on l’enregistre sur le disque dur par :
– L’unit UDrivers.pas comporte les procédures de com- Fichier->Tout enregistrer-> <Directory\DS Inf1>
mande de base pour la GUI et le DelphiStamp. Comme UGUI.pas et PInf1.dpr
cette unité est rarement modifiée, elle est réutilisable à Mettre sur la forme :
loisir. Le CD-ROM accompagnant le set comporte une Standard | Label
unité standard pour la communication avec tous les maté- Win32 | TrackBar
riels standards. Standard | Button (en 3 exemplaires)
– M485.DLL est une library unit réutilisable pour différen- La forme a alors l’aspect qu’illustre la figure 6.
tes applications. Cette bibliothèque également fournie
comporte le logiciel pour la communication avec le Del- À l’aide de l’Inspecteur d’objets on modifie les propriétés
phiStamp et utilise un port RS-232 paramétrable. selon les informations du tableau 1. La forme aura alors
10/2005 - elektor 73
l’aspect que montre la figure 7. InfDta.MotorSts)
End;
L’événement OnClick de Btn0 doit être implémenté. L’évé-
nement OnClick de Btn180 et de Btn360 est le même L’affichage LCD à 16 caractères est constitué de 2 lignes
que celui du Btn0. Dans l’Inspecteur d’objets de Btn180 de 8 caractères accolées. Ces 2 lignes de 8 caractères
et de Btn360 on peut spécifier Btn0Click dans la liste doivent être envoyées indépendamment vers l’interface
déroulante de l’événement OnClick. serveur. L’envoi de ces lignes se fait uniquement en cas
Dans l’événement OnClick le potentiomètre à glissière est de modification. Cf. SLcd <-> LcdStr1 dans le code ci-
mis à la valeur du Tag qui est 0, 200 ou 400. dessous.
74 elektor - 10/2005