Top Banner
Embedded Programming for IoT and Robotics SPb ETU «LETI» MOEVM Kirill Krinkin Jul, 2017
83

Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Aug 19, 2018

Download

Documents

NguyenMinh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Embedded Programming for IoT and Robotics

SPb ETU «LETI» MOEVM

Kirill Krinkin

Jul, 2017

Page 2: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

School Topics

● Introduction into Embedded programming● Introduction into Linux System and Kernel

Programming● Robot Operating System I● Robot Operating System II

Page 3: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Embedded Programming for IoT and Robotics

Part I. Introduction into Embedded programming

Page 4: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Module 1.1 Intro

● A few questions for participants● Module overview● MCU vs CPU● Electrical engineering, recall● Controller connecting● Primitive I/O and

Page 5: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Questions

● Introduce yourself● Why do you participate?● Embedded experience?● С/С++, asm development experience?● AVR, Arduino other MCU experience?

Page 6: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Part.I Overview

● AVR, MSP-430* Architecture● Peripheral interfaces● Wiring[Arduino/Energia], asm programming

– Input/Output

– Sensors/actuators overview

– Interrupts

– Timers

– Communication protocols

● Schedule– 10.00 – 12.00 Theoretical part

– 13.00 – 15.00 Practical part

Page 7: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Micro controller Unit

https://cdn.mikroe.com/img/legacy/publication/pic-books/programming-in-c/chapter/01/fig0-1.gif

Page 8: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MCU vs МPU (CPU)

(с) А. Большев, ЛЭТИ

Page 9: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Ohm`s law, and consequences

IU R

Page 10: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MCU Connecting (1)

● Ohm`s law● Grounding ● No free contacts

Page 11: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MCU Connecting (2)

(с) https://edugalaxy.intel.ru

Page 12: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Trivial I/O (1)

Page 13: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Trivial I/O (2)

Page 14: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino

Page 15: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

In this module

● AVR MCU● Arduino boards● Wiring и Arduino IDE overview● Simple Circuits ● I/O programming● Peripheral devices overview

Page 16: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

AVR

● AVR is a family of microcontrollers developed by Atmel beginning in 1996

● modified Harvard architecture ● 8-bit RISC single-chip microcontrollers.

Page 17: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

AVR Architecture

Page 18: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino

Page 19: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino

Page 20: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Wiring, Arduino IDE

Page 21: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Terminology● Sketches (programms)● Libraries● Boards● Serial Monitor

Page 22: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Programm structure

https://www.arduino.cc/en/Reference/HomePagehttp://www.nongnu.org/avr-libc/user-manual/index.html

Libraries

Global definitions and

functions

Busy loop

Initialization

Page 23: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Digital I/O

Page 24: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Analog I/O

● A/D Converter 10bit● Frequency <=10KHz

Page 25: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Peripheral devices overview

Page 26: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Breadboards

Page 27: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Breadboards

Page 28: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Breadboards

Page 29: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

AVR toolchain. AVR-Libc. Bootloader.Timers. Interrupts.

Page 30: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Module overview

● Arduino IDE, under the hood● Fuses● Bootloader● Timers● Interrupts

Page 31: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino IDE, under the hood (1)

● cat /usr/share/arduino/hardware/arduino/cores/arduino/main.cpp

Page 32: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Upload...

MySketch.inoMySketch.inoMySketch.ino

MySketch.inoMySketch.inoArduino.h

Arduino IDE,Preprocessor gcc avrdude

Sketch folder

core/arduino

Bootloader

Flash memory

US

B S

eria

l

Page 33: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Serial Downloading

Page 34: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Serial Peripheral Interface (SPI)

Page 35: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Fuse bytes (1)

Page 36: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Fuse bytes (2)

Page 37: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

In-System Programming (ISP)

● JTAG – protocol/interface for in-system programming

● Programmer (HW) – an electronic equipment that configures programmable non-volatile integrated circuits (called programmable devices)

● bootloader – a computer program that loads an operating system (OS) or runtime environment for the computer after completion of the self-tests

Page 38: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

External interrupts

Page 39: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Timer interrupts

Page 40: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Installation gcc-avr

● apt-get install– gcc-avr - GNU C compiler (cross compiler for avr)

– avra - assembler for Atmel AVR microcontrollers

– gdb-avr - GNU Debugger for avr

– avrdude - software for programming Atmel AVR

– simulavr - Atmel AVR simulator

Page 41: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Firmware building and uploading

Page 42: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Useful links

● http://www.nongnu.org/avr-libc

● S.Monk Programming Arduino. Next Steps

● https://www.arduino.cc/en/hacking/bootloader

● http://www.atmel.com/webdoc/avrlibcreferencemanual/

● http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf

● https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader

● http://chipenable.ru/index.php/programming-avr/item/140-bootloader-avr-xmega.html

● http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf

Page 43: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

AVR Architecture and assembler.

Page 44: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Pin-outs

Page 45: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Memory

Page 46: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Status register

I – global interrupt enableT – bit copy storageH – half carry flagS – sign bitN – negative flagZ – zero flagC – carry flag

Page 47: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

General Purpose Registers

Page 48: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Data memory map

Page 49: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Stack register

Page 50: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Stack instructions

Page 51: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Ports

Page 52: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

PORTB, DDRB

Page 53: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino Uno Reference Design

Page 54: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino Uno Reference Design

Page 55: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino Uno Reference Design

Page 56: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Program structure

● Definitions● Initialization● Busy loop● Functions (wait)

Page 57: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Definitions

Page 58: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Initialization

Page 59: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Buzy loop

Page 60: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

wait

Page 61: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Useful links

● http://www.instructables.com/id/Command-Line-Assembly-Language-Programming-for-Ard/

● http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

● http://www.atmel.com/images/atmel-0856-avr-instruction-set-manual.pdf

● http://www.avr-tutorials.com/general/avr-microcontroller-stack-operation-and-stack-pointer

● http://www.avr-asm-tutorial.net/avr_en/beginner/SRAM.html

● https://www.cypherpunk.at/2014/09/native-assembler-programming-on-arduino/

● http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_directives.html

● https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

Page 62: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Serial interfaces

Page 63: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

I2C (Two Wire Iface, TWI)

● Inter-Integrated Circuit

V dd

SDASCL

R p

CμMaster

CμSlaveSlave

ADCSlaveDAC

Page 64: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

I2C – data transfer

● SDA – Serial Data● SCL – Serial Clock

SDA

SCL

start

Sending 1st bit

receiving 1st bitstop

Level holding

Page 65: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino I2C

Page 66: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Wire

Page 67: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

I2C Master Write

Page 68: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

I2C Slave Read

Page 69: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino to Arduino

Page 70: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Universal asynchronous receiver/transmitter (UART)

● Speed: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 baud

● Signal levels could be different:

https://www.sparkfun.com/tutorials/215

Page 71: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Arduino SoftwareSerial

Page 72: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

UART Arduino-to-Arduino

Page 73: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Useful links

● Simon Monk. Programming Arduino Next Steps. ● https://www.arduino.cc

Page 74: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MSP-430 Overview

Page 75: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MSP-430*

*) Ohio State University ECE 3561 slides have been used

Page 76: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

The MSP430

● A von-Neumann style architecture● Key features

– Ultralow-power architecture● 0.1 uA RAM rentention● 0.8 uA real-time clock mode● 250 uA/MIPS active

– High-performance A-to-D conversion● 12-bit or 10-bit ADC, 12-bit dual-DAC● 200 ksps

– 16-bit RISC processor features● Large Register file● Compact code design● 27 core instructions● 7 addressing modes

ECE 3561 - Lecture 1 76

Page 77: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

The MSP430

● Block Diagram of internal structure – high level

ECE 3561 - Lecture 1 77

Page 78: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

MSP430

● Memory structure – logical● 16-bit addressable

– 64K bytes (64KB)● Amount of Flash/ROM

and RAM vary by device

● Last 16 words of Flash/ROM used for the Interrupt Vector Table

● I/O is memory mapped

ECE 3561 - Lecture 1 78

Page 79: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Memory data organization

● Bytes can be at even or odd addresses

● Words are only at even addresses– The low byte of a word is

at the even address.– The high byte of a word is

at the odd address

ECE 3561 - Lecture 1 79

Page 80: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

The MSP430 CPU

● Incorporates features to support modern programming techniques (Don’t need go to’s)

● The features– Calculated branching– Table processing– 27 RISC instructions– 7 addressing modes– All instructions use all the addressing modes– Full register access– Single cycle register operations (RISC)– Direct memory-to-memory transfers– Constant generator provides most used values

ECE 3561 - Lecture 1 80

Page 81: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

The MSP430 data path

● There are 16 registers– Contents are 16-bits– User has access to all registers– 4 registers are special purpose

● Note bus structure– MDB – Memory Data Bus– MAB – Memory Address Bus– Also have 2 internal bussed to deliver 2

operand to ALU● Diagram is called the datapath of the

processor ● See Users Guide

ECE 3561 - Lecture 1 81

Page 82: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

General purpose registers

● R4 thru R15– Registers are indistinguishable– Can be used as

● Data Registers● Address Registers● Index values

– Can be accessed with byte or word instructions

ECE 3561 - Lecture 1 82

Page 83: Embedded Programming for IoT and Robotics - …se.moevm.info/lib/exe/fetch.php/start:1.embedded.pdf · 8PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf ... ... 12-bit dual-DAC

Energia IDE