Table des matières:
- Étape 1: Aperçu
- Étape 2: initialisation du port
- Étape 3: Ultra faible puissance
- Étape 4: MINUTERIE
- Étape 5: Mode faible consommation
- Étape 6: ISR-Timer
- Étape 7: interruption matérielle
- Étape 8: ISR - Réinitialiser/bouton poussoir
- Étape 9: CODEZ
- Étape 10: Code de référence
Vidéo: Compteur de secondes MSP430 : 10 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
Bienvenue! Making of Seconds Counter: Utilisation de CCStudio 8 et MSP430F5529 pour le projet.
Langage C pour coder le micro contrôleur. Application de modes de faible consommation, de minuteries et d'interruptions. La sortie est affichée via 7 segments.
Étape 1: Aperçu
Commençons!
Initialisez le temporisateur de chien de garde à l'état OFF en utilisant le mot de passe requis pour le temporisateur de chien de garde (cela permet de contrôler les boucles infinies, en protégeant le processeur).
#comprendre
/** * principal c */
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // arrête le chronomètre du chien de garde
renvoie 0;
}
Étape 2: initialisation du port
{
P3DIR=0xFF; // P3DIR=0x00;
P6DIR=0xFF;
P4DIR |=0x00;
P4REN |=0xFF;
P4OUT |=0xFF;
}
P3DIR |=0x00 nous indique que l'ensemble du PORT-3 est initialisé pour prendre des entrées.
P3DIR |=0xFF nous dit que l'ensemble du PORT-3 est initialisé pour donner des sorties.
P3DIR |=0x01 seule la broche P3.0 est initialisée pour sortir dans PORT-3. Cela suit un mappage de port hexadécimal.
P4REN |=0xFF, cela indique que les broches du PORT-4 ont leurs résistances pull up/down activées.
Pour les sélectionner entre Pull UP ou Pull DOWN, l'instruction P$OUT |=0xFF est utilisée.
Si 0xFF est utilisé, ils se configurent comme des résistances Pull UP et si 0x00, ils se configurent comme Pull DOWN.
Étape 3: Ultra faible puissance
MSP430F5529 nous permet de réduire les pertes de puissance du processeur. Ceci est utile dans les applications autonomes.
Cela appelle à la déclaration de toutes les broches ou ports à sortir.
{
P7DIR |= 0xFF;
P6DIR |= 0xFF;
P5DIR |= 0xFF;
P4DIR |= 0xFF;
P3DIR |= 0xFF;
P2DIR |= 0xFF;
P1DIR |= 0xFF;
}
Étape 4: MINUTERIE
Utilisation de la minuterie pour la génération de retard d'une seconde. Cela utilise le SMCLK de 1MHz, la minuterie fonctionne également en mode basse consommation (à l'étape suivante, après son décompte, elle est interrompue à partir de LPM). Ce processus économise de l'énergie et de la charge sur le processeur
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
Les valeurs sont 999, car il faut un compte supplémentaire pour revenir à zéro dans le registre de la minuterie.
Étape 5: Mode faible consommation
_BIS_SR(LPM0_bits+GIE);
Cela active l'activation d'interruption générale (GIE) et place le processeur sur LPM0, où MCLK qui prend en charge le processeur est désactivé, et SMCLK et ACLK s'exécutent pour que la minuterie continue de fonctionner. nous pouvons donc voir que le processeur est éteint, en économisant de l'énergie.
Étape 6: ISR-Timer
#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
si(z>délai)
{
P3OUT=code[x];
P6OUT=code1[y];
x++;
si(x==10)
{
x=0;
y++;
}
si(y==6)
y=0;
z=0;
}
}
le vecteur pragma est pour la représentation ISR dans C embd.
code[x] et code1[y] sont les tableaux qui contiennent les valeurs de sortie pour les deux sept segments, pour afficher le compteur de 60 secondes.
Étape 7: interruption matérielle
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
Ici P2.1 est déclaré comme une interruption matérielle, si le bouton est enfoncé, le compteur se remet à la valeur.
le reste du programme est écrit à l'intérieur de l'ISR de cette interruption.
Étape 8: ISR - Réinitialiser/bouton poussoir
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0; y=0;
P3OUT=code[x];
P6OUT=code1[y];
v++;
pour(i=0;i
{
P1OUT |= BIT0; //P1.0 = basculer
_delay_cycles (1048576);
P1OUT &=~BIT0; // P1.0 = basculer
_delay_cycles (1048576);
}
Cet ISR réinitialise le compteur et compte le nombre de fois où le reste a été pressé.
(Voici l'affichage est effectué via une bascule à led, peut également utiliser un autre tableau et une autre minuterie, pour afficher ces valeurs en tant que sortie dans 7 segments).
Étape 9: CODEZ
#comprendre
#définir le délai 1000
code de caractères={0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
code de caractère1={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
int non signé volatile x=0, y=0, z=0;
int non signé volatile v=0, i=0;
vide principal()
{
WDTCTL = WDTPW | WDTHOLD; // arrête le chronomètre du chien de garde
P7DIR |= 0xFF;
P7OUT |= 0x00;
P8DIR |= 0xFF;
P8OUT |= 0x00;
P4DIR |= 0xFF;
P4OUT |= 0x00;
P5DIR |= 0xFF;
P5OUT |= 0x00;
P1DIR=0xFF;
P3DIR=0xFF;
P6DIR=0xFF;
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR(LPM0_bits+GIE);
}
// Routine de service d'interruption du temporisateur A0
#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
si(z>délai)
{
P3OUT=code[x];
P6OUT=code1[y];
x++;
si(x==10)
{
x=0;
y++;
}
si(y==6)
y=0;
z=0;
}
}
// Routine de service d'interruption matérielle
#pragma vector=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0;
y=0;
P3OUT=code[x];
P6OUT=code1[y];
v++;
pour(i=0;i
{ P1OUT |= BIT0; // P1.0 = basculer
_delay_cycles (1048576);
P1OUT &=~BIT0; // P1.0 = basculer
_delay_cycles (1048576);
}
}
Étape 10: Code de référence
Dépôt GitHub
Conseillé:
Compteur de visiteurs utilisant 8051 et capteur IR avec écran LCD : 3 étapes
Compteur de visiteurs utilisant le 8051 et un capteur infrarouge avec écran LCD : Chers amis, j'ai expliqué comment créer un compteur de visiteurs utilisant le 8051 et un capteur infrarouge et l'afficher sur l'écran LCD. 8051 est l'un des microcontrôleurs les plus populaires utilisés pour la réalisation d'applications commerciales et de loisirs dans le monde entier. J'ai fait une vis
COMPTEUR DE FRÉQUENCE CMOS : 3 étapes
COMPTEUR DE FRÉQUENCE CMOS : Il s'agit d'un guide avec des fichiers PDF et des photos inclus de la façon dont j'ai conçu mon propre compteur de fréquence pour le plaisir hors de la logique discrète. Je n'entrerai pas dans les détails sur la façon dont j'ai fabriqué les circuits imprimés ou comment les câbler, mais les schémas sont réalisés dans KICAD qui est un logiciel gratuit
Comment faire une minuterie de lavage Arduino bricolage de 30 secondes, ARRÊTER LA PROPAGATION DE COVID: 8 étapes
Comment faire une minuterie de lavage Arduino bricolage de 30 secondes, ARRÊTER LA PROPAGATION DE COVID: bonjour
Clap Switch (40 claps en 5 secondes): 4 étapes (avec photos)
Interrupteur Clap (40 Claps en 5 secondes) : L'interrupteur Clap a la capacité d'allumer/éteindre n'importe quel composant électrique en connectant la sortie du circuit à un interrupteur à relais. Ici, nous allons faire un clap switch avec peu de composants avec de très bonnes explications. Comparé à tous les autres interrupteurs à clap
Tuez toutes les données d'un CD/DVD en 5 secondes ou moins : 3 étapes
Tuez toutes les données sur un CD/DVD en 5 secondes ou moins. : Tuez toutes les données sur un CD/DVD en 5 secondes ou moins.Pourquoi voudriez-vous faire ceci :++Détruisez les anciennes sauvegardes de quelques années++ a brûlé le temps spécial de la chambre à coucher sur DVD ++ Votre ex veut le dos du CD/DVD. ++ FUN AVEC AOL DISK !!!! MDR