תוכן עניינים:

מונה שניות MSP430: 10 שלבים
מונה שניות MSP430: 10 שלבים

וִידֵאוֹ: מונה שניות MSP430: 10 שלבים

וִידֵאוֹ: מונה שניות MSP430: 10 שלבים
וִידֵאוֹ: מונה שניות 2024, נוֹבֶמבֶּר
Anonim
מונה שניות MSP430
מונה שניות MSP430

ברוך הבא! מונה עשיית שניות: שימוש ב- CCStudio 8 ו- MSP430F5529 לפרויקט.

שפת C לקידוד בקר המיקרו. יישום מצבי צריכת חשמל נמוכה, טיימרים והפסקות. הפלט מוצג באמצעות 7 פלחים.

שלב 1: תובנה

תוֹבָנָה
תוֹבָנָה

בואו נתחיל!

אתחל את טיימר כלב השמירה למצב כבוי באמצעות הסיסמה הנדרשת עבור טיימר כלב השמירה (זה עוזר לשמור על אינסוף לולאות, ולשמור על מעבד בטוח).

#לִכלוֹל

/** * main.c */

int main (void)

{

WDTCTL = WDTPW | WDTHOLD; // עצור טיימר כלב השמירה

החזר 0;

}

שלב 2: אתחול יציאות

{

P3DIR = 0xFF; // P3DIR = 0x00;

P6DIR = 0xFF;

P4DIR | = 0x00;

P4REN | = 0xFF;

P4OUT | = 0xFF;

}

P3DIR | = 0x00 אומר לנו שכל PORT-3 מאתחל בכדי לקבל תשומות.

P3DIR | = 0xFF אומר לנו שכל ה- PORT-3 מאתחל ונותן תפוקות.

P3DIR | = 0x01 רק סיכה P3.0 מאתחלת לפלט ב- PORT-3. זאת בעקבות מיפוי של יציאה הקסדצימלי.

P4REN | = 0xFF, זה מצביע על כך שהסיכות של PORT-4 מפעילות את נגדי המשיכה למעלה/למטה.

כדי לבחור אותם בין Pull UP או Pull DOWN, נעשה שימוש בהוראה P $ OUT | = 0xFF.

אם משתמשים ב- 0xFF הם מוגדרים כנגדי Pull UP ואם 0x00 הם מוגדרים כ- Pull DOWN.

שלב 3: הספק נמוך במיוחד

MSP430F5529 מאפשר לנו להפחית את אובדן הכוח מהמעבד. זה שימושי ביישומים עצמאיים.

זה דורש הצהרה של כל הסיכה או היציאות לפלט.

{

P7DIR | = 0xFF;

P6DIR | = 0xFF;

P5DIR | = 0xFF;

P4DIR | = 0xFF;

P3DIR | = 0xFF;

P2DIR | = 0xFF;

P1DIR | = 0xFF;

}

שלב 4: טיימר

שימוש בטיימר לדור עיכוב של שנייה אחת. זה משתמש ב- SMCLK של 1MHz, גם טיימר פועל במצב צריכת חשמל נמוכה (בשלב הבא, לאחר ספירתו הוא הופסק מ- LPM). תהליך זה חוסך כוח ועומס על המעבד

TA0CCTL0 = CCIE;

TA0CCR0 = 999;

TA0CTL = TASSEL_2 + MC_1;

הערכים הם 999, כיוון שנדרש עוד ספירה אחת כדי לחזור לאפס ברשם הטיימר.

שלב 5: מצב צריכת חשמל נמוכה

_BIS_SR (LPM0_bits+GIE);

זה מאפשר הפעלה כללית (GIE), ומעמיד את המעבד ל- LPM0, שם MCLK התומך במעבד כבוי והפעלת SMCLK ו- ACLK ששומרת על הטיימר פועל. כדי שנוכל לראות שהמעבד כבוי, שם על ידי חיסכון בחשמל.

שלב 6: טיימר ISR

טיימר ISR
טיימר ISR

וקטור #פרגמה = TIMER0_A0_VECTOR

_ הפרע חלל טיימר_א (חלל)

{

z ++;

אם (z> עיכוב)

{

P3OUT = קוד [x];

P6OUT = code1 [y];

x ++;

אם (x == 10)

{

x = 0;

y ++;

}

אם (y == 6)

y = 0;

z = 0;

}

}

וקטור פרגמה מיועד לייצוג ISR ב- C embd.

קוד [x] וקוד 1 [y] הם המערכים המכילים ערכי פלט עבור שני שבעת הקטעים, להצגת מונה של 60 שניות.

שלב 7: הפסקת חומרה

P2DIR = 0x00;

P2REN = 0x02;

P2OUT = 0x02;

P2IE | = BIT1;

P2IES | = BIT1;

P2IFG & = ~ BIT1;

כאן P2.1 מוכרז כהפרעה לחומרה, אם לוחצים על הכפתור, המונה מתאפס לערך.

תוכנית שאר כתובה בתוך ה- ISR של הפרעה זו.

שלב 8: לחצן איפוס/ איפוס

וקטור #פרגמה = 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 זה מאפס את המונה, ושומר על כמה פעמים לחצו על השאר.

(להלן התצוגה נעשית באמצעות מתג לד, ניתן להשתמש גם במערך וטיימר אחר, כדי להציג את הערכים הללו כפלט ב -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;

void main ()

{

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

_ הפרע חלל טיימר_א (חלל)

{

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

מוּמלָץ: