Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Discussion: frequence et masquage

  1. #1
    Invité de passage
    Inscrit en
    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 ?

  2. #2
    Modérateur
    Avatar de Bktero
    Profil pro
    Ingénieur systèmes embarqués
    Inscrit en
    juin 2009
    Messages
    2 670
    Détails du profil
    Informations personnelles :
    Âge : 27
    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 : 2 670
    Points : 6 379
    Points
    6 379

    Par défaut

    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é !

  3. #3
    Invité de passage
    Inscrit en
    septembre 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2012
    Messages : 10
    Points : 0
    Points
    0

    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
    Invité de passage
    Inscrit en
    septembre 2012
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : septembre 2012
    Messages : 10
    Points : 0
    Points
    0

    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 :
    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 expérimenté Avatar de Elijha
    Homme Profil pro Laurent Nahoum
    Ingénieur développement matériel électronique
    Inscrit en
    avril 2003
    Messages
    290
    Détails du profil
    Informations personnelles :
    Nom : Homme Laurent Nahoum
    Âge : 45
    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 : 290
    Points : 551
    Points
    551

    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)

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •