IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MPLAB Discussion :

Compréhension d'un code de base


Sujet :

MPLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 50
    Points
    50
    Par défaut Compréhension d'un code de base
    Bonjour à toutes et à tous.

    Voila on m'a demandé dans le cadre de mon travail de programmer avec MPLAB un switch (4 entrée + 1 sortie), de manière à contrôler l'entrée.

    Rien de bien difficile je suppose mais je ne m'y connait absolument pas.

    La personne qui m'a fournit le switch m'a aidé pour configurer ma machine, et m'a donné un bout de code censé fonctionner, mais je n'en suis pas sur.

    Je donne le code donné (que je ne comprends pas bien), pour que vous puissiez me dire si quelque chose ne va.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    #if defined(__18CXX)
    void main(void)
    #else
    int main(void)
    #endif
    {   
    	char input_buffer[64];
    	
    	LATA   = 0xFF;
    	ADCON1 = 0x0F; // toutes les broches du PortA en Digital
    	TRISA &= 0xF0; // configuration des broches RA0 à RA3 en sorties
    
        InitializeSystem();
    	
    	TRISBbits.TRISB0=1;	// RB0=INT0 en entree
    	INTCON2bits.RBPU=0;	// Pull-Up sur le port B
    
        while(1){
    		// Check bus status and service USB interrupts.
            USBDeviceTasks(); // Interrupt or polling method.  If using polling, must call
            				  // this function periodically.  This function will take care
            				  // of processing and responding to SETUP transactions 
            				  // (such as during the enumeration process when you first
            				  // plug in).  USB hosts require that USB devices should accept
            				  // and process SETUP packets in a timely fashion.  Therefore,
            				  // when using polling, this function should be called 
            				  // frequently (such as once about every 100 microseconds) at any
            				  // time that a SETUP packet might reasonably be expected to
            				  // be sent by the host to your device.  In most cases, the
            				  // USBDeviceTasks() function does not take very long to
            				  // execute (~50 instruction cycles) before it returns.
        				  
    
    		// Application-specific tasks.
    		// Application related code may be added here, or in the ProcessIO() function.
            ProcessIO();
             
    		if( getsUSBUSART(input_buffer, 1) ){
    			switch(input_buffer[0]){
    			case '1':
    				LATA=0xFF; // toutes les broches à l'état Haut
    				LATAbits.LATA0=0;
    				sprintf(USB_Out_Buffer, "Antenna1\n");
    				putsUSBUSART(USB_Out_Buffer);
    				break;
    			case '2':
    				LATA=0xFF; // toutes les broches à l'état Haut
    				LATAbits.LATA1=0;
    				sprintf(USB_Out_Buffer, "Antenna2\n");
    				putsUSBUSART(USB_Out_Buffer);
    				break;
    			case '3':
    				LATA=0xFF; // toutes les broches à l'état Haut
    				LATAbits.LATA2=0;
    				sprintf(USB_Out_Buffer, "Antenna3\n");
    				putsUSBUSART(USB_Out_Buffer);
    				break;
    			case '4':
    				LATA=0xFF; // toutes les broches à l'état Haut
    				LATAbits.LATA3=0;
    				sprintf(USB_Out_Buffer, "Antenna4\n");
    				putsUSBUSART(USB_Out_Buffer);
    
    				break;
    			default:
    				sprintf(USB_Out_Buffer, "NoAntenna\n");
    				putsUSBUSART(USB_Out_Buffer);
    				break;
    			}	
    		}
    			
    		
        }//end while
    
    
    }//end main
    j'ai ajouté sprintf(USB_Out_Buffer, "Antenna1\n"); pour vérifier le code que j'ai fait pour communiquer avec lui en liaison usb.

    Je pense que l'activation/désactivation des entrées se fait via les lignes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    LATA=0xFF; // toutes les broches à l'état Haut
    				LATAbits.LATA3=0;
    Merci d'avance !

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 50
    Points
    50
    Par défaut
    j'ai l'impression dans le code que m'a fait mon collègue que les entrées sortie sont inversée, et qu'il a compris à l'envers le boulot (ou peu etre que je comprends de travers aussi ^^).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TRISA &= 0xF0; // configuration des broches RA0 à RA3 en sorties
    Si il parle la de mes quatres entrée, c'est donc bien contraire.
    par contre je n'ai pas l'habitude de coder de cette manière, donc si quelqu'un pouvait confirmer ce que je pense et me donne le code correct, merci

    si j'ai bien compris :
    TRIS + nom de port -> sélectionner le port pour être une entrée / sortie
    LAT + nom de port -> activer / désactiver le port

    et la différence entre les différents ports ? A, B, C, D
    On ne m'a donné aucune doc ...

Discussions similaires

  1. Code de base pour wxWidget
    Par gogeta1 dans le forum wxWidgets
    Réponses: 3
    Dernier message: 26/06/2007, 11h14
  2. Réponses: 10
    Dernier message: 11/04/2007, 11h14
  3. Conseil pour code de base
    Par Alpha31 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 21h12
  4. Réponses: 11
    Dernier message: 31/05/2006, 22h47
  5. Exécuter code dans base A depuis base B
    Par Kloun dans le forum Access
    Réponses: 3
    Dernier message: 26/01/2006, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo