Përmbajtje:

MSP430 Counter Seconds: 10 Hapa
MSP430 Counter Seconds: 10 Hapa

Video: MSP430 Counter Seconds: 10 Hapa

Video: MSP430 Counter Seconds: 10 Hapa
Video: 12.1 - MSP430 Timers - Overview and Calculating Time Difference 2024, Nëntor
Anonim
Numëruesi i sekondave MSP430
Numëruesi i sekondave MSP430

Mirë se vini! Krijimi i numëruesit të sekondave: Përdorimi i CCStudio 8 dhe MSP430F5529 për projektin.

Gjuha C për të koduar mikro kontrolluesin. Aplikimi i mënyrave, kohëmatësve dhe ndërprerjeve me fuqi të ulët. Prodhimi shfaqet përmes 7 Segmentit.

Hapi 1: Pasqyrë

Depërtim
Depërtim

Le të fillojmë!

Inicializoni kohëmatësin e mbikëqyrësit në gjendjen OFF duke përdorur fjalëkalimin e kërkuar për kohëmatësin mbikëqyrës (Ndihmon për të mbajtur nën kontroll sythe të pafund, duke e mbajtur procesorin të sigurt).

#përfshi

/** * kryesore.c */

int kryesore (e pavlefshme)

{

WDTCTL = WDTPW | WDTHOLD; // ndalet kohëmatësi vëzhgues

kthimi 0;

}

Hapi 2: Fillimi i Portit

{

P3DIR = 0xFF; // P3DIR = 0x00;

P6DIR = 0xFF;

P4DIR | = 0x00;

P4REN | = 0xFF;

P4OUT | = 0xFF;

}

P3DIR | = 0x00 na tregon se e gjithë PORT-3 është e inicializuar për të marrë hyrje.

P3DIR | = 0xFF na thotë se e gjithë PORT-3 është e inicializuar për të dhënë rezultate.

P3DIR | = 0x01 vetëm kunja P3.0 është e inicializuar për të dalë në PORT-3. Kjo pason një hartë të Portit Heksadecimal.

P4REN | = 0xFF, kjo tregon se kunjat e PORT-4 kanë të aktivizuar rezistorët e tërheqjes lart/poshtë.

Për t'i përzgjedhur ato midis Tërhiqeni lart ose Tërhiqni poshtë, përdoret udhëzimi P $ OUT | = 0xFF.

Nëse përdoret 0xFF ato konfigurohen si Pull UP resistors dhe nëse 0x00 konfigurohen si Pull Down.

Hapi 3: Fuqia ultra e ulët

MSP430F5529 na lejon të zvogëlojmë humbjen e energjisë nga procesori. Kjo është e dobishme në aplikime të pavarura.

Kjo kërkon deklarimin e të gjitha pin ose Porteve në dalje.

{

P7DIR | = 0xFF;

P6DIR | = 0xFF;

P5DIR | = 0xFF;

P4DIR | = 0xFF;

P3DIR | = 0xFF;

P2DIR | = 0xFF;

P1DIR | = 0xFF;

}

Hapi 4: KOHA

Përdorimi i kohëmatësit për vonesën në gjenerimin e një sekonde. Kjo përdor SMCLK prej 1MHz, gjithashtu kohëmatësi funksionon në modalitetin e energjisë së ulët (në hapin tjetër, pasi numërimi i tij është ndërprerë nga LPM). Ky proces kursen energji dhe barrë mbi procesorin

TA0CCTL0 = CCIE;

TA0CCR0 = 999;

TA0CTL = TASSEL_2 + MC_1;

Vlerat janë 999, pasi duhet edhe një numërim tjetër për t'u kthyer në zero në regjistrin e kohëmatësit.

Hapi 5: Modaliteti i energjisë së ulët

_BIS_SR (LPM0_bits+GIE);

Kjo mundëson Ndërprerjen e përgjithshme Enable (GIE), dhe e vendos CPU -në në LPM0, ku MCLK që mbështet CPU -në është joaktiv, dhe SMCLK dhe ACLK që funksionojnë që e mban kohëmatësin në punë. kështu që ne mund të shohim që CPU është fikur, atje duke kursyer energji.

Hapi 6: Kohëmatësi ISR

Kohëmatësi ISR
Kohëmatësi ISR

#vector vegël = TIMER0_A0_VECTOR

_vlera e pavlefshme Timer_A (e pavlefshme)

{

z ++;

nëse (z> vonesë)

{

P3OUT = kodi [x];

P6OUT = kodi1 [y];

x ++;

nëse (x == 10)

{

x = 0;

y ++;

}

nëse (y == 6)

y = 0;

z = 0;

}

}

vektori pragma është për përfaqësimin e ISR në C embd.

kodi [x] dhe kodi1 [y] janë vargjet që përmbajnë vlera dalëse për dy shtatë segmentet, për shfaqjen e njehsorit 60 sekondash.

Hapi 7: Ndërprerja e harduerit

P2DIR = 0x00;

P2REN = 0x02;

P2OUT = 0x02;

P2IE | = BIT1;

P2IES | = BIT1;

P2IFG & = ~ BIT1;

Këtu P2.1 deklarohet si ndërprerje e harduerit, nëse shtypet butoni, numëruesi rivendoset në vlerën.

programi i pushimit shkruhet brenda ISR -së së kësaj ndërprerjeje.

Hapi 8: ISR- Rivendos/ Shtyp butonin

#vektori i Pragës = PORT2_VECTOR

_port i pavlefshëm i pavlefshëm_2 (i pavlefshëm)

{

P2IFG & = ~ BIT1;

x = 0; y = 0;

P3OUT = kodi [x];

P6OUT = kodi1 [y];

v ++;

për (i = 0; i

{

P1OUT | = BIT0; //P1.0 = kaloni

_ciklet_vonesë (1048576);

P1OUT & = ~ BIT0; // P1.0 = kaloni

_ciklet_vonesë (1048576);

}

Ky ISR rivendos sportelin dhe mban një numër se sa herë është shtypur pjesa tjetër.

(Këtu shfaqja është bërë përmes ndërrimit led, gjithashtu mund të përdorni një grup dhe një kohëmatës, për t'i treguar ato vlera si dalje në 7 segmente).

Hapi 9: KODI

KODI
KODI

#përfshi

#përcakto vonesën 1000

kodi i karbonit = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};

kodi i karbonit1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};

i paqëndrueshëm i panënshkruar int x = 0, y = 0, z = 0;

i paqëndrueshëm i panënshkruar int v = 0, i = 0;

pavlefshme kryesore ()

{

WDTCTL = WDTPW | WDTHOLD; // ndalet kohëmatësi vëzhgues

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);

}

// Kohëmatësi A0 ndërpret rutinën e shërbimit

#vector vegël = TIMER0_A0_VECTOR

_vlera e pavlefshme Timer_A (e pavlefshme)

{

z ++;

nëse (z> vonesë)

{

P3OUT = kodi [x];

P6OUT = kodi1 [y];

x ++;

nëse (x == 10)

{

x = 0;

y ++;

}

nëse (y == 6)

y = 0;

z = 0;

}

}

// Rutina e shërbimit të ndërprerjes së harduerit

#vektori i Pragës = PORT2_VECTOR

_porti i pavlefshëm i ndërprerjes_2 (i pavlefshëm)

{

P2IFG & = ~ BIT1;

x = 0;

y = 0;

P3OUT = kodi [x];

P6OUT = kodi1 [y];

v ++;

për (i = 0; i

{P1OUT | = BIT0; // P1.0 = kaloni

_ciklet_vonesë (1048576);

P1OUT & = ~ BIT0; // P1.0 = kaloni

_ciklet_vonesë (1048576);

}

}

Hapi 10: Kodi i Referencës

Kodi i Referencës
Kodi i Referencës

Depoja e GitHub

Recommended: