Sisällysluettelo:
- Vaihe 1: Oivallus
- Vaihe 2: Portin alustus
- Vaihe 3: Erittäin pieni virrankulutus
- Vaihe 4: AJASTIN
- Vaihe 5: Virransäästötila
- Vaihe 6: ISR-ajastin
- Vaihe 7: Laitteiston keskeytys
- Vaihe 8: ISR- Reset/ Push Button
- Vaihe 9: KOODI
- Vaihe 10: Viitekoodi
Video: MSP430 sekuntien laskuri: 10 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
Tervetuloa! Sekuntimittarin tekeminen: CCStudio 8: n ja MSP430F5529: n käyttäminen projektissa.
C -kieli mikro -ohjaimen koodaamiseen. Pienitehoisten tilojen, ajastimien ja keskeytysten käyttö Tulos näytetään 7 segmentin kautta.
Vaihe 1: Oivallus
Aloitetaanpa!
Alusta vahtikoira -ajastin POIS -tilaan käyttämällä vahtikoira -ajastimen vaadittua salasanaa (se auttaa valvomaan äärettömiä silmukoita pitäen prosessorin turvassa).
#sisältää
/** * main.c */
int main (mitätön)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog ajastin
palauta 0;
}
Vaihe 2: Portin alustus
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 kertoo, että koko PORT-3 on alustettu ottamaan vastaan tuloja.
P3DIR | = 0xFF kertoo meille, että koko PORT-3 alustetaan antamaan tuloksia.
P3DIR | = 0x01 vain nasta P3.0 alustetaan lähtöön PORT-3: ssa. Tämä seuraa heksadesimaaliportin kartoitusta.
P4REN | = 0xFF, tämä osoittaa, että PORT-4: n nastoissa on ylös/alas-vastukset käytössä.
Jos haluat valita ne vedä ylös tai vedä alas, käytetään käskyä P $ OUT | = 0xFF.
Jos käytetään 0xFF: ää, ne konfiguroidaan Pull UP -vastuksiksi ja jos 0x00, ne määritetään vedettäväksi alas.
Vaihe 3: Erittäin pieni virrankulutus
MSP430F5529: n avulla voimme vähentää suorittimen virtahäviötä. Tästä on hyötyä itsenäisissä sovelluksissa.
Tämä vaatii kaikkien tulostettavien nastan tai porttien ilmoittamista.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Vaihe 4: AJASTIN
Ajastimen käyttö sekunnin viiveen luomiseen. Tämä käyttää 1 MHz: n SMCLK: ta, ja myös ajastin toimii virransäästötilassa (seuraavassa vaiheessa sen laskemisen jälkeen, kun se on keskeytetty LPM: stä). Tämä prosessi säästää virtaa ja kuormitusta suorittimelle
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Arvot ovat 999, koska ajastinrekisterissä palaaminen nollaan kestää vielä yhden laskun.
Vaihe 5: Virransäästötila
_BIS_SR (LPM0_bits+GIE);
Tämä mahdollistaa GIE (General interrupt Enable) -asennuksen ja asettaa CPU: n LPM0 -tilaan, jossa CPU: ta tukeva MCLK on pois päältä, ja SMCLK ja ACLK toimivat, jotka pitävät ajastimen käynnissä. joten voimme nähdä, että suoritin on kytketty pois päältä säästämällä virtaa.
Vaihe 6: ISR-ajastin
#pragmavektori = TIMER0_A0_VECTOR
_interrupt void Timer_A (mitätön)
{
z ++;
jos (z> viive)
{
P3OUT = koodi [x];
P6OUT = koodi1 [y];
x ++;
jos (x == 10)
{
x = 0;
y ++;
}
jos (y == 6)
y = 0;
z = 0;
}
}
pragma -vektori on ISR -esitystä varten C embd.
koodi [x] ja koodi1 [y] ovat matriiseja, jotka sisältävät lähtöarvot kahdelle seitsemälle segmentille 60 sekunnin laskurin näyttämiseksi.
Vaihe 7: Laitteiston keskeytys
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Tässä P2.1 julistetaan laitteiston keskeytykseksi, jos painiketta painetaan, laskuri palautuu arvoon.
lepo -ohjelma kirjoitetaan tämän keskeytyksen ISR: ään.
Vaihe 8: ISR- Reset/ Push Button
#pragmavektori = PORT2_VECTOR
_interrupt void port_2 (mitätön)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = koodi [x];
P6OUT = koodi1 [y];
v ++;
varten (i = 0; i
{
P1OUT | = BIT0; //P1.0 = vaihde
_viive_syklit (1048576);
P1OUT & = ~ BIT0; // P1.0 = vaihde
_viive_syklit (1048576);
}
Tämä ISR nollaa laskurin ja laskee, kuinka monta kertaa loput painettiin.
(Tässä näyttö on tehty led -vaihtokytkimellä, voi käyttää myös toista matriisia ja ajastinta näiden arvojen näyttämiseksi lähtöinä 7 segmentissä).
Vaihe 9: KOODI
#sisältää
#määritä viive 1000
char -koodi = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char -koodi1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
haihtuva allekirjoittamaton int x = 0, y = 0, z = 0;
haihtuva allekirjoittamaton int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog ajastin
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);
}
// Ajastin A0 keskeyttää palvelurutiinin
#pragmavektori = TIMER0_A0_VECTOR
_interrupt void Timer_A (mitätön)
{
z ++;
jos (z> viive)
{
P3OUT = koodi [x];
P6OUT = koodi1 [y];
x ++;
jos (x == 10)
{
x = 0;
y ++;
}
jos (y == 6)
y = 0;
z = 0;
}
}
// Laitteiston keskeytyspalvelurutiini
#pragmavektori = PORT2_VECTOR
_interrupt void port_2 (mitätön)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = koodi [x];
P6OUT = koodi1 [y];
v ++;
varten (i = 0; i
{P1OUT | = BIT0; // P1.0 = vaihde
_viive_syklit (1048576);
P1OUT & = ~ BIT0; // P1.0 = vaihde
_viive_syklit (1048576);
}
}
Vaihe 10: Viitekoodi
GitHub -arkisto
Suositeltava:
Arduino -laskuri TM1637 -LED -näytön avulla: 7 vaihetta
Arduino -laskuri TM1637 -LED -näytön avulla: Tässä opetusohjelmassa opimme tekemään yksinkertaisen numerolaskurin käyttämällä LED -näyttöä TM1637 ja Visuino
Arduino -laskuri TM1637 -LED -näytön ja esteiden välttämisen anturin avulla: 7 vaihetta
Arduino -laskuri TM1637 -LED -näytön ja esteiden välttämisen anturin käyttäminen: Tässä opetusohjelmassa opimme tekemään yksinkertaisen numerolaskurin käyttämällä LED -näyttöä TM1637 sekä esteen välttämisanturia ja Visuinoa
Tee omat widgetit helposti - nopea BPM -laskuri: 6 vaihetta
Tee omat widgetit helposti - Nopea BPM -laskuri: Web -sovellukset ovat yleisiä, mutta verkkosovellukset, jotka eivät vaadi Internet -yhteyttä, eivät ole. Tässä artikkelissa näytän sinulle, kuinka tein BPM -laskurin yksinkertaisella HTML -sivulla ja vanilja javascript Katso tästä). Jos tämä widget on ladattu, sitä voidaan käyttää offline -tilassa
Työskentelevä Geiger -laskuri/ vähimmäisosat: 4 vaihetta (kuvilla)
Työskentelevä Geiger -laskuri W/ vähimmäisosat: Tässä on tietääkseni yksinkertaisin toimiva Geiger -laskuri, jonka voit rakentaa. Tämä käyttää venäläistä SMB-20 Geiger -putkea, jota ohjaa korkeajännitteinen tehostinpiiri, joka on ryöstetty elektroniselta kärpäslippaajalta. Se tunnistaa beetahiukkaset ja gam
Jumping-Jack-laskuri: 3 vaihetta
Jumping-Jack-laskuri: Halusin tavan laskea hyppypistokkeeni ja rohkaista itseäni jatkamaan, kun muotoilin hyppypistokkeita, joten loin hyppypistokkeen, joka kuulostaa kellolta Super Mario Brothersilta joka kerta, kun suoritan hyppypistokkeen