Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Autres EDI > MPLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 11h56   #1
olivier21c
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 81
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 81
Points : 14
Points : 14
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 :
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 :
1
2
3
LATA=0xFF; // toutes les broches à l'état Haut
				LATAbits.LATA3=0;
Merci d'avance !
olivier21c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 15h52   #2
olivier21c
Candidat au titre de Membre du Club
 
Inscription : janvier 2008
Messages : 81
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 81
Points : 14
Points : 14
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 :
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 ...
olivier21c est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h14.


 
 
 
 
Partenaires

Hébergement Web