{"id":546,"date":"2019-11-28T20:36:27","date_gmt":"2019-11-28T19:36:27","guid":{"rendered":"https:\/\/ese.han.nl\/~ewout\/?page_id=546"},"modified":"2020-09-02T12:45:57","modified_gmt":"2020-09-02T11:45:57","slug":"uc-software-voorbeelden-voor-de-opdrachten-1-5","status":"publish","type":"page","link":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/","title":{"rendered":"UC Software voorbeelden voor de opdrachten 1-6 + Appendices"},"content":{"rendered":"\n<p>In onderstaande &#8220;snippets&#8221; staan de codevoorbeelden voor de microcontroller opdrachten.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Opdracht 1:<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Finding Documentation and Turning on an LED (#2)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#include &lt;avr\/io.h>\n\nint main(void)\n{\n    DDRB |= (1&lt;&lt;DDB5);\n    \n   \/* Let op dit is inderdaad een oneindige lus ! *\/\n    while(1)\n    {\n        \/\/ TODO: Please write your application code\n        \/\/ Set port B5\n        PORTB |= (1&lt;&lt;PORTB5);\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Finding Documentation and Turning on an LED (#2)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ 16 MHz\n#include &lt;avr\/io.h>\n#include &lt;util\/delay.h>\n\nint main(void)\n{\n    DDRB |= (1&lt;&lt;DDB5);\n    \n    while(1)\n    {\n        \/\/ TODO: Please write your application code\n        \/\/ Toggle port B5\n        PINB = (1&lt;&lt;PINB5);\n        \n        _delay_ms(500);\n    }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Opdracht 2:<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Read an I\/O as Input to Turn on LED (#4)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ 16 MHz\n\n#include &lt;avr\/io.h>\n#include &lt;util\/delay.h>\n\n#define LED_ON     PORTB |=  (1&lt;&lt;PORTB5)\n#define LED_OFF    PORTB &amp;= ~(1&lt;&lt;PORTB5)\n#define LED_TOGGLE PINB   =  (1&lt;&lt;PINB5)\n\nint main(void)\n{\n    DDRB |=  (1&lt;&lt;DDB5);\n    DDRB &amp;= ~(1&lt;&lt;DDB7);\n    \n    while(1)\n    {\n        \/\/ TODO: Please write your application code\n        if(!(PINB &amp; (1&lt;&lt;PINB7))) \/\/ If PINB7 is low\n        {\n            LED_ON;\n        }\n        else\n        {\n            LED_OFF;\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Using Pin Change Interrupts (#5)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ 16 MHz\n\n#include &lt;avr\/io.h>\n#include &lt;util\/delay.h>\n#include &lt;avr\/interrupt.h>\n\n#define LED_ON     PORTB |=  (1&lt;&lt;PORTB5)\n#define LED_OFF    PORTB &amp;= ~(1&lt;&lt;PORTB5)\n#define LED_TOGGLE PINB   =  (1&lt;&lt;PINB5)\n\n#define SWITCH_PRESSED !(PINB &amp; (1&lt;&lt;PINB7))\n\nISR(PCINT0_vect)\n{\n    if(SWITCH_PRESSED)\n    {\n        LED_ON;\n    }\n    else\n    {\n        LED_OFF;\n    }    \n}\n\nint main(void)\n{\n    DDRB |= (1&lt;&lt;DDB5);\n    DDRB &amp;= ~(1&lt;&lt;DDB7);\n    \n    PCMSK0 |= (1&lt;&lt;PCINT7);\n    PCICR  |= (1&lt;&lt;PCIE0);\n    \n    sei();\n    \n    while(1)\n    {\n        \/\/ TODO: Please write your application code\n    }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Opdracht 3:<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Using Timer Overflow IRQs (#7)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ 16 MHz\n\n#include &lt;avr\/io.h>\n#include &lt;util\/delay.h>\n#include &lt;avr\/interrupt.h>\n\n#define LED_ON     PORTB |=  (1&lt;&lt;PORTB5)\n#define LED_OFF    PORTB &amp;= ~(1&lt;&lt;PORTB5)\n#define LED_TOGGLE PINB   =  (1&lt;&lt;PINB5)\n\nISR(TIMER1_OVF_vect)\n{\n    LED_TOGGLE;\n}\n\nint main(void)\n{\n    DDRB |= (1&lt;&lt;DDB5);\n    DDRB &amp;= ~(1&lt;&lt;DDB7);\n\n    TCCR1B |= (1&lt;&lt;CS12);\n    TIMSK1 |= (1&lt;&lt;TOIE1);\n    \n    sei();\n    \n    while(1)\n    {\n        ; \/\/ Do nothing\n    }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Opdracht 4:<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\n * Getting Started with AVR: Using Timer Compare Match IRQs (#8)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ 16 MHz\n\n#include &lt;avr\/io.h>\n#include &lt;util\/delay.h>\n#include &lt;avr\/interrupt.h>\n\n#define LED_ON     PORTB |=  (1&lt;&lt;PORTB5)\n#define LED_OFF    PORTB &amp;= ~(1&lt;&lt;PORTB5)\n#define LED_TOGGLE PINB   =  (1&lt;&lt;PINB5)\n\nISR(TIMER1_COMPA_vect)\n{\n    LED_TOGGLE;\n}\n\nvoid Timer_Frequency(uint8_t freq)\n{\n    \/\/ Initialize Timer 1:\n    \/\/ - 256 prescaler\n    \/\/ - CTC mode of operation\n    TCCR1B |= (1&lt;&lt;CS12) | (1&lt;&lt;WGM12);\n    \n    \/\/ Enable output compare match interrupt for channel A\n    TIMSK1 |= (1&lt;&lt;OCIE1A);    \n    \n    \/\/ Set output compare value for channel A\n    \/\/ OCRnA = (F_CPU \/ (frequency * 2 * N)) - 1\n    OCR1A = (F_CPU \/ (freq * 2 * 256)) - 1;\n}\n\nint main(void)\n{\n    DDRB |= (1&lt;&lt;DDB5);\n    DDRB &amp;= ~(1&lt;&lt;DDB7);\n\n    Timer_Frequency(4);\n    \n    sei();\n    \n    while(1)\n    {\n        ; \/\/ Do nothing\n    }\n}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Opdracht 5:<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/*\t\n * Getting Started with AVR: Using the AVR USART to Loopback From a Serial Terminal\n * (#16)\n *\n * Initially created by Glen Nilsen\n * Revised for HAN University of Applied Sciences by Hugo Arends\n *\/\n\n#define F_CPU 16000000UL \/\/ Clock speed\n#define BAUD 9600\n#define MYUBRR (F_CPU\/16\/BAUD-1)\n\n#include &lt;avr\/io.h>\n\nunsigned char USART_Receive(void)\n{\n    \/\/ Wait for data to be received\n    while( !(UCSR0A &amp; (1&lt;&lt;RXC0)) )\n    {;}\n\n    \/\/ Get and return received data from buffer\n    return UDR0;\n}\n\nvoid USART_Transmit(unsigned char data)\n{\n    \/\/ Wait for empty transmit buffer\n    while( !( UCSR0A &amp; (1&lt;&lt;UDRE0)) )\n    {;}\n\n    \/\/ Put data into buffer, sends the data\n    UDR0 = data;\n}\nvoid USART_Init(unsigned int ubrr)\n{\n    \/\/ Set baud rate\n    UBRR0H = (unsigned char)(ubrr>>8);\n    UBRR0L = (unsigned char)ubrr;\n\n    \/\/ Enable receiver and transmitter\n    UCSR0B = (1&lt;&lt;RXEN0)|(1&lt;&lt;TXEN0);\n\n    \/\/ Set frame format: 8 data, 1 stop bit\n    UCSR0C = (3&lt;&lt;UCSZ00);\n}\n\nint main(void)\n{\n    USART_Init(MYUBRR);\n    \n    \/\/ Replace with your application code\n    while(1) \n    {\n        USART_Transmit( USART_Receive() );\n    }\n}<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">    while(1) \n    {\n        unsigned char data;\n        \n        \/\/ Wait for a character from the USART\n        data = USART_Receive();\n        \n        \/\/ Echo the character\n        USART_Transmit(data);\n        \n        \/\/ Verify the received character\n        if(data == '1')\n        {\n            USART_Transmit('!');\n        }\n    }\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Appendix B : Uart interrupt voorbeeld.<\/h4>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\">\/**\n* \\file\n*\n* \\brief UART Interrupt example\n*\n* Copyright (C) 2016 Atmel Corporation. All rights reserved.\n* Modified by H. Arends for HAN University of Applied Sciences to support\n* the ATmega328P microcontroller for the MIC1 lab.\n*\n* \\page License\n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions are met:\n*\n* 1. Redistributions of source code must retain the above copyright notice,\n* this list of conditions and the following disclaimer.\n*\n* 2. Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation\n* and\/or other materials provided with the distribution.\n*\n* 3. The name of Atmel may not be used to endorse or promote products derived\n* from this software without specific prior written permission.\n*\n* 4. This software may only be redistributed and used in connection with an\n* Atmel microcontroller product.\n*\n* THIS SOFTWARE IS PROVIDED BY ATMEL \"AS IS\" AND ANY EXPRESS OR IMPLIED\n* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE\n* EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR\n* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\n* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,\n* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\n* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n* POSSIBILITY OF SUCH DAMAGE.\n*\n*\/\n\/*\n* Support and FAQ: visit\n* &lt;a href=\"http:\/\/www.atmel.com\/design-support\/\">Atmel Support&lt;\/a>\n*\/\n#include \"avr\/io.h\"\n#include \"avr\/interrupt.h\"\n\n#define F_CPU 16000000UL\n#include \"util\/delay.h\"\n\n#define BAUD 9600\n#define MYUBRR F_CPU\/16\/BAUD-1\n\n\/* UART Buffer Defines *\/\n#define UART_RX_BUFFER_SIZE 32 \/* 2,4,8,16,32,64,128 or 256 bytes *\/\n#define UART_TX_BUFFER_SIZE 32\n\n#define UART_RX_BUFFER_MASK (UART_RX_BUFFER_SIZE - 1)\n#if (UART_RX_BUFFER_SIZE &amp; UART_RX_BUFFER_MASK)\n    #error RX buffer size is not a power of 2\n#endif\n\n#define UART_TX_BUFFER_MASK (UART_TX_BUFFER_SIZE - 1)\n#if (UART_TX_BUFFER_SIZE &amp; UART_TX_BUFFER_MASK)\n    #error TX buffer size is not a power of 2\n#endif\n\n\/* Static Variables *\/\nstatic char UART_RxBuf[UART_RX_BUFFER_SIZE];\nstatic volatile char UART_RxHead;\nstatic volatile char UART_RxTail;\n\nstatic char UART_TxBuf[UART_TX_BUFFER_SIZE];\nstatic volatile char UART_TxHead;\nstatic volatile char UART_TxTail;\n\n\/* Prototypes *\/\nvoid InitUART(unsigned int ubrr_val);\nchar ReceiveByte(void);\nvoid TransmitByte(char data);\nunsigned char nUnreadBytes(void);\nvoid ReceiveString(char *str);\nvoid TransmitString(char *str);\n\nint main(void)\n{\n    \/* Initialize the UART *\/\n    InitUART(MYUBRR);\n    sei();\n    \n    while(1)\n    {\n        \/\/ CPU is busy doing something else...\n        _delay_ms(1000);\n        \n        \/\/ Check for unread bytes in the receive buffer\n        unsigned char nBytes = nUnreadBytes();\n        \n        \/\/ If there are unread bytes, receive them all and echo back\n        \/\/ (Note: Make sure LF is enabled in Terminal Window)\n        if(nBytes > 0)\n        {\n            char str[30];\n            ReceiveString(str);\n            TransmitString(str);\n        }\n    }\n\n    return 0;\n}\n\n\/* Initialize UART *\/\nvoid InitUART(unsigned int ubrr_val)\n{\n    char x;\n    \n    \/* Set the baud rate *\/\n    UBRR0H = (unsigned char)(ubrr_val>>8);\n    UBRR0L = (unsigned char)ubrr_val;\n    \n    \/* Enable UART receiver and transmitter *\/\n    UCSR0B = ((1&lt;&lt;RXEN0) | (1&lt;&lt;TXEN0) | (1&lt;&lt;RXCIE0));\n    \n    \/* Flush receive buffer *\/\n    x = 0;\n    UART_RxTail = x;\n    UART_RxHead = x;\n    UART_TxTail = x;\n    UART_TxHead = x;\n}\n\n\/* Interrupt handlers *\/\nISR(USART_RX_vect)\n{\n    char data;\n    unsigned char tmphead;\n    \n    \/* Read the received data *\/\n    data = UDR0;\n    \n    \/* Calculate buffer index *\/\n    tmphead = (UART_RxHead + 1) &amp; UART_RX_BUFFER_MASK;\n    \n    \/* Store new index *\/\n    UART_RxHead = tmphead;\n    \n    if (tmphead == UART_RxTail)\n    {\n        \/* ERROR! Receive buffer overflow *\/\n    }\n    \n    \/* Store received data in buffer *\/\n    UART_RxBuf[tmphead] = data;\n}\n\nISR(USART_UDRE_vect)\n{\n    unsigned char tmptail;\n    \n    \/* Check if all data is transmitted *\/\n    if (UART_TxHead != UART_TxTail)\n    {\n        \/* Calculate buffer index *\/\n        tmptail = ( UART_TxTail + 1 ) &amp; UART_TX_BUFFER_MASK;\n        \n        \/* Store new index *\/\n        UART_TxTail = tmptail;\n        \n        \/* Start transmission *\/\n        UDR0 = UART_TxBuf[tmptail];\n    }\n    else\n    {\n        \/* Disable UDRE interrupt *\/\n        UCSR0B &amp;= ~(1&lt;&lt;UDRIE0);\n    }\n}\n\nchar ReceiveByte(void)\n{\n    unsigned char tmptail;\n    \n    \/* Wait for incoming data *\/\n    while (UART_RxHead == UART_RxTail);\n    \n    \/* Calculate buffer index *\/\n    tmptail = (UART_RxTail + 1) &amp; UART_RX_BUFFER_MASK;\n    \n    \/* Store new index *\/\n    UART_RxTail = tmptail;\n    \n    \/* Return data *\/\n    return UART_RxBuf[tmptail];\n}\n\nvoid TransmitByte(char data)\n{\n    unsigned char tmphead;\n    \n    \/* Calculate buffer index *\/\n    tmphead = (UART_TxHead + 1) &amp; UART_TX_BUFFER_MASK;\n    \n    \/* Wait for free space in buffer *\/\n    while (tmphead == UART_TxTail);\n    \n    \/* Store data in buffer *\/\n    UART_TxBuf[tmphead] = data;\n    \n    \/* Store new index *\/\n    UART_TxHead = tmphead;\n    \n    \/* Enable UDRE interrupt *\/\n    UCSR0B |= (1&lt;&lt;UDRIE0);\n}\n\n\/*\n * This function returns the number of unread bytes in the receive buffer\n *\/\nunsigned char nUnreadBytes(void)\n{\n    if(UART_RxHead == UART_RxTail)\n        return 0;\n    else if(UART_RxHead > UART_RxTail)\n        return UART_RxHead - UART_RxTail;\n    else\n        return UART_RX_BUFFER_SIZE - UART_RxTail + UART_RxHead;\n}\n\n\/*\n * This function gets a string of characters from the USART.\n * The string is placed in the array pointed to by str.\n *\n * - This function uses the function ReceiveByte() to get a byte\n *   from the UART.\n * - If the received byte is equal to '\\n' (Line Feed),\n *   the function returns.\n * - The array is terminated with \u00b4\\0\u00b4.\n *\/\nvoid ReceiveString(char *str)\n{\n    uint8_t t = 0;\n    \n    while ((str[t] = ReceiveByte()) != '\\n')\n    {\n        t++;\n    }\n    str[t++] = '\\n';\n    str[t] = '\\0';\n}\n\n\/*\n * Transmits a string of characters to the USART.\n * The string must be terminated with '\\0'.\n *\n * - This function uses the function TransmitByte() to\n *   transmit a byte via the UART\n * - Bytes are transmitted until the terminator\n *   character '\\0' is detected. Then the function returns.\n *\/\nvoid TransmitString(char *str)\n{\n    while(*str)\n    {\n        TransmitByte(*str++);\n    }\n}\n<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-sentidoweb-snippet\"><code class=\"\"><\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>In onderstaande &#8220;snippets&#8221; staan de codevoorbeelden voor de microcontroller opdrachten. Opdracht 1: Opdracht 2: Opdracht 3: Opdracht 4: Opdracht 5: Appendix B : Uart interrupt voorbeeld.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":310,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-546","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering\" \/>\n<meta property=\"og:description\" content=\"In onderstaande &#8220;snippets&#8221; staan de codevoorbeelden voor de microcontroller opdrachten. Opdracht 1: Opdracht 2: Opdracht 3: Opdracht 4: Opdracht 5: Appendix B : Uart interrupt voorbeeld.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/\" \/>\n<meta property=\"og:site_name\" content=\"Ewout Boks docent bij HAN Embedded Systems Engineering\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-02T11:45:57+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/\",\"url\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/\",\"name\":\"UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering\",\"isPartOf\":{\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#website\"},\"datePublished\":\"2019-11-28T19:36:27+00:00\",\"dateModified\":\"2020-09-02T11:45:57+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ese.han.nl\/~ewout\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cursussen\",\"item\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Inleiding Microcontrollers (INMC en UC)\",\"item\":\"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"UC Software voorbeelden voor de opdrachten 1-6 + Appendices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#website\",\"url\":\"https:\/\/ese.han.nl\/~ewout\/\",\"name\":\"Ewout Boks docent bij HAN Embedded Systems Engineering\",\"description\":\"Embedded Systems Engineering is cool!\",\"publisher\":{\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/7b0b80675d2cb00a4e71abc861501d43\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ese.han.nl\/~ewout\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/7b0b80675d2cb00a4e71abc861501d43\",\"name\":\"Ewout Boks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc9d5dc287f3fd614c302c8afa4da4b7?s=96&d=retro&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc9d5dc287f3fd614c302c8afa4da4b7?s=96&d=retro&r=g\",\"caption\":\"Ewout Boks\"},\"logo\":{\"@id\":\"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.boks.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/","og_locale":"nl_NL","og_type":"article","og_title":"UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering","og_description":"In onderstaande &#8220;snippets&#8221; staan de codevoorbeelden voor de microcontroller opdrachten. Opdracht 1: Opdracht 2: Opdracht 3: Opdracht 4: Opdracht 5: Appendix B : Uart interrupt voorbeeld.","og_url":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/","og_site_name":"Ewout Boks docent bij HAN Embedded Systems Engineering","article_modified_time":"2020-09-02T11:45:57+00:00","twitter_card":"summary_large_image","twitter_misc":{"Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/","url":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/","name":"UC Software voorbeelden voor de opdrachten 1-6 + Appendices - Ewout Boks docent bij HAN Embedded Systems Engineering","isPartOf":{"@id":"https:\/\/ese.han.nl\/~ewout\/#website"},"datePublished":"2019-11-28T19:36:27+00:00","dateModified":"2020-09-02T11:45:57+00:00","breadcrumb":{"@id":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/uc-software-voorbeelden-voor-de-opdrachten-1-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ese.han.nl\/~ewout\/"},{"@type":"ListItem","position":2,"name":"Cursussen","item":"https:\/\/ese.han.nl\/~ewout\/vakken\/"},{"@type":"ListItem","position":3,"name":"Inleiding Microcontrollers (INMC en UC)","item":"https:\/\/ese.han.nl\/~ewout\/vakken\/inleiding-microcontrollers-inmic-en-uc\/"},{"@type":"ListItem","position":4,"name":"UC Software voorbeelden voor de opdrachten 1-6 + Appendices"}]},{"@type":"WebSite","@id":"https:\/\/ese.han.nl\/~ewout\/#website","url":"https:\/\/ese.han.nl\/~ewout\/","name":"Ewout Boks docent bij HAN Embedded Systems Engineering","description":"Embedded Systems Engineering is cool!","publisher":{"@id":"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/7b0b80675d2cb00a4e71abc861501d43"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ese.han.nl\/~ewout\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":["Person","Organization"],"@id":"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/7b0b80675d2cb00a4e71abc861501d43","name":"Ewout Boks","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc9d5dc287f3fd614c302c8afa4da4b7?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc9d5dc287f3fd614c302c8afa4da4b7?s=96&d=retro&r=g","caption":"Ewout Boks"},"logo":{"@id":"https:\/\/ese.han.nl\/~ewout\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.boks.com"]}]}},"_links":{"self":[{"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/pages\/546"}],"collection":[{"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/comments?post=546"}],"version-history":[{"count":7,"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/pages\/546\/revisions"}],"predecessor-version":[{"id":720,"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/pages\/546\/revisions\/720"}],"up":[{"embeddable":true,"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/pages\/310"}],"wp:attachment":[{"href":"https:\/\/ese.han.nl\/~ewout\/wp-json\/wp\/v2\/media?parent=546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}