Spisu treści:
- Krok 1: Wgląd
- Krok 2: Inicjalizacja portu
- Krok 3: Bardzo niski pobór mocy
- Krok 4: TIMER
- Krok 5: Tryb niskiego poboru mocy
- Krok 6: Zegar ISR
- Krok 7: Przerwanie sprzętowe
- Krok 8: ISR-Reset/Przycisk
- Krok 9: KOD
- Krok 10: Kod referencyjny
Wideo: Licznik sekund MSP430: 10 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Witam! Tworzenie licznika sekund: Wykorzystanie CCStudio 8 i MSP430F5529 w projekcie.
Język C do kodowania mikrokontrolera. Stosowanie trybów niskiego poboru mocy, timerów i przerw. Wyjście jest wyświetlane za pomocą 7 segmentów.
Krok 1: Wgląd
Zaczynajmy!
Zainicjuj zegar watchdoga do stanu OFF, używając wymaganego hasła dla zegara watchdoga (pomaga to kontrolować nieskończone pętle, zapewniając bezpieczeństwo procesora).
#włączać
/** * główna.c */
int główny (unieważniony)
{
WDTCTL = WDTPW | WDTHOLD; // zatrzymaj zegar nadzoru
zwróć 0;
}
Krok 2: Inicjalizacja portu
{
P3DIR=0xFF; // P3DIR=0x00;
P6DIR=0xFF;
P4KATALOG |=0x00;
P4REN |=0xFF;
P4OUT |=0xFF;
}
P3DIR |=0x00 mówi nam, że cały PORT-3 jest inicjowany do przyjmowania danych wejściowych.
P3DIR |=0xFF mówi nam, że cały PORT-3 jest inicjowany, aby dawać wyjścia.
P3DIR |=0x01 tylko pin P3.0 jest inicjowany do wyjścia w PORT-3. Wynika to z mapowania portu szesnastkowego.
P4REN |=0xFF, oznacza to, że piny PORT-4 mają włączone rezystory pull up/down.
Aby wybrać je pomiędzy Pull UP lub Pull DOWN, używa się instrukcji P$OUT |=0xFF.
Jeśli używany jest 0xFF, konfigurują się jako rezystory Pull UP, a jeśli 0x00 konfigurują się jako Pull DOWN.
Krok 3: Bardzo niski pobór mocy
MSP430F5529 pozwala nam zmniejszyć straty mocy procesora. Jest to przydatne w samodzielnych aplikacjach.
Wywołuje to deklarację wszystkich pinów lub portów do wyprowadzenia.
{
P7DIR |= 0xFF;
P6DIR |= 0xFF;
P5DIR |= 0xFF;
P4DIR |= 0xFF;
P3DIR |= 0xFF;
P2DIR |= 0xFF;
P1DIR |= 0xFF;
}
Krok 4: TIMER
Wykorzystanie timera do generowania opóźnienia o jedną sekundę. Wykorzystuje to SMCLK 1MHz, również timer działa w trybie niskiego poboru mocy (w następnym kroku, po jego odliczeniu zostaje przerwany z LPM). Ten proces oszczędza energię i obciążenie procesora
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
Wartości to 999, ponieważ potrzeba jeszcze jednego licznika, aby cofnąć się do zera w rejestrze timera.
Krok 5: Tryb niskiego poboru mocy
_BIS_SR(LPM0_bity+GIE);
Włącza to General przerwanie Enable (GIE) i ustawia procesor na LPM0, gdzie MCLK obsługujące procesor jest wyłączone, a SMCLK i ACLK uruchamiają się, które utrzymują działanie zegara. więc możemy zobaczyć, że procesor jest wyłączony, oszczędzając energię.
Krok 6: Zegar ISR
#wektor pragma=TIMER0_A0_VECTOR
_interrupt void Timer_A (unieważnienie)
{
z++;
jeśli(z>opóźnienie)
{
P3OUT=kod[x];
P6OUT=kod1[y];
x++;
jeśli(x==10)
{
x=0;
y++;
}
jeśli(y==6)
y=0;
z=0;
}
}
wektor pragma służy do reprezentacji ISR w C embd.
code[x] i code1[y] to tablice zawierające wartości wyjściowe dla dwóch siedmiu segmentów, do wyświetlania licznika 60 sekund.
Krok 7: Przerwanie sprzętowe
P2DIR=0x00;
P2REN=0x02;
P2WY=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
Tutaj P2.1 jest zadeklarowane jako przerwanie sprzętowe, jeśli przycisk zostanie naciśnięty, licznik zeruje się do wartości.
program reszty jest napisany wewnątrz ISR tego przerwania.
Krok 8: ISR-Reset/Przycisk
#wektor pragma=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0; y=0;
P3OUT=kod[x];
P6OUT=kod1[y];
v++;
dla(i=0;i
{
P1WY |= BIT0; //P1.0 = przełącz
_opóźnienie_cykli(1048576);
P1OUT &=~BIT0; // P1.0 = przełącz
_opóźnienie_cykli(1048576);
}
Ten ISR resetuje licznik i zlicza ile razy reszta została naciśnięta.
(Tutaj wyświetlanie odbywa się za pomocą przełącznika led, można również użyć innej tablicy i timera, aby wyświetlić te wartości jako dane wyjściowe w 7 segmentach).
Krok 9: KOD
#włączać
#zdefiniuj opóźnienie 1000
kod znaku={0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
kod znaku1={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
volatile unsigned int x=0, y=0, z=0;
volatile unsigned int v=0, i=0;
nieważne główne ()
{
WDTCTL = WDTPW | WDTHOLD; // zatrzymaj zegar nadzoru
P7DIR |= 0xFF;
P7OUT |= 0x00;
P8DIR |= 0xFF;
P8OUT |= 0x00;
P4DIR |= 0xFF;
P4OUT |= 0x00;
P5DIR |= 0xFF;
P5WY |= 0x00;
P1DIR=0xFF;
P3DIR=0xFF;
P6DIR=0xFF;
P2DIR=0x00;
P2REN=0x02;
P2WY=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
_BIS_SR(LPM0_bity+GIE);
}
// Procedura obsługi przerwania timera A0
#wektor pragma=TIMER0_A0_VECTOR
_interrupt void Timer_A (unieważnienie)
{
z++;
jeśli(z>opóźnienie)
{
P3OUT=kod[x];
P6OUT=kod1[y];
x++;
jeśli(x==10)
{
x=0;
y++;
}
jeśli(y==6)
y=0;
z=0;
}
}
// Procedura obsługi przerwań sprzętowych
#wektor pragma=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0;
y=0;
P3OUT=kod[x];
P6OUT=kod1[y];
v++;
dla(i=0;i
{ P1WY |= BIT0; // P1.0 = przełącz
_opóźnienie_cykli(1048576);
P1OUT &=~BIT0; // P1.0 = przełącz
_opóźnienie_cykli(1048576);
}
}
Krok 10: Kod referencyjny
Repozytorium GitHub
Zalecana:
Przeczytaj licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: 5 kroków
Przeczytaj Licznik energii elektrycznej i gazu (belgijski/holenderski) i prześlij do Thingspeak: Jeśli martwisz się o swoje zużycie energii lub jesteś po prostu trochę frajerem, prawdopodobnie chcesz zobaczyć dane ze swojego fantazyjnego nowego licznika cyfrowego na swoim smartfonie. projekt pozyskamy aktualne dane od belgijskiego lub holenderskiego elektryka cyfrowego
Prosty licznik częstotliwości za pomocą Arduino: 6 kroków
Prosty licznik częstotliwości za pomocą Arduino: W tym samouczku nauczymy się, jak zrobić prosty licznik częstotliwości za pomocą Arduino. Obejrzyj wideo
Licznik kroków - Micro:Bit: 12 kroków (ze zdjęciami)
Licznik kroków - Micro:Bit: Ten projekt będzie licznikiem kroków. Do pomiaru kroków użyjemy czujnika przyspieszenia wbudowanego w Micro:Bit. Za każdym razem, gdy Micro:Bit się trzęsie, dodamy 2 do licznika i wyświetlimy go na ekranie
Clap Switch (40 klaśnięć w 5 sekund): 4 kroki (ze zdjęciami)
Przełącznik Clap (40 klaśnięć w 5 sekund): Przełącznik Clap ma możliwość włączania/wyłączania dowolnego elementu elektrycznego poprzez podłączenie wyjścia obwodu do przełącznika przekaźnika. Tutaj zrobimy przełącznik klaśnięcia z kilkoma komponentami z bardzo dobrymi wyjaśnieniami. W porównaniu do wszystkich innych przełączników klaskania
Zabij wszystkie dane na płycie CD/DVD w 5 sekund lub mniej.: 3 kroki
Zabij wszystkie dane na CD/DVD w 5 sekund lub mniej.: Zabij wszystkie dane na CD/DVD w 5 sekund lub mniej.Dlaczego chcesz to zrobić:++Zniszcz stare kopie zapasowe z kilku lat++Zapamiętaj nagrał specjalny czas w sypialni na DVD++Twój Były chce odzyskać CD/DVD.++ZABAWA Z DYSKIEM AOL!!!! kupa śmiechu