FORUM Syndrome-OC - Jacky-PC


  Electronique


  Autres


  Débute en programmation ...

 




Il y a 27 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débute en programmation ...

n°81244
K-micaz
Posté le 08-05-2008 à 16:22:53  profilanswer
 

Salut a tous,
je sais qu'il y a ici des personnes qui tatent en programmation sur µC donc ...
Alors voila, en cours on nous a appris a programmer et a tester sur une plaque de test toute prete, on a donc pas appris a cabler le µC ...
Je voudrais donc m'entrainer chez moi. J'ai un 18F4420 comme on se sert en cours.
Sur la plaque de test, il y a un oscillateur externe donc le prof nous a fait le debut du programme pour parametrer le pic pour un osc externe (les bits de configuration du pic).
Je voudrais chez moi parametrer pour qu'il ait un osc interne pour avoir un cablage autour du pic super simple (j'ai pas de quartz sous la main ...) mais je sais pas dutout comment on fait ...  
Pour le debut je veux juste faire clignoter une led sur RB0
 

Code :
  1. #include<p18F4420.h>
  2. #include<delays.h>
  3. //-----------Bits de configuration du pic
  4. #pragma config OSC = HS        //Oscillateur à quartz externe
  5. #pragma config PWRT = ON    //Timer de reset lors de la mise sous tension
  6. #pragma config MCLRE = ON   //autorisation d'un reset externe
  7. #pragma config WDT = OFF           // inhibition du Chien de garde
  8. #pragma config PBADEN = OFF
  9. //-----------Déclaration des fonctions
  10. void main(void);
  11. void Delay1KTCYx(PARAM_SCLASS unsigned char);
  12. //-----------Déclaration des variables
  13. //-------------------------------------------------
  14. //Programme principal
  15. //C'est le fait de l'appeler main() qui permet au compilateur de l'affecter à l'adresse 0X0000
  16. void main ()
  17. {
  18. TRISB = 0 ;
  19.     while (1)
  20.     {
  21.    
  22.             PORTBbits.RB0 = 1;
  23.             Delay1KTCYx(200);
  24.             PORTBbits.RB0 = 0;
  25.             Delay1KTCYx(200);
  26.     }
  27. }


Pour avoir l'osc externe, a la place de HS je met quoi ?
De plus, je ne sais pas a quoi sert le #pragma ...
Pour faire ceci, pour le cablage j'ai juste a cabler Vss, Vdd et RB0 ? MCLR aussi ?
Merci d'avance  :)


Message édité par K-micaz le 08-05-2008 à 18:24:02
mood
Google
Posté le 08-05-2008 à 16:22:53  profilanswer
 

n°81245
K-micaz
Posté le 08-05-2008 à 18:50:22  profilanswer
 

Je viens rajouter OSCCON = 0x60 d'apres vous c'est bon ?

n°81247
K-micaz
Posté le 08-05-2008 à 20:38:33  profilanswer
 

Bon bah ça marche toujours pas ...
Voila comment je voudrais que cela soit du point de vue cablage :
http://vede.free.fr/electronique/16f88/

n°81251
mdog
Posté le 08-05-2008 à 21:31:33  profilanswer
 

Salut!
Bon j'ai jamais utilisé d'oscillateur interne mais je viens de faire une petite lecture du datasheet.

 

Déjà pense à configurer les fusibles de ton pic au moment de la prog et de spécifier IntRC. Ensuite tu doit utiliser les bit IRCF2:IRCF0 pour choisir ta fréquence, et placer le bit SCS1 à 1 pour valider l'utilisation de l'oscillateur interne.
Je t'invites à lire le datasheet et à rechercher le registre "OSCCON", toutes les infos que tu cherches s'y trouvent ;)

 

En particulier sa :

 

bit 6-4 IRCF2:IRCF0: Internal Oscillator Frequency Select bits
111 = 8 MHz (INTOSC drives clock directly)
110 = 4 MHz
101 = 2 MHz
100 = 1 MHz(3)
011 = 500 kHz
010 = 250 kHz
001 = 125 kHz
000 = 31 kHz (from either INTOSC/256 or INTRC directly)

 

@+
Mdog

 

PS: si tu veux pas te prendre la tête essai de te trouver un quartz (et deux condos de 22pF), tu verras sa marche tout seul ;), et peut-être un 16F84 qui est de loin le mieux pour débuter (plein de cours et de schémas sur le net)


Message édité par mdog le 08-05-2008 à 21:32:51
n°81253
K-micaz
Posté le 08-05-2008 à 23:51:03  profilanswer
 

Merci pour ta reponse :)
J'ai lu le datasheet pendant tout l'apres midi et j'ai configuré le OSCCON a 0x62 --> la led ne clignote pas ...
Pour qu'un pic fonctionne, il faut juste Vdd, Vss et l'oscillateur non ? (c'est les seuls truc que je branche avec la sortie RB0 pour la led )
J'ai trouvé un quartz de 4MHz mais pas les bon condos ... j'ai essayé avec deux de 47pF et la aussi rien ne fonctionne ... (dans le programme  ( avec le quartz et les condos) j'ai mis #pragma config osc = XT ...

n°81254
mdog
Posté le 09-05-2008 à 07:39:52  profilanswer
 

Salut!
Tu as bien mis #pragma config osc = IntRC ? (pour oscillateur interne)
47pF sa aurais du passer je pense donc c'est étrange. Est-ce que tu es sûr de tes timing ? Tu compile avec quoi ?
 
Ensuite il faut mettre le MCLR (broche 1) au 5v à travers une résistance genre 470Ohms ou proche. Essai sa et tiens moi au courant ;)
 
@+
Mdog

n°81256
K-micaz
Posté le 09-05-2008 à 12:47:26  profilanswer
 

Salut (et merci de me repondre ;) )
Alors je fais avec MPLAB (le logiciel qu'on se sert en cours ...)
Pour ce qui est du cablage, je suis allé voir comment tu avais cablé ton pic pour l'indicateur de position de ta fraiseuse ( il y a donc Vss, Vdd, MCLR, et l'OSC )
Pour le programme avec l'oscillateur interne, j'avais juste mis OSCCON = 0X62 et j''avais supprimé #pragma config osc ( je comprends pas a quoi servent les pragma ...)  
Bon je vais reéssayer ...
Encore merci :D

n°81257
force-pc
Pas de zap :(
Posté le 09-05-2008 à 13:46:49  profilanswer
 

salut
 
j'utilise C30, je suppose que c'est quasi pareil avec C18
 
voila les macros que j'utilise pour faire des delays :

Code :
  1. #define delay_ms(A)   __delay32((unsigned long)(A)*(FCY/1000))
  2. #define delay_us(A)   __delay32((unsigned long)(A)*(FCY/1000000))


Code :
  1. #define OSC_FREQ    frequence de ton quartz
  2. #define FCLK    OSC_FREQ
  3. #define FCY     (FCLK/4)


 
et j'inclus <libpic30.h> pour toi ca doit etre <libpic18.h>
 
pour la configuration des fusibles si tu veux pas t'embeter avec le code fais configure => configuration bits.

Message cité 1 fois
Message édité par force-pc le 09-05-2008 à 13:50:50

---------------
force-pc ===>> Graveuse numérique 99,9%
n°81258
mdog
Posté le 09-05-2008 à 13:57:16  profilanswer
 

force-pc a écrit :

salut
 
j'utilise C30, je suppose que c'est quasi pareil avec C18
 
voila les macros que j'utilise pour faire des delays :

Code :
  1. #define delay_ms(A)   __delay32((unsigned long)(A)*(FCY/1000))
  2. #define delay_us(A)   __delay32((unsigned long)(A)*(FCY/1000000))


Code :
  1. #define OSC_FREQ    frequence de ton quartz
  2. #define FCLK    OSC_FREQ
  3. #define FCY     (FCLK/4)


 
et j'inclus <libpic30.h> pour toi ca doit etre <libpic18.h>
 
pour la configuration des fusibles si tu veux pas t'embeter avec le code fais configure => configuration bits.


 
+1 pour la config des fusibles, c'est une possibilité. Ensuite les pragma, en gros sa indique au compilateur l'emplacement précis dans la memoire du pic où les infos doivent être stockées. Ensuite tu m'a donné le nom du logiciel sous lequel tu travailles, pas celui de ton compilateur. Est-ce PicC ? CC5X ?  
D'après les fichiers que tu inclus, sa ressemble à picC que j'utilise mais je me trompe peut-être? Même si ils fonctionnent tous en C, il y a parfois quelques petites différences...
 
@+
Mdog


Message édité par mdog le 09-05-2008 à 13:57:45
n°81260
K-micaz
Posté le 09-05-2008 à 15:10:25  profilanswer
 

Je travaille avec MPLAB avec MCC18.
Je crois que je vais attendre de trouver des condos (et ptétre même un quartz car celui que j'ai est un quartz de récupération, alors est ce qu'il fonctionne ...) car la ça commence a me ...
Si je monte un oscillateur externe, le premier programme que j'ai posté, marcherait ?
Faudra que je dise au prof qu'il nous montre comment on configure car vu qu'on fait toujours sur les mêmes plaques de test, on  reprends toujours les mêmes entêtes de programmes ...

n°81262
force-pc
Pas de zap :(
Posté le 09-05-2008 à 16:47:53  profilanswer
 

test avec la configuration des fusibles en mode graphique directement avec MPLAB avec l'oscillateur. et tu vires les #pragma


---------------
force-pc ===>> Graveuse numérique 99,9%
n°81264
K-micaz
Posté le 09-05-2008 à 18:36:17  profilanswer
 

ouai j'ai fait comme t'avais dit (configuration bits) et ça marche pas ... (c'est moi qui doit faire un truc qui va pas ....)
Demain j'aurrais les 2 condos on verra ce que ça donne ...

n°81265
mdog
Posté le 09-05-2008 à 19:42:13  profilanswer
 

Tu programme sur ton µcontroleur avec quel logiciel ? Parfois il faut reconfigurer les fusibles à la main, en tout cas moi avec PicProg4U je suis obligé de configurer les fusibles à la main avant la programmation (même si je le fait sous MPLAB).
 
@+
Mdog

n°81266
force-pc
Pas de zap :(
Posté le 09-05-2008 à 21:59:55  profilanswer
 

normalement dans son cas la configuration est enregistrée dans le workspace et se recharge à chaque fois


---------------
force-pc ===>> Graveuse numérique 99,9%
n°81267
mdog
Posté le 10-05-2008 à 09:36:38  profilanswer
 

Certes, je procède de la même manière, mais lorsque je charge le .hex sous PicProg4U il est incapable de lire le ConfigWord et je dois reconfigurer les fusibles... Vérifie bien que tu programmes avec la bonne config quand même...
 
@+
Mdog

n°81276
K-micaz
Posté le 10-05-2008 à 17:47:26  profilanswer
 

ouf ... "workspace" ? ... je connais pas encore les termes techniques  ... lol
bah je mets le .hex avec WinPic800 et en effet j'ai pas fait gaffe si les fusibles dans ce logiciel étaient les mêmes que ceux de MPLAB ...


Message édité par K-micaz le 10-05-2008 à 17:49:00
n°81277
mdog
Posté le 10-05-2008 à 19:56:35  profilanswer
 

Vérifie sa ;). Un Workspace (ou espace de travail) sous MPLAB, c'est tout simplement ton fichier de projet que tu peux charger à chaque démarrage, comme sa tu retrouve tout exactement comme tu l'avais laissé en quittant le logiciel ;), c'est-à-dire config du compilateur, déclaration des fichiers, configurations des fusibles, et même les fenêtres que tu avais ouvert que tu retrouves au même emplacement...
 
@+
Mdog

n°81279
K-micaz
Posté le 10-05-2008 à 20:52:00  profilanswer
 

J'ai monté le quartz de 4MHz (+ 2 condos de 15pF) et rien ne marche  :fou:  
voila le programme :
 

Code :
  1. //--------clignotement led--------
  2. #include<p18F4420.h>
  3. #include<delays.h>
  4. //-----------Bits de configuration du pic
  5. #pragma config OSC = HS
  6. #pragma config PWRT = ON    //Timer de reset lors de la mise sous tension
  7. #pragma config MCLRE = ON   //autorisation d'un reset externe
  8. #pragma config WDT = OFF           // inhibition du Chien de garde
  9. #pragma config PBADEN = OFF
  10. //-----------Déclaration des fonctions
  11. void main(void);
  12. void Delay1KTCYx(PARAM_SCLASS unsigned char);
  13. //-----------Déclaration des variables
  14. //-------------------------------------------------
  15. //Programme principal
  16. //C'est le fait de l'appeler main() qui permet au compilateur de l'affecter à l'adresse 0X0000
  17. void main ()
  18. {
  19. TRISB = 0 ;
  20.     while (1)
  21.     {
  22.    
  23.             PORTBbits.RB0 = 1;
  24.             Delay1KTCYx(200);
  25.             PORTBbits.RB0 = 0;
  26.             Delay1KTCYx(200);
  27.     }
  28. }


et voici comment sont les fusibles dans WinPic800 :
 
http://img396.imageshack.us/img396/4986/sanstitrehe6.png
 
Vous voyez ce qui deconne ?

n°81280
ced-2k
TODO : Insert text here.
Posté le 10-05-2008 à 21:23:24  profilanswer
 

désactive un peu WDTEN pour voir?

n°81281
force-pc
Pas de zap :(
Posté le 10-05-2008 à 21:40:11  profilanswer
 

watchdog timer :D


---------------
force-pc ===>> Graveuse numérique 99,9%
n°81282
K-micaz
Posté le 10-05-2008 à 21:43:03  profilanswer
 

[:aria:1]  y'a du mieux !!
la led s'allume !! mais elle clignote pas ...


Message édité par K-micaz le 10-05-2008 à 21:43:59
n°81283
K-micaz
Posté le 10-05-2008 à 22:14:03  profilanswer
 

ce que je remarque c'est que lorsque le MCLR est au +5, la led eclaire a fond, lorsqu'il est a la masse elle est eteinte et losqu'il est en l'air elle eclaire faiblement ...


Message édité par K-micaz le 10-05-2008 à 22:14:42
n°81284
force-pc
Pas de zap :(
Posté le 10-05-2008 à 22:30:35  profilanswer
 

mclr doit etre relié au +5V par une resistance de 10k (pull up), on le met à la masse pour reset.
 
Tu es sur de tes fonctions delay ?


---------------
force-pc ===>> Graveuse numérique 99,9%
n°81285
K-micaz
Posté le 10-05-2008 à 22:42:45  profilanswer
 

bah je vais vérifier mais normalement c'est bon, j'ai fait pareil en cours et ça a marché ...

n°81286
K-micaz
Posté le 11-05-2008 à 11:20:42  profilanswer
 

Alors voila, j'ai fais plein de test et ça fonctionne !!!
comme vous me l'aviez dit, cela venait des fusibles de WinPic800 ...  
Voila comment j'ai du les mettre :
 
http://img337.imageshack.us/img337/7644/sanstitreud1.png
 
en esperant que pour le prochain montage je galérerais pas comme ça ...


Message édité par K-micaz le 11-05-2008 à 11:21:17
n°81287
mdog
Posté le 11-05-2008 à 17:24:21  profilanswer
 

Salut!
Maintenant que tu as la bonne config des fusibles sa devrait aller ;). Pense à jeter un œil sur le datasheet afin de comprendre l'utilité et le fonctionnement de chaque fusible.
 
Et amuse toi bien ;)
 
@+
Mdog

n°81291
K-micaz
Posté le 11-05-2008 à 22:19:38  profilanswer
 

Ouai je vais m'amuser ça c'est sur !!
 
Par contre j'ai une question qui sort de mon sujet initial mais je veux pas ouvrir un nouveau post pour ça ...
Alors voila je veux faire un capacimetre auto-calibre ( montage de chez elektor) avec un 16F84 et un afficheur LCD 2 lignes 16 caracteres "affichage LCD à 2 lignes de 16
caractères tel que, par exemple, Trimods 1536, (Farnell # 142-554)"  
Alors voila la question : est ce que je peux utiliser un LCD 2*16 quelconque comme celui-ci :
http://www.electronique-diffusion. [...] ucts_id=60
 
ou je suis obligé de prendre le même ? ( j'ai jamais utilisé de LCD donc je sais pas s'il y a beaucoup de choses qui changent entre differents ecrans ...)
 
Merci  :)  

n°81296
mdog
Posté le 12-05-2008 à 11:00:40  profilanswer
 

Salut, j'ai pas cherché le datasheet du LCD en question, mais d'après la connectique c'est un LCD série, donc interfaçable sur pic sans soucis, il existe pas mal de bibliothèque pour interfacer ce genre de LCD sur le net ;).
 
@+
Mdog

n°81297
K-micaz
Posté le 12-05-2008 à 11:39:17  profilanswer
 

il existe des truc tout pret pour interfacer le LCD au pic ?
car j'aimerais fabriquer moi même un capacimetre mais c'est l'affichage sur le LCD qui me pose probleme ... je sais pas dutout comment il faut faire dans le programme ...
c'est pour cela que je me retourne vers des montages tout pret ... mais bon si je savais comment on fait pour afficher sur un LCD ...

n°81303
mdog
Posté le 12-05-2008 à 15:19:07  profilanswer
 

Va voir le site Angeliz.free.fr, il y à une bibliothèque d'interfaçage en C d'un LCD série en mode 4bit, après tu verras c'est tout simple ;).
Si tu veux créer toi-même le programme qui affiche les données, tourne-toi vers les datasheet des LCD, tout y est expliqué clairement (transmission des données, delay à respecter etc...)
 
@+
Mdog

mood
Google
Posté le 12-05-2008 à 15:19:07  profilanswer
 


Aller à :
Ajouter une réponse

  FORUM Syndrome-OC - Jacky-PC


  Electronique


  Autres


  Débute en programmation ...

 

Hit Parade