diff --git a/README.md b/README.md index 8ccd85c..3f345e0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,83 @@ -# gf_002 +# AVR ATiny13 Project 002 +This is the firmware for a latching dual relay system. It allows the user to +switch two DPDT relays by with two seperate switches. + + +## Componets: + +**Micro:** AVR ATiny13, ATiny25/45/85 + +## Instructions: + +1. Power the system using a 1.8v~5.5v power supply +2. Set/program the AVR to use a 1MHz clock rate. +3. Connect the pins as described above. + +**ACTIVATING RELAYS:** + +1. Activate the desired button with a quick press <= 350ms. +2. Repeat to toggle the relay. + +**TEMPORARY TOGGLE:** + +1. Press and hold the desired button >= 350ms. +2. Let go to disable. + +**SAVING SETTINGS:** + +1. Press and hold the target button. +2. While holding the button power cycle the device. +3. When the setting is sucessfully saved the relay/led will blink/toggle. +4. repeat until desired preset is saved. + + +## Technical Aspects: + +The use of C style bitfields has been used inside a struct to maintain a global +state. It minimizes the size of the binary once compiled. + +The majority of the code is blocking/polling; overhead from introducing +interrupts and ISR(interrupt service routines) wasn't as clean and made it more +platform dependent. + +The code right now can for the most part be ported to any AVR micro-controller +with no changes. + +# Contributing: + +If you have any suggestions or questions feel free to contact me submitt +any pull-requests. + + +## BUILDING PROJECT: + + +**On Unix** +```sh +git clone +cd +make flash +``` + +## Flashing the Project + +**On Windows** + +1. Install the usbasp driver: + 1. plug in usbasp device. + 2. run the 'zadig-2.8.exe' program + 3. select the libusb 32 on the right by clicking the down arrow to select. +2. open powershell +3. navigate to the repo directory *cd Downloads\gf_002* +4. enter the command below. + +```ps1 +./avrdude.exe -p t13 -c usbasp -B 125kHz -U flash:w:.\pre_built\atiny13_4-8Mhz.hex +``` + + + + +* If you have the powershell execution policy set to allow scripts: + * run *flash_atiny13.ps1*