Added starter example project.
This commit is contained in:
parent
082a1f3cd1
commit
38cd2efb0a
|
@ -0,0 +1 @@
|
||||||
|
bin/
|
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "AVR",
|
||||||
|
"includePath": [
|
||||||
|
"${workspaceFolder}/**",
|
||||||
|
"/lib/avr/include/**"
|
||||||
|
],
|
||||||
|
"defines": [],
|
||||||
|
"compilerPath": "/usr/bin/avr-gcc",
|
||||||
|
"cStandard": "gnu17",
|
||||||
|
"cppStandard": "gnu++14",
|
||||||
|
"intelliSenseMode": "gcc-avr",
|
||||||
|
"configurationProvider": "ms-vscode.makefile-tools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version": 4
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
all: clean build
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf bin/
|
||||||
|
|
||||||
|
flash: build
|
||||||
|
avrdude -c arduino -p atmega328p -P /dev/ttyUSB0 -b115200 -U flash:w:bin/gympal.hex:i
|
||||||
|
|
||||||
|
build: gympal.hex
|
||||||
|
|
||||||
|
gympal.hex: src/gympal.c bin
|
||||||
|
avr-gcc -Wall -Os -DF_CPU=16000000UL -mmcu=atmega328p -c src/gympal.c -o bin/gympal.o
|
||||||
|
avr-gcc -Os -mmcu=atmega328p -o bin/gympal.elf bin/gympal.o
|
||||||
|
avr-objcopy -O ihex -R .eeprom bin/gympal.elf bin/gympal.hex
|
||||||
|
|
||||||
|
bin:
|
||||||
|
mkdir bin
|
14
README.md
14
README.md
|
@ -1,2 +1,16 @@
|
||||||
# GymPal
|
# GymPal
|
||||||
A simple device for recording gym sessions, using AVR.
|
A simple device for recording gym sessions, using AVR.
|
||||||
|
|
||||||
|
## Development
|
||||||
|
The software for this system is developed in C, using [avr-libc](https://www.nongnu.org/avr-libc/), and the build toolchain is managed by make, using [avr-gcc](https://linux.die.net/man/1/avr-gcc) and [avr-dude](https://github.com/avrdudes/avrdude) to upload firmware to the Atmega328p microcontroller.
|
||||||
|
|
||||||
|
To compile the firmware, you can run `make`.
|
||||||
|
|
||||||
|
To upload the firmware to an Arduino, run `make flash`.
|
||||||
|
|
||||||
|
### Helpful Links
|
||||||
|
The following links are helpful for learning how to program an AVR-based microcontroller.
|
||||||
|
|
||||||
|
- [avr-libc Homepage](https://www.nongnu.org/avr-libc/)
|
||||||
|
- [avr-libc Library Reference](https://www.nongnu.org/avr-libc/user-manual/modules.html)
|
||||||
|
- [avrdude Firmware Uploader](https://github.com/avrdudes/avrdude)
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
#include <avr/io.h>
|
||||||
|
#include <util/delay.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
// Pin 12 == Port B4, aka 4th bit on the B register.
|
||||||
|
// Set pin 12 as output.
|
||||||
|
DDRB = 1 << PORTB4;
|
||||||
|
// Set pin 12 as HIGH.
|
||||||
|
PORTB = 1 << PORTB4;
|
||||||
|
// Delay for 1 second.
|
||||||
|
_delay_ms(1000.0);
|
||||||
|
// Set pin 12 as LOW.
|
||||||
|
PORTB = 0 << PORTB4;
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue