The hal-avr0-rtc is a lightweight hardware abstraction library for AVR0 microcontrollers. It provides a clean interface for rtc clock initialization while hiding direct register-level interaction from higher software layers. The library is intended for projects that want to separate low-level device startup code from application logic and establish a small, reusable system layer for AVR0 targets.
RTCclock configuration for AVR0 devices.- Encapsulation of low-level register access.
- Compact and reusable API for embedded projects.
- Foundation for layered HAL architectures.
The
hal-avr0-rtclibrary reduces coupling by providing a focused interface for essential system services. This improves portability inside a project, keeps startup code organized, and makes higher-level modules easier to maintain.
hal/
└── avr0/
└── rtc/
├── rtc.c
└── rtc.h
The library can be downloaded (zip or tar), cloned or used as submodule in a project.
| Type | File | Description |
|---|---|---|
| Library | zip / tar | AVR0 rtc library |
mkdir -p ./hal/avr0
git clone https://github.com/0x007E/hal-avr0-rtc.git ./hal/avr0
mv ./hal/avr0/hal-avr0-rtc ./hal/avr0/rtcgit submodule add https://github.com/0x007E/hal-avr0-rtc.git ./hal/avr0/rtcAdditional parameters like system clock selection and prescaler can be setup in the header file. A user friendly description can be found here.
#include <avr/io.h>
#include <avr/interrupt.h>
#include "../hal/avr0/rtc/rtc.h"
ISR(RTC_CNT_vect)
{
RTC.INTFLAGS = RTC_OVF_bm;
}
int main(void)
{
rtc_init();
sei();
while(1) { }
}With standard settings (
F_CPU@20MHz, presacler/1and overflow0x21) thertcticks around~1ms. More details can be found in this blog entry.
| Type | Link | Description |
|---|---|---|
| AVR0-Series | megaAVR® 0-series family datasheet |
R. GAECHTER
