avr-config

Crates.ioavr-config
lib.rsavr-config
version2.0.1
sourcesrc
created_at2020-07-25 10:35:12.390849
updated_at2021-02-01 13:03:03.243224
descriptionAn AVR foundational crate for retrieving details, such as the CPU clock frequency, at runtime
homepage
repositoryhttps://github.com/avr-rust/avr-config
max_upload_size
id269454
size8,399
Dylan McKay (dylanmckay)

documentation

https://docs.rs/avr-config

README

avr-config

Crates.io MIT licensed

A foundational crate for retrieving details, such as the CPU clock frequency, at runtime.

API Documentation

Usage

Add this to your Cargo.toml

avr-config = "1.0"

Features

Retrieving the CPU clock frequency

The CPU_FREQUENCY_HZ constant can be used to fetch the target clock frequency of the AVR. This corresponds to the $AVR_CPU_FREQUENCY_HZ environment variable that must be set when compiling this crate and crates that use it for AVR.

fn main() {
    let prescaler = avr_config::CPU_FREQUENCY_HZ / 16;
}

No part of the compiler toolchain itself understands or knows about the CPU frequency of the target device - this is a user-level concern that only affects user code (such as a busy wait delay loop for timed sleeping).

This crate is not strictly required for retrieving the clock frequency - any logic or environment variable will do. However, setting up the required clock frequency environment variables for all your dependent crates could be problematic if there are multiple ways of doing it, increasing the chance of forgetting one or getting into the situation where the frequencies are inconsistent and dependent crates execute at different speeds.

This crate aims to provide the boilerplate for getting the CPU frequency as an integer at runtime, as well as establishes a convention that $AVR_CPU_FREQUENCY_HZ is used to pass the target frequency to all AVR crates, if they opt-in to it.

Commit count: 21

cargo fmt