Tartalomjegyzék:
- 1. lépés: Betekintés
- 2. lépés: Port inicializálása
- 3. lépés: Ultra alacsony fogyasztás
- 4. lépés: IDŐZÍTŐ
- 5. lépés: Alacsony fogyasztású üzemmód
- 6. lépés: ISR-időzítő
- 7. lépés: Hardvermegszakítás
- 8. lépés: ISR- Visszaállítás/ Nyomógomb
- 9. lépés: KÓDOLÁS
- 10. lépés: Referenciakód
Videó: MSP430 másodpercszámláló: 10 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Üdvözöljük! Második számláló készítése: A CCStudio 8 és az MSP430F5529 használata a projekthez.
C nyelv a mikrovezérlő kódolásához. Kis fogyasztású módok, időzítők és megszakítások alkalmazása. A kimenet a 7 szegmensen keresztül jelenik meg.
1. lépés: Betekintés
Kezdjük!
Inicializálja a watchdog időzítőt OFF állapotba a watchdog időzítő szükséges jelszavával (Ez segít a végtelen ciklusok ellenőrzésében, a processzor biztonságában).
#befoglalni
/** * fő.c */
int main (void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdimer timer
visszatérés 0;
}
2. lépés: Port inicializálása
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
A P3DIR | = 0x00 azt jelzi, hogy az egész PORT-3 inicializálva van a bemenetek fogadására.
A P3DIR | = 0xFF azt mondja, hogy az egész PORT-3 inicializálva van, hogy kimeneteket adjon.
P3DIR | = 0x01 csak a P3.0 érintkezőt inicializálja a PORT-3 kimenetére. Ez a hexadecimális port leképezését követi.
P4REN | = 0xFF, ez azt jelzi, hogy a PORT-4 csapjai engedélyezik a fel/le ellenállásokat.
A felhúzás vagy a lefelé húzás közötti kiválasztáshoz használja a P $ OUT | = 0xFF utasítást.
Ha 0xFF -et használnak, akkor felhúzó ellenállásként, 0x00 -nál pedig lefelé húzásként konfigurálódnak.
3. lépés: Ultra alacsony fogyasztás
Az MSP430F5529 lehetővé teszi a processzor energiaveszteségének csökkentését. Ez hasznos önálló alkalmazásokban.
Ez megköveteli az összes PIN vagy port kimenet deklarálását.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4. lépés: IDŐZÍTŐ
Az időzítő használata az egy másodperces késleltetéshez. Ez az 1 MHz -es SMCLK -t használja, és az időzítő alacsony energiafogyasztású üzemmódban is fut (a következő lépésben, miután a számlálás megszakadt az LPM -től). Ez a folyamat energiát és terhet takarít meg a processzoron
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Az értékek 999, mivel az időszámláló regiszterben nullára való visszagörgetéshez még egy szám szükséges.
5. lépés: Alacsony fogyasztású üzemmód
_BIS_SR (LPM0_bits+GIE);
Ez lehetővé teszi az Általános megszakítás engedélyezését (GIE), és a CPU -t az LPM0 -ra állítja, ahol a CPU -t támogató MCLK ki van kapcsolva, és az SMCLK és az ACLK fut, amely folyamatosan tartja az időzítőt. így láthatjuk, hogy a CPU ki van kapcsolva, ott az energiatakarékosság miatt.
6. lépés: ISR-időzítő
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (érvénytelen)
{
z ++;
ha (z> késés)
{
P3OUT = kód [x];
P6OUT = kód1 [y];
x ++;
ha (x == 10)
{
x = 0;
y ++;
}
ha (y == 6)
y = 0;
z = 0;
}
}
A pragma vektor az ISR ábrázolására szolgál a C embd.
kód [x] és kód1 [y] azok a tömbök, amelyek a két hét szegmens kimeneti értékeit tartalmazzák, 60 másodperces számláló megjelenítésére.
7. lépés: Hardvermegszakítás
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Itt a P2.1 hardver megszakításnak minősül, ha megnyomja a gombot, a számláló visszaáll az értékre.
a többi program ennek a megszakításnak az ISR -jébe van írva.
8. lépés: ISR- Visszaállítás/ Nyomógomb
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (érvénytelen)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kód [x];
P6OUT = kód1 [y];
v ++;
mert (i = 0; i
{
P1OUT | = BIT0; //P1.0 = váltás
_késleltetési ciklusok (1048576);
P1OUT & = ~ BIT0; // P1.0 = váltás
_késleltetési ciklusok (1048576);
}
Ez az ISR alaphelyzetbe állítja a számlálót, és számolja, hogy hányszor nyomták meg a többit.
(Itt a kijelző led kapcsolón keresztül történik, más tömböt és időzítőt is használhat, hogy megjelenítse ezeket az értékeket kimenetként 7 szegmensben).
9. lépés: KÓDOLÁS
#befoglalni
#define delay 1000
karakterkód = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
karakterkód1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
illékony előjel nélküli int x = 0, y = 0, z = 0;
illékony előjel nélküli int v = 0, i = 0;
void main ()
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdimer 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);
}
// A0 időzítő megszakítja a szolgáltatást
#pragma vektor = TIMER0_A0_VECTOR
_interrupt void Timer_A (érvénytelen)
{
z ++;
ha (z> késés)
{
P3OUT = kód [x];
P6OUT = kód1 [y];
x ++;
ha (x == 10)
{
x = 0;
y ++;
}
ha (y == 6)
y = 0;
z = 0;
}
}
// Hardvermegszakítási szolgáltatási rutin
#pragma vektor = PORT2_VECTOR
_interrupt void port_2 (érvénytelen)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kód [x];
P6OUT = kód1 [y];
v ++;
mert (i = 0; i
{P1OUT | = BIT0; // P1.0 = váltás
_késleltetési ciklusok (1048576);
P1OUT & = ~ BIT0; // P1.0 = váltás
_késleltetési ciklusok (1048576);
}
}
10. lépés: Referenciakód
GitHub adattár
Ajánlott:
DC - DC feszültség Lépés lekapcsoló mód Buck feszültségátalakító (LM2576/LM2596): 4 lépés
DC-DC feszültség Lépés lekapcsoló üzemmód Buck feszültségátalakító (LM2576/LM2596): A rendkívül hatékony bakkonverter készítése nehéz feladat, és még a tapasztalt mérnököknek is többféle kivitelre van szükségük, hogy a megfelelőt hozzák létre. egy DC-DC áramátalakító, amely csökkenti a feszültséget (miközben növeli
Akusztikus levitáció az Arduino Uno-val Lépésről lépésre (8 lépés): 8 lépés
Akusztikus lebegés az Arduino Uno-val Lépésről lépésre (8 lépés): ultrahangos hangátvivők L298N Dc női adapter tápegység egy egyenáramú tűvel Arduino UNOBreadboard és analóg portok a kód konvertálásához (C ++)
Véges állapotú gép MSP430 -on: 6 lépés
Véges állapotú gép MSP430 -on: Megmutatom, hogyan programozhat egy MSP430G2 indítópadot véges állapotú gépekkel (FSM) a YAKINDU Statechart Tools segítségével közvetlenül a Texas Instruments Code Composer Studio -ban. Ez az oktatóanyag hat lépést tartalmaz: A YAKINDU Statechart Tools telepítése
MSP430 Breadboard Audio Spectrum Analyzer: 6 lépés
MSP430 Breadboard Audio Spectrum Analyzer: Ez a projekt mikrofon alapú, és minimális külső komponenseket igényel. 2 db LR44-es érmecellát használok, hogy az egész szerkezet működjön egy 170-es, kötöttpontos mini kenyértáblán. ADC10, TimerA megszakítja az LPM ébresztést, TimerA PWM
MSP430 DIP programozása Ez430 használatával: 4 lépés
MSP430 DIP programozása Ez430 használatával: Amikor megtaláltam a TI ez430 USB programozóját, úgy tűnt, hogy ez az egyik legegyszerűbb módszer az MCU -val való induláshoz. Hogy tévedhetek, ez van a nevében! Kiderül, hogy valójában könnyű … többnyire. Az ez430 nagyszerű, ha azt szeretné, hogy