Précédent   Forum du club des développeurs et IT Pro > Général Développement > Programmation système > Embarqué
Embarqué Forum d'entraide sur la programmation des systèmes embarqués
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 01/10/2012, 11h03   #1
iceheart31
Invité de passage
 
Inscription : septembre 2012
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 10
Points : 0
Points : 0
Par défaut frequence et masquage

Bonjour,

j ai ecris un code pour un pic18f4520, je le compile en C18 et je suis sur MPlab 8.87. Je souhaite generer un signal carré de 40kHz singularisé : 4bits I0I0 par exemple . Cette opération afin de ne traiter que les signaux ayant cette signature .

J arrive a génerer un signal carre 40khz avec TMR0 amis des que jj applique le masquage , je suis bloque a 31khz maximum .

est ce envisageable ?
iceheart31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2012, 12h20   #2
Bktero
Expert Confirmé Sénior
 
Avatar de Bktero
 
Ingénieur systèmes embarqués
Inscription : juin 2009
Messages : 1 717
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur systèmes embarqués
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2009
Messages : 1 717
Points : 4 217
Points : 4 217
Bonjour,

Qu'est ce qu'un signal carré singularisé ?
__________________
Si Code::Blocks vous dit undefined reference to 'socket@12', cela signifie que vous avez un problème d'édition des liens. Allez dans Projects / Build Options / Linker Settings / Add et renseigner ici les .a qui vont bien. Exemple pour les sockets : C:\Program Files\CodeBlocks\MinGW\lib\libws2_32.a

Pour les adeptes du langage SMS, allez ici et ramenez la traduction française ^^

Pour vos problèmes d'embarqué, utilisez le forum dédié !
Bktero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2012, 14h03   #3
iceheart31
Invité de passage
 
Inscription : septembre 2012
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 10
Points : 0
Points : 0
J entends par singularisé qu'il ai une identité : IOIO ou IIOI etc .... pour etre sur que le signal recu est bien celui que l on veux recevoir et pas son voisin ...
iceheart31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2012, 13h51   #4
iceheart31
Invité de passage
 
Inscription : septembre 2012
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2012
Messages : 10
Points : 0
Points : 0
bon voila ou j en suis .. ça marchouille .. presque ...
1er problème le signal est très irrégulier ...
2 je suis encore trop lent (mais ça semble faisable)

Je vous poste le code pour que vous puissiez vous rendre compte ...
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*============================================================================
 
	//Elements relatifs a la configuration du PIC
	/////////////////////////////////////////////

#include <p18f4520.h> //ATTENTION penser a adapter la ref du uC
#include <timers.h>
#include <stdio.h>
#include <delays.h>
 
#pragma config OSC = HSPLL , FCMEN = OFF, PWRT = OFF, MCLRE = ON
#pragma config PBADEN = OFF
#pragma config LVP = OFF
#pragma config WDT = OFF, DEBUG=OFF

	//Elements relatifs au TABLEAU
	/////////////////////////////
#define nbr_element_tab 4  		// permet de donner la taille du tableau
#define N 4 					// permet de faire la boucle pour invrementer le pointeur


int tableau [nbr_element_tab]; 	//declare un tableau de x cases 
int result_masquage(void);
int pulses (void);
void GenerationPulseAppel(void);


	//Elements relatifs aux masquages
	/////////////////////////////////

	// Définition de la variable comme une constante (pour test uniquement)
int a = 0x0F;

	// Definition des masques          
int maskA = 0x08;   // en binaire, cela donne I000
int maskB = 0x04;   // en binaire, cela donne 0I00
int maskC = 0x02;   // en binaire, cela donne 00I0
int maskD = 0x01;   // en binaire, cela donne 000I

////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{  
	int i;  
	
	//Initialisation des Ports
	LATB = 0x00;
	PORTB = 0x00;

	// Initialisation
    TRISB = 0xFD;		//RB1 en output uniquement 
   // ADCON1 = 0x0F; 	//to make all PORTA, PORTB pins digital when PBADEN is OFF
 
	tableau[0] = 1;//((a&maskA)==8); // booleen si le resultat est vrai la case prend 1 
	tableau[1] = 1;//((a&maskB)==4); //sinon 0
	tableau[2] = 1;//((a&maskC)==2); 
	tableau[3] = 1;//((a&maskD)==1); 

//	INTCON2bits.RBPU = 0;  	// PORTB Pull-up Enable bit 1disabled , 0 enabled by 
							//individual port latch
	
	while (1)
	{
		PORTB= 0xFF * tableau[0];	//1 fois 0 = 0 et 1 fois 1 = 1
		Delay10TCYx(9) ; 			//Delay multiples of 10 Tcy
		PORTB = 0x00;

		PORTB = 0xFF * tableau[1];
		Delay10TCYx(9) ;
		PORTB = 0x00;

		PORTB = 0xFF * tableau[2];
		Delay10TCYx(9);
		PORTB = 0x00;

		PORTB = 0xFF * tableau[3];	
		Delay10TCYx(9) ;
		PORTB = 0x00;

		for (i = 0; i < 4; i++) 	//boucle qui permet de placer en parametre 
									//toutes les cases du tableau
	    { 
	    	PORTB = 0xFF * tableau[i]; 	//envoie le contenu de chaque case sur port B  
			Delay10TCYx(9);
			PORTB = 0x00;
		
		}

			TMR0H = 0xFF;
			TMR0L =	0xE7;
//PORTB = 0xFF;
//PORTB = 0x00;
	}	
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
iceheart31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2012, 22h05   #5
Elijha
Membre expérimenté
 
Avatar de Elijha
 
Homme Laurent Nahoum
Ingénieur développement matériel électronique
Inscription : avril 2003
Messages : 282
Détails du profil
Informations personnelles :
Nom : Homme Laurent Nahoum
Âge : 43
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Ingénieur développement matériel électronique
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : avril 2003
Messages : 282
Points : 597
Points : 597
Bonsoir,

Dans tous les micro-contrôleurs il y a des timers avec différentes fonctions dont celle de générer un signal carré automatiquement. Je te conseille de lire la documentation de ton micro et tu trouvera la réponse.
Le faire dans le main n'est pas la bonne solution car tu peu difficilement maîtriser le temps, car le programme peu être interrompu par une interruption ou autre. Tandis qu'avec un timer, tu n'auras pas ce soucis car il est géré par le hard du micro.

Bonne continuation.
__________________
- Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
- Travailler dur n'a jamais tué personne, mais pourquoi prendre le risque (Edgar Bergen)
Elijha est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h45.


 
 
 
 
Partenaires

Hébergement Web