TINA -  Circuit Simulator for Analog, Digital, MCU & Mixed Circuit Simulation
Circuit a microcontrôleurs

Circuit a microcontrôleurs (MCU)

TINA v7 et ses versions plus récentes prennent en charge les microcontrôleurs PIC ; des modules de prise en charge d'autres MCU sont intégrés constamment a TINA. Meme s'il vous est possible d'ajouter vos propres microcontrôleurs décrits par VHDL, les microcontrôleurs incorporés a TINA sont précompilés pour fournir des performances plus élevées. Leur code VHDL n'est pas visible pour l'utilisateur.

En toutes circonstances, il vous sera possible de voir, de modifier et de déboguer le logiciel courant dans l'un quelconque des processeurs pris en charge et, bien entendu, de créer et d'exécuter votre propre code. Il existe deux méthodes pour créer le logiciel pour les microcontrôleurs sous TINA. Vous pouvez utiliser le code binaire et déboguer des fichiers créés par tout compilateur standard (par exemple MPLAB pour les PIC) ou charger simplement votre code assembleur a exécuter et déboguer directement sous TINA en utilisant son assembleur- débogueur intégré.

Exemple : le clignotant PIC

Chargez le circuit PIC Flasher.TSC a partir du dossier Examples\VHDL\PIC\Asm. Le schéma de principe suivant s'affiche avec le microcontrôleur PIC 16F73.

Ce circuit effectue tout simplement un comptage vers l'avant, un coup a la fois. Cliquez sur le bouton
pour voir comment il fonctionne. L'afficheur devrait maintenant compter vers l'avant un par un.

Faites un double clic sur le MCU et cliquez sur le bouton dans la boîte de dialogue ci-dessus -


Cliquez sur le bouton Edit ASM [Editer ASM]. Le code ASM du MCU s'affiche dans l'éditeur de code source MCU.

Effectuons maintenant la modification suivante dans le code. Modifiez l'instruction (sélectionnée précédemment) de la ligne 25 (le numéro de ligne vous est indiqué dans l'angle droit, au bas de la fenetre d'édition de code)
comme suit :

               addlw 01H

en

              addlw 02H
Mémorisez le code modifié en cliquant sur l'icône et fermez les fenetres MCU ouvertes a l'écran. Si vous cliquez sur le bouton l'incrément sera maintenant de 2 ! Notez que le code ainsi modifié sera enregistré automatiquement dans le fichier TINA.TSC.


Exemple : traitement d'interruption PIC

Etudions maintenant une autre fonctionnalité offrant une plus grande interactivité.

Chargez l'exemple PIC16F84interrupt_rb0.TSC a partir du dossier d'exemples Examples\VHDL\PIC\Asm.



Cliquez sur le bouton . Au premier coup d'oil, il semble que qu'il ne se passe rien.

Mais, si vous cliquez sur le commutateur SW-HL1, l'afficheur compte vers l'avant par pas de 1 chaque fois que le commutateur passe de Bas a Elevé. Cela est réalisé par la possibilité de traitement d'interruptions du PIC16F84.
Etudions maintenant le fonctionnement plus attentivement en utilisant le débogueur interactif ASM.
Pour activer le débogueur, utilisez Option [Option] dans le menu Analysis [Analyse]. Cochez la case «Enable MCU Code debugger» [Activer le débogueur de code MCU] dans la boîte de dialogue Analysis Options [Options d'analyse], comme le montre la figure ci-apres.


 

Le débogueur MCU s'affiche si vous cliquez sur le bouton :

Suivons l'exécution du programme pas a pas en cliquant sur le bouton Trace into [Exécution ligne par ligne détaillée]. Apres 14 clics environ, nous arrivons au PT1: label, ou le programme semble etre dans un boucle infinie.


PT1: INCF TEMP, F GOTO PT1

Cliquez maintenant sur le commutateur SW-HL1 et modifiez ce dernier en High [Elevé]. (Vous cliquez lorsque le curseur se transforme en une fleche orientée vers le haut Î).
Rentrez au débogueur et cliquez deux fois sur le bouton
Trace into [Exécution ligne par ligne détaillée].
Le logiciel reconnaît l'interruption et saute dans le

INT_SERV: label.

INT_SERV:
INCF COUNTER, F MOVF COUNTER, 0 MOVWF PORTA

Augmentez le COUNTER [COMPTEUR] et copier ce dernier a PORT A. La sortie est maintenant de 1. Apres cette opération, le logiciel retourne a la “boucle infinie” a PT1.

Editer le code dans le débogueur

Etudions maintenant la maniere d'effectuer une petite modification du logiciel en utilisant le débogueur. Dupliquez le INCF COUNTER, l'instruction F en utilisant copier&coller de la maniere suivante :

        INT_SERV:
        INCF COUNTER, F 
        INCF COUNTER, F 
        MOVF COUNTER, 0
        MOVWF PORTA                 

Notez que si vous cliquez sur le bouton , le logiciel vous demandera :

Cliquez sur Yes [Oui], puis cliquez a nouveau sur le bouton Maintenant, l'incrément sera de 2 a chaque changement Bas-Elevé du commutateur. Vous pouvez également vérifier le circuit dans le mode d'exécution continu du débogueur si vous cliquez sur le bouton . Meme si le débogueur court vite, il vous sera possible de voir la “boucle infinie” et le saut a la routine Interrupt server [Serveur d'interruption] ( INT_SERV :) lorsque vous modifiez le commutateur..

Créer un point d'interruption

Exécutez maintenant le logiciel dans le mode continu du débogueur, en utilisant la commande Run [Exécuter], le logiciel s'arretera a l'espace balisé avant d'exécuter la commande balisée. Pour faire une démonstration de cette fonctionnalité, cliquez sur l'instr uction d'incrémentation dans notre routine de ser vice d'interruption ISR apres INT_SERV:label et cliquez sur le bouton oggle break [Interruption en bascule].

Cliquez maintenant sur le bouton Run [Exécuter]. Le logiciel commence a courir et tombe dans la “boucle infinie”. «Cycle infini» Bien que vous ayez défini un point d'interruption, le code ne s'arrete par, car il ne passe pas par le point d'interruption. Néanmoins, le logiciel s'arretera a l'instruction suivante lorsque vous changerez le commutateur de Bas a Elevé.

             INT_SERV:
             INCF COUNTER, F

Vous pouvez maintenant continuer l'exécution du logiciel soi en mode pas a pas via le bouton soi a nouveau via la commande Run [Exécuter].




Copyright © 2024 DesignSoft, Inc. All rights reserved.