Мазмуну:
- 1 -кадам: түшүнүк
- 2 -кадам: Портту баштоо
- 3 -кадам: Ultra Low Power
- 4 -кадам: ТАЙМЕР
- 5 -кадам: Аз кубат режими
- 6-кадам: ISR-таймер
- 7 -кадам: Аппараттык үзгүлтүк
- 8-кадам: ISR- Баштапкы абалга келтирүү/ басуу баскычы
- 9 -кадам: КОД
- 10 -кадам: Маалымдама коду
Video: MSP430 Seconds Counter: 10 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:41
Кош келдиңиз! Секунддарды эсептөө: Долбоор үчүн CCStudio 8 жана MSP430F5529 колдонуу.
C тили микро контроллерди коддоо үчүн. Төмөн кубат режимдерин, таймерлерди жана үзгүлтүктөрдү колдонуу. Чыгуу 7 сегмент аркылуу көрсөтүлөт.
1 -кадам: түшүнүк
Баштайлы!
Күзөтчү таймери үчүн талап кылынган сырсөздү колдонуп, күзөтчү таймерин OFF абалына коюңуз (Бул чексиз циклдерди текшерүүгө, процессорду коопсуз сактоого жардам берет).
#кошуу
/** * main.c */
int main (боштук)
{
WDTCTL = WDTPW | WDTHOLD; // күзөтчү таймерин токтотуу
return 0;
}
2 -кадам: Портту баштоо
{
P3DIR = 0xFF; // P3DIR = 0x00;
P6DIR = 0xFF;
P4DIR | = 0x00;
P4REN | = 0xFF;
P4OUT | = 0xFF;
}
P3DIR | = 0x00 бизге ПОРТ-3 толугу менен киргизүү үчүн инициализацияланганын айтат.
P3DIR | = 0xFF бизге ПОРТ-3 бүтүндөй чыгаруу үчүн инициализацияланганын айтат.
P3DIR | = 0x01 гана P3.0 пин ПОРТ-3кө чыгаруу үчүн инициализацияланган. Бул он алтылык порттун картасына түшөт.
P4REN | = 0xFF, бул ПОРТ-4 түйрүктөрүнүн өйдө/ылдый каршылыгынын иштетилгенин көрсөтүп турат.
Аларды Pull UP же POW DOWN ортосунда тандоо үчүн P $ OUT | = 0xFF көрсөтмөсү колдонулат.
Эгерде 0xFF колдонулса, алар Pull UP каршылыгы катары конфигурацияланышат, эгер 0x00 болсо POW DOWN катары конфигурациялашат.
3 -кадам: Ultra Low Power
MSP430F5529 процессордун кубатын жоготууну азайтууга мүмкүндүк берет. Бул өз алдынча тиркемелерде пайдалуу.
Бул бардык пин же портторду чыгаруу үчүн декларациялоону талап кылат.
{
P7DIR | = 0xFF;
P6DIR | = 0xFF;
P5DIR | = 0xFF;
P4DIR | = 0xFF;
P3DIR | = 0xFF;
P2DIR | = 0xFF;
P1DIR | = 0xFF;
}
4 -кадам: ТАЙМЕР
Бир секундага кечигүү үчүн таймерди колдонуу. Бул 1MHz SMCLK колдонот, ошондой эле таймер аз кубат режиминде иштейт (кийинки кадамда, анын санынан кийин LPM үзгүлтүккө учурайт). Бул процесс процессорду күчүн жана жүгүн үнөмдөйт
TA0CCTL0 = CCIE;
TA0CCR0 = 999;
TA0CTL = TASSEL_2 + MC_1;
Баалар 999, анткени таймер реестринде нөлгө кайтуу үчүн дагы бир жолу талап кылынат.
5 -кадам: Аз кубат режими
_BIS_SR (LPM0_bits+GIE);
Бул General interrupt Enable (GIE) иштетүүсүн иштетет жана CPUны LPM0го коет, мында CPUны колдогон MCLK өчүк, ал эми таймердин иштешин камсыз кылган SMCLK жана ACLK иштейт. Ошентип, биз кубатты үнөмдөө менен CPU өчүрүлгөнүн көрө алабыз.
6-кадам: ISR-таймер
#прагма вектору = TIMER0_A0_VECTOR
_ үзгүлтүксүз боштук Timer_A (жараксыз)
{
z ++;
эгер (z> кечигүү)
{
P3OUT = код [x];
P6OUT = code1 [y];
x ++;
эгер (x == 10)
{
x = 0;
y ++;
}
эгер (y == 6)
y = 0;
z = 0;
}
}
прагма вектору C эмбрде ISR өкүлчүлүгү үчүн.
code [x] жана code1 [y] - бул 60 секунддук эсептегичти көрсөтүү үчүн эки жети сегменттин чыгуу маанилерин камтыган массивдер.
7 -кадам: Аппараттык үзгүлтүк
P2DIR = 0x00;
P2REN = 0x02;
P2OUT = 0x02;
P2IE | = BIT1;
P2IES | = BIT1;
P2IFG & = ~ BIT1;
Бул жерде P2.1 аппараттык үзгүлтүк деп жарыяланат, эгер баскыч басылса, эсептегич мааниге кайтарылат.
калган программа бул үзгүлтүккө ISR ичинде жазылган.
8-кадам: ISR- Баштапкы абалга келтирүү/ басуу баскычы
#прагма вектору = PORT2_VECTOR
_ үзгүлтүккө жараксыз порт_2 (жараксыз)
{
P2IFG & = ~ BIT1;
x = 0; y = 0;
P3OUT = код [x];
P6OUT = code1 [y];
v ++;
үчүн (i = 0; i
{
P1OUT | = BIT0; //P1.0 = которуштуруу
_ кечиктирүү (1048576);
P1OUT & = ~ BIT0; // P1.0 = которуштуруу
_ кечиктирүү (1048576);
}
Бул ISR эсептегичти баштапкы абалга келтирет жана калганын канча жолу басылганын эсептеп турат.
(Бул жерде дисплей LED которгуч аркылуу жасалат, ошондой эле бул маанилерди 7 сегментте чыгаруу катары көрсөтүү үчүн башка массивди жана таймерди колдоно алат).
9 -кадам: КОД
#кошуу
#кечиктирүүнү аныктоо 1000
char коду = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xE6};
char code1 = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B};
туруксуз белгисиз int x = 0, y = 0, z = 0;
туруксуз белгисиз int v = 0, i = 0;
бош функция()
{
WDTCTL = WDTPW | WDTHOLD; // күзөтчү таймерин токтотуу
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 үзгүлтүккө учуроо кызматы
#прагма вектору = TIMER0_A0_VECTOR
_ үзгүлтүксүз боштук Timer_A (жараксыз)
{
z ++;
эгер (z> кечигүү)
{
P3OUT = код [x];
P6OUT = code1 [y];
x ++;
эгер (x == 10)
{
x = 0;
y ++;
}
эгер (y == 6)
y = 0;
z = 0;
}
}
// Аппараттык үзгүлтүккө учуроо кызматы
#прагма вектору = PORT2_VECTOR
_ үзгүлтүккө жараксыз порт_2 (жараксыз)
{
P2IFG & = ~ BIT1;
x = 0;
y = 0;
P3OUT = код [x];
P6OUT = code1 [y];
v ++;
үчүн (i = 0; i
{P1OUT | = BIT0; // P1.0 = которуштуруу
_ кечиктирүү (1048576);
P1OUT & = ~ BIT0; // P1.0 = которуштуруу
_ кечиктирүү циклдери (1048576);
}
}
10 -кадам: Маалымдама коду
GitHub репозиторийи
Сунушталууда:
Visitor Counter 8051 жана IR сенсорун LCD менен колдонуу: 3 кадам
Visitor Counter in LCD менен 8051 жана IR сенсорун колдонуп: Урматтуу достор, мен 8051 жана IR сенсорлорун колдонуп, келүүчүнүн эсептегичин кантип жасоону түшүндүрдүм жана ЖКда көрсөттүм. 8051 - бул дүйнө жүзү боюнча хобби, коммерциялык тиркемелерди жасоо үчүн колдонулган эң популярдуу микроконтроллердин бири. Мен визаны түздүм
TM1637 LED дисплейин колдонуу Arduino Counter: 7 кадам
Arduino Counter TM1637 LED дисплейин колдонуу: Бул үйрөткүчтө биз LED дисплей TM1637 жана Visuino аркылуу жөнөкөй цифралык эсептегичти жасоону үйрөнөбүз
TM1637 LED дисплейин жана тоскоолдуктарды болтурбоо сенсорун колдонуу Arduino Counter: 7 кадам
Arduino Counter TM1637 LED дисплейин жана тоскоолдуктарды болтурбоо сенсорун колдонуу: Бул окуу куралында биз LED дисплей TM1637ди жана тоскоолдуктарды болтурбоо сенсорун жана Visuino менен жөнөкөй цифралык эсептегичти кантип жасоону үйрөнөбүз
MSP430 Breadboard Audio Spectrum Analyzer: 6 кадам
MSP430 Breadboard Audio Spectrum Analyzer: Бул долбоор микрофонго негизделген жана минималдуу тышкы компоненттерди талап кылат. 2 x LR44 монета клеткалары колдонулат, ошондуктан мен 170 ставкалуу мини нан тактасынын чегинде иштей алам. ADC10, TimerA үзгүлтүккө учуроочу LPM ойготуусу, TimerA PWM
Ez430 колдонуу MSP430 DIPти программалоо: 4 кадам
Ez430 колдонуу MSP430 DIPти программалоо: Мен TIнин ez430 USB программистин тапканымда, бул MCU менен иштөөнүн эң оңой ыкмаларынын бири болуп калды. Кантип жаңылышам, анын аты бар! Көрсө, бул чындыгында оңой экен … негизинен ez430 сиз кааласаңыз сонун