Aller au contenu


Contenu de philou-RX

Il y a 246 élément(s) pour philou-RX (recherche limitée depuis 01-mai 13)



#64505 Programmation en C

Posté par philou-RX sur 18 mai 2015 - 11:13 dans Programmation

Bijour à tous, 

 

Me voici avec une nouvelle question de 'C' (C ca que C bon  :crazy:

 

Dans la boucle ci-dessous, j'aimerai sortir de celle-ci si 'car_retour' est égale 'CHOIX_FLOTTANT' ou 'CHOIX_ENTIER'

    //--- boucle pour choisir un choix d'option
    do
    {
        //--- message afficher à l'utilisateur ---//
        ....

        //--- demander à l'utilisetur de choisir une option ---//
        ....

        //--- lecture du caractère en retour ---//
        car_retour = Select_Var_Cara();

    //---condition de sortie : obliger de choisir une possibilité ---//
    }while((car_retour != CHOIX_ENTIER) || (car_retour != CHOIX_FLOTTANT));

mais c'est le contraire qui se passe, je reste dans la boucle si  'car_retour' est égale 'CHOIX_FLOTTANT' ou 'CHOIX_ENTIER'... 

 

C'est pas logique ...

 

Si vous avez une solus c'est bien...

 

Amitié - le xcht'y Philou 




#64504 le Condensateur et sa tension

Posté par philou-RX sur 18 mai 2015 - 10:53 dans Electronique

Bonjour à tous, 

 

Je vous mets une réponse que j'ai reçu à la question posée et que je trouve pertinente : 

 

 

La tension indiquée est la tension maximale à laquelle le condo garantit qu'il est OK pour marcher XXXX heures à XXX degrés
On peux utiliser des condos avec une tension maximale plus basse mais on prend des risques, c'est pas garanti.
 
C'est comme la date de péremption sur la bouffe, en dessous de la date c'est bon, après on prends des risques
(12V sur un condo indiqué pour max 10V ça peut passer,... c'est comme boire du lait 2jours après la date de péremption - parfois ça passe, parfois ca passe pas)
 
ça dépend aussi du procédé de fabrication:  le fabriquant garantit un nombre d'heures de fonctionnement il ne garanti absolument pas que tout te pète à la figure si tu dépasse :)
 
Par contre branche le à l'envers si tu veux que ça pète.

 

voili voilou pour les infos... 

 

Amitié - Philou




#64466 le Condensateur et sa tension

Posté par philou-RX sur 07 mai 2015 - 03:26 dans Electronique

Bonjour à tous, 

 
J'aimerai avoir votre avis sur un problème rencontré : 
 
Sur l'entrée d'un régulateur 5V (LP2985M5-3.3), deux condensateurs montés en parallèle (un 10uF/10V et un plus petit de 100nF/50V), le tout étant alimenté par une tension de 12VDC - pourquoi le premier condensateur ne calque pas et fonctionne ?? alors que sa tension est fausse. 
 
Bon comme le condensateur a une tolérance de 10% et que la tension et liée à la capacité par C =Q/U, je me dit que c'est pt-être en relation--- mais quand meme, j'ai de la peine à me représenter la chose :kez_11: . 
 
Alors si vous une idée, une explication ou autres... c'est avec plaisir que je vous lirais.  :thank_you:
 
Amitié - Le cht'y Philou



#63786 DSPic 33FJ256GP710

Posté par philou-RX sur 11 février 2015 - 11:52 dans Programmation

Bonsoir tout le monde, 

 

ON m'a mis sur la piste concernant cette PIN RB0 sur le forum de microchip, car on peut quand meme la configurer en mode I/O pure. 

 

Si on regarde sur le datasheet du DSPic (voir poste #2), page 164... cela nous donne l'explication. 

 


 

Clearing any bit in the ADxPCFGH or ADxPCFGL

register configures the corresponding bit to be an
analog pin. This is also the Reset state of any I/O pin
that has an analog (ANx) function associated with it.

 

avec le code ci-dessous, cela me permet de définir la pin RB0 comme une I/O standart. 

AD1PCFGLbits.PCFG0 = 0x01; 

Je vous mets le code complet si ca vous intéresse !!!

 

Fichier(s) joint(s)




#63600 DSPic 33FJ256GP710

Posté par philou-RX sur 30 janvier 2015 - 08:37 dans Programmation

Bonsoir à tous, 

 

Merci Mike pour l'infos c'est ce que j'ai fait... et j'ai bien ma sortie qui varie (plus exactement une led)... mais ma touche n'as pas d’interaction avec cette boucle d’interruption.  :blind: . je vais regarder encore et encore, mais d'idée pour le moment, la soirée portera pt-être conseil. 

 

Update du soir : chose marrante, comme j'utilise la carte Explorer, je me suis dit que j'allais utiliser l'une des touches implémentée sur la carte... la au miracle, ma fonction d'antirebond fonctionne et ce qui va avec aussi. 

 

Maintenant faut que je regarde pourquoi : la pin RD13 du port D (ça fonctionne) & la pin RB0 du port B (la ca fonctionne pas)... pour l'instant ce que je vois que c'est la PIN RB0 peut être aussi utilisee en analogique...

 

Mais la je bloque complètement quand meme, je vais me replonger dans la doc du DSP. 

 

Alors si vous voyez quelques choses dans la config, les pins, ou autres config, je vous serais très reconnaissant 




#63511 DSPic 33FJ256GP710

Posté par philou-RX sur 23 janvier 2015 - 11:21 dans Programmation

Bonsoir à tous, 

 

Je reviens vers vous car je suis bien bloqué à nouveau :help: ,

je suis toujours entrain de m'amuser sur ma carte Explorer 16, ainsi qu'avec des leds et mes entrées / sorties. Là, je m'amuse à réaliser c'est un carrefour tricolore.

 

Mon problème est le suivant : J'ai une fonction d'antirebond (qui fonctionne déjà - testée sur d'autre programmes => donc je ne l'a remets pas en cause), celle-ci est mise à jour dans une interruption qui et relié au Timer1. Lorsque le Timer1 arriver à 500ms, l'interruption s'active, et c'est la qu'on active la lecture de la touche, et ainsi la lecture de l'antirebond.

Le problème, c'est quand dans ma boucle principale, quand je teste ma touche (qui est lue toute les 500ms), rien ne se passe :skull: ?!?!?!? Pourtant, si je mesure avec un multimètre la pin qui relié à switch, celle-ci passe bien à zéro.... la je suis un peu perdu, je ne comprend pas ce que je fais de faux   

 

je ne passe jamais le test ci-dessous : 

//--- test si la touche est pressée ---//
if(switch_presser(&pt_SWITCH_PIETON))
{
//--- remise à zéro du compteur ---//
CMPT_FEUX_PIETON = 0x00;
ACTIVE_CMD_CMPT = 0x01;  
 
//--- remise à zéro de l'info de la touche 
reset_info_touche_presser(&pt_SWITCH_PIETON);
}

Je vous mets tout le code en annexe si ca vous intéresse. 

 

En tout cas un grand merci de me lire. 

 

A tout bientôt

 

Amcialement le cht0'y Philou

 

Fichier(s) joint(s)




#61081 Programmation en C

Posté par philou-RX sur 15 juillet 2014 - 07:21 dans Programmation

Bonjour tout le monde,

Me revoici avec mes quelques questions, ici toujours en C (mais pur) :pardon:/>

Voilà j'ai une erreur de compilation que je ne comprends pas lors d'une déclaration :

int colonne = 2; 
int tb [][colonne] = {blblabla};


PS: le blblabla n'a pas d'intérêt ici !

le compilateur "wingw32-gcc" de code block (sous windows 7) ne m'accepte cette déclaration - par contre si j'écris directement

int tb [][2] = {blblabla}; 

La c'est bon... ?!?! pourquoi je ne peux déclarer une variable colonne à l'initialisation de mon tableau, alors qui si je veux lire ce tableau dans une boucle for la je peux placer une nom de variable

Avez-vous une explication ?

Bonne lecture
Amicalement le cht'y Philou



#60425 Seb du 42

Posté par philou-RX sur 31 mars 2014 - 01:06 dans Et si vous vous présentiez?

Wouuuawww pleins de passions... j'espère que t'as aussi quand meme de dormir un peu :beach:

Un Grand bienvenu sur ce forum fort sympathique

Amitié - le cht'y Philou



#60424 fonction MAP Arduino

Posté par philou-RX sur 31 mars 2014 - 01:04 dans Programmation

hello Christian, Hello A tous pour ceux qui laisse ce message,

Sorry pour ma réponse tardive !!!

Comme je voulais implémenter la fonction MAP (Arduino) sur un autre uC, je voulais comprendre l’équation décrite (voir #1), mais c'est une erreur de syntaxe que j'ai commis dans la formule suivante :
(1) return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_max;
(2) return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

Cherchez l'erreur, et oui j'ai pris out_max au lieu de out_min, grrrrr. Mais avec l'aide d'autre info j'ai repris l'explication théorique... voir prochainement mon gribouillis... et voilà l'équation 2 marche très bien :kez_11:

A tout bientôt !

Amicalement - le cht'y Philou



#60179 soucis d'affichage - lib stdin

Posté par philou-RX sur 13 mars 2014 - 01:38 dans Programmation

hello à tous,

Alors pour les deux codes proposé par Oliv, malheureusement sur mon environnement ca marche pas, je n'ai plus qu'une seule fois l'affichage du message, mais je n'arrive plus du tout à sortit de la boucle for

Par contre, j'ai essayer la solus proposé par BT, j'obtiens le même effet qu'au départ, un double affiche de mon message à saisir... par contre je peux sortir de ma boucle, c'est ce phénomène de double affichage que je n'arrive pas à comprendre

code avec le for
for(; c != 'a'<img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' />
{
   printf("veuillez inscrire une nouvelle lettre : ");
   c = getchar();
}

et code avec le while
while(getchar() != 'q')
        printf("veuillez inscrire une nouvelle lettre : ");


C'est surement un cas d'école, mais je comprend pas ce phénomène... je n'ai pas tester sous un autre environnement

Encore une fois, je vous remercie de me lire, et si vous avez des bouts de pistes, c'esta vec plaisir que je les suivrai

Amitié - Le cht'y Philou



#60157 fonction MAP Arduino

Posté par philou-RX sur 07 mars 2014 - 11:59 dans Programmation

Bonsoir à tous chers RobotMakersiens,

Petite question pour vous :pardon: !!! j'essaie de comprendre la fonction MAP de chez ARDUINO (fonction MAP) avant de l'implémenter dans un autre programme qu'ARDUINO, mais je n'arrive pas me représenter la fonction mathématique de celle-ci.
J'ai essayé de me représenter ça avec une échelles de départ suivante 0 à 10 et de 0 à 20 pour la deuxième avec un valeur de départ de 5 --> pour moi la valeur que je devrais logiquement obtenir est 10, mais non, la c'est de 3.333

J'ai surement rien compris, mais un petite explication de votre part, si vous avez compris, je suis pas contre...

Un tout grand merci de me lire

Au plaisir de découvrir vos réactions

Amicalement - le cht'y Philou



#59889 soucis d'affichage - lib stdin

Posté par philou-RX sur 13 février 2014 - 08:34 dans Programmation

Hello Oliv,

Merci beaucoup pour ton retour, j'essaierai d'implémenter ça... par contre ca veut dire que dans le "ENTER" est pris en considération dans le flux de caractère STDIN, que ce soit avec la fonction getc() ou getchar(), si j'ai bien compris donc il faut aussi gérer ce caractère ?!? :sorry:/>

Bonne soirée à tous

--> réponse :

c'est marrant - chez moi, je reste indéfiniment dans la boucle !! pas moyen de sortir :kez_13: , une idée ?!? pourtant le code est le meme !

Amitié - Cht'y Philou



#59871 soucis d'affichage - lib stdin

Posté par philou-RX sur 12 février 2014 - 01:57 dans Programmation

Salut à tous

Je viens cette fois à vous, car petit soucis d'affichage dans ma fenêtre lors de l'utilisation de la lib stdio.

dans une boucle for, j'utilise les appels de fonction getchar() et putchar() ; ce que je n'arrive pas à comprendre c'est pourquoi il m'affiche deux fois un petit message que je place aussi dans cette boucle, voici le code :

    for(; c != 'Q'<img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/wink.gif' class='bbc_emoticon' alt=';)' />
    {
        printf("\n  veuillez inscrire une nouvelle lettre : ");
        c = getchar();
        putchar(c);
    }

et voici ce que j'obtiens à l'écran : Image IPB

je n'arrive pas à comprendre pourquoi j'ai deux fois mon printf qui s'affiche ?

autre indication :
j'utilise codeblcoks version 12.11 avec le compilateur mingw32-gcc

Comme d'hab j'ai les yeux tout écarquiller de lire vos réponses, suggestions et autre formulations

Amitié - le cht'y Philou



#59605 DSPic 33FJ256GP710

Posté par philou-RX sur 31 janvier 2014 - 10:44 dans Programmation

bon maintenant je viens vraiment sur le sujet que je voulais poster :mr47_05:

En me remettant sur la programmation de la carte Explorer 16, je me suis aperçu que les concepteurs de la carte avait placé sur la même pin RA7, un switch S5 et une led D10 (voir la page 42 - 43 du datasheet - poste #2 pour les liens) ; et j'ai pu m'apercevoir que si je configurerai ma ligne en entrée (numérique), celle-ci est toujours active (donc je ne peux pas utiliser cette touche) ; donc ma question, y a-t-il un moyen "soft" de ne pas tenir compte de la petit chute de tension sur cette ligne qui est crée la diode :kez_13:

Merci d'avance pour tous vos retours

Amicalement - le cht'y Philou



#59603 DSPic 33FJ256GP710

Posté par philou-RX sur 31 janvier 2014 - 10:24 dans Programmation

Hello à tous,


Je reviens vers vous après ce long moment de silence... suite à ma première interrogation ci-dessus, je me suis aperçu de l'importance dans quel ordre on place la configuration des registres, je vous mets ma nouvelle config.

void init_adc()
{
	//--- gestion des registres liés au ADC ---//
	//--- Sélection du channal --> bits de 0 à 4 et bit 7---// 
	AD1CHS0bits.CH0SA = 0x05; 		// selection de l'entrée analogique sur le chanel 0 (mesure)  
	AD1CHS0bits.CH0NA = 0; 			// selection de la référence Vref- (masse) 

	//--- Choix du type de convertion (12/10 bits) -->bit 10 du registre ---//
	AD1CON1bits.AD12B = 0; 			// convertisseur sur 10 bits --> 0 
									// convertisseur sur 12 bits --> 1
	
	//--- Choix du format pour le buffer --> bit 8 à 9 ---// 
	AD1CON1bits.FORM = 0; 			// format Unsigned Interger (0 - 1023 or 0 - 4095)
	
	//--- Choix de la source pour le temps d'échantillonage (clock) --> bit 5 à 7 ---// 
	AD1CON1bits.SSRC = 0x07; 			// 0b111 = 7 --> Counter interne Automatic Trigger

	//--- choix de l'échantillonage --> bit 3 --// 
	AD1CON1bits.SIMSAM = 0; 		// ici qu'un seul canal
	
	//--- mode d'échantillonage --> bit 2 ---// 
	AD1CON1bits.SAMP = 0;
	AD1CON1bits.ASAM = 1; 			// converstion après la dernière converstion  

	//--- Choix de la référence des tension --> 3x bits de 13 à 15 ---//
	AD1CON2bits.VCFG = 0; 			// Vref + = AVdd = 5V ou 3V & Vref - = AVss = GNS  
	 
	//--- Choix des canaux (simple - deux - multiple) --> 2 bits de 8 et 9 ---//	
	AD1CON2bits.CHPS = 0; 			// seulement un chanal = CH0
	  
	//--- Configuration de la vitesse de l'interruption après échnatillonnage --> bit 2 à 5 ---// 
	AD1CON2bits.SMPI = 0;			// genère une interrruption après échantillonnage  

	//--- Temps automatic d'échantillonage --> 5x bit de 8 à 12 ---//
	AD1CON3bits.SAMC = 0x03; 		// 3 TAD

	//--- choix de la vitesse de conversion selon la clock choisie --> 8x bits de 0 à 7---// 
	AD1CON3bits.ADCS = 0x27;		// 0b 0010 0111 = 0x27 = 39  
	 								// 1 / Fcy = Tcy  
	 								// ADCX + 1 = x
	 								// Tcy * x = Tad = 1us  
									// 40MHz --> 25ns => 25ns * 40 = 1us

	//--- gestion de l'interruption ---// 
	//--- reset du flag d'interruption lié à l'AD ---// 
	IFS0bits.AD1IF = 0;				// remise à zéro 

	//--- priorité de l'interruption ---// 				
	IPC3bits.AD1IP = 0x07; 			// ici level le plus haut --> 7  	

	//--- activation de l'interruption ---// 
	IEC0bits.AD1IE = 1; 

	//--- activation du convertisseur ADC ---// 
	AD1CON1bits.ADON = 1; 			// convertisseur actif	 
}



#58008 DSPic 33FJ256GP710

Posté par philou-RX sur 04 octobre 2013 - 09:23 dans Programmation

Bonsoir à tous,

Je viens à vous à nouveau pour vous exposer un petit, mais alors tout petit problème... Toujours sur le DSPic de Microchip, je m'essaie à configurer les différents registres liés à l'ADC, et ainsi que la routine d'interruption lié à l'ADC, mais lors de l'exécution, on ne passe jamais dans cette routine d'interruption.

J'ai lu en partie la section 16 concernant l'ADC, sans utiliser le DMA (section ADC)

Voici ma configu concernant mes registres :
void init_adc()
{
	//--- gestion des registres liés au ADC ---//
	//--- mode d'échantillonage --> bit 2 ---// 
	AD1CON1bits.SAMP = 0;
	AD1CON1bits.ASAM = 1; 			// converstion après la dernière converstion  

	//--- choix de l'échantillonage --> bit 3 --// 
	AD1CON1bits.SIMSAM = 0; 		// ici qu'un seul canal 

	//--- Choix de la source pour le temps d'échantillonage (clock) --> bit 5 à 7 ---// 
	AD1CON1bits.SSRC = 0; 			// 0b111 = 7 --> Counter interne Automatic Trigger  

	//--- Choix du format pour le buffer --> bit 8 à 9 ---// 
	AD1CON1bits.FORM = 0; 			// format Unsigned Interger (0 - 1023 or 0 - 4095) 
	
	//--- Choix du type de convertion (12/10 bits) -->bit 10 du registre ---//
	AD1CON1bits.AD12B = 0; 			// convertisseur sur 10 bits --> 0 
									// convertisseur sur 12 bits --> 1

	//--- Configuration de la vitesse de l'interruption après échnatillonnage --> bit 2 à 5 ---// 
	AD1CON2bits.SMPI = 0;			// genère une interrruption après échantillonnage  

	//--- Choix des canaux (simple - deux - multiple) --> 2 bits de 8 et 9 ---//	
	AD1CON2bits.CHPS = 0; 			// seulement un chanal = CH0

	//--- Choix de la référence des tension --> 3x bits de 13 à 15 ---//
	AD1CON2bits.VCFG = 0; 			// Vref + = AVdd = 5V ou 3V & Vref - = AVss = GNS  

	//--- choix de la vitesse de conversion selon la clock choisie --> 8x bits de 0 à 7---// 
	AD1CON3bits.ADCS = 0x27;		// 0b 0010 0111 = 0x27 = 39  
	 								// 1 / Fcy = Tcy  
	 								// ADCX + 1 = x
	 								// Tcy * x = Tad = 1us  
									// 40MHz --> 25ns => 25ns * 40 = 1us

	//--- Temps automatic d'échantillonage --> 5x bit de 8 à 12 ---//
	AD1CON3bits.SAMC = 0x03; 		// 3 TAD

	//--- Sélection du channal --> bits de 0 à 4 et bit 7---// 
	AD1CHS0bits.CH0SA = 0x05; 		// selection de l'entrée analogique sur le chanel 0 (mesure)  
	AD1CHS0bits.CH0NA = 0; 			// selection de la référence Vref- (masse) 

	//--- gestion de l'interruption ---// 
	//--- reset du flag d'interruption lié à l'AD ---// 
	IFS0bits.AD1IF = 0;				// remise à zéro 

	//--- priorité de l'interruption ---// 				
	IPC3bits.AD1IP = 7; 			// ici level le plus haut --> 7  	

	//--- activation de l'interruption ---// 
	IEC0bits.AD1IE = 1; 

	//--- activation du convertisseur ADC ---// 
	AD1CON1bits.ADON = 1; 			// convertisseur actif	 
}

ainsi que ma petite fonction d'interruption :

void __attribute__((interrupt, no_auto_psv)) _ADC1Interrupt( void )
//void __attribute__((__interrupt__)) _ADC1Interrupt( void )
{
	//--- indication de l'interruption ---// 
	info_interrupt_ADC = 1;

	//--- lecture du registre pour récuperer la valeur l'entrée analogique ---// 
	valeur_adc = ADC1BUF0;			// lecture du buffeur

	//--- reset du flag d'interruption ---// 
	IFS0bits.AD1IF = 0;	
}

Alors si vous voyez un petit truc choquant, faîtes-moi signes
Bonne lectures les programmeurs
Amicalement le cht'y Philou



#57249 DSPic 33FJ256GP710

Posté par philou-RX sur 26 juillet 2013 - 08:59 dans Programmation

Bonsoir à tous,

Je reviens sur mon problème (aie aie aie)...

Mais non c'est pas pour une nouvelle question, c'est pour une solution :Koshechka_08: :

Grace à un autre forum, la personne m'a aiguillé sur mon erreur :close_tema: :dvgmax_01: --> c'est au niveau du timer, le problème c'est que je prenais ca dans le sens de décompter la timer, eh non... après mes calculs (qui étaient juste), il fallait simplement reprendre la valeur brut soit :

PR1 = 781;    // période du timer --> 5ms/6.4us = 781.25 = 781 


Voili Voilou

Amicalement - le cht'y Philou



#56551 DSPic 33FJ256GP710

Posté par philou-RX sur 05 juin 2013 - 10:17 dans Programmation

Bonsoir à vous,

Ca faisait longtemps, mais j'espère revenir un peu plus souvent sur le site :crigon_04: ...

Je recommence à nouveau avec le DSPic33FJ256... J'ai repris la ou je m'étais arrêter donc j'ai réussi à faire déplacer mon clignotement à l'aide d'un bouton poussoir cela fonctionne, je me suis amuser à ré-implémenter un script d'anti-rebond au niveau des touches, cela fonctionne... mais alors qu'est-ce qui cloche ???

C'est au niveau du Timer que j'ai configuré, j'aimerais avoir une interruption toutes les 5ms, donc j'ai fait mes différents calculs selon les configurations de l'oscillateur et du Timer1, et la je me retrouve avec le clignotement du programme précédent, et je n'arrive pas à comprendre ce que je fais de faux puisque j'ai l'impression de bien configurer le timer, de plus le script sur l'oscillateur n'a pas bougé :kez_13:

Je désire avoir une clock interne de 8Mhz pour cela j'ai opéré comme suis : --> voir le code ci-dessous !!!

//----------------------------------------------------------------------------------//
//--- nom 				: init_osci
//--- entrée - sortie 	: - / - 
//--- description 		: configure l'oscillateur du DSP pour utiliser l'horloge 
//						  à 8MHz
//----------------------------------------------------------------------------------//
init_osci()
{
	//--- configuration de l'oscillateur interne à 40Mhz ---//
	// utilisation fomrules du datasheet du DSPic33FJ256GP710A --> page 146
	// Fcy = Fosc / 2 ; Fosc = Fin(M/(N1 N2))
	// Fin = 8Mhz --> Fosc = 40Mhz --> Fcy = 40Mhz 
	OSCCONbits.COSC 	= 3;			// sélection de l'oscillateur XT 
	OSCCONbits.CLKLOCK	= 0;			// l'horloge et la PLL peuvent être modifié 	
	
	CLKDIVbits.ROI	= 0; 				// pas d'effet si il y a interruption 
	CLKDIVbits.DOZE	= 0; 				// pas de réduction sur l'horloge Fcy /1
	CLKDIVbits.DOZEN	= 0; 		
	CLKDIVbits.PLLPRE 	= 0; 			// N1 = 2	
    CLKDIVbits.PLLPOST 	= 0; 			// N2 = 2 	
	
	PLLFBDbits.PLLDIV 	= 38;			// M = 40  

	__builtin_write_OSCCONH(0x03); 		// fonction appelant du code assembleur 
										// configuration du registre NOSC (OSCCON) --> 
										// 011 = Primary Oscillator with PLL (XTPLL, HSPLL, ECPLL)
	__builtin_write_OSCCONL(0x01);		// Active la commutation de la clock
	while(OSCCONbits.COSC != 0b011); 	//
}


ensuite j'ai configuré le Timer 1 comme suis, pour les calculs de l'interrupteur voir mes commentaires : --> voir le code ci-dessous

//----------------------------------------------------------------------------------//
//--- nom 				: init_timer1
//--- entrée - sortie 	: - / - 
//--- description 		: initilaiser le timer 1 pour avoir une horloge de 100ms 
//----------------------------------------------------------------------------------//
void init_timer1(void)
{
	//--- registre de configuration du Timer1 ---//
	T1CONbits.TON = 0; 			// désactiver le timer pour la configuration 
	T1CONbits.TCS = 0; 			// clock interne 
	T1CONbits.TSYNC = 0; 		// synchroniser la clock externe 	
	T1CONbits.TCKPS = 3; 		// prédivseur régler à 256 --> 8Mhz/256 = 31250Hz --> 32us 
	
	TMR1 = 0; 					// mise à zéro du registre lié au timer 

	PR1 = 62379; 				// période du timer --> 5ms/32us --> 62535 - 156 = 62379 

	//--- registres des configurations des interruptions liées au Timer1 ---//
	IPC0bits.T1IP = 7; 			// choix de la priorité --> ici la plus élevée 7 = 111
	IFS0bits.T1IF = 0; 			// remise à zéro de l'interruption 
	IEC0bits.T1IE = 1; 			// activation de l'interruption lié au Timer1 

	T1CONbits.TON = 1; 			// activer le timer1
}


Mais le problème, c'est que je devrais avoir aussi un clignotement rapide puisque je le traite dans ma boucle d'interruption la gestion du clignotement des leds, mais celui-ci se fait à la meme vitesse que le programme d'avant... beuh tout triste...

Je ne comprends pas... est-ce le mode debbuggeur que j'utilise ou le code que j'implémente...

si vous avez des idées, c'est bien volontiers... je vous mets le code complet de mon main

Un tout grand merci d'encore me lire après cette si grande interruption...

Amicalement le cht'y Philou

Fichier(s) joint(s)

  • Fichier joint  main2.txt   9,19 Ko   91 téléchargement(s)



#53976 Salutations

Posté par philou-RX sur 05 mars 2013 - 08:47 dans Et si vous vous présentiez?

bienvenu à toi,

Sache qu'aucune n'est stupide, le plus dur c'est d'y répondre du mieux possible :kez_11: ...

Alors à tout bientôt sur le fofo



#53068 Class Serial sous Processing

Posté par philou-RX sur 23 janvier 2013 - 02:41 dans Programmation

Bonjour à tous,

C'est encore moi :kez_11:/> avec une nouvelle petite question à la con !!!

Toujours bloqué sur la gestion de bouton (voir discussion : Bouton - Processing), j'ai contourné le problème pour avancer su mon projet... comme indiqué précédemment je crois dans la discussion, j'aimerai lire des infos de capteurs qui sont branchés sur la carte ARDUINO (programme ARDUINO fonctionne :lex_14:/> )... je peux visualiser ces infos dans la fenêtre "Moniteur série"...

Maintenant je travaille sous l'autre logiciel libre qui fonctionne sous le même genre, mais en langage Java (Processing : Processing), j'ai réutilisé la libraire à disposition qui "Serial", mais je n'arrive pas à comprendre deux instructions

je vous mets le lien de l'exemple en question : Class Serial -> méthode : readByte

et plus précisément je n'arrive pas à me représenter ces deux instruction :
//--- lecture du buffer lié au port série ---//
tb_Buffer = port_infos_cpt_temp.readBytes();          // nombre de byte lue 
port_infos_cpt_temp.readBytes(tb_Buffer);             // 


apparemment on lit une première fois le port pour récuperer le nombre de byte à lire (première instruction) et la 2ème permettrait à ce moment de ... ??? alors là je bloque :help:/>

Alors évidemment, je viens faire appel à vous, si vous avez suggestion, idées ou autres...

Merci de m'avoir lu



#53065 présentation

Posté par philou-RX sur 23 janvier 2013 - 09:25 dans Et si vous vous présentiez?

Welcome sur le fofo...

En utilisant une board FOX-20, tu as installé un OS embarqué (linux) ??

En tout cas, joli projet !!!

A tout bientôt



#52914 Bouton sous Processing

Posté par philou-RX sur 16 janvier 2013 - 04:55 dans Programmation

Bonjour à tous,

Merci Mic pour ton lien... malheureusement, la partie qui m'intéresse n'est pas accessible :kez_13:/>/>/>

En discutant sur un autre forum, et en cherchant par moi-même dans mes vieilles connaissance de JAVA, je peux jouer avec le bouton de 2 manières, voici les 2 solus ci-dessous :
Solution - Forum D.com :drinks:/>/>/>

initialiser comme variable général :
Button         b_Lancer; 

pour initialiser l'objet dans la fonction setup :
  //b_Lancer = controle_B.addButton("Lancer", 0, 50, 150, 50, 24);       // initialise et ajoute un Button au ControlP5 --> lancer 
  b_Lancer = controle_B.addButton("b_Lancer", 0, 50, 150, 50, 24);       // initialise et ajoute un Button au ControlP5 --> lancer 

la différence se trouve dans le string indiqué en argument, celui-ci doit avoir le même nom que l'objet

chaque fois qu'on clique sur le touche "b_lancer", le fond d'écran passe en blanc (c'est ce que je voulais --> OK)
void b_Lancer(int val_event)
{
  background(255,255,255);                 // fond fenetre en 
}

Solution - Perso

initialiser comme variable général :
Button         b_Lancer; 

our initialiser l'objet dans la fonction setup :
  b_Lancer = controle_B.addButton("Lancer", 0, 50, 150, 50, 24);       // initialise et ajoute un Button au ControlP5 --> lancer 

par contre je n'utilise pas une méthode définie par mes soins, mais dans la fonction draw, je teste la touche
if (b_Lancer.isPressed())
{
    background(255,255,255);                 // fond fenetre en 
}     

la différence entre les 2 codes qui font la même chose, c'est que que le fond de la fenêtre change de couleur, la différence entre les 2 codes c'est au niveau du nom qui est afficher dans la fenêtre au niveau de la touche, dans la première solution, le string qui est en argument doit avoir le même que l'objet et que la fonction... ne me demander par pourquoi je n'en sais rien... mais ca marche... :o/>/>/> t'en dit que pour ma solution, je peux afficher un nom différent sur la fenêtre pour ma touche que le nom de mon objet.

---> Edit du message le 18.01.2012

Voilà, à nouveau en difficulté car comme dit ci-dessus la gestion est correcte, mais je me trouver confronter à des nouveau soucis sur la création d'un fichier ainsi que de son écriture... Mon but est lorsque j'appuie sur le "lancer", un fichier s'ouvre pour que l'on puisse aller écrire des infos dessus... donc j'ai écris le code (en utilisant mon ami Google) et lorsque je lance mon code, ca foire au niveau de l'ouverture du fichier txt.

Alors à nouveau je fais appel à vous, et vos connaissance de Java pour aider à me dépatouiller... Alors comme d'hab si vous avez de liens, doc, ou exemple de code je suis preneur.

Voici mon bout de code :
//------------------------------------------------------------------//
// Nom fonction : Lancer
// entrée - sortie --> IN : val_event
//                 --> OUT :
//                 --> IN/OUT :
// Description : lié à une événement lorsqu'on clique sur la 
//               touche "Lancer", cela doit créer un fichier ainsi 
//               permettre l'aquistion de données 
// Remarque : -       
//------------------------------------------------------------------//
public void Lancer(int val_event)
{
  print("ca marche !!!");
  background(255,255,255);                 // fond fenetre en 
  if(fichier_data.exists())
  {
    try
    {
      FileWriter ecriture_data = new FileWriter(fichier_data, true); 
      ecriture_data.write("j'ai ecris à nouveau \n");
      ecriture_data.close();
    }
    catch (IOException ioe) 
    { 
      println("Message erreur : "+ioe.getMessage()); 
    } 
        //BufferedReader fichier  = new BufferedReader(new FileReader("monfichier.txt"));   
  }
  else
  {
    
    try
    {
       fichier_data = new File("store_data.txt");
       FileWriter ecriture_data = new FileWriter(fichier_data); 
       ecriture_data.write("j'ai ecris pour la premiere fois \n"); 
       ecriture_data.close();
    }
    catch (IOException ioe) 
    { 
       println("Message erreur : "+ioe.getMessage()); 
    } 
  }
}

ainsi que l'erreur fournie :
Image IPB

A tout bientôt le chty Philou



#52884 Driver Led

Posté par philou-RX sur 15 janvier 2013 - 09:23 dans Electronique

Bonjour à tous,

Et merci à Mike et HMNR...

Pour répondre à ta question Mike :

Donc déjà je ne sais même pas de quel chip tu parles =/


je pensais qu'en m'étant la référence dans le titre c'était clair --> MN5450 et en plus j'ai mis le lien du datasheet composant, mais bon je peux admettre que j'aurai du précisé ma pensée :ok:/>

Maintenant ce chipe peut s'alimenter entre 4.5 et 11V (je reconnais c'est pas 12V), mais voir référence datasheet p2, ouff je crois que je sais lire quelques indications dans un datasheet :kez_11:/>
Image IPB

En fait ce que j'ai du mal à comprendre, comme je ne vais pas utiliser ce chipe (MN5450) à son application d'origines, c'est comment je connecte ma sortie sur ma led. Pour moi je pensais placer une sortie du MN5450 entre l'anode de la led et la résistance qui me permettra de délimiter le courant, celle-ci étant relié ensuite à la masse... je ferai un schéma quand j'aurai un peu plus de temps, mais est-ce que l'idée vous paraît déjà juste...

En tout merci à tous de me lire, et à Mike et HMNR... de m'avoir répondu

Amicalement le cht'y Philou

PS : je mets le pdf complet en annexe pour ceux que ca intéresse...

Fichier(s) joint(s)

  • Fichier joint  MM5450.pdf   122,37 Ko   96 téléchargement(s)



#52869 Driver Led

Posté par philou-RX sur 14 janvier 2013 - 08:51 dans Electronique

Bonsoir tout le monde,

Je suis sur un petit projet de lampe de proche à base de led tricolores, à base d'ATTINY 13, et la j'ai fait de la récup avec un driver de LEDS MN5450 (lien pour les MN5450)

Par contre j'ai pas bien compris pour la tension de sortie du chipe, pour moi ca devrait être une tension de 12V, mais vraiment pas sur de ça...

Donc si vous avez des idées sur le fonctionnement, c'est bien volontiers

Un tout grand merci de me lire

Amicalement le cht'y Philou



#52863 Bouton sous Processing

Posté par philou-RX sur 14 janvier 2013 - 11:10 dans Programmation

Bonjour tous le monde,

Je suis entrain de réaliser une petite interface sous "Processing" pour récupérer des infos de quelques capteurs de température. J'ai réussi à saisir différentes infos des capteurs, mon problème se trouve maintenant sur la gestion de mon interface graphique. J'ai créé une nouvelle fenêtre, qui contient 2 boutons, ca c'est ok...

Le problème sur la gestion des boutons, je n'ai pas trouvé d'exemple ou d'explication pour savoir comment interagir avec ces nouveaux éléments. J'utilise la libraire "controlP5" (je me suis servis de ce site : Lien_ControlP5), mais je n'ai pas compris comment utilise les différentes procédures proposées.


voici quelques bouts de code que j'ai réalisé :

configuration des touches:
void setup() 
{
  //....

  //--- initialisation des objets -> touche b_Lancer et b_Arreter ---//
  // Remarque : addButton (String theName, float theValue, int theX, int theY, int theW, int theH)
  b_Lancer = controle_B.addButton("Lancer", 0, 50, 150, 50, 24);       // initialise et ajoute un Button au ControlP5 --> lancer 
  b_Arreter = controle_B.addButton("Arreter", 0, 300, 150, 50, 24);    // initialise et ajoute un Button au ControlP5 --> arrêter 

  //...


évènements lié aux touches:
public void controlEvent(ControlEvent theEvent) 
{
  // ???
  // je ne sais pas quoi mettre comme code dans cette partie 
  
}

touche en elle-même:
void b_Lancer(boolean val_event)
{
  // ???
  // ici aussi je ne sais pas quoi mettre 
  // simplement qu'avec l'évènement lié je voulais changer le 
  // background de la fenêtre 
  background(255,255,255);                 // fond fenetre en 
  
}

Voilà donc actuellement je suis un peu bloqué dans cette partie alors si vous avez des idées, je suis preneur de code exemple, de suggestions - idées, de docs ou site internet, etc

En grand merci de me lire

Amicalement le cht'y Philou