Satura rādītājs:
- 1. darbība. Ieskats
- 2. darbība: ostas inicializēšana
- 3. solis: īpaši zema jauda
- 4. darbība: taimeris
- 5. darbība. Mazjaudas režīms
- 6. darbība: ISR taimeris
- 7. darbība. Aparatūras pārtraukšana
- 8. solis: ISR- atiestatīšana/ spiedpoga
- 9. darbība: KODĒT
- 10. darbība: atsauces kods
Video: MSP430 sekunžu skaitītājs: 10 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:56
Laipni lūdzam! Sekunžu skaitītāja izveide: projektam izmantojot CCStudio 8 un MSP430F5529.
C valoda, lai kodētu mikrokontrolleri. Mazjaudas režīmu, taimeru un pārtraukumu izmantošana. Izvade tiek parādīta, izmantojot 7 segmentu.
1. darbība. Ieskats
Sāksim!
Inicializējiet sargsuņa taimeri OFF stāvoklī, izmantojot nepieciešamo sargsuņa taimera paroli (tas palīdz kontrolēt bezgalīgās cilpas, nodrošinot procesora drošību).
#iekļaut
/** * galvenais.c */
int main (anulēts)
{
WDTCTL = WDTPW | WDTHOLD; // apturēt sargsuņa taimeri
atgriezties 0;
}
2. darbība: ostas inicializēšana
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 norāda, ka viss PORT-3 ir inicializēts, lai ņemtu datus.
P3DIR | = 0xFF norāda, ka viss PORT-3 ir inicializēts, lai sniegtu rezultātus.
P3DIR | = 0x01 tikai tapa P3.0 tiek inicializēta, lai izvadītu PORT-3. Tas seko heksadecimālās ostas kartēšanai.
P4REN | = 0xFF, tas norāda, ka PORT-4 tapām ir iespējoti pacelšanas/nolaišanas rezistori.
Lai tos atlasītu starp Pull UP vai Pull DOWN, tiek izmantota instrukcija P $ OUT | = 0xFF.
Ja tiek izmantots 0xFF, tie tiek konfigurēti kā Pull UP rezistori, un, ja 0x00, tie tiek konfigurēti kā Pull DOWN.
3. solis: īpaši zema jauda
MSP430F5529 ļauj samazināt procesora enerģijas zudumus. Tas ir noderīgi atsevišķās lietojumprogrammās.
Tas prasa deklarēt visus izejas tapas vai portus.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4. darbība: taimeris
Taimera izmantošana vienas sekundes aizkavei. Tas izmanto 1MHz SMCLK, kā arī taimeris darbojas mazjaudas režīmā (nākamajā solī pēc tam, kad tā skaitīšana ir pārtraukta no LPM). Šis process ietaupa procesora enerģiju un slogu
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Vērtības ir 999, jo, lai atgrieztos taimera reģistrā līdz nullei, nepieciešams vēl viens skaitlis.
5. darbība. Mazjaudas režīms
_BIS_SR (LPM0_bits+GIE);
Tādējādi tiek iespējota vispārējā pārtraukšanas iespējošana (GIE) un CPU tiek iestatīts uz LPM0, kur ir izslēgts MCLK, kas atbalsta procesoru, un darbojas SMCLK un ACLK, kas nodrošina taimera darbību. lai mēs varētu redzēt, ka CPU ir izslēgts, taupot enerģiju.
6. darbība: ISR taimeris
#pragma vektors = TIMER0_A0_VECTOR
_interrupt void Timer_A (anulēts)
{
z ++;
ja (z> kavēšanās)
{
P3OUT = kods [x];
P6OUT = kods1 [y];
x ++;
ja (x == 10)
{
x = 0;
y ++;
}
ja (y == 6)
y = 0;
z = 0;
}
}
pragma vektors ir paredzēts ISR attēlojumam C embd.
kods [x] un kods1 [y] ir masīvi, kas satur izvades vērtības abiem septiņiem segmentiem, lai parādītu 60 sekunžu skaitītāju.
7. darbība. Aparatūras pārtraukšana
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Šeit P2.1 tiek pasludināts par aparatūras pārtraukumu, ja tiek nospiesta poga, skaitītājs tiek atiestatīts uz vērtību.
pārējā programma ir ierakstīta šī pārtraukuma ISR iekšpusē.
8. solis: ISR- atiestatīšana/ spiedpoga
#pragma vektors = PORT2_VECTOR
_interrupt void port_2 (anulēts)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kods [x];
P6OUT = kods1 [y];
v ++;
par (i = 0; i
{
P1OUT | = BIT0; //P1.0 = pārslēgties
_kavēšanās_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = pārslēgties
_kavēšanās_cikli (1048576);
}
Šis ISR atiestata skaitītāju un uzskaita, cik reizes pārējais tika nospiests.
(Šeit displejs tiek veidots, izmantojot pārslēgtu LED, var izmantot arī citu masīvu un taimeri, lai parādītu šīs vērtības kā izvadi 7 segmentos).
9. darbība: KODĒT
#iekļaut
#definēt kavēšanos 1000
rakstzīmju kods = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
rakstzīmju kods1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
gaistošs neparakstīts int x = 0, y = 0, z = 0;
gaistošs neparakstīts int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // apturēt sargsuņa taimeri
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);
}
// Taimeris A0 pārtraukt pakalpojumu rutīnu
#pragma vektors = TIMER0_A0_VECTOR
_interrupt void Timer_A (anulēts)
{
z ++;
ja (z> kavēšanās)
{
P3OUT = kods [x];
P6OUT = kods1 [y];
x ++;
ja (x == 10)
{
x = 0;
y ++;
}
ja (y == 6)
y = 0;
z = 0;
}
}
// Aparatūras pārtraukšanas pakalpojumu rutīna
#pragma vektors = PORT2_VECTOR
_interrupt void port_2 (anulēts)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kods [x];
P6OUT = kods1 [y];
v ++;
par (i = 0; i
{P1OUT | = BIT0; // P1.0 = pārslēgties
_kavēšanās_cikli (1048576);
P1OUT & = ~ BIT0; // P1.0 = pārslēgties
_kavēšanās_cikli (1048576);
}
}
10. darbība: atsauces kods
GitHub krātuve
Ieteicams:
Apmeklētāju skaitītājs, izmantojot 8051 un IR sensoru ar LCD: 3 soļi
Apmeklētāju skaitītājs, izmantojot 8051 un IR sensoru ar LCD: Cienījamie draugi, esmu paskaidrojis, kā izveidot apmeklētāju skaitītāju, izmantojot 8051 un IR sensoru, un parādījis to LCD. 8051 ir viens no populārākajiem mikrokontrolleriem, ko izmanto hobiju, komerciālu lietojumu izgatavošanai visā pasaulē. Esmu uztaisījis vizīti
Vienkāršs frekvenču skaitītājs, izmantojot Arduino: 6 soļi
Vienkāršs frekvenču skaitītājs, izmantojot Arduino: Šajā apmācībā mēs iemācīsimies izveidot vienkāršu frekvenču skaitītāju, izmantojot Arduino. Noskatieties video
MicroBit telpu noslodzes skaitītājs un kontrolieris: 4 soļi
MicroBit istabu noslodzes skaitītājs un kontrolieris: Pandēmijas laikā viens no veidiem, kā samazināt vīrusa pārnešanu, ir maksimāli palielināt fizisko attālumu starp cilvēkiem. Telpās vai veikalos būtu noderīgi zināt, cik cilvēku jebkurā laikā atrodas slēgtā telpā. Šajā projektā tiek izmantots pāris
Apmeklētāju skaitītājs, izmantojot Arduino vietnē TinkerCad: 3 soļi
Apmeklētāju skaitītājs, izmantojot Arduino vietnē TinkerCad: Daudzas reizes mums ir jāuzrauga persona/cilvēki, kas apmeklē kādu vietu, piemēram, semināru zāli, konferenču telpu vai iepirkšanās centru vai templi. Šo projektu var izmantot, lai saskaitītu un parādītu apmeklētāju skaitu, kas ienāk jebkurā konferenču telpā vai seminārā
Kā pagatavot DIY Arduino 30 sekunžu mazgāšanas taimeri, apturēt COVID izplatīšanos: 8 soļi
Kā pagatavot DIY Arduino 30 sekunžu mazgāšanas taimeri, apturēt COVID izplatīšanos: sveiki