bonjour.
j utilise un 68hc11 et je voudrais programmer le convertisseur analogique numérique de celui ci en langage C mais j ai du mal a programmer.
Un peu d'aide serait la bienvenue merci.
Version imprimable
bonjour.
j utilise un 68hc11 et je voudrais programmer le convertisseur analogique numérique de celui ci en langage C mais j ai du mal a programmer.
Un peu d'aide serait la bienvenue merci.
Bonjour, ton pic tu le programme avec quel logiciel, car ton compilateur doit avoir des fonctions qui te permettent directement d'aller au registre du micro-p.
J'avais fais une mesure de temperature avec ce petit pic :
Si je me souviens bien les étapes étaient celle-ci :
//ACTIVATION DE LA POMPE
//BIT A L'ETAT 1 DU REGISTRE OPTION
//ENTAMER UNE CONVERSION
//CHOISIR L'ADRESSE DE L'ENTREE A CONVERTIR
//ATTENTE DU BIT CCF DANS LE REGISTRE ADCTL
//RECUPERATION DE LA VALEUR DE LA CONVERSION
N'oublie pas de faire une petite pause entre la conversion et les étapes suivantes
En principe, la démarche à suivre est indiquée dans la data sheet du µC et ne demande pas vraiment de compétences C. Le travail se situe dans le paramétrage des registres et l'utilisation des opérateurs logiques pour effectuer des opérations bits à bits. Ainsi tu peux tester d'éventuels flags au niveau des registres ou les modifier.
Juste une petite chose, le 68HC11, n'est pas un PIC, mais un µC Motorola.
Je ne connais pas ce µC, mais la première recherche avec google me donne ceci : Le convertisseur Analogique / Digital
Récupérer la valeur d'un registre dans une variable doit être relativement simpleCode:valeurAN = ADR[1] ;
Merci pour votre aide à tous.
j'ai bien compris comment cela marchais et la valeur à placer dans les registres OPTION, ADCTL et ADR mais maintenant je dois le programmer et c'est la le probleme.
si vous pouviez m'aider en m'expliquant au moins l'algorithme après je pourrais peut etre arriver à le programmer.
Merci
Bonne journée
Salut, voila ce que j'avais fais avec DevMic
Si tu comprends pas les registres etc... j'ai la documentation du 68HC11
poke : permet de mettre une valeur dans un registreCode:
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 #define PORTB 0x1004 #define PORTC 0x1003 #define IRQ 0xFFF2 #define OPTION 0x1039 #define ADCTL 0x1030 #define ADRESSE 0 #define ADR 0x1031 void main() { int val_CCF, val_ADR; val_CCF=0; val_ADR=0; enable(); //ACTIVATION DE LA POMPE //BIT A L'ETAT 1 DU REGISTRE OPTION poke(OPTION,0x80); delay(10); //ENTAMER UNE CONVERSION //CHOISIR L'ADRESSE DE L'ENTREE A CONVERTIR poke(ADCTL, ADRESSE); //CHOISIR L'ADRESSE //ATTENTE DU BIT CCF DANS LE REGISTRE ADCTL do { val_CCF = peek (ADCTL); val_CCF = val_CCF & 0x80; val_CCF = val_CCF >> 7; }while( val_CCF != 1 ) ; //RECUPERATION DE LA VALEUR DE LA CONVERSION val_ADR = peek (ADR);
peek : permet d'obtenir la valeur d'un registre
Tu dois disposer du même genre de fonctions pour la lecture de tes registres
Merci Allan pour ton aide.
je vais essayer de programmer tous sa.
c'est pas gagné mais ton aide ma permis d'avancer.