This posting is a development of PCB_111000_UNO a simple platform for introducing C programming for micro controllers (posted here on Saturday, 18 July 2020).
The PCB which plugged into a UNO was loaded with an 8 digit display, an Atmega328 and some user switches.
The Atmega328 drove the display and provided services to the UNO to which it was connected using the I2C bus.
User projects written for the UNO were able to access services offered by the PCB.
In PCB_111000_CP2102 an ATtiny1606 is used to drive the display and functions originally supplied by the UNO are obtained as follows:
USB connectivity: A CP2102 module which is soldered directly to the PCB.
Bootloader IC: An Atmega328 loaded with “CP2102_bootloader” a hex/text bootloader.
The I2C bus used to connect the Atmega328 to the UNO is replaced with a one wire firmware UART link.
In order to setup the PCB, up a UNO loaded with a modified version of the project “UNO_as_an_AVR_programmer” (posted here 9 September 2020)
is used to calibrate the Atmega328 and upload the bootloader to it.
Similarly a modified version of “UNO_as_an_UPDI_programmer” (posted here 27 March 2021) is used to program the ATtiny1606.
The only really new system code is project “cal_one_wire_comms” used to align the one wire UART clocks.
The posting contains:
The pdf file "Introducing_PCB111000_CP2102"
Eagle pcb schematic and board files and parts list
System code and hex files.
A selection of user projects
A project commentary which is programmed onto the Atmega328
All user projects can easily be modified to work with PCB_111000_UNO or indeed the original PCB_111000 by replacing the one wire link with an I2C link.
It is emphasized that the purpose of the user projects is to provide a fairly relaxed introduction to C and the AVR micro controller, possibly prior to more detailed and systematic study.
All code posted here should be regarded as strictly D.I.Y. (do it yourself).