Skip to content

2018_2019_deeltoets_2

Harry Broeders edited this page Dec 30, 2022 · 5 revisions

2018-2019 Deeltoets 2

Opgaven

De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2018-2019_Deeltoets_2.pdf

Uitwerkingen

Toetsvraag 1

#include <msp430.h> 

// C
#pragma vector = TIMER0_A1_VECTOR
__interrupt void timer0_isr(void)
{
    P1OUT ^= BIT5;
    TA0CTL &= ~TAIFG; // reset TAIFG
}

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
// A
    P1DIR |= BIT5; // = mag ook
    P1OUT |= BIT5; // = mag ook
// B
    BCSCTL3 = LFXT1S_2;
    // LFXT1S_2 = Mode 2 for LFXT1 : VLO
    TA0CTL = TASSEL_1 | ID_2 | MC_1 | TAIE;
    // TASSEL_1 = Timer A clock source select: 1 - ACLK
    // ID_2 = Timer A input divider: 2 - /4
    // MC_1 = Timer A mode control: 1 - Up to CCR0
    TA0CCR0 = 749;
// C
    __enable_interrupt();
// D
    __low_power_mode_3();
    return 0;
}

Toetsvraag 1 Alternatieve oplossing

#include <msp430.h> 

// C
#pragma vector = TIMER0_A0_VECTOR
__interrupt void timer0_isr(void)
{
    P1OUT ^= BIT5;
    // TA0CCTL0 &= ~CCIFG; // flag CCIFG wordt automatisch gereset.
}

int main(void)
{
    WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
// A
    P1DIR |= BIT5; // = mag ook
    P1OUT |= BIT5; // = mag ook
// B
    BCSCTL3 = LFXT1S_2;
    // LFXT1S_2 = Mode 2 for LFXT1 : VLO
    TA0CTL = TASSEL_1 | ID_2 | MC_1;
    // TASSEL_1 = Timer A clock source select: 1 - ACLK
    // ID_2 = Timer A input divider: 2 - /4
    // MC_1 = Timer A mode control: 1 - Up to CCR0
    TA0CCR0 = 749;
    TA0CCTL0 = CCIE;
// C
    __enable_interrupt();
// D
    __low_power_mode_3();
    return 0;
}

The TACCR0 CCIFG flag is automatically reset when the TACCR0 interrupt request is serviced. Zie http://www.ti.com/lit/ug/slau144j/slau144j.pdf#page=367.

Toetsvraag 2 en 3

De antwoorden op toetsvraag 2 en 3 kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2018-2019_Deeltoets_2_antwoordblad.pdf

Clone this wiki locally