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