# AtTiny26L-8pi_counter Hand held device with display to count button presses. It uses buttons to detect user input one +1 and one for -1. Made with of the shelf components. For me this is an exploration in programming ASM assembly as I had never done this before. Also, the designing was interesting. ## Components ### The ATTiny microcontroller As I had a `ATTiny26L` 8-bit microcontroller lying around I decided to use that. As it already has an onboard clock which is plenty fast enough for this simple project it saved me from connection a XTAL. ``` Ttiny26 _____________________________________ 1 / |20 o--|PB0 /OC1A SDA DI MOSI PA0 ADC0|--o 2| |19 o--|PB1 OC1A DO MISO PA1 ADC1|--o 3| |18 o--|PB2 /OC1B SCL SCK PA2 ADC2|--o 4| |17 o--|PB3 OC1B PA3 AREF|--o 5| |16 o--|VCC GND|--o 6| |15 o--|GND AVCC|--o 7| |14 o--|PB4 XTAL1 ADC7 PA4 ADC3|--o 8| |13 o--|PB5 XTAL2 ADC8 PA5 ADC4|--o 9| |12 o--|PB6 T0 INT0 ADC9 PA6 ADC5 AIN0|--o 10| |11 o--|PB7 RESET ADC10 PA7 ADC6 AIN1|--o |______________________________________| ``` ### The shift register As the ATTiny doesn't have enough outputs do drive a 7-segment display we need a shift register. I used a `74HCT595N` as again this what I had on hand. ``` 74HCT595N _____________________________________ 1 / |16 o--|Q1 VCC|--o 2| |15 o--|Q2 Q0|--o 3| |14 o--|Q3 DS|--o 4| |13 o--|Q4 ~OE|--o 5| |12 o--|Q5 STCP|--o 6| |11 o--|Q6 SHCP|--o 7| |10 o--|Q7 ~MR|--o 8| |9 o--|GND Q7S|--o |______________________________________| ``` ### Something to read the number A 7-segment display sporting 4 digits is used for outputting the number to the user. I used a `CL5642BH-30` as you guessed it already, was the one I had lying around. ``` CL5642BH-30 DIG1 A F DIG2 DIG3 B o12 o11 o10 o9 o8 o7 | | | | | | ----|------|-------|-------|-------|-------|---- | | | | | | | | ----|------|-------|-------|-------|-------|---- | | | | | | o1 o2 o3 o4 o5 o6 E D : C G DIG4 --a-- f b --g-- e c --d-- 1 = no path to ground 0 = path to ground | b | a | f | e | d | c | g | ; | MSB | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | LSB 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 2 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 3 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 4 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 5 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 6 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 7 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 9 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | ``` ### Other components Something to mount it all on, for this perfboard was used. As I use a 9v battery a 5 volt regulator was used. 2 buttons to read the user input. A 3d printed case. Supporting electronics like capacitors and current resisters as pull-up/down and current limiting. ### Create hex file `avra counter.asm` ### Write to chip using UsbAsp `sudo avrdude -c usbasp -F -p t26 -U flash:w:counter.hex:i`