Innehållsförteckning:
- Steg 1: Insikt
- Steg 2: Portinitialisering
- Steg 3: Ultra Low Power
- Steg 4: TIMER
- Steg 5: Low Power Mode
- Steg 6: ISR-timer
- Steg 7: Hårdvaruavbrott
- Steg 8: ISR- Återställ/ tryckknapp
- Steg 9: KOD
- Steg 10: Referenskod
Video: MSP430 Seconds Counter: 10 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:45
Välkommen! Making of Seconds Counter: Använda CCStudio 8 och MSP430F5529 för projektet.
C -språk för att koda mikrokontrollern. Tillämpa lågeffektlägen, timers och avbrott. Utgången visas via 7 segment.
Steg 1: Insikt
Låt oss börja!
Initiera vakthundstimern till AV -läge med hjälp av det nödvändiga lösenordet för vakthundstimern (Det hjälper till att hålla koll på oändliga slingor och hålla processorn säker).
#omfatta
/** * main.c */
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; // stopp vakthund timer
returnera 0;
}
Steg 2: Portinitialisering
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 berättar att hela PORT-3 initieras för att ta in ingångar.
P3DIR | = 0xFF berättar att hela PORT-3 initieras för att ge utdata.
P3DIR | = 0x01 initialiseras endast stiftet P3.0 för utmatning i PORT-3. Detta följer en hexadecimal portmappning.
P4REN | = 0xFF, detta indikerar att stiften på PORT-4 har sina upp-/nedmotstånd aktiverade.
För att välja dem mellan Pull UP eller Pull DOWN används instruktionen P $ OUT | = 0xFF.
Om 0xFF används konfigureras de som Pull UP -motstånd och om 0x00 konfigureras de som Pull DOWN.
Steg 3: Ultra Low Power
MSP430F5529 gör att vi kan minska strömförlusten från processorn. Detta är användbart i fristående applikationer.
Detta kräver deklaration av alla stift eller portar för utmatning.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Steg 4: TIMER
Användning av timer för fördröjning av en sekund. Detta använder SMCLK på 1 MHz, även timern körs i Low Power Mode (i nästa steg, efter dess räkning avbröts det från LPM). Denna process sparar kraft och börda på processorn
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Värdena är 999, eftersom det tar ytterligare en räkning för att rulla tillbaka till noll i timerregistret.
Steg 5: Low Power Mode
_BIS_SR (LPM0_bits+GIE);
Detta möjliggör General Interrupt Enable (GIE) och sätter CPU: n till LPM0, där MCLK som stöder cpu är avstängd, och SMCLK och ACLK -körning som håller timern igång. så vi kan se att CPU är avstängd, där genom att spara ström.
Steg 6: ISR-timer
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
om (z> fördröjning)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
om (x == 10)
{
x = 0;
y ++;
}
om (y == 6)
y = 0;
z = 0;
}
}
pragma -vektorn är för ISR -representation i C embd.
kod [x] och kod1 [y] är matriserna som innehåller utgångsvärden för de två sju segmenten, för att visa 60 sekunders räknare.
Steg 7: Hårdvaruavbrott
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Här deklareras P2.1 som ett hårdvaruavbrott, om knappen trycks in återställs räknaren till värdet.
resten program skrivs inuti ISR för detta avbrott.
Steg 8: ISR- Återställ/ tryckknapp
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
för (i = 0; i
{
P1OUT | = BIT0; //P1.0 = växla
_fördröjning_cyklar (1048576);
P1OUT & = ~ BIT0; // P1.0 = växla
_fördröjning_cyklar (1048576);
}
Denna ISR återställer räknaren och räknar med hur många gånger resten trycktes.
(Här visas displayen via LED -växling, kan också använda en annan array och timer för att visa dessa värden som utmatning i 7 segment).
Steg 9: KOD
#omfatta
#definiera fördröjning 1000
char kod = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
flyktig osignerad int x = 0, y = 0, z = 0;
flyktig osignerad int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // stopp vakthund 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 avbryter servicerutinen
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
om (z> fördröjning)
{
P3OUT = kod [x];
P6OUT = kod1 [y];
x ++;
om (x == 10)
{
x = 0;
y ++;
}
om (y == 6)
y = 0;
z = 0;
}
}
// Maskinvaruavbrottsrutin
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kod [x];
P6OUT = kod1 [y];
v ++;
för (i = 0; i
{P1OUT | = BIT0; // P1.0 = växla
_fördröjning_cyklar (1048576);
P1OUT & = ~ BIT0; // P1.0 = växla
_fördröjning_cyklar (1048576);
}
}
Steg 10: Referenskod
GitHub -förvar
Rekommenderad:
Working Geiger Counter W/ Minimal Parts: 4 Steg (med bilder)
Working Geiger Counter W/ Minimal Parts: Här är, såvitt jag vet, den enklast fungerande Geiger -räknaren som du kan bygga. Den här använder ett ryskt tillverkat SMB-20 Geiger-rör, som drivs av en högspänningskopplingskrets som rånats från en elektronisk flugsmycke. Det upptäcker betapartiklar och gam
Jumping-Jack Counter: 3 steg
Jumping-Jack Counter: Jag ville ha ett sätt att räkna mina hoppjackar och att uppmuntra mig själv att fortsätta när jag förformade hoppjackar, så jag skapade en hoppande jackräknare som låter en klocka från Super Mario Brothers varje gång jag slutför en hoppjack
Finite State Machine på en MSP430: 6 steg
Finite State Machine på en MSP430: Jag ska visa dig hur du programmerar en MSP430G2 Launchpad med Finite State Machines (FSM) med YAKINDU Statechart Tools direkt i Texas Instruments Code Composer Studio. Denna handledning innehåller sex steg: Installera YAKINDU Statechart -verktyg som
MSP430 Breadboard Audio Spectrum Analyzer: 6 steg
MSP430 Breadboard Audio Spectrum Analyzer: Detta projekt är mikrofonbaserat och kräver minimala externa komponenter. 2 x LR44 myntceller används så att jag kan få hela strukturen att fungera i gränserna för en 170 tie-point mini-brödbräda. ADC10, TimerA avbrott LPM-väckning, TimerA PWM
Programmering av MSP430 DIP med hjälp av en Ez430: 4 steg
Programmering av MSP430 DIP Användning av en Ez430: När jag hittade TI: s ez430 USB -programmerare såg det ut att vara en av de enklare metoderna för att komma igång med en MCU. Hur kan jag ha fel, det har ez i namnet! Det visar sig att det faktiskt är enkelt … mestadels. Ez430 är bra om du vill