-
Notifications
You must be signed in to change notification settings - Fork 0
2023_2024_deeltoets_2
Roy Bakker edited this page Apr 10, 2024
·
4 revisions
De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2023-2024_Deeltoets_2.pdf
#include <msp430.h>
// Vraag 1F
#pragma vector = ADC10_VECTOR
__interrupt void adc10isr(void)
{
int adc = ADC10MEM;
// 1023 * 1/3,3 = 310
if (adc >= 310)
{
P1OUT |= BIT2;
}
else
{
P1OUT &= ~BIT2;
}
// Vlag resetten niet nodig.
}
// Vraag 1D
#pragma vector = TIMER0_A1_VECTOR
__interrupt void ISR(void)
{
P1OUT ^= BIT1; // Led inverteren
TA0CTL &= ~TAIFG; // Vlag resetten
// Vraag 1F
ADC10CTL0 |= ADC10SC;
}
// Vraag 1C
int knop_is_ingedrukt(void)
{
return (P1IN & BIT3) == 0;
}
void zet_groene_led_aan(void)
{
P1OUT |= BIT0;
}
void zet_groene_led_uit(void)
{
P1OUT &= ~BIT0;
}
int main()
{
WDTCTL = WDTPW | WDTHOLD; // Stop de watchdog timer
// Vraag 1A
DCOCTL = 0;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
// Vraag 1B
P1DIR |= BIT0 | BIT1 | BIT2; // Pin 1.0, 1.1 en 1.2 output (LEDs)
P1DIR &= BIT3; // Pin 1.3 input (knopje)
P1REN |= BIT3; // Pin 1.3 weerstand aan
P1OUT |= BIT3; // Pull up op pin 1.3
P1OUT &= ~(BIT0 | BIT1 | BIT2) // leds uit
// Vraag 1D
// Timer_A0: SMCLK input, divider van /4, Up mode, Interrupt Enable
TA0CTL = TASSEL_2 | ID_2 | MC_1 | TAIE;
TA0CCR0 = 25000 - 1; // ((1000000 / 4) * 0.1) - 1
// Vraag 1E
// Analoge input pin 1.4, start met ADC10SC bit, SMCLK, clock divider /1
ADC10CTL1 = INCH_4 | SHS_0 | ADC10DIV_0 | ADC10SSEL_3;
// ADC Vref = Vcc, ADC10 sample-and-hold time = 64, Reference generator uit, ADC10ON, interrupt aan, ADC10SR mag aan maar hoeft niet
ADC10CTL0 = SREF_0 | ADC10SHT_3 | ADC10SR | ADC10ON | ADC10IE | ENC;
// Vraag 1D (maar ook nodig voor 1F)
__enable_interrupt();
// Vraag 1C
while (1)
{
if (knop_is_ingedrukt())
{
zet_groene_led_aan();
}
else
{
zet_groene_led_uit();
}
}
}De antwoorden op toetsvraag 2 kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2023-2024_Deeltoets_2_antwoorden.pdf