Bonjour
Voila, j'aimerais connaitre la marche à suivre pour remplacer un ML2039 par un PIC16F1936 sur une carte générique siemens SIRIUS II sachant que je suis un novice en électronique.
Merci d'avance pour vos réponses.
-----
Bonjour
Voila, j'aimerais connaitre la marche à suivre pour remplacer un ML2039 par un PIC16F1936 sur une carte générique siemens SIRIUS II sachant que je suis un novice en électronique.
Merci d'avance pour vos réponses.
Salut,
Si tu es novice en électronique c'est un projet très compliqué auquel tu t'atelles...
Le ML2039 est un produit très particulier qui ne va pas être simple à réaliser avec un microcontrôleur...
Au fait, pourquoi as-tu choisi le PIC16F1936 (produit très récent) ?
Quelle fonctionnalité possède ce microcontrôleur qui soit utile dans ce projet ?
As-tu déjà programmé un microcontroleur ????
a+
Dernière modification par RISC ; 08/09/2009 à 19h39. Motif: correction
Salut et merci pour ta réponse.
En fait voila j'ai commencé mon stage en entreprise hier.
J'ai donc un tuteur qui m'aidera (heureusement)
En fait le ML2039 n'est plus commercialisé et donc l'entreprise veut le remplacer par un microprocesseur.
L'entreprise à chosi le PIC16F1936.
Pour les fonctionnalités utiles je ne sais pas encore.
Oui une foi mais ça reste très vague pour moi car on m'avais pas mal aidé.
Salut et merci pour ta réponse.
En fait voila j'ai commencé mon stage en entreprise hier.
J'ai donc un tuteur qui m'aidera (heureusement)
En fait le ML2039 n'est plus commercialisé et donc l'entreprise veut le remplacer par un microcontroleur PIC.
L'entreprise à chosi le PIC16F1936.
Pour les fonctionnalités utiles je ne sais pas encore.
Sans doute le coup du produit (1,44€ pièce) et la fonctionnabilité du pic qui est programmable Insitu.
Oui une foi mais ça reste très vague pour moi car on m'avais pas mal aidé.
Bonjour à tous et désolé pour le double post.
Je me suis trompé le PIC16F1936 n'est pas un microprocesseur mais un microcontroleur.
Pour les fonctionnalités,c'est sans doute le coup du produit (1,44€ pièce) et la fonctionnabilité du pic qui est programmable et débuggable Insitu.
Voila je dois à présent faire l'algorithme du programme du pic.
Je sais ce qu'est un algorithme mais je ne sais pas comment le faire et par ou commencer.
Pour info, l'ancien composant que je dois remplacer par le PIC était un ML2039 et il était utilisé comme générateur de fréquence programmable de précision.
Auriez-vous une procédure pour faire l'algo ?
Merci d'avance pour vos réponses
Salut,
Il va falloir prendre une feuille et écrire ton cahier des charges...
Quel type (forme) de fréquence dois-tu générer ?
Quelle fréq (min / max) ?
Quelle précision (pour le choix de l'horloge) ?
Je pense que l'unité à utiliser est le CCP en mode PWM avec un filtre passe-bas derrière pour faire une sinusoide...
Encore une fois, si ce micro a été choisi il doit y avoir un périphérique qui est capable de faire le job. Demande a ton tuteur quelle technique il a prévu et quel périph...
a+
Salut RISC.
Voila le pic doit générer un signal carré de fréquence et rapport cyclique réglable.
Ce dernier pourra aller de 1% à 99% par pas de 2%.
La sélection se fera sur 6 bits.
Il y a 2 fréqunce disponibles sur la carte 4Mhz et 25Mhz.
"Je pense que l'unité à utiliser est le CCP en mode PWM avec un filtre passe-bas derrière pour faire une sinusoide"
Qu'est-ce que le CCP en mode PWM ?
Après au niveau de l'interface et du matériel j'ai tout ce qui faut ("normalement").Cad le logiciel MPLAB ainsi que le compilateur de chez Microchip et un debbugger.
Voila,en tout cas merci pour ta réponse.
A+
Salut,
Les choses sont plus claires ;=)
Commence par lire la datasheet
En particulier le chapitre 19 (unité CCP = Capture Compare PWM).
En mode PWM tu peux faire varier le rapport cyclique.
Quel outil possèdes-tu pour déboguer ?
Il faut faire attention car cette nouvelle famille (PIC16F1xxx) se programme sous Vpp=9V max, donc ne pas utiliser l'ICD2...
a+
Dernière modification par RISC ; 01/10/2009 à 00h29. Motif: correction
Pour deboguer j'ai le logiciel MPLAB ICD2 avec l'adaptateur du meme nom.
Est-tu sur que le pic16f1936 n'est pas compatible avec ce matériel ?
Et qu'est-ce que fait exactement la fonction de débogage,je n'ai pas trè bien compris ?
Merci
Salut,
Si tu veux utiliser l'ICD2 que ce soit pour programmer ou déboguer avec la nouvelle famille PIC16F1xxx, il faut impérativement un adaptateur qui réduise Vpp de 13V à 9V comme celui-là
a+
Salut
Ok pour l'adaptateur et merci pour ton lien.
Je vais en parler à mon tuteur.
J'ai bien vu sur le datasheet que la tension Vpp max du pic ne devait pas dépasser 9V.
Par contre, aurait tu une idée du programme qu'il va falloir que je code en C++ pour ce cahier des charges.
Je dois actuellement faire l'algorithme mais je n'en ai jamais fait et je ne sais donc pas par quoi commencer.
Merci a+
Salut,
Oublie le C++ ;=) c'est pour les PC par pour les petits micros !!
Tu es dans l'embarqué...à quelques euros. Ta RAM fait 512 octets et ta FLASH 14KB.
Il va falloir travailler en C.
Tu peux charger le compilateur Hitech pour famille PIC10/12/16 en version évaluation ici : http://www.microchip.com/compilers
(il compile je crois aussi pour la nouvelle famille PIC16F1xxx)
Cependant le code n'est pas optimisé et donc si tu as des PB de taille de mémoire FLASH tu as intérêt à acheter une license qui optimise le code de 20 à 40% (c'est mon expérience personnelle).
a+
Salut
Oui je travaille en C en fait je pensait que les 2 langages étaient similaires au point de pouvoir programmer avec l'un des deux au choix.
Pour le compilateur, je l'ai déja installé sur mon pc et c'est bien celui que tu m'as indiqué.
J'ai commencé à écrire un bout de code aujourd'hui et j'aimerais savoir si je suis sur la bonne voie ou pas du tout (ce qui ne m'étonnerais pas) car je le rapel je suis novice en programmation.
-------------------------------------------------------------------------
-------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
//Rapport cyclique
//Déclarations des variables
int i=0;
double fclkin=25000000.0;
double fout=20.0;
int SDI[16]={0};
double SDIdecimale=0.0;
int ICSPDAT[16]={0};
//Boucle de vérification du tableau
for (i=0;i<16;i++)
{
printf("%d ",SDI[i]);
}
//Calcul de la fréquence de sortie (=fréquence désirée) en fonction de fclkin et SDI
SDIdecimale = (fout*50*pow(2,22))/fclkin;
printf("\n%f\n",SDIdecimale);
//Demande du code binaire de la fréquence voulue en sortie
//Donc remplissage du tableau ICSPDAT[i]
printf("Rentrez la valeur binaire de la fréquence du poid faible au poids fort : \n");
//Boucle remplissage tableau
for (i=0;i<16;i++)
{
scanf("%d",&ICSPDAT[i]);
i++;
}
//Boucle affiche code fréquence désirée
for (i=0;i<16;i++)
{
printf("%d",ICSPDAT[i]);
i++;
}
//Conversion ICSPDAT(=valeur binaire des bits de programmation) en valeur décimale
for(i=0;i<16;i++)
{
if (ICSPDAT[i]==1)
{
SDIdecimale+=pow(2,i);
}
i++;
}
system("PAUSE");
return 0;
}
------------------------------------------------------------------------
------------------------------------------------------------------------
Voila,peut-tu me dire ce que tu en pense ?
Merci encore.
A+
Salut
Oui je travaille en C en fait je pensait que les 2 langages étaient similaires au point de pouvoir programmer avec l'un des deux au choix.
Pour le compilateur, je l'ai déja installé sur mon pc et c'est bien celui que tu m'as indiqué.
J'ai commencé à écrire un bout de code aujourd'hui et j'aimerais savoir si je suis sur la bonne voie ou pas du tout (ce qui ne m'étonnerais pas) car je le rapel je suis novice en programmation.
-------------------------------------------------------------------------
-------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[])
{
//Rapport cyclique
//Déclarations des variables
int i=0;
double fclkin=25000000.0;
double fout=20.0;
int SDI[16]={0};
double SDIdecimale=0.0;
int ICSPDAT[16]={0};
//Boucle de vérification du tableau
for (i=0;i<16;i++)
{
printf("%d ",SDI[i]);
}
//Calcul de la fréquence de sortie (=fréquence désirée) en fonction de fclkin et SDI
SDIdecimale = (fout*50*pow(2,22))/fclkin;
printf("\n%f\n",SDIdecimale);
//Demande du code binaire de la fréquence voulue en sortie
//Donc remplissage du tableau ICSPDAT[i]
printf("Rentrez la valeur binaire de la fréquence du poid faible au poids fort : \n");
//Boucle remplissage tableau
for (i=0;i<16;i++)
{
scanf("%d",&ICSPDAT[i]);
i++;
}
//Boucle affiche code fréquence désirée
for (i=0;i<16;i++)
{
printf("%d",ICSPDAT[i]);
i++;
}
//Conversion ICSPDAT(=valeur binaire des bits de programmation) en valeur décimale
for(i=0;i<16;i++)
{
if (ICSPDAT[i]==1)
{
SDIdecimale+=pow(2,i);
}
i++;
}
system("PAUSE");
return 0;
}
------------------------------------------------------------------------
------------------------------------------------------------------------
Voila,peut-tu me dire ce que tu en pense ?
Merci encore.
A+
Salut,
A lire ton programme j'ai l'impression que tu as toujours programmé sur un PC...qui tourne à 3GHz.
N'oublie pas que ton PIC tourne à 32MHz, c'est à dire 100 fois plus lentement.
Si tu utilises des fonctions mathématiques (telles que pow() ), tu vas t'apercevoir que cela dure très lontemps pour un petit micro comme le PIC16F1936.
Je te recommande de faire tourner ton programme dans le simulateur :
Debugger > MPLAB Sim et de vérifier la fenetre de chronomètre (STOPWATCH) pour avoir une idée du temps de traitement...
Tu peux te former avec les petits training en ligne :
http://www.microchip.com/webseminars
a+
Oui en effet, le peu de programmation que j'ai fait était sur pc.
J'ai programmé des jeux basiques comme le pendu ou mastermind mais rien de plus compliqué.
Ok donc il faut que j'utilise dans mon programme le moins d'opérations qui risquent de prendre beaucoup de mémoire ?
Ok pour la simulation et les petits training, je vais essayer demain.
Merci a+
Salut,
Le problème n'est pas seulement la taille du programme mais surtout le temps pour faire une opération complexe ( une opération différentes des 4 opérations de base).
Une élévation à une puissance peut durer suivant le processeur plusieurs ms à plusieurs dizaines de ms.
La raison est que les processeurs INTEL intègrent un coprocesseur arithmétique ce qui n'est pas le cas des microcontrôleurs.
Exemple : la multiplication 8 x 8 n'existe pas dans le PIC16F1936 il faut donc la faire par plusieurs dizaines de cycles. Tu peux donc imaginer que l'élévation à une puissance va prendre beaucoup plus de temps...
Si tu n'en fais qu'une pas de PB, mais si tu en fais plusieurs répétitivement il faut voir le temps de réponse.
Tu pourras facilement mesurer cela avec le mode STOPWATCH dans le simulateur.
Je te conseille les mini-formations en ligne suivantes pour ton projet :
* MPLAB
* Famille PIC16F1xxx
* Simulateur
* Compilateur HiTech PRo pour PIC10/12/16
bon courage
a+
Dernière modification par RISC ; 03/10/2009 à 15h11. Motif: correction
Salut et merci pour ton aide.
Apparemment le rapport cyclique est déjà programmé par un compteur 74LS592 sur la carte.
Donc je pense que je n'aurais rien à faire pour sa programmation.
Si j'ai bien compris, je dois écrire un programme qui utilise les 3 ou 4 compteurs du pic pour atteindre la fréquence désirée en sortie de celui-ci.
Mais je ne sais pas par ou commencé.
En effet je n'ai jamais fait de procédure comme celle-ci.
Pourrais-tu me conseiller pour démarrer ?
En tout cas merci.
A+
Salut,
A toi de jouer...il faut mettre les mains dans le cambouis.
Commence par ecouter / télécharger les mini-formations dont je t'ai donné les liens et lances toi ;=)
a+
Salut
Voila je vais devoir mettre 2 compteurs en cascade.
Le 1er est un 16 bits, il recoit la fréquence d'entrée qui est de 6,25Mhz.
Donc son facteur de division max est de 65535.
Je peux donc avoir une fréquence minimum en sortie de 95Hz avec ce seul compteur.
Mais sachant que mon pas minimum est de 0,48Hz, je dois programmer un 2ème compteur 8 bits qui comptera jusqu'à 208.
Mon problème est tout simple,je ne sais pas comment relier ces 2 compteurs.
Je relie la sortie 15 du cptr 16 bits à la clk du cptr 8 bits.
Ou je met un multiplexeur entre les 2 ??
Merci.
A+
Bonjour à tous
Voila j'aurais besoin d'un tout petit bout de code qui permette de définir les ports de mon PIC16f1936.
Autant en lecture qu'en écriture si possible.
Cela me servirai d'exemple pour faire le programme que je doit faire.
Merci