Ajouter des entrées sorties TOR

Postby hlaidet » Mon Nov 03, 2008 12:00 am

Bonjour à tous,

Pour ceux qui ont besoin de plus de sorties TOR que les 4 disponibles sur J6,
voici une solution possible.

Un MCP23S17 (IO expander 16bits SPI) de Microchip connecté aux 4 ports disponibles sur J6.
(MCP23S17 dispo chez Farnel 1292238 boitier PDIP )
J'ai choisi la version SPI et non I2C du boitier car j'utilise déjà les pins SDA et SCL pour l'UART2 (3ème fonction du port).

Le QSPI étant difficile à connecter, on fait un SPI software avec les IO dispo sur J6.

MCP23S17
Pin Nom
9 Vdd +3V3
10 Vss Gnd
11 SS/ J6.6 (portTA.1)
12 SCK J6.8 (portTA.3)
13 MOSI J6.5 (portTA.0) active le relais de la carte
14 MISO J6.2 (portTA.2)
15 A0 Gnd
16 A1 Gnd
17 A2 Gnd
18 Reset +3V3

Quelques lignes de code sont nécessaires pour dialoguer avec le MCP23S17 ("IO_SPI.c" joint).

2 procédures doivent être placées dans le soft:

IO_Initialize(); à placer dans main.c après start_AD();
IO_Update(); à placer dans Int_handler.c dans timer_isr()

timer_isr()
{
++timer_ticks;

if (++timerct >= INTS_PER_CTICK)
{
cticks++;
timerct = 0;
IO_Update();
}
...
}


Dans IO_SPI.c, il y a un #define MASK_DIR qui fixe la direction de chacun des 16bits de l'expander.
L'appel de la procédure IO_Update(); dans timer_isr toutes les 5ms n'a pas d'incidence sur le timing système.
En effet la procédure IO_Update() consomme
55 µsecondes avec des bits configurés en entrée ( 2 transactions nécessaires )
sinon la moitié.
Ce qui représente au plus 1.1% de cpu.

Le pilotage du relais via portTA.0 est toujours valide.
Seule la LED montre un léger scintillement.
Un un condo de 1µF monté sur R17 règle le problème.

2 variables sont utilisées pour lire et/ou écrire les IO
IO_data_write: Pour activer les sorties (des bit à 0 dans MASK_DIR)
IO_data_read: Reflet des entrées (des bit à 1 dans MASK_DIR)


Salut
Henri
Attachments
IO-SPI.c
(6.79 KiB) Downloaded 63 times
hlaidet
 
Posts: 61
Joined: Thu Jan 02, 2014 10:44 am

Return to DigiButler (04&05-2008)

Who is online

Users browsing this forum: No registered users and 1 guest