İçindekiler:
- 1. Adım: İçgörü
- 2. Adım: Bağlantı Noktası Başlatma
- 3. Adım: Ultra Düşük Güç
- 4. Adım: ZAMANLAYICI
- Adım 5: Düşük Güç Modu
- Adım 6: ISR-Zamanlayıcı
- Adım 7: Donanım Kesintisi
- Adım 8: ISR-Sıfırlama/Basma Düğmesi
- 9. Adım: KOD
- Adım 10: Referans Kodu
Video: MSP430 Saniye Sayacı: 10 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:19
Hoş geldin! Saniye Sayacı Yapımı: Proje için CCStudio 8 ve MSP430F5529 kullanımı.
Mikro denetleyiciyi kodlamak için C dili. Düşük Güç Modları, Zamanlayıcılar ve Kesintilerin Uygulanması. Çıktı 7 Segment üzerinden görüntülenir.
1. Adım: İçgörü
Hadi başlayalım!
Watchdog zamanlayıcısı için gerekli parolayı kullanarak watchdog zamanlayıcısını OFF durumuna sıfırlayın (İşlemciyi güvende tutarak sonsuz döngülerin kontrolünü sağlamaya yardımcı olur).
#Dahil etmek
/** * ana.c */
int ana(boşluk)
{
WDTCTL = WDTPW | WDTHOLD; // watchdog zamanlayıcısını durdur
0 döndür;
}
2. Adım: Bağlantı Noktası Başlatma
{
P3DIR=0xFF; // P3DIR=0x00;
P6DIR=0xFF;
P4DIR |=0x00;
P4REN |=0xFF;
P4OUT |=0xFF;
}
P3DIR |=0x00 bize PORT-3'ün tamamının girdi almak için başlatıldığını söyler.
P3DIR |=0xFF bize PORT-3'ün tamamının çıktı vermek için başlatıldığını söyler.
P3DIR |=0x01 sadece P3.0 pini PORT-3'te çıkış için başlatılır. Bu, bir Onaltılık Bağlantı Noktası eşlemesini izler.
P4REN |=0xFF, bu PORT-4 pinlerinin yukarı/aşağı çekme dirençlerinin etkin olduğunu gösterir.
Bunları Pull UP veya Pull DOWN arasında seçmek için P$OUT |=0xFF komutu kullanılır.
0xFF kullanılıyorsa, Pull UP dirençleri olarak, 0x00 ise Pull AŞAĞI olarak yapılandırılırlar.
3. Adım: Ultra Düşük Güç
MSP430F5529, işlemciden kaynaklanan güç kaybını azaltmamızı sağlar. Bu, bağımsız uygulamalarda kullanışlıdır.
Bu, çıkış için tüm pinlerin veya Portların bildirilmesini gerektirir.
{
P7DIR |= 0xFF;
P6DIR |= 0xFF;
P5DIR |= 0xFF;
P4DIR |= 0xFF;
P3DIR |= 0xFF;
P2DIR |= 0xFF;
P1DIR |= 0xFF;
}
4. Adım: ZAMANLAYICI
Bir saniyelik gecikme üretimi için zamanlayıcı kullanımı. Bu, 1MHz'lik SMCLK'yi kullanır, ayrıca zamanlayıcı Düşük güç Modunda çalışır (bir sonraki adımda, sayımı LPM'den kesildikten sonra). Bu işlem, işlemci üzerinde güç ve yük tasarrufu sağlar
TA0CCTL0=CCIE;
TA0CCR0=999;
TA0CTL = TASSEL_2 + MC_1;
Değerler 999'dur, çünkü zamanlayıcı kaydında sıfıra geri dönmek için bir sayım daha gerekir.
Adım 5: Düşük Güç Modu
_BIS_SR(LPM0_bits+GIE);
Bu, Genel kesmeyi Etkinleştir'i (GIE) etkinleştirir ve CPU'yu, işlemciyi destekleyen MCLK'nin kapalı olduğu ve zamanlayıcıyı çalışır durumda tutan SMCLK ve ACLK'nin çalıştığı LPM0 konumuna getirir. Böylece güç tasarrufu yaparak CPU'nun kapalı olduğunu görebiliriz.
Adım 6: ISR-Zamanlayıcı
#pragma vektör=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
if(z>gecikme)
{
P3OUT=kod[x];
P6OUT=kod1[y];
x++;
eğer(x==10)
{
x=0;
y++;
}
eğer(y==6)
y=0;
z=0;
}
}
pragma vektörü, C embd'deki ISR temsili içindir.
code[x] ve code1[y], 60 saniyelik sayacı görüntülemek için iki yedi segment için çıkış değerlerini içeren dizilerdir.
Adım 7: Donanım Kesintisi
P2DIR=0x00;
P2REN=0x02;
P2OUT=0x02;
P2IE |=BIT1;
P2IES |=BIT1;
P2IFG &= ~BIT1;
Burada P2.1 bir donanım kesintisi olarak bildirilir, butona basılırsa sayaç değere sıfırlanır.
dinlenme programı bu kesmenin ISR'sinin içine yazılır.
Adım 8: ISR-Sıfırlama/Basma Düğmesi
#pragma vektör=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0; y=0;
P3OUT=kod[x];
P6OUT=kod1[y];
v++;
for(i=0;i
{
P1OUT |= BIT0; //P1.0 = geçiş
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = geçiş
_delay_cycles(1048576);
}
Bu ISR, sayacı sıfırlar ve geri kalanına kaç kez basıldığının bir sayımını tutar.
(Burada gösterim led toggle ile yapılır, ayrıca bu değerleri 7 segmentte çıktı olarak göstermek için başka bir dizi ve zamanlayıcı kullanabilir).
9. Adım: KOD
#Dahil etmek
#define gecikme 1000
karakter kodu={0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
karakter kodu1={0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
uçucu işaretsiz int x=0, y=0, z=0;
uçucu işaretsiz int v=0, i=0;
geçersiz ana()
{
WDTCTL = WDTPW | WDTHOLD; // watchdog zamanlayıcısını durdur
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);
}
// Zamanlayıcı A0 kesme servis rutini
#pragma vektör=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)
{
z++;
if(z>gecikme)
{
P3OUT=kod[x];
P6OUT=kod1[y];
x++;
eğer(x==10)
{
x=0;
y++;
}
eğer(y==6)
y=0;
z=0;
}
}
// Donanım kesme servis rutini
#pragma vektör=PORT2_VECTOR
_interrupt void port_2(void)
{
P2IFG &=~BIT1;
x=0;
y=0;
P3OUT=kod[x];
P6OUT=kod1[y];
v++;
for(i=0;i
{ P1OUT |= BIT0; // P1.0 = geçiş
_delay_cycles(1048576);
P1OUT &=~BIT0; // P1.0 = geçiş
_delay_cycles(1048576);
}
}
Adım 10: Referans Kodu
GitHub Deposu
Önerilen:
LCD ile 8051 ve IR Sensör Kullanan Ziyaretçi Sayacı: 3 Adım
LCD ile 8051 ve IR Sensör Kullanan Ziyaretçi Sayacı: Sevgili Arkadaşlar, 8051 ve IR sensör kullanarak ziyaretçi sayacının nasıl yapıldığını anlattım ve LCD'de görüntüledim. 8051, tüm dünyada hobi, ticari uygulamalar yapmak için kullanılan en popüler mikro denetleyicilerden biridir. vizit yaptım
Arduino Kullanan Basit Frekans Sayacı: 6 Adım
Arduino Kullanarak Basit Frekans Sayacı: Bu dersimizde Arduino kullanarak basit bir Frekans Sayacı yapmayı öğreneceğiz.Videoyu izleyin
Adım Sayacı Nasıl Yapılır?: 3 Adım (Resimlerle)
Adım Sayacı Nasıl Yapılır?: Yürümek, koşmak, bisiklete binmek, badminton oynamak gibi birçok sporda iyi performans gösterirdim. Binmeyi çok uzun zaman önce dolaşmak için seviyorum. Pekala, iri göbeğime bakın……Her neyse, egzersize yeniden başlamaya karar verdim. Hangi ekipmanı hazırlamalıyım?
Adım Sayacı - Micro:Bit: 12 Adım (Resimlerle)
Adım Sayacı - Micro:Bit: Bu proje bir adım sayacı olacaktır. Adımlarımızı ölçmek için Micro:Bit'te yerleşik olan ivmeölçer sensörünü kullanacağız. Micro:Bit her sallandığında, sayıma 2 ekleyeceğiz ve ekranda görüntüleyeceğiz
CD/DVD'deki Tüm Verileri 5 Saniye veya Daha Kısa Sürede Öldürün.: 3 Adım
CD/DVD'deki Tüm Verileri 5 Saniye veya Daha Kısa Sürede Öldürün.: Bir CD/DVD'deki Tüm Verileri 5 saniye veya daha kısa sürede öldürün.Bunu neden yapmak isteyesiniz:++Birkaç yıllık eski yedekleri yok edin++Sizi hatırlayın özel yatak odası zamanını DVD'ye yaktı++Eski sevgilin CD/DVD'yi geri istiyor.++AOL DİSK İLE EĞLENCE!!!! çok komik