Blueprint

ATWatch

a watch based on the ATTiny85 alongside an ssd1306. meant as a exercise for me on working with limited sys requirements, thus requiring low level programming (AVR) which i've worked on already

23 views

0 followers

ghost of ttf ghost of ttf 🚀 added to the journal ago

Schematic + Software Improvements

Schematic

I created the schematic for the watch in KiCad. Its fairly simple, tho i did try and make it better than my usual messes. The components are fairly simple, just

  • ATTiny85
  • SSD1306
  • DS1307

One unfortunate thing was that some genius made the only external interrupt the same as SCL, meaning i'll have to use a inferior digital interrupt for the SQW output
image.png

Software

I added multi font rendering and a software face to the library. this was surprisingly difficult as there's a different method for rendering large fonts, which takes place in two parts, but it now should have support for most fonts. I also added a stopwatch based on interrupts instead of busy waiting even though there wasn't really a need.
image.png
ignore the yakult stand

ghost of ttf ghost of ttf 🚀 added to the journal ago

Initial Firmware w/o Arduino STL

The Problem w/ Arduino STL

Look, the Arduino Libraries (henceforth referred as STL) are nice. They give us a cool high level interface for nearly every peripherical in the chip. But thats where the issue comes in - a high-level interface gives high level probltems in the form of ridiculous RAM and flash usage.
For comparison, the simplest blink program uses-
(all values are for the attiny85)
With STL,

  • 218/512 bytes of RAM
  • 3/8kb of Flash.

Without STL (AVR Only),

  • 16/512 bytes of ram
  • 500B of flash

as you can tell, going forward with arduino for such a project is borderline impossible unless i pull a extra kb of ram outta my ass
So, i spent these ~9 hours learning, and rewriting protocols using builtin registers to have my own set of libraries to use later on.

i ended up with fully functioning libraries for
i2c
Serial
ADC Functions
the SSD1306 Display
(i was limited by what hardware i could test with).
This ended up pretty well on the performance side
image.png
it fits very nicely into our performance budget :D

ghost of ttf ghost of ttf 🚀 started ATWatch ago

10/4/2025 - Initial Firmware w/o Arduino STL

The Problem w/ Arduino STL

Look, the Arduino Libraries (henceforth referred as STL) are nice. They give us a cool high level interface for nearly every peripherical in the chip. But thats where the issue comes in - a high-level interface gives high level probltems in the form of ridiculous RAM and flash usage.
For comparison, the simplest blink program uses-
(all values are for the attiny85)
With STL,

  • 218/512 bytes of RAM
  • 3/8kb of Flash.

Without STL (AVR Only),

  • 16/512 bytes of ram
  • 500B of flash

as you can tell, going forward with arduino for such a project is borderline impossible unless i pull a extra kb of ram outta my ass
So, i spent these ~9 hours learning, and rewriting protocols using builtin registers to have my own set of libraries to use later on.

i ended up with fully functioning libraries for
i2c
Serial
ADC Functions
the SSD1306 Display
(i was limited by what hardware i could test with).
This ended up pretty well on the performance side
image.png
it fits very nicely into our performance budget :D

10/7/2025 - Schematic + Software Improvements

Schematic

I created the schematic for the watch in KiCad. Its fairly simple, tho i did try and make it better than my usual messes. The components are fairly simple, just

  • ATTiny85
  • SSD1306
  • DS1307

One unfortunate thing was that some genius made the only external interrupt the same as SCL, meaning i'll have to use a inferior digital interrupt for the SQW output
image.png

Software

I added multi font rendering and a software face to the library. this was surprisingly difficult as there's a different method for rendering large fonts, which takes place in two parts, but it now should have support for most fonts. I also added a stopwatch based on interrupts instead of busy waiting even though there wasn't really a need.
image.png
ignore the yakult stand