ዝርዝር ሁኔታ:

MSP430 ሰከንዶች ቆጣሪ 10 ደረጃዎች
MSP430 ሰከንዶች ቆጣሪ 10 ደረጃዎች

ቪዲዮ: MSP430 ሰከንዶች ቆጣሪ 10 ደረጃዎች

ቪዲዮ: MSP430 ሰከንዶች ቆጣሪ 10 ደረጃዎች
ቪዲዮ: Лекция 6. Обзор контроллера MSP-430 2024, ህዳር
Anonim
MSP430 ሰከንዶች ቆጣሪ
MSP430 ሰከንዶች ቆጣሪ

እንኳን ደህና መጣህ! የሰከንዶች ቆጣሪ ማድረግ - ለፕሮጀክቱ CCStudio 8 እና MSP430F5529 ን መጠቀም።

የማይክሮ መቆጣጠሪያውን ኮድ ለማድረግ C ቋንቋ። ዝቅተኛ የኃይል ሁነታዎች ፣ ሰዓት ቆጣሪዎች እና ማቋረጦች መተግበር።ውጤቱ በ 7 ክፍል በኩል ይታያል።

ደረጃ 1 ማስተዋል

ማስተዋል
ማስተዋል

እንጀምር!

ለጠባቂው ሰዓት ቆጣሪ አስፈላጊውን የይለፍ ቃል በመጠቀም የጠባቂ ሰዓት ቆጣሪውን ወደ ማጥፋት ሁኔታ ያስጀምሩ (የሂደቱን ደህንነት ለመጠበቅ ማለቂያ የሌላቸውን ቀለበቶች ለመፈተሽ ይረዳል)።

#ያካትቱ

/** * main.c */

int main (ባዶ)

{

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 በ PORT-3 ውስጥ ለመውጣት ፒን P3.0 ብቻ ተጀምሯል። ይህ የሄክሳዴሲማል ወደብ ካርታ ይከተላል።

P4REN | = 0xFF ፣ ይህ የሚያመለክተው የ PORT-4 ፒኖች መወጣጫ/ወደታች መከላከያዎች የነቁ መሆናቸውን ነው።

በ Pull Up ወይም Pull DOWN መካከል ለመምረጥ ፣ P $ OUT | = 0xFF የተሰጠው መመሪያ ጥቅም ላይ ይውላል።

0xFF ጥቅም ላይ ከዋለ እነሱ እንደ Pull UP resistors ያዋቅራሉ እና 0x00 እነሱ እንደ Pull DOWN ካዋቀሩ።

ደረጃ 3: እጅግ በጣም ዝቅተኛ ኃይል

MSP430F5529 የኃይል ማቀነባበሪያውን ከአቀነባባሪው ለመቀነስ ያስችለናል። ይህ በገለልተኛ መተግበሪያዎች ውስጥ ጠቃሚ ነው።

ይህ የሁሉም ፒን ወይም ወደቦች ወደ ውጤት እንዲገለፅ ይጠይቃል።

{

P7DIR | = 0xFF;

P6DIR | = 0xFF;

P5DIR | = 0xFF;

P4DIR | = 0xFF;

P3DIR | = 0xFF;

P2DIR | = 0xFF;

P1DIR | = 0xFF;

}

ደረጃ 4 ፦ ሰዓት ቆጣሪ

ለአንድ ሰከንድ መዘግየት ትውልድ የሰዓት ቆጣሪ አጠቃቀም። ይህ የ 1 ሜኸዝ SMCLK ን ይጠቀማል ፣ እንዲሁም ሰዓት ቆጣሪ በዝቅተኛ የኃይል ሁኔታ ውስጥ ይሠራል (በሚቀጥለው ደረጃ ፣ ከ LPM ከተቋረጠ በኋላ)። ይህ ሂደት በአቀነባባሪው ላይ ኃይልን እና ሸክምን ይቆጥባል

TA0CCTL0 = CCIE;

TA0CCR0 = 999;

TA0CTL = TASSEL_2 + MC_1;

በሰዓት ቆጣሪ መመዝገቢያ ውስጥ ወደ ዜሮ ለመመለስ አንድ ተጨማሪ ቆጠራ ስለሚወስድ እሴቶች 999 ናቸው።

ደረጃ 5 ዝቅተኛ የኃይል ሁኔታ

_BIS_SR (LPM0_bits+GIE);

ይህ አጠቃላይ ማቋረጥን አንቃ (ጂአይኤ) ን ያነቃቃል ፣ እና ሲፒዩውን የሚደግፈው ኤም.ሲ.ኤል ጠፍቶ ባለበት LPM0 ፣ እና ሰዓት ቆጣሪው እንዲሠራ 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 ውክልና ነው።

ኮድ [x] እና code1 [y] 60 ሰከንዶች ቆጣሪ ለማሳየት ለሁለቱ ሰባት ክፍሎች የውጤት እሴቶችን የያዙ ድርድሮች ናቸው።

ደረጃ 7 የሃርድዌር መቋረጥ

P2DIR = 0x00;

P2REN = 0x02;

P2OUT = 0x02;

P2IE | = BIT1;

P2IES | = BIT1;

P2IFG & = ~ BIT1;

እዚህ P2.1 እንደ ሃርድዌር መቋረጥ ታወጀ ፣ አዝራሩ ከተጫነ ፣ ቆጣሪው ወደ እሴቱ ዳግም ይጀመራል።

የተቀረው ፕሮግራም በዚህ መቋረጥ በ ISR ውስጥ ተጽ writtenል።

ደረጃ 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 ቆጣሪውን እንደገና ያስጀምራል ፣ እና ቀሪው ስንት ጊዜ እንደተጫነ ይቆጥራል።

(እዚህ ማሳያ በሊድ መቀየሪያ በኩል የተሰራ ነው ፣ እነዚያን እሴቶች በ 7 ክፍል ውስጥ እንደ ውጤት ለማሳየት ሌላ ድርድር እና ሰዓት ቆጣሪን መጠቀም ይችላል)።

ደረጃ 9 ፦ ኮድ

ኮድ
ኮድ

#ያካትቱ

#መለየት መዘግየት 1000

የቻርድ ኮድ = {0xFC ፣ 0x60 ፣ 0xDA ፣ 0xF2 ፣ 0x66 ፣ 0xB6 ፣ 0xBE ፣ 0xE0 ፣ 0xFE ፣ 0xE6};

ቻር ኮድ 1 = {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

_ ማቋረጫ ባዶ የጊዜ ቆጣሪ_አ (ባዶ)

{

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 ማከማቻ

የሚመከር: