true
This commit is contained in:
commit
d3a9ab07cd
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
build/
|
28
.vscode/c_cpp_properties.json
vendored
Normal file
28
.vscode/c_cpp_properties.json
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "AVR",
|
||||
"intelliSenseMode": "${default}",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"includePath": [
|
||||
"/usr/avr/lib/**",
|
||||
"/usr/avr/include/**"
|
||||
],
|
||||
"compilerArgs": [
|
||||
"-g",
|
||||
"-Os",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-fpermissive",
|
||||
"-fno-exceptions",
|
||||
"-fno-threadsafe-statics",
|
||||
"-pipe",
|
||||
"-mmcu=atmega2560",
|
||||
"-DF_CPU=16000000UL"
|
||||
],
|
||||
"compilerPath": "/usr/bin/avr-gcc"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
6
.vscode/extensions.json
vendored
Normal file
6
.vscode/extensions.json
vendored
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"alex079.vscode-avr-helper",
|
||||
"ms-vscode.cpptools"
|
||||
]
|
||||
}
|
20
.vscode/settings.json
vendored
Normal file
20
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"AVR.reporter.arguments": [
|
||||
"-C"
|
||||
],
|
||||
"AVR.source.compiler": "/usr/bin/avr-gcc",
|
||||
"AVR.programmer.tool": "/usr/bin/avrdude",
|
||||
"AVR.source.libraries": [
|
||||
"/usr/avr/lib",
|
||||
"/usr/avr/include"
|
||||
],
|
||||
"C_Cpp.default.compilerPath": "/usr/bin/avr-gcc",
|
||||
"AVR.device.type": "atmega2560",
|
||||
"AVR.device.frequency": 16000000,
|
||||
"AVR.programmer.type": "wiring",
|
||||
"AVR.programmer.port": "/dev/ttyACM1",
|
||||
"AVR.programmer.rate": 115200,
|
||||
"AVR.programmer.arguments": [
|
||||
"-D"
|
||||
]
|
||||
}
|
58581
datasheet.pdf
Normal file
58581
datasheet.pdf
Normal file
File diff suppressed because one or more lines are too long
80
main.c
Normal file
80
main.c
Normal file
|
@ -0,0 +1,80 @@
|
|||
#define __AVR_ATmega2560__
|
||||
#define F_CPU 16000000UL
|
||||
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <stdbool.h>
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
uint16_t freq_high = 1200;
|
||||
uint16_t freq_low = 800;
|
||||
volatile uint8_t speed = 25;
|
||||
volatile uint8_t tick_count = 0;
|
||||
volatile uint16_t beep_time = 0;
|
||||
volatile int debounce_int2 = 10;
|
||||
volatile int debounce_int3 = 10;
|
||||
volatile int tick_timer_start = 0xffff;
|
||||
|
||||
void start_timer() {
|
||||
TCCR1B |= _BV(CS10) | _BV(CS12); // clk/1024
|
||||
TIMSK1 |= _BV(TOIE1);
|
||||
|
||||
TCCR4B |= _BV(CS41); // clk/8
|
||||
TIMSK4 |= _BV(OCIE4A);
|
||||
TCNT1 = tick_timer_start;
|
||||
|
||||
// Enable interrupts
|
||||
sei();
|
||||
}
|
||||
|
||||
ISR(INT2_vect) {
|
||||
if (debounce_int2) return;
|
||||
debounce_int2 = 100;
|
||||
|
||||
if (speed < 100) speed++;
|
||||
}
|
||||
|
||||
ISR(INT3_vect) {
|
||||
if (debounce_int3) return;
|
||||
debounce_int3 = 100;
|
||||
|
||||
if (speed > 1) speed--;
|
||||
}
|
||||
|
||||
ISR(TIMER1_OVF_vect) {
|
||||
tick_count++;
|
||||
if (tick_count > 3) tick_count = 0;
|
||||
|
||||
beep_time = 50;
|
||||
|
||||
TCNT1 = tick_timer_start;
|
||||
}
|
||||
|
||||
ISR(TIMER4_COMPA_vect) {
|
||||
if (beep_time > 0) {
|
||||
PORTK ^= 0b10000000;
|
||||
beep_time--;
|
||||
}
|
||||
TCNT4 = 0;
|
||||
}
|
||||
|
||||
void main() {
|
||||
DDRK = 0b10000000;
|
||||
DDRD = 0b00000000;
|
||||
PORTD |= 0b00001100;
|
||||
|
||||
// EIMSK controls which ports can trigger interrupts
|
||||
EIMSK |= _BV(INT2) | _BV(INT3);
|
||||
// Trigger on falling edge on INT2 and INT3
|
||||
EICRA |= _BV(ISC21) | _BV(ISC31);
|
||||
|
||||
start_timer();
|
||||
while (true) {
|
||||
OCR4A = (F_CPU / 8) / (tick_count == 0 ? freq_high : freq_low);
|
||||
tick_timer_start = 0xffff - (F_CPU / 1024 / 1000) * (100 + speed * 10);
|
||||
|
||||
if (debounce_int2 > 0) debounce_int2--;
|
||||
if (debounce_int3 > 0) debounce_int3--;
|
||||
_delay_ms(1);
|
||||
}
|
||||
}
|
BIN
pinout.png
Normal file
BIN
pinout.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 414 KiB |
Loading…
Reference in a new issue