Skip to content

Commit

Permalink
add exercise intro draft
Browse files Browse the repository at this point in the history
  • Loading branch information
Mirabellensaft committed Feb 21, 2023
1 parent 3afc29c commit c1825d1
Showing 1 changed file with 34 additions and 23 deletions.
57 changes: 34 additions & 23 deletions embedded-workshop-book/src/bsc-exercise.md
Original file line number Diff line number Diff line change
@@ -1,37 +1,48 @@
# BSC Exercise

In this exercise you will learn how to write a board support crate.
The bsc template will already contain the led and timer implementation.
The radio and USB/Power implementations will be deleted, because that just takes up unnecessary space and adds to confusion.
The template will already contain the LED and timer implementation.

Note: Introduction to the exercise is a guided tour through the template and running the hello example.


## Learning goals
* implement buttons functionality
* uarte implementation
* impl blocks, associated functions, methods
* UARTE implementation
* `impl` blocks, associated functions, methods
* generate docs!

## Prerequesits

*
## Tasks
* Write a button implementation. This entails the following steps
* `struct Buttons` with 4 fields, that represents each of the four buttons
* `struct Button` that is a wrapper for the pin that a single button is connected to
* a method `is_pushed` that checks if a single button is pushed.
* initialize the pins in `fn init()`
* add the `struct Button` to the definition and instantiation of `struct Board`.
* Run `apps/buttons.rs` to test.
* Write a UARTE implementation.

## Knowledge

## Representation of Peripherals
The boards peripherals are represented as nested structs. The `struct Board` contains fields that represent single peripherals or groups of peripherals as structs, which in turn either contain a field of the single peripheral or ...

You have to add structs to represent the buttons and the UARTE peripheral to the board struct.

## Comments


## impl blocks

## visibility of structs, fields and functions: the pub keyword


## Hardware documentation for pin configuration

## Steps
### Write a button implementation
* add field in the board struct
* add struct for all buttons
* add struct for the single button

* Read docs, section 8.7 for info about pins and pin configuration
* add button bring up to board init

* add doc lines every where!
* add methods in impl block:
* detect button push
* debounce button function? like in knurling session, requires implementation of a second timer, just for this?

### Write Uarte implementation
* add field to the board struct
* add struct for the instance, how to figure out what the type of the inner field is
* create instance in init, add baudrate, parity etc.
* add to instantiation of board struct
* impl fmt::Write for the Uarte struct, simple write does not work because of dma
* example code with button is not a good idea for the simple button implementation.

I think this is plenty for an hour.

0 comments on commit c1825d1

Please sign in to comment.