PWM microcontrôleur PIC et TIMER

T

torchd

Guest
Salut les gars je suis nouveau sur les microcontrôleurs PIC. Je mesure l'humidité relative dans une pièce à l'aide d'un capteur d'humidité résistif. Le capteur utilise un signal alternatif. J'ai généré le signal alternatif à l'aide du signal PWM à partir d'un PIC 4520 (1kHz 0-5V). Je vous envoie ce signal à un ampli op et de convertir le signal de -1 à 1 V onde carrée. Ce que je dois savoir, c'est comment je ne l'échantillon de la tension aux bornes du capteur et de savoir quand ma tension est élevée (+1 V) pour pouvoir synchroniser mes prélèvements ADC. (J'utilise CCP1 et Timer 2) Merci à l'avance le code que j'ai utilisé pour générer le signal PWM est indiqué ci-dessous: # include void main () {int i; OSCCON = 0b01111110; / commande de l'oscillateur / register fixé pour 8MHz TRISC = 0x00 ; T2CON = 0b00000110; / / prédiviseur + tour sur TMR2; PR2 = 0b001111111; CCP1CON 0b00111100 =; CCPR1L = 63; / / TMR2ON = 1; while (1) {}}
 
Pourriez-vous élaborer un organigramme et / ou de tout schéma de comportement? + + +
 
Vous pouvez utiliser la minuterie de l'IRQ 2. De la feuille de données: Lorsque TMR2 est égal à PR2, les événements suivants se produisent sur le cycle des augmentations à venir: • TMR2 est désactivée • La broche CCPX est réglé. Retardateur de deux interruptions se produit lorsque TMR2 est égal à PR2. C'est alors que la sortie PWM est élevé.
 
Salut Merci les gars pour la réponse. Après avoir fait quelques recherches, j'ai constaté que je ne peux pas utiliser les deux modules CCP avec PWM à des fréquences différentes. (J'utilise CCP2 pour 120kHz signal PWM). Donc, je trouve que si je veux créer une onde carrée à l'aide 1kHz CCP1, ai-je besoin d'utiliser le mode de comparaison sur le CCP1. Peut-on dire comment je vais être capable de lire l'ADC à lorsque la broche est élevé. Merci les gars
 
Vous pouvez utiliser une interruption de minuterie pour générer l'onde carrée. Pré-charge de la minuterie pour une fréquence de 500 ms d'interruption et une broche de sortie bascule dans l'interruption. Ensuite, vous savez quand la ligne est élevée.
 
torchd Pourquoi n'utilisez-vous pas TIMER0 et de performances de ce btbass opération suggérée? Je ne vois pas qu'il soit utilisé lors code ci-dessus que vous avez affichée. + + +
 

Welcome to EDABoard.com

Sponsor

Back
Top