Intial commit
This commit is contained in:
parent
913afdb5dd
commit
8206c11344
|
@ -0,0 +1,4 @@
|
|||
*.hex
|
||||
*.elf
|
||||
*.bin
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**",
|
||||
"/usr/lib/avr/include/"
|
||||
],
|
||||
"defines": [
|
||||
"__AVR_ATmega16__"
|
||||
],
|
||||
"compilerPath": "/usr/bin/gcc",
|
||||
"cStandard": "gnu18",
|
||||
"cppStandard": "gnu++14",
|
||||
"intelliSenseMode": "gcc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"git.ignoreLimitWarning": true
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
MIT License Copyright (c) <year> <copyright holders>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is furnished
|
||||
to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice (including the next
|
||||
paragraph) shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
||||
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
avrdude -p $1 -c $2 -t << END
|
||||
write eeprom 0 $3
|
||||
dump eeprom 0 16
|
||||
quit
|
||||
END
|
|
@ -0,0 +1,38 @@
|
|||
MCU?=atmega32
|
||||
F_CPU=8000000
|
||||
PROG?=dragon_jtag
|
||||
DEBUGGER = dragon
|
||||
PORT?=/dev/ttyUSB0
|
||||
TYPE?=DEBUG
|
||||
|
||||
CC=avr-g++
|
||||
OBJCOPY=avr-objcopy
|
||||
CFLAGS=-Wall -g -O -mmcu=${MCU} -DF_CPU=${F_CPU} -I. -std=gnu++11 -D${TYPE} -Wno-write-strings
|
||||
TARGET=main
|
||||
SRCS=src/eeprom.cpp test/main.cpp test/usart/src/usart.cpp
|
||||
|
||||
default: build flash
|
||||
|
||||
build:
|
||||
${CC} ${CFLAGS} -o bin/${TARGET}.bin ${SRCS}
|
||||
${CC} ${CFLAGS} -o bin/${TARGET}.elf ${SRCS}
|
||||
${OBJCOPY} -j .text -j .data -O ihex bin/${TARGET}.bin bin/${TARGET}.hex
|
||||
|
||||
flash:
|
||||
avrdude -p ${MCU} -c ${PROG} -P ${PORT} ${BAUD} -U flash:w:bin/main.hex
|
||||
|
||||
clean:
|
||||
rm -f bin/*
|
||||
|
||||
debug: flash avarice
|
||||
avr-gdb -ex "target remote :4242" bin/main.elf
|
||||
|
||||
avarice:
|
||||
sleep 1
|
||||
avarice --file bin/main.elf --part ${MCU} --${DEBUGGER} :4242 &
|
||||
|
||||
term:
|
||||
screen /dev/ttyUSB0 1000000
|
||||
|
||||
eeprom:
|
||||
sh eeprom.sh
|
|
@ -0,0 +1,28 @@
|
|||
#include "eeprom.h"
|
||||
|
||||
namespace eeprom
|
||||
{
|
||||
void write(uint8_t address, uint8_t data) {
|
||||
/* Wait for completion of previous write */
|
||||
while(EECR & (1<<EEWE));
|
||||
/* Set up address and data registers */
|
||||
EEAR = address;
|
||||
EEDR = data;
|
||||
/* Write logical one to EEMWE */
|
||||
EECR |= (1<<EEMWE);
|
||||
/* Start eeprom write by setting EEWE */
|
||||
EECR |= (1<<EEWE);
|
||||
}
|
||||
|
||||
uint8_t read(uint8_t address) {
|
||||
/* Wait for completion of previous write */
|
||||
while(EECR & (1<<EEWE));
|
||||
/* Set up address register */
|
||||
EEAR = address;
|
||||
/* Start eeprom read by writing EERE */
|
||||
EECR |= (1<<EERE);
|
||||
/* Return data from data register */
|
||||
return EEDR;
|
||||
}
|
||||
|
||||
} // namespace eeprom
|
|
@ -0,0 +1,8 @@
|
|||
#pragma once
|
||||
#include <avr/io.h>
|
||||
|
||||
namespace eeprom
|
||||
{
|
||||
void write(uint8_t address, uint8_t data);
|
||||
uint8_t read(uint8_t address);
|
||||
} // namespace eeprom
|
|
@ -0,0 +1,15 @@
|
|||
#include "../src/eeprom.h"
|
||||
#include "usart/src/usart.h"
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
|
||||
int main() {
|
||||
usart::init(1000000);
|
||||
printf("\033[2J");
|
||||
for(int i=0;i<16;i++)
|
||||
printf("%i %x\n\r", i, eeprom::read(i));
|
||||
|
||||
DDRB |= (1<<PB3);
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue