/TinySuite

A collection of utilities for ATTiny85

Primary LanguageC++MIT LicenseMIT

TinySuite

A collection of utilities for ATTiny85.

Pin change interrupt

The implementation of ATTiny85 port B pin change interrupt handler.

This header exposes an object PinChangeB of class TinyPinChange.

External interrupt

The implementation of ATTiny85 external interrupt handler.

This header exposes an object ExternalInterrupt0 of class TinyExternalInterrupt.

Example

Timer interrupt

The implementation of ATTiny85 Timer0 "on compare" interrupt handler.

This header exposes an object Timer0Compare of class TinyTimer.

The implementation of ATTiny85 Timer0 "on overflow" interrupt handler.

This header exposes an object Timer0Overflow of class TinyTimer.

The implementation of ATTiny85 Timer1 "on compare" interrupt handler.

This header exposes an object Timer1Compare of class TinyTimer.

The implementation of ATTiny85 Timer1 "on overflow" interrupt handler.

This header exposes an object Timer1Overflow of class TinyTimer.

Example

Watchdog interrupt

The implementation of ATTiny85 Watchdog controller.

This header exposes an object Watchdog of class TinyWatchdog.

Example

Utilities

A set of shortcut defines to put the ATTiny85 in sleep mode. PRR and ADCSRA are intact.

This header exposes:

Name Description
sleep(mode) Set the specified mode and sleep.
deepSleep Set power down mode, disable BOD, and sleep.
idleSleep Set idle mode and sleep.

The 16-byte ring buffer implementation. This implementation does not perform any validation (i.e. it is possible to "get" when "empty" and "put" when "full"), the caller is expected to maintain the buffer consistency.

This header exposes the class TinyBuffer.

UART

The implementation of UART protocol:

  • 8-bit value transmission
  • one start and one stop bit, no parity bit
  • no overrun / underrun / break detection

Features:

  • 16-byte input and 16-byte output buffers
  • full duplex transmission
  • up to 19200 baud at 16 MHz internal oscillator
  • can use any pins for RX and TX
  • can use Timer0 or Timer1
  • RX and TX are the IDs from the board definition (i.e. PB0)

This header exposes an object uart of class TinyUart.

Example

The implementation of receive-only UART.

This header exposes an object uartReader of class TinyUartReader.

Example

The implementation of transmit-only UART.

This header exposes an object uartWriter of class TinyUartWriter.md.

Example

The implementation of UART using Stream interface (Stream.h) and Tiny UART (TinyUart.h) backend.

This header exposes the class TinySerial.

This class inherits from Stream. See Stream.h from Arduino for details.

Example

NMEA parser

The NMEA sentence delegating parser implementation.

Features:

  • checksum validation
  • sentence filtering by type
  • delegation of value extraction to provided parsers
  • orchestration of parsing

This header exposes

  • NmeaParser structure
  • TinyNmea class

Example

Known Problems

  • Timer0 and Timer1 may not work correctly with ATTinyCore because of the core-specific initialization.
  • UART has explicit dependency on port B registers, which makes it harder to use on other ATTinys.