HELPPP .....

B

bau

Guest
Je suis un newbie sur le micro-contrôleur.J'ai écrit un programme ADC qui convertissent le signal analogique et afficher sur le conduit à PORTB et PORTC.J'ai essayer de simuler avec le Proteus, ça marche bien, mais, quand je télécharger le programme dans ma PIC18F4520, il ne marche pas travailler comme vous le souhaitez.Ci-dessous est mon programme,# include <p18f4520.h># include <delays.h># include <portb.h># include <adc.h>
# pragma config OSC = HS# pragma config PWRT = ON# pragma config WDT = OFF
int temp;int Salut;
void PortB_isr (void);# pragma code high_vector = 0x08void high_interrupt (void)(GOTO _asm _endasm PortB_isr)
# pragma interrompre PortB_isrvoid PortB_isr (void)(INTCONbits.INT0IF = 0;OpenADC (ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_4_TAD, ADC_CH0 & ADC_INT_OFF& ADC_VREFPLUS_EXT & ADC_VREFMINUS_EXT, 5);SetChanADC (ADC_CH0);Delay10TCYx (100);ConvertADC (); / / Start conversionwhile (BusyADC ()); / / Wait for conversion ADC= temp ReadADC (); / / Lire la suite et mis en tempCloseADC (); / / Désactiver le convertisseur A / NPORTC = temp;Salut = temp;Salut>> = 8;PORTD = Salut;)
void main (void)(TRISA = 0x0F;TRISB = 0xFF;TRISC = 0x00;TRISD = 0x00;PORTC = 0;PORTD = 0;ADCON1 = 0x09;T0CONbits.T0CS = 0;CMCON = 0x07;CVRCON = 0;
OpenRB0INT (PORTB_CHANGE_INT_ON &FALLING_EDGE_INT &PORTB_PULLUPS_OFF);INTCONbits.GIE = 1;
while (1) ()
)Le cystral que j'ai utilisé est 20MHz.

La sortie de ma LED (connecté à la PORTC et PORTD) est 0b1100000000 lorsque le AN0 est relié à la terre.

Je heureux d'écouter d'autres .......

 
Que signifie précisément fonctionne pas?

Quel canal ADC utilisez-vous?

Combien de fois êtes-vous rafraîchir les valeurs sur les voyants?
Je vais vous dire une ou deux fois par secondes sera ok pour vous de lire les valeurs.Une valeur inférieure à celle qui sera difficile à lire.

Ma recommandation est de toujours faire des travaux chose étape par étape, par exemple s'assurer que le PORTC et de sortie PORTD works fine.Ensuite, allez à l'étape suivante.Et ainsi de suite.

S'il vous plaît répondez aux questions et d'envoyer un schéma pour obtenir une meilleure aide.

 
La première chose que je peux parler, c'est quand je fournir le 0V (masse) à la AN0 qui est le ADC_CH0, la sortie n'est pas démontré que désiré qui est 0b0000000000.

La chaîne que j'ai utilisé est ADC_CH0.

Je ne déclenche pas l'interruption RB0 si souvent (moins d'une fois par seconde), de sorte je ne pense qu'il n'ya pas assez de temps pour la conversion ADC.

La goupille de données pour PORTC et PORTD et fonctionne bien.J'ai essayer ce soit en ajoutant le code suivant pour le tester.Mais le problème est toujours la même ....PORTC = 0xFF;PORTD = 0xFF;Delay10KTCYx (255);Delay10KTCYx (255);PORTC = 0x00;PORTD = 0x00;Delay10KTCYx (255);Delay10KTCYx (255);PORTC = 0xFF;PORTD = 0xFF;Delay10KTCYx (255);Delay10KTCYx (255);PORTC = 0x00;PORTD = 0x00;Est-ce parce que d'une erreur sur le règlement ADC?

 
Pouvez-vous nous dire laquelle des micro que vous utilisez?

 
Bonjour bau

Jetez un oeil sur ce tutoriel pour les réglages, ce qui explique la façon dont le Connecteur Active Directory fonctionne et fournit aussi l'exemple de code pour lire les entrées analogiques.
Le commandant de bord utilisés dans ces tutoriels est de la même famille, et donc la façon de lire les entrées analogiques est le même.

 
nandhu015:
J'utilise le adc.h intérieur de la bibliothèque C18 à configurer ma fonction ADC.

miredox:
Merci beaucoup.Enfin je sais wat est mon problème.j'ai oublié de configurer le LVP à OFF, ce qui cause ma fonction adc pas en mesure de bien fonctionner ..Une fois againss ..... Merci .....Ajouté après 9 minutes:Sur plus chose de demander ..Pourquoi sans configurer le LVP = off, mon aide de camp ne peut pas fonctionner correctement?Que je sache, il n'est pas lié au port A ou ADC fonction.Mais comment expliquer qu'il va se passer?

Je me réjouis de l'explication.Merci

 

Welcome to EDABoard.com

Sponsor

Back
Top