INHOUDSOPGAWE:
- Stap 1: Insig
- Stap 2: Portinitialisering
- Stap 3: Ultra lae krag
- Stap 4: TIMER
- Stap 5: Lae kragmodus
- Stap 6: ISR-timer
- Stap 7: Hardewareonderbreking
- Stap 8: ISR- Herstel-/ drukknop
- Stap 9: KODE
- Stap 10: Verwysingskode
Video: MSP430 sekondeteller: 10 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Welkom! Maak van sekondeteller: Gebruik CCStudio 8 en MSP430F5529 vir die projek.
C -taal om die mikrobeheerder te kodeer. Lae kragmodusse, tydtellers en onderbrekings toepas. Die uitset word via 7 segmente vertoon.
Stap 1: Insig
Laat ons begin!
Initialiseer die waghond -timer in die UIT -toestand met behulp van die vereiste wagwoord vir die waghond -timer (dit help om oneindige lusse te kontroleer en die verwerker veilig te hou).
#insluit
/** * main.c */
int main (leeg)
{
WDTCTL = WDTPW | WDTHOLD; // stop waghond timer
terugkeer 0;
}
Stap 2: Portinitialisering
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 vertel ons dat die hele PORT-3 geïnitialiseer is om insette te neem.
P3DIR | = 0xFF vertel ons dat die hele PORT-3 geïnitialiseer is om uitsette te lewer.
P3DIR | = 0x01 slegs die pen P3.0 word geïnitialiseer om in PORT-3 uitgevoer te word. Dit volg op 'n heksadesimale poortkartering.
P4REN | = 0xFF, dit dui aan dat die penne van PORT-4 hul optel-/afwaartse weerstande aangeskakel het.
Om hulle te kies tussen Pull UP of Pull DOWN, word die instruksie P $ OUT | = 0xFF gebruik.
As 0xFF gebruik word, konfigureer dit as Pull UP -weerstande en as 0x00 dit as Pull DOWN.
Stap 3: Ultra lae krag
Met MSP430F5529 kan ons die kragverlies van die verwerker verminder. Dit is handig in selfstandige toepassings.
Dit vereis dat alle pen of poorte aangegee moet word om uit te voer.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Stap 4: TIMER
Gebruik van die timer vir 'n vertraging van 'n sekonde. Dit gebruik die SMCLK van 1MHz, en die timer loop ook in die modus Laag krag (in die volgende stap, nadat die telling onderbreek is van LPM). Hierdie proses bespaar krag en las op die verwerker
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Die waardes is 999, aangesien dit nog 'n telling neem om terug te keer na nul in die timerregister.
Stap 5: Lae kragmodus
_BIS_SR (LPM0_bits+GIE);
Dit maak General interrupt Enable (GIE) moontlik, en stel die SVE op LPM0, waar MCLK wat die cpu ondersteun, af is, en SMCLK en ACLK run wat die timer laat werk. sodat ons kan sien dat die SVE afgeskakel is deur krag te bespaar.
Stap 6: ISR-timer
#pragma -vektor = TIMER0_A0_VECTOR
_onderbreek leemte Timer_A (leeg)
{
z ++;
as (z> vertraging)
{
P3OUT = kode [x];
P6OUT = kode1 [y];
x ++;
as (x == 10)
{
x = 0;
y ++;
}
as (y == 6)
y = 0;
z = 0;
}
}
pragma -vektor is vir ISR -voorstelling in C embd.
kode [x] en kode1 [y] is die skikkings wat uitsetwaardes bevat vir die twee sewe segmente, om die teller van 60 sekondes te vertoon.
Stap 7: Hardewareonderbreking
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Hier word P2.1 verklaar as 'n hardeware -onderbreking; as die knoppie ingedruk word, word die teller teruggestel na die waarde.
die res -program word in die ISR van hierdie onderbreking geskryf.
Stap 8: ISR- Herstel-/ drukknop
#pragma -vektor = PORT2_VECTOR
_onderbreek leemtepoort_2 (leeg)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kode [x];
P6OUT = kode1 [y];
v ++;
vir (i = 0; i
{
P1OUT | = BIT0; //P1.0 = wissel
_vertraag_fietse (1048576);
P1OUT & = ~ BIT0; // P1.0 = wissel
_vertraag_fietse (1048576);
}
Hierdie ISR stel die toonbank terug en tel hoeveel keer die res ingedruk is.
(Hier word vertoon via LED -skakelaar, kan u ook 'n ander skikking en timer gebruik om die waardes as uitvoer in 7 segmente te wys).
Stap 9: KODE
#insluit
#definieer vertraging 1000
char kode = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
vlugtige ongetekende int x = 0, y = 0, z = 0;
vlugtige ongetekende int v = 0, i = 0;
leegte hoof ()
{
WDTCTL = WDTPW | WDTHOLD; // stop waghond 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 onderbreek diensroetine
#pragma -vektor = TIMER0_A0_VECTOR
_onderbreek leemte Timer_A (leeg)
{
z ++;
as (z> vertraging)
{
P3OUT = kode [x];
P6OUT = kode1 [y];
x ++;
as (x == 10)
{
x = 0;
y ++;
}
as (y == 6)
y = 0;
z = 0;
}
}
// Diensroetine onderbreek hardeware
#pragma -vektor = PORT2_VECTOR
_onderbreek leemtepoort_2 (leeg)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kode [x];
P6OUT = kode1 [y];
v ++;
vir (i = 0; i
{P1OUT | = BIT0; // P1.0 = wissel
_vertraag_fietse (1048576);
P1OUT & = ~ BIT0; // P1.0 = wissel
_vertraag_fietse (1048576);
}
}
Stap 10: Verwysingskode
GitHub -bewaarplek
Aanbeveel:
Spelontwerp in vyf stappe: 5 stappe
Spelontwerp in fliek in 5 stappe: Flick is 'n baie eenvoudige manier om 'n speletjie te maak, veral iets soos 'n legkaart, visuele roman of avontuurlike spel
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: 3 stappe
Gesigsopsporing op Raspberry Pi 4B in 3 stappe: in hierdie instruksies gaan ons gesigsopsporing uitvoer op Raspberry Pi 4 met Shunya O/S met behulp van die Shunyaface-biblioteek. Shunyaface is 'n biblioteek vir gesigherkenning/opsporing. Die projek het ten doel om die vinnigste opsporing en herkenningssnelheid te bereik met
Finite State Machine op 'n MSP430: 6 stappe
Finite State Machine op 'n MSP430: Ek gaan jou wys hoe om 'n MSP430G2 Launchpad met Finite State Machines (FSM) met YAKINDU Statechart Tools direk in Texas Instruments Code Composer Studio te programmeer. Hierdie handleiding bevat ses stappe: Die installering van YAKINDU Statechart Tools as
MSP430 Breadboard Audio Spectrum Analyzer: 6 stappe
MSP430 Breadboard Audio Spectrum Analyzer: Hierdie projek is op mikrofoon gebaseer en benodig minimale eksterne komponente. Daar word 2 x LR44-muntselle gebruik sodat die hele struktuur in die omgewing van 'n 170 tie-point mini-broodbord kan werk. ADC10, TimerA onderbreking van LPM-wek, TimerA PWM
MSP430 DIP programmeer met behulp van 'n Ez430: 4 stappe
MSP430 DIP programmeer met behulp van 'n Ez430: Toe ek die ez430 USB -programmeerder van TI vind, was dit een van die maklikste metodes om met 'n MCU aan die gang te kom. Hoe kan ek verkeerd wees, dit het ez in die naam! Dit blyk dat dit in werklikheid maklik is … meestal. Die ez430 is wonderlik as u wil