| hex | ||
| src | ||
| README.md | ||
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