Programmation sous basic11 d'un 68HC11E2
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Programmation sous basic11 d'un 68HC11E2



  1. #1
    invite0aee1378

    Programmation sous basic11 d'un 68HC11E2


    ------

    Bonjour !
    Alors voilà, je suis Terminale S SI ( Sciences de l'ingénieur ) et je réalise un projet de PPE avec 4 camarades.
    Notre projet consisté à réaliser une fenêtre de toît ouvrable à ouverture et fermeture automatique selon les conditions climatiques (Pluie et température) et une commande manuelle.
    2 de mes potess'occupaient de la partie mécanique : ils ont monté un système utilisant une bielle afin d'ouvrir la fenêtre : le moteur ne tourne donc que dans un sens.
    Moi et les 2 autres s'occupont de la partie électronique.
    Je devais m'occuper du capteur à température et du capteur de fin de course (puisque le moteur ne tourne que dans un sens, je l'ai réalisé avec un bouton poussoir).
    Un autre s'occupait de la partie commande (c'est à dire lorsqu'on appuie sur un bouton, la fenêtre descend ou monte) et du capteur de pluie.
    Le dernier s'occupait de la programmation.

    On avait comme critère : _ La commande a la priorité sur le reste. Il a donc développé une télécommande avec deux touches, où une touche gère le mode utilisé (c'est à dire mode automatique où la commande est ignoré et mode manuelle où les variables climatiques et de positions sont ignorées).
    _ La pluie a la priorité sur la température et la fenêtre se ferme quand il pleut.
    Je vous passe les détails et donc : quand le capteur est mouillé, la sortie du capteur = +Vcc (etat 1) et =0 (etat 0) quand le capteur est sec.
    _ La Fenêtre doit être ouverte quand la température dépasse un certain seuil et doit être fermée lorsqu'elle est en dessous de ce seuil. Afin de stabiliser la fenêtre, j'ai décidé de placer 2 seuils (un d'ouverture, un de fermeture) (grâce à une CTN, 2 comparateurs et 2 résistances variables).

    Jusque là tout va bien, tout a été réalisé mais le problème c'est que le gars qui devait s'occuper de la programmation nous a laché y'a 3 jours (on passe dans 2 semaines) et comme personne n'est motivé pour faire la programmation, je suis obligé de m'y coller

    Comme je n'y connais pas grand chose, j'ai demandé au prof si je pouvais utiliser un kit 68HC11E2 du labo comme microcontroleur, il a dit oui et m'a conseillé par soucis de simplicité d'utiliser le langage basic et basic11 (logiciel du bahut).
    J'ai donc dressé une table de vérité, un organigramme etc.
    J'ai 6 variables logiques (0 ou 1) : M(Le mode M=0, manuel, M=1, automatique),CM(La Commande CM=1, signal, CM=0, pas de signal), C(Capteur position, C=1 fenêtre descendue, C=0 fenêtre remontée), P(Pluie, P=1 Présence pluie, P=0 Absence pluie), T+(Température d'ouverture, T+=1 Température > seuil ouverture, T+=0 Température < seuil ouverture) et T- (Température Fermeture, T-=1 si Température < seuil fermeture, T-=0 Température > seuil fermeture)
    Et il ressort que la fenêtre change de position quand :
    _ M=0 et CM=1
    _ M=1, C=1, P=0, T+=1, T-=0
    _ M=1, C=0, P=1
    _ M=1, C=0, P=0, T+=0, T-=1

    Ensuite, j'ai récuperé une nappe de l'année derniere (pas le temps de trouver autre chose) qui se branche sur le kit, où il reste PC6, PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PB2, PB3, PB4, PB5, PB6, PB7, Vcc, GND et IRQ.
    C'est donc suffisant pour mon système.
    Et aprés avoir chercher et un peu bidouiller sur le net, j'ai fait ce programme avec basic11 :

    'programme pour PPE


    '*********************** Définition des données**********************
    '************************** sur un 68HC11E2 ************************
    (j'ai pris un programme qui les définissait : starte2.bas fourni avec basic11)

    ProgramPointer $F800
    DataPointer $0002
    StackPointer $00E8

    sect text
    cli ; enable debugger
    ldx #_data_s
    bra _crt2
    _crt1 clr 0,x ; clear data area
    inx
    _crt2 cpx #_data_e
    bne _crt1
    sect data
    _data_s equ *

    byte PORTA at $1000 ' mode single-chip
    byte PIOC at $1002
    byte PORTC at $1003
    byte PORTB at $1004
    byte PORTCL at $1005
    byte DDRC at $1007
    byte PORTD at $1008
    byte DDRD at $1009
    byte PORTE at $100A
    int TCNT at $100E
    byte TMSK2 at $1024
    byte TFLG2 at $1025
    byte PACTL at $1026
    byte PACNT at $1027
    byte BAUD at $102B
    byte SCCR1 at $102C
    byte SCCR2 at $102D
    byte SCSR at $102E
    byte SCDR at $102F
    byte ADCTL at $1030
    byte ADR at $1031
    byte OPTIONS at $1039

    '********************* CONFIGURATION ET INITIALISATION *********************

    DDRC=%00000000 'Le PORT C est entièrement configuré en entrées

    'PORTC.0 correspond à la variable 'mode'
    'PORTC.1 correspond à la variable 'commande'
    'PORTC.2 correspond à la variable 'pluie'
    'PORTC.3 correspond à la variable 'position'
    'PORTC.4 correspond à la variable 'temperature ouverture'
    'PORTC.5 correspond à la variable 'temperature fermeture'
    'PORTB.2 correspond à la sortie vers le moteur

    PORTC.0=1 'Mode Automatique
    PORTC.0=0 'Mode Manuel
    PORTC.1=1 'Commande activé
    PORTC.1=0 'Pas de signal de la commande
    PORTC.2=1 'Présence Pluie
    PORTC.2=0 'Absence Pluie
    PORTC.3=1 'Fenêtre Descendue
    PORTC.3=0 'Fenêtre remontée
    PORTC.4=1 'Température au dessus du seuil d'ouverture
    PORTC.4=0 'Température en dessous du seuil d'ouverture
    PORTC.5=1 'Température en dessous du seuil de fermeture
    PORTC.5=0 'Température au dessus du seuil de fermeture

    PORTB.2=0 'Pas de signal vers le moteur, la fenêtre ne change pas de position
    PORTB.2=1 'Envoi d'un signal vers le moteur, mouvement de la fenêtre

    '***************************** *********** PROGRAMME PRINCIPAL ****************************** **********


    program:
    do
    PORTB.2=0 'Initialisation, pas de mouvement de la fenêtre

    if PORTC.0=0
    then goto manuel 'Mode Manuel

    if PORTC.0=1
    then goto automatique 'Mode Automatique
    loop

    '************************** MODE MANUEL **************************

    manuel:
    do
    if PORTC.1=0 'Pas d'activation sur la commande
    then PORTB.2=0 'Pas de mouvement de la fenêtre
    then goto program 'Retour début de programme

    if PORTC.1=1 'Activation de la commande
    then PORTB.2=1 'Mouvement de la fenêtre
    then goto program
    loop

    '************************** MODE AUTOMATIQUE **************************

    automatique:
    do
    if PORTC.2=1 'Présence Pluie

    then goto pluie
    if PORTC.2=0 'Absence Pluie
    then goto temperature
    loop

    '************************** SOUS-PROGRAMME : VARIABLE PLUIE **************************

    pluie:
    do
    if PORTC.3=1 'Fenêtre descendue (capteur de position)
    then PORTB.2=0 'Pas de mouvement de la fenêtre
    then goto program

    if PORTC.3=0 'Fenêtre remontée
    then PORTB.2=1 'Mouvement de la fenêtre
    then goto program
    loop

    '************************** SOUS-PROGRAMME : VARIABLE TEMPERATURE **************************

    temperature:
    do
    if PORTC.4=1 'Temperature au dessus du seuil d'ouverture
    then goto t+

    if PORTC.5=1 'Temperature en dessous du seuil de fermeture
    then goto t-

    if PORTC.5=0 'Temperature entre le seuil de fermeture et d'ouverture
    then PORTB.2=0 'Pas de mouvement de la fenêtre
    then goto program 'Retour programme principal
    loop

    '************************** SOUS-PROGRAMME : TEMPERATURE D'OUVERTURE **************************

    t+:
    do
    if PORTC.3=1 'Fenêtre descendue
    then PORTB.2=1 'Mouvement de la fenêtre
    then goto program

    if PORTC.3=0 'Fenêtre remontée
    then PORTB.2=0 'Pas de mouvement de la fenêtre
    then goto program
    loop

    '************************** SOUS-PROGRAMME : TEMPERATURE DE FERMETURE **************************

    t-:
    do
    if PORTC.3=$1 'Fenêtre descendue
    then PORTB.2=0 'Pas de mouvement de la fenêtre
    then goto program

    if PORTC.3=$0 'Fenêtre remontée
    then PORTB.2=1 'Mouvement de la fenêtre
    then goto program
    loop

    Toutefois, ne m'y connaissant pas plus, je ne comprend pas vraiment les erreurs faîtes (lorsque je compile j'ai des syntax errors ^^). si quelqu'un pouvait eclarer ma lanterne.

    Et une dernière question : La tension en sortie des PORT ( PORTB.2 sur mon programme ) est égal à Vcc ou pas ?

    Merci beaucoup à celui qui m'a lu jusqu'ici et encore plus à celui qui m'aidera !

    -----

  2. #2
    invite0aee1378

    Re : Programmation sous basic11 d'un 68HC11E2

    Bonjour ! Désolé d'insister mais bon, c'est important

    Je me rend compte que mon message parait massif, désolé pour le pavé.
    Aprés quelques corrections sur le programme ( quand je compile je n'ai plus d'erreurs ), je l'ai zippé (PPE.zip en piece jointe).
    Si quelqu'un peut prendre le temps de regarder rapidement si tout a l'air correct, ça serait vraiment super !
    Mais c'est vrai que ça prend du temps donc, pour ceux qui ne l'ont pas, si vous pouviez répondre à 2 petites questions :
    _ La tension en sortie des PORT ( PORTB.2 sur mon programme ) est égal à Vcc ou pas ?
    et _ Comment fait-on pour programmer une variable de temps ? : c'est à dire que je souhaiterais envoyer une impulsion (etat = 1) de x secondes (afin de monter la fenêtre dans sa position haute, car il n'y a pas de capteur de fin de course). Je suppose qu'il faut utiliser une temporisation, mais je vois pas trop comment la programmer ...
    Merci d'avance !!

    PS : je rappelle que je programme en langage basic sous basic11 !
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Programmation sous Flowcode d'un PIC 16F84
    Par invite923c5f28 dans le forum Électronique
    Réponses: 9
    Dernier message: 18/03/2009, 17h02
  2. Programmation sous flowcode
    Par Mickl1722 dans le forum Électronique
    Réponses: 7
    Dernier message: 21/01/2009, 21h37
  3. programmation sous R
    Par invitefca55c10 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/05/2008, 16h07
  4. Programmation BASIC11 (68HC11)
    Par invite574675fd dans le forum Électronique
    Réponses: 9
    Dernier message: 25/01/2008, 16h13
  5. Qui veut un 68HC11E2 neuf ?
    Par gcortex dans le forum Électronique
    Réponses: 2
    Dernier message: 04/02/2007, 10h48
Découvrez nos comparatifs produits sur l'informatique et les technologies.