Indholdsfortegnelse:
- Trin 1: Indsigt
- Trin 2: Portinitialisering
- Trin 3: Ultra lav strøm
- Trin 4: TIMER
- Trin 5: Lav strømtilstand
- Trin 6: ISR-timer
- Trin 7: Hardwareafbrydelse
- Trin 8: ISR- Nulstil/ trykknap
- Trin 9: KODE
- Trin 10: Referencekode
Video: MSP430 Sekundertæller: 10 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
Velkommen! Making of Seconds Counter: Brug af CCStudio 8 og MSP430F5529 til projektet.
C -sprog til kodning af mikrokontrolleren. Anvendelse af lavt strømtilstande, timere og afbrydelser. Outputtet vises via 7 segmenter.
Trin 1: Indsigt
Lad os begynde!
Initialiser vagthundstimeren til OFF -tilstand ved hjælp af den nødvendige adgangskode til vagthundstimeren (Det hjælper med at kontrollere uendelige sløjfer og holde processoren sikker).
#omfatte
/** * main.c */
int main (tomrum)
{
WDTCTL = WDTPW | WDTHOLD; // stop vagthund timer
returnere 0;
}
Trin 2: Portinitialisering
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 fortæller os, at hele PORT-3 er initialiseret til at tage input.
P3DIR | = 0xFF fortæller os, at hele PORT-3 initialiseres for at give output.
P3DIR | = 0x01 kun stiften P3.0 initialiseres til output i PORT-3. Dette følger med en hexadecimal port -kortlægning.
P4REN | = 0xFF, dette angiver, at stifterne på PORT-4 har deres pull up/down modstande aktiveret.
For at vælge dem mellem Pull UP eller Pull DOWN bruges instruktionen P $ OUT | = 0xFF.
Hvis der bruges 0xFF, konfigureres de som Pull UP -modstande, og hvis 0x00 konfigureres som Pull DOWN.
Trin 3: Ultra lav strøm
MSP430F5529 giver os mulighed for at reducere effekttab fra processoren. Dette er nyttigt i selvstændige applikationer.
Dette kræver erklæring af alle pin eller porte til output.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Trin 4: TIMER
Brug af timer til forsinkelsesgenerering på et sekund. Dette bruger SMCLK på 1MHz, også timeren kører i lav strømtilstand (i det næste trin, efter tællingen, blev den afbrudt fra LPM). Denne proces sparer strøm og belastning på processoren
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Værdierne er 999, da det tager endnu en tælling at rulle tilbage til nul i timeregistret.
Trin 5: Lav strømtilstand
_BIS_SR (LPM0_bits+GIE);
Dette muliggør General interrupt Enable (GIE), og sætter CPU'en til LPM0, hvor MCLK, der understøtter cpu'en, er slukket, og SMCLK og ACLK -kørsel, der holder timeren kørende. så vi kan se CPU'en er slukket, der ved at spare strøm.
Trin 6: ISR-timer
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
hvis (z> forsinkelse)
{
P3OUT = kode [x];
P6OUT = kode1 [y];
x ++;
hvis (x == 10)
{
x = 0;
y ++;
}
hvis (y == 6)
y = 0;
z = 0;
}
}
pragma -vektor er til ISR -repræsentation i C embd.
kode [x] og kode1 [y] er de arrays, der indeholder outputværdier for de to syv segmenter, til visning af 60 sekunders tæller.
Trin 7: Hardwareafbrydelse
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Her erklæres P2.1 som en hardwareafbrydelse, hvis der trykkes på knappen, nulstilles tælleren til værdien.
resten program er skrevet inde i ISR af denne afbrydelse.
Trin 8: ISR- Nulstil/ trykknap
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kode [x];
P6OUT = kode1 [y];
v ++;
for (i = 0; i
{
P1OUT | = BIT0; //P1.0 = skifte
_forsinkelse_cykler (1048576);
P1OUT & = ~ BIT0; // P1.0 = skifte
_forsinkelse_cykler (1048576);
}
Denne ISR nulstiller tælleren og regner med, hvor mange gange der blev trykket på resten.
(Her vises displayet via led -skifte, kan også bruge et andet array og en timer til at vise disse værdier som output i 7 segmenter).
Trin 9: KODE
#omfatte
#definer forsinkelse 1000
char kode = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
flygtig usigneret int x = 0, y = 0, z = 0;
flygtig usigneret int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // stop vagthund timer
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);
}
// Timer A0 afbryder servicerutinen
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
hvis (z> forsinkelse)
{
P3OUT = kode [x];
P6OUT = kode1 [y];
x ++;
hvis (x == 10)
{
x = 0;
y ++;
}
hvis (y == 6)
y = 0;
z = 0;
}
}
// Hardwareafbrydelsesrutine
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kode [x];
P6OUT = kode1 [y];
v ++;
for (i = 0; i
{P1OUT | = BIT0; // P1.0 = skifte
_forsinkelse_cykler (1048576);
P1OUT & = ~ BIT0; // P1.0 = skifte
_forsinkelse_cykler (1048576);
}
}
Trin 10: Referencekode
GitHub -depot
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Finite State Machine på en MSP430: 6 trin
Finite State Machine på en MSP430: Jeg vil vise dig, hvordan du programmerer en MSP430G2 Launchpad med Finite State Machines (FSM) ved hjælp af YAKINDU Statechart Tools direkte i Texas Instruments Code Composer Studio. Denne vejledning indeholder seks trin: Installation af YAKINDU Statechart Tools som
MSP430 Breadboard Audio Spectrum Analyzer: 6 trin
MSP430 Breadboard Audio Spectrum Analyzer: Dette projekt er mikrofonbaseret og kræver minimale eksterne komponenter. 2 x LR44 møntceller bruges, så jeg kan få hele strukturen til at fungere i rammerne af et 170 tie-point mini-brødbræt. ADC10, TimerA interrupt LPM wake-up, TimerA PWM
Programmering af MSP430 DIP ved hjælp af en Ez430: 4 trin
Programmering af MSP430 DIP Brug af en Ez430: Da jeg fandt TIs ez430 USB -programmer, så det ud til at være en af de lettere metoder til at komme i gang med en MCU. Hvordan kunne jeg tage fejl, det har ez i navnet! Det viser sig, at det faktisk er let … for det meste. Ez430 er fantastisk, hvis du vil