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

Embarqué Discussion :

frequence et masquage


Sujet :

Embarqué

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 2
    Points
    2
    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 ?

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juin 2009
    Messages
    4 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 481
    Points : 13 679
    Points
    13 679
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Qu'est ce qu'un signal carré singularisé ?

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    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 ...

  4. #4
    Candidat au Club
    Inscrit en
    Septembre 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 10
    Points : 2
    Points
    2
    Par défaut
    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 : 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
    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;
    	}	
    }
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

  5. #5
    Membre éclairé
    Avatar de Elijha
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Avril 2003
    Messages
    314
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Points : 742
    Points
    742
    Par défaut
    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)

Discussions similaires

  1. detection de frequence CPU et taille memoire
    Par gargle dans le forum MFC
    Réponses: 9
    Dernier message: 06/03/2007, 15h44
  2. masquage de fonction virtuelle
    Par julien.sagnard dans le forum C++
    Réponses: 3
    Dernier message: 27/01/2005, 14h00
  3. [Débutante] Masquage et décalages
    Par bolo dans le forum Assembleur
    Réponses: 27
    Dernier message: 16/07/2004, 13h28
  4. recuperer la frequence du proc , la taille de la RAM , ..
    Par Cthulhu 22 dans le forum C++Builder
    Réponses: 5
    Dernier message: 05/09/2002, 12h18

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