Wiki
EMS10 / 2023_2024_deeltoets_2
2023-2024 Deeltoets 2
Opgaven
De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2023-2024_Deeltoets_2.pdf
Uitwerkingen
Toetsvraag 1
#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(); } } }
Toetsvraag 2
De antwoorden op toetsvraag 2 kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2023-2024_Deeltoets_2_antwoorden.pdf
Updated