Obsah:
- Krok 1: Přehled
- Krok 2: Inicializace portu
- Krok 3: Ultra nízký výkon
- Krok 4: ČASOVAČ
- Krok 5: Režim nízké spotřeby
- Krok 6: ISR-Timer
- Krok 7: Přerušení hardwaru
- Krok 8: ISR- Reset/ Tlačítko
- Krok 9: KÓD
- Krok 10: Referenční kód
Video: Počítadlo sekund MSP430: 10 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:22
Vítejte! Počítadlo sekund: Použití CCStudio 8 a MSP430F5529 pro projekt.
Jazyk C pro kódování mikrořadiče. Použití režimů, časovačů a přerušení s nízkým výkonem. Výstup je zobrazen pomocí 7 segmentů.
Krok 1: Přehled
Pojďme začít!
Inicializujte časovač hlídání do stavu VYP pomocí požadovaného hesla pro časovač hlídání (Pomáhá udržovat kontrolu nekonečných smyček a udržovat procesor v bezpečí).
#zahrnout
/** * main.c */
int main (neplatné)
{
WDTCTL = WDTPW | WDTHOLD; // zastavení hlídače času
návrat 0;
}
Krok 2: Inicializace portu
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 nám říká, že celý PORT-3 je inicializován tak, aby přijímal vstupy.
P3DIR | = 0xFF nám říká, že celý PORT-3 je inicializován, aby poskytoval výstupy.
P3DIR | = 0x01 pouze výstup P3.0 je inicializován pro výstup v PORT-3. Následuje mapování hexadecimálního portu.
P4REN | = 0xFF, to znamená, že na pinech PORT-4 jsou povoleny odpory nahoru/dolů.
K jejich výběru mezi Pull UP nebo Pull DOWN se používá instrukce P $ OUT | = 0xFF.
Pokud je použit 0xFF, konfigurují se jako odpory Pull UP a pokud 0x00 konfigurují jako Pull DOWN.
Krok 3: Ultra nízký výkon
MSP430F5529 nám umožňuje snížit ztrátu energie z procesoru. To je užitečné v samostatných aplikacích.
To vyžaduje deklaraci všech pinů nebo portů na výstup.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
Krok 4: ČASOVAČ
Použití časovače pro zpoždění generování jedné sekundy. To používá SMCLK 1 MHz, také časovač běží v režimu nízké spotřeby (v dalším kroku je po jeho počítání přerušeno z LPM). Tento proces šetří energii a zátěž procesoru
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Hodnoty jsou 999, protože trvá jeden další počet, než se v registru časovače vrátí zpět na nulu.
Krok 5: Režim nízké spotřeby
_BIS_SR (LPM0_bits+GIE);
To umožňuje obecné přerušení povolit (GIE) a umístí CPU na LPM0, kde je MCLK, který podporuje procesor, vypnutý, a běh SMCLK a ACLK, který udržuje časovač spuštěný. takže vidíme, že procesor je vypnutý, a to úsporou energie.
Krok 6: ISR-Timer
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> zpoždění)
{
P3OUT = kód [x];
P6OUT = kód1 [y];
x ++;
pokud (x == 10)
{
x = 0;
y ++;
}
pokud (y == 6)
y = 0;
z = 0;
}
}
pragma vektor je pro ISR reprezentaci v C embd.
code [x] a code1 [y] jsou pole, která obsahují výstupní hodnoty pro dva sedm segmentů, pro zobrazení počítadla 60 sekund.
Krok 7: Přerušení hardwaru
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Zde je P2.1 deklarováno jako hardwarové přerušení, pokud je tlačítko stisknuto, čítač se resetuje na hodnotu.
zbytek programu je zapsán uvnitř ISR tohoto přerušení.
Krok 8: ISR- Reset/ Tlačítko
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = kód [x];
P6OUT = kód1 [y];
v ++;
pro (i = 0; i
{
P1OUT | = BIT0; //P1.0 = přepnout
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = přepnout
_delay_cycles (1048576);
}
Tento ISR vynuluje počitadlo a počítá, kolikrát byl stisknut zbytek.
(Zde je zobrazení provedeno pomocí LED přepínače, lze také použít jiné pole a časovač, pro zobrazení těchto hodnot jako výstup v 7 segmentu).
Krok 9: KÓD
#zahrnout
#definujte zpoždění 1000
znakový kód = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
znakový kód1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volatile unsigned int x = 0, y = 0, z = 0;
volatile unsigned int v = 0, i = 0;
neplatný hlavní ()
{
WDTCTL = WDTPW | WDTHOLD; // zastavení hlídače času
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);
}
// Servisní rutina přerušení časovače A0
#pragma vector = TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z ++;
if (z> zpoždění)
{
P3OUT = kód [x];
P6OUT = kód1 [y];
x ++;
pokud (x == 10)
{
x = 0;
y ++;
}
pokud (y == 6)
y = 0;
z = 0;
}
}
// Servisní rutina přerušení hardwaru
#pragma vector = PORT2_VECTOR
_interrupt void port_2 (void)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = kód [x];
P6OUT = kód1 [y];
v ++;
pro (i = 0; i
{P1OUT | = BIT0; // P1.0 = přepnout
_delay_cycles (1048576);
P1OUT & = ~ BIT0; // P1.0 = přepnout
_delay_cycles (1048576);
}
}
Krok 10: Referenční kód
Úložiště GitHub
Doporučuje:
Počitadlo Arduino pomocí LED displeje TM1637: 7 kroků
Čítač Arduino pomocí LED displeje TM1637: V tomto tutoriálu se naučíme, jak pomocí LED displeje TM1637 a Visuino vytvořit jednoduchý čítač číslic. Podívejte se na video
Počitadlo Arduino pomocí LED displeje TM1637 a senzoru vyhýbání se překážkám: 7 kroků
Čítač Arduino pomocí TM1637 LED displeje a senzoru vyhýbání se překážkám: V tomto tutoriálu se naučíme, jak vytvořit jednoduché číselné počítadlo pomocí LED displeje TM1637 a senzoru vyhýbání se překážkám a Visuino. Podívejte se na video
Počitadlo kroků - mikro: bit: 12 kroků (s obrázky)
Počitadlo kroků - Micro: Bit: Tento projekt bude počítadlem kroků. K měření našich kroků použijeme snímač akcelerometru, který je zabudovaný v Micro: Bit. Pokaždé, když se Micro: Bit zatřese, přidáme 2 k počtu a zobrazíme ho na obrazovce
Přepínač klapky (40 zatlesknutí za 5 sekund): 4 kroky (s obrázky)
Klapkový spínač (40 zatlesknutí za 5 sekund): Klapkový spínač má schopnost zapnout/vypnout jakoukoli elektrickou součást připojením výstupu obvodu k reléovému spínači. Zde provedeme přepínač tleskání s několika součástmi s velmi dobře vysvětlenými. Ve srovnání se všemi ostatními přepínači tleskání
Zabijte všechna data na disku CD/DVD za 5 sekund nebo méně: 3 kroky
Zabijte všechna data na disku CD/DVD za 5 sekund nebo méně: Zabijte všechna data na disku CD/DVD za 5 sekund nebo méně. Proč byste to chtěli udělat: ++ Zničte staré zálohy na několik let ++ Pamatujte si spálili jsme speciální čas na DVD ++ Váš ex chce CD/DVD zpět. ++ ZÁBAVA S AOL DISKEM !!!! LOL