77 lines
2.7 KiB
C
Executable File
77 lines
2.7 KiB
C
Executable File
// programma labd2.c
|
|
|
|
#include <msp430x20x3.h>
|
|
volatile unsigned int cnt = 0; //izveidojam globalo mainigo skititajam
|
|
|
|
void main (void)
|
|
{
|
|
|
|
WDTCTL = WDTPW+WDTHOLD; // apturam WDT
|
|
P1DIR=0x01; // P1.0 bus izeja
|
|
|
|
/////////////////// DCO parslegsana uz kalibretam vertibam.
|
|
//13.punkts - 1MHz; 17.punkts - 12 MHz frekvenci
|
|
DCOCTL = 0;
|
|
BCSCTL1 = CALBC1_12MHZ;
|
|
DCOCTL = CALDCO_12MHZ;
|
|
//////////////////////////////////////////
|
|
|
|
BCSCTL3 |= LFXT1S_2; // Signala avots VLOCLK 5.1. punkts
|
|
|
|
/////////////////// Cilpas cikls gaidisanai lai stabilizejas oscilators
|
|
for (;;)
|
|
{
|
|
IFG1 &= ~OFIFG; // Izdzesam Osc Fault partraukuma karodzinu
|
|
__delay_cycles(60); // Gaidam 60 ciklus
|
|
if ( (IFG1 & OFIFG) == 0 ) // Parbaudam karodzinus
|
|
break; // izejam no cilpas cikla
|
|
}
|
|
//////////////////////////////////////////
|
|
|
|
BCSCTL2 |= SELM_3; // Izvelamies MCLK signala avotu, lai butu LFTX1 oscillator
|
|
//BCSCTL2 |= SELS; // Izvelamies MCLK signala avotu, lai butu LFXT1; Atslegts, lai pieslegt DCO -13.punkts
|
|
|
|
/////////////////// Taimer A konfiguresana
|
|
CCR0 = 62500;
|
|
//TACTL = TAIE + TACLR + TASSEL_1 + MC_1; // 8.punkts TaimerA partraukumu atlausana + nodzes TAR + ACLK + up_mode
|
|
TACTL = TAIE + TACLR + TASSEL_2 + MC_1 + ID_3; // 14.punkts (ieprieksejo rindinu atsl.) TaimerA partraukumu atlausana + nodzes TAR + SMCLK + up_mode + ieejas dalitajs f/8
|
|
//////////////////////////////////////////
|
|
|
|
_enable_interrupts(); //Atlaut maskejamos partraukumus
|
|
|
|
/////////////////// Programmas galvenais cikls
|
|
// Lidz 12.punktam
|
|
// Pec 12.punkta iznemam darbibu ar LED'u
|
|
while(1)
|
|
{
|
|
// volatile unsigned int i; //iekomentets pec 12.punkta
|
|
// P1OUT^=0x01; // invertējam izeju //iekomentets pec 12.punkta
|
|
// i=500; // sagatavojam aizturi //iekomentets pec 12.punkta
|
|
// while(i) //iekomentets pec 12.punkta
|
|
// { //iekomentets pec 12.punkta
|
|
// i--; // aizture //iekomentets pec 12.punkta
|
|
}
|
|
// } //iekomentets pec 12.punkta
|
|
}
|
|
////////////////////////////////////////
|
|
|
|
///////////////////// Taimera partraukuma apstrades funkcija
|
|
//Nokopets no 9.punkta
|
|
#pragma vector = TIMERA1_VECTOR;
|
|
interrupt void myTimer(void)
|
|
{
|
|
if(TAIV==10) // overflow
|
|
// Taimera parpildisanas TAR == TACCR0
|
|
{
|
|
cnt++; //skaititaja vertibas unarais inkrements //Pielikts sakot ar 13.punktu
|
|
if (cnt == 12) //salidzinam vertibu //Pielikts sakot ar 13.punktu
|
|
{ //Pielikts sakot ar 13.punktu
|
|
P1OUT^=0x01; //parsledzam LED
|
|
cnt = 0; // nonullejam skatitaju //Pielikts sakot ar 13.punktu
|
|
} //Pielikts sakot ar 13.punktu
|
|
}
|
|
}
|
|
////////////////////////////////////////
|
|
|
|
|