コンテンツにスキップ

Week 4 - Embedded Programming#

  • Authors: Kai Naito, Asako Okazaki, Kae Nagano, Yosuke Tsuchiya, Georg Tremmel
  • Created: 3/9/2019, Last Update: 2/14/2023

Note

In previous years, Embedded Programming was in Week 8. For 2023 the requirement and usage of MCUs changed.

Assignments#

Refer to Assessment page

Group assignment#

  • Compare the performance and development workflows for other architectures

Comment

Get different XIAOs and/or MicroMod with different processors. Use MicroBit, previous ATTiny dev boards. Programming of the board is necessary.

Individual Assignments#

  • Browse through the data sheet for your microcontroller
  • Program a microcontroller development board
    • to interact (with local input &/or output) and communicate (remotely)
  • Extra credit: use different languages &/or development environments

Browse through the data sheet for your microcontroller#

  • Find and browser through datasheet of your choosen processor.
  • Prove that you browsed through the datasheet by making screenshots, annotations and comments.

TODO: Example

Learning Outcomes#

  • Identify relevant information in a microcontroller data sheet.
  • Implement programming protocols.

Tip

Find something in the data sheet to is relevant to your final project. Maybe the MCU already has a build-in sensor that can be used?

Have you?#

  • Linked to the group assignment page
  • Documented what you learned from browsing through a microcontroller datasheet.
  • Programmed your board to interact and communicate
  • Described the programming process(es) you used
  • Included your source code
  • Included ‘hero shot(s)’

How to enjoy Individual assignment#

Programming environments for the ATtiny(TinyAVR) 1-series.#

Think is keep for historical reasons - and for students who want to work with the ATtinys. (ATtiny412, ATtiny1614, ATtiny3216)

Deep Dive: Programming the ATtiny with C

ATtiny (TinyAVR) 1-series C environment#

  • Download toolchain from Microchip site.

  • Download ATtiny_DFP atpack from Atmel ATtiny Series Device Support packs. 
    Change the file extention from .atpack to .zip, then unzip it.

  • Install python utility pyupdi. Refer to the software part of the document. tinyAVR 1-series

  • Write the path to ATtiny_DFP atpack at “PACK=” part of Makefile.

PROJECT=blinc_3216              # project name of your file, my C file is called 'blink_3216.c'
SOURCES=$(PROJECT).c
DEVICE = tiny3216               # Target Processor
MMCU=at$(DEVICE)
F_CPU = 20000000
PACK = /Users/georg/Documents/avr/Atmel.ATtiny_DFP.1.9.337      # Absolute Path to ATtiny Lib
PORT = /dev/tty.usbserial-D307OEPA                              # Serial Port or your Programmer, find with lsusb
BAUD = 57600

CFLAGS=-mmcu=$(MMCU) -Wall -Os -DF_CPU=$(F_CPU)

$(PROJECT).hex: $(PROJECT).out
    avr-objcopy -O ihex $(PROJECT).out $(PROJECT).hex;\
    avr-size --mcu=$(MMCU) --format=avr $(PROJECT).out

$(PROJECT).out: $(SOURCES)
    avr-gcc $(CFLAGS) -I./ -I$(PACK)/include -B$(PACK)/gcc/dev/$(MMCU) -o $(PROJECT).out $(SOURCES)

pyupdi: $(PROJECT).hex
    pyupdi -d $(DEVICE) -c $(PORT) -b $(BAUD) -v -f $(PROJECT).hex

Once your make file is configured, run the following command in your shell:

make -f hello.t412.3 .blink.make
make -f hello.412.3.blink.make pyupdi

This will upload the program to your MCU.

Programming the XIAO#

SeeedStudio’s family of XIAOs (小):

The XIAOs are also compatibly with SeeedStudio’s Grove connector system. For that you need either the - XIAO Development Board or the - XIAO Grove Extension Board

Tip

You don’t neede to the XIAOs and Grove sensor to make this week’s assignment. Any other board and sensors are ok.

Some Programming Ideas#

There is no need to program the code from scratch - but you need to write an original program. Let’s start by changing Neil’s code.

  • LED blinking cycle
  • LED blinking pattern
  • LED lighting by PWM
  • Mode transition by button (e.g. LED blinking pattern)
  • Mode transition by text input (based on echo program)
  • LED blink by interrupt by button
  • Button ON turns LED ON, Button OFF turns LED OFF
  • Button ON switches STATE of LED (fron ON to OFF, and from OFF to ON)
  • Measure time between BUTTON Pushes, blink LED according to that time

Interesting examples unique to microcomputers

  • hello.t412.blink.ino
    Neil is comparing the speed of LED ON/OFF by the usual Arduino DigitalWrite and bit operation.

  • ring.t412.ino

  • ring.ESP32.ino
    Directly connect the output pin and input pin to oscillate, and measure the performance of the microcontroller from its frequency. >> GPIO test

  • hello.ftdi.44.echo.c
    Sample codes that are commonly used on each board. Wait in a loop until serial_pin_in goes low, then detect start bit and start communication.

  • hello.ftdi.44.echo.interrupt.c
    echo program using serial_pin_in pin change interrupt.

Local Recitation : AVR C Programming / Make file#

AVR C Programming Reference#


How to enjoy Group assignment#

Try your favorite board from the list below. If you have a board that you want to use in your final project, this is a great opportunity to try it out.

FabAcademy Boards#

Other Boards#


Announcements#

  • Prepare Final project page.
  • Short videos should be compressed and put into a repository without using external services.
  • Start Nueval

Nueval (evaluation system)#

Cut off date will be scheduled. Current plan is as follows.

  • June 29 Local evaluation to Global evaluation
  • July 13 Global evaluation to Student
  • July 27 final deadline to finish 2022 Cycle

Recitation#

3/14 Programming Recitation



Support Documents#


Class Video (recorded)#