Kidule Ascenseur/Initialiser le Hardware
Le matériel
modifierLe matériel de cet atelier est composé de Kidules produits par Didel.
Les Kidules
modifierOn trouve la documentation complète ici pour le Kidule 2550 et pour le kidule ascenseur.
Le schéma
modifierLe processeur est un PIC 18F2550 dont on trouve le databook ici [1]
Déclaration dans le software pour ce Hardware
modifierSur le Kidule PIC 2550, 3 ports sont utilisables PORTB de 8 bits à droite et PORTA (5 bits) ainsi de PORTC (3 bits) à gauche.
On trouve ci après les déclarations nécessaires pour adresser correctement le hardware: Dans ce fichier, on fait deux choses:
- on donne des noms intelligents aux bits d'entrées / sorties, qui correspondent aux deux Kidules
- on a une fonction setup() qui permet d'initialiser correctement les registres TRISx pour indiquer s'il s'agit d'entrées ou de sorties
- définir des mots parlant pour Allume, Eteint ou Presse plutôt que d’avoir à tout le temps réflechir s'il faut un 1 ou un 0 dans ce cas
HardwareAsc.h
modifier#define pic18f2550 1
// ATTENTION: sur le 18F2550, il ne faut pas écrire dans PORTx des bits, mais dans LATx, car
// si on fait plusieurs instructions bit de suite (Read-Modifiy-Write) on a
// des résultats difficiles à comprendre
// cf http://www.microchip.com/forums/tm.aspx?m=421256
// http://www.microchip.com/forums/tm.aspx?m=110258
//déclarations pour le Kidule PIC2550
#define Buzzer LATCbits.LATC7
//déclarations pour le module Ascenseur monté à droite
#define Bouton2eme PORTBbits.RB0
#define Bouton1er PORTBbits.RB1
#define BoutonRez PORTBbits.RB2
#define Switch2eme PORTBbits.RB3
#define Switch1er PORTBbits.RB4
#define SwitchRez PORTBbits.RB5
#define Monter LATBbits.LATB6
#define Descendre LATBbits.LATB7
//déclarations pour le module Dé monté à Gauche
#define Led0 LATAbits.LATA0
#define Led1 LATAbits.LATA1
#define Led2 LATAbits.LATA2
#define Led5 LATAbits.LATA3
#define Led4 LATAbits.LATA5
#define Led3 LATCbits.LATC0
#define Led6 LATCbits.LATC1
#define Poussoir PORTCbits.RC2
//déclaration pour l'usage propre à ce programme
#define LedRez Led0
#define Led1er Led1
#define Led2eme Led2
//déclaration pour rendre plus explicite le code vu que les modules sont en logique actif à 0
#define Presse 0
#define Allume 0
#define Eteint 1
// Mise en route du PIC: configuration des PINs en entrées ou sorties
void setup()
{
PORTA = 0x00;
ADCON1= 0x0f; // désactive les entrées analogiques
CMCON = 0x07;
TRISA = 0b11000000;
PORTA = 0b00111111;
TRISC = 0b00111100;
PORTC = 0b00000011;
TRISB = 0b00111111;
PORTB = 0b00000000;
}
Le mieux, c’est de copier ce bout de programme dans votre programme, pour ne pas avoir à tout déclarer à la main. Pour l'atelier, vous trouverez un fichier hardwareAsc.h déjà présent dans le répertoire.