-
Notifications
You must be signed in to change notification settings - Fork 0
2022_2023_deeltoets_2
Harry Broeders edited this page Apr 4, 2023
·
1 revision
De opgaven kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2022-2023_Deeltoets_2.pdf
#include <msp430.h>
// Vraag 1D
#pragma vector = TIMER1_A1_VECTOR
__interrupt void ISR(void)
{
// Vraag 1E
if ((P1IN & BIT6) != 0)
{
P1OUT ^= BIT0;
}
TA1CTL &= ~TAIFG;
}
int main()
{
WDTCTL = WDTPW | WDTHOLD; // Stop de watchdog timer
// Vraag 1A
DCOCTL = 0;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
// Vraag 1B
P1DIR |= BIT7;
P1OUT |= BIT7;
// Vraag 1C
P1DIR &= ~BIT6;
P1REN |= BIT6;
P1OUT |= BIT6;
while ((P1IN & BIT6) != 0)
{
// wacht tot knop wordt ingedrukt
}
P1OUT &= ~BIT7;
// pas op P1OUT = 0 gaat niet goed omdat dan de pull-up wordt verwijderd, dat geeft problemen bij vraag 1E
// Vraag 1D
P1DIR |= BIT0;
TA1CTL = TASSEL_2 | ID_3 | MC_1 | TAIE;
TA1CCR0 = 31249; // ((1000000 / 8) * 0.25) - 1
__enable_interrupt();
// Vraag 2A
// We volgen de instructies uit de Family User's Guide paragraaf 15.3.1.
// 1. Set UCSWRST
UCA0CTL1 |= UCSWRST;
// 2. Initialize all USCI registers with UCSWRST = 1 (including UCAxCTL1)
// Parity disabled, LSB first, 8-bit data, One stop bit, UART mode, Asynchronous mode
UCA0CTL0 = 0;
// USCI clock source select = SMCLK
UCA0CTL1 = UCSSEL_2 | UCSWRST;
// Baudrate = 19200 zie paragraaf 15.3.13 in Family User's Guide.
// Oversampling mode enabled
UCA0BR0 = 3;
UCA0BR1 = 0;
UCA0MCTL = UCBRS_0 | UCBRF_4 | UCOS16;
// 3. Configure ports.
P1SEL |= BIT2 | BIT1;
P1SEL2 |= BIT2 | BIT1;
// 4. Clear UCSWRST via software
UCA0CTL1 &= ~UCSWRST;
while (1)
{
while ((IFG2 & UCA0RXIFG) == 0)
{
// wacht op ontvangst karakter
}
char c = UCA0RXBUF;
if (c == 'A')
{
P1OUT |= BIT7;
}
else if (c == 'U')
{
P1OUT &= ~BIT7;
}
}
}De antwoorden op toetsvraag 3 kun je vinden op: https://bitbucket.org/HR_ELEKTRO/ems10/wiki/Toetsen/2022-2023_Deeltoets_2_antwoorden.pdf