Turinys:
- 1 žingsnis: įžvalga
- 2 žingsnis: uosto inicijavimas
- 3 žingsnis: ypač maža galia
- 4 žingsnis: LAIKMATIS
- 5 žingsnis: mažos galios režimas
- 6 veiksmas: ISR laikmatis
- 7 žingsnis: Aparatūros pertraukimas
- 8 žingsnis: ISR- atstatymas/ paspaudimas
- 9 veiksmas: KODAS
- 10 veiksmas: nuorodos kodas
Video: MSP430 sekundžių skaitiklis: 10 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Sveiki! „Seconds Counter“kūrimas: projektui naudojant „CCStudio 8“ir „MSP430F5529“.
C kalba, skirta mikrovaldikliui koduoti. Mažos galios režimų, laikmačių ir pertraukų taikymas. Išvestis rodoma per 7 segmentus.
1 žingsnis: įžvalga
Pradėkime!
Inicijuokite stebėtojo laikmatį į IŠJUNGTA būseną, naudodami reikiamą stebėtojo laikmačio slaptažodį (tai padeda nuolat tikrinti begalines kilpas, kad procesorius būtų saugus).
#įtraukti
/** * pagrindinis.c */
int main (niekinis)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
grįžti 0;
}
2 žingsnis: uosto inicijavimas
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 nurodo, kad visas PORT-3 yra inicijuotas, kad būtų galima įvesti duomenis.
P3DIR | = 0xFF nurodo, kad visas PORT-3 yra inicijuotas, kad būtų galima gauti išvestį.
P3DIR | = 0x01 tik kaištelis P3.0 inicijuojamas išvesti PORT-3. Tai seka šešioliktainį prievadą.
P4REN | = 0xFF, tai rodo, kad PORT-4 kaiščių įjungimo/pakėlimo rezistoriai yra įjungti.
Norėdami juos pasirinkti tarp Pull UP arba Pull DOWN, naudojama instrukcija P $ OUT | = 0xFF.
Jei naudojamas 0xFF, jie konfigūruojami kaip „Pull UP“rezistoriai, o jei 0x00 - „Pull DOWN“.
3 žingsnis: ypač maža galia
MSP430F5529 leidžia sumažinti procesoriaus energijos nuostolius. Tai naudinga atskirose programose.
Tam reikia išvesti visus kaiščius arba prievadus.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4 žingsnis: LAIKMATIS
Laikmačio naudojimas delsos generavimui vieną sekundę. Tam naudojamas 1MHz SMCLK, taip pat laikmatis veikia mažos galios režimu (kitame etape, kai jo skaičiavimas nutraukiamas nuo LPM). Šis procesas taupo procesoriaus energiją ir naštą
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Reikšmės yra 999, nes reikia dar vieno skaičiaus, kad laikmačio registre grįžtumėte į nulį.
5 žingsnis: mažos galios režimas
_BIS_SR (LPM0_bits+GIE);
Tai įgalina „General interrupt Enable“(GIE) ir įjungia procesorių į LPM0, kur MCLK, palaikantis procesorių, yra išjungtas, o „SMCLK“ir „ACLK“veikia taip, kad laikmatis veiktų. kad matytume, kad taupant energiją procesorius yra išjungtas.
6 veiksmas: ISR laikmatis
#pragma vektorius = TIMER0_A0_VECTOR
_interrupt void Timer_A (negalioja)
{
z ++;
jei (z> delsimas)
{
P3OUT = kodas [x];
P6OUT = kodas1 [y];
x ++;
jei (x == 10)
{
x = 0;
y ++;
}
jei (y == 6)
y = 0;
z = 0;
}
}
pragma vektorius skirtas ISR atvaizdavimui C embd.
kodas [x] ir kodas1 [y] yra masyvai, kuriuose yra dviejų septynių segmentų išvesties reikšmės 60 sekundžių skaitikliui rodyti.
7 žingsnis: Aparatūros pertraukimas
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Čia P2.1 yra paskelbtas kaip aparatūros pertraukimas, jei paspaudžiamas mygtukas, skaitiklis atstatomas į vertę.
poilsio programa įrašyta šio pertraukimo ISR viduje.
8 žingsnis: ISR- atstatymas/ paspaudimas
#pragma vektorius = PORT2_VECTOR
_interrupt void port_2 (negalioja)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kodas [x];
P6OUT = kodas1 [y];
v ++;
už (i = 0; t
{
P1OUT | = BIT0; //P1.0 = perjungti
_delsimo_ciklai (1048576);
P1OUT & = ~ BIT0; // P1.0 = perjungimas
_delsimo_ciklai (1048576);
}
Šis ISR iš naujo nustato skaitiklį ir skaičiuoja, kiek kartų buvo paspausta likusi dalis.
(Čia rodomas ekranas per LED perjungiklį, taip pat gali būti naudojamas kitas masyvas ir laikmatis, kad tos vertės būtų rodomos kaip išvestis 7 segmentuose).
9 veiksmas: KODAS
#įtraukti
#define uždelsimas 1000
simbolių kodas = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
anglies kodas1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
nepastovus nepasirašytas int x = 0, y = 0, z = 0;
nepastovus nepasirašytas int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog 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);
}
// Laikmatis A0 pertraukimo aptarnavimo tvarka
#pragma vektorius = TIMER0_A0_VECTOR
_interrupt void Timer_A (negalioja)
{
z ++;
jei (z> delsimas)
{
P3OUT = kodas [x];
P6OUT = kodas1 [y];
x ++;
jei (x == 10)
{
x = 0;
y ++;
}
jei (y == 6)
y = 0;
z = 0;
}
}
// Techninės įrangos pertraukimo aptarnavimo tvarka
#pragma vektorius = PORT2_VECTOR
_interrupt void port_2 (negalioja)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kodas [x];
P6OUT = kodas1 [y];
v ++;
už (i = 0; t
{P1OUT | = BIT0; // P1.0 = perjungimas
_delsimo_ciklai (1048576);
P1OUT & = ~ BIT0; // P1.0 = perjungimas
_delsimo_ciklai (1048576);
}
}
10 veiksmas: nuorodos kodas
„GitHub“saugykla
Rekomenduojamas:
Kaip pasidaryti „pasidaryk pats“„Arduino“30 sekundžių skalbimo laikmatį, sustabdyti COVID sklaidą: 8 žingsniai
Kaip pasidaryti „pasidaryk pats“„Arduino“30 sekundžių skalbimo laikmatį, sustabdyti COVID sklaidą: labas
Žingsnių skaitiklis - mikro: bitas: 12 žingsnių (su paveikslėliais)
Žingsnių skaitiklis - „Micro: Bit“: šis projektas bus žingsnių skaitiklis. Savo žingsniams matuoti naudosime „Micro: Bit“įmontuotą akselerometro jutiklį. Kiekvieną kartą purtant „Micro: Bit“, prie skaičiaus pridėsime 2 ir parodysime jį ekrane
„Pasidaryk pats“didelis LED matricos „YouTube“abonentų skaitiklis: 13 žingsnių (su nuotraukomis)
Pasidaryk pats BIG LED matrica „Youtube“abonentų skaitiklis: ar dirbote su paruošta standartine 8x8 LED matrica kaip ekranai, kad būtų sukurtas slinktas tekstas arba rodomas jūsų „Youtube“kanalo abonentas. Didelis lengvai prieinamas dydis yra 5 mm LED skersmuo. Tačiau, jei ieškote daug didesnio paruošto šviesos diodo
Lengvas bičių skaitiklis: 10 žingsnių (su nuotraukomis)
Lengvas bičių skaitiklis: 2019 m. Lengvas bičių skaitiklis V.1, jei turite klausimų ar problemų !! Prašome paskelbti juos „Github“svetainėje čia! Šią bičių skaitiklio versiją lengva lituoti ir surinkti (visa skylė). Jis buvo išbandytas ir veikia* su pateiktu pavyzdiniu kodu. Dabartinis išbandytas
20 sekundžių skalbimo laikmatis COVID-19: 6 žingsniai (su nuotraukomis)
20 Antrųjų rankų plovimo laikmatis, skirtas COVID-19: plintant pasauliniam COVID-19, turėtume apsisaugoti ne tik mažiau susirinkę ir dėvėdami veido kaukę, bet ir dažniau plaudami rankas. Tai nėra veiksminga priemonė prieš virusus, jei to nedarote t tinkamai nenusiplaukite rankų. Kaip teisingai nusiplauti rankas? W