Intial commit
This commit is contained in:
parent
4bdc66acde
commit
0030fef76e
|
@ -0,0 +1,2 @@
|
|||
bin/
|
||||
.vscode/
|
|
@ -0,0 +1,31 @@
|
|||
MCU=atmega32
|
||||
F_CPU=8000000
|
||||
PROG=dragon_jtag
|
||||
DEBUGGER = dragon
|
||||
PORT=/dev/ttyUSB0
|
||||
|
||||
CC=avr-g++
|
||||
OBJCOPY=avr-objcopy
|
||||
CFLAGS=-Wall -g -mmcu=${MCU} -DF_CPU=${F_CPU} -I.
|
||||
TARGET=main
|
||||
SRCS=src/*.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} -U flash:w:bin/main.hex
|
||||
|
||||
clean:
|
||||
rm -f bin/*
|
||||
|
||||
debug: flash avarice
|
||||
sleep 1
|
||||
avr-gdb -ex "target remote :4242" bin/main.elf
|
||||
|
||||
avarice:
|
||||
avarice --file bin/main.elf --part ${MCU} --${DEBUGGER} :4242
|
|
@ -0,0 +1,24 @@
|
|||
#define F_CPU 8000000UL
|
||||
#include <avr/io.h>
|
||||
#include <util/delay.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include "photointerrupter.h"
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
photointerrupter::init();
|
||||
DDRD |= (1<<PD6);
|
||||
|
||||
while(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
PHOTOINTERRUPT {
|
||||
cli();
|
||||
PORTD |= (1<<PD6);
|
||||
_delay_ms(100);
|
||||
PORTD &= ~(1<<PD6);
|
||||
GIFR |= (1<<INTF1);
|
||||
sei();
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
#include <avr/io.h>
|
||||
#include <avr/interrupt.h>
|
||||
#include <util/delay.h>
|
||||
#include "photointerrupter.h"
|
||||
|
||||
namespace photointerrupter {
|
||||
void init() {
|
||||
TCCR2 |= (1<<WGM21); //CTC TOP OCR2
|
||||
TCCR2 |= (1<<COM20); //Toggle OC0
|
||||
TCCR2 |= (1<<CS20); //No prescale
|
||||
OCR2 |= 105;
|
||||
//DDRB |= (1<<PB3);
|
||||
DDRD |= (1<<PD6)|(1<<PD7);
|
||||
//TIMSK |= (1<<OCIE0);
|
||||
|
||||
MCUCR |= (1<<ISC11)|(1<<ISC10); //INT1 rising edge
|
||||
GICR |= (1<<INT1);
|
||||
|
||||
sei();
|
||||
}
|
||||
|
||||
ISR(TIMER2_COMP_vect) {
|
||||
volatile static int count;
|
||||
count++;
|
||||
if(count == 60) TCCR2 &= ~(1<<CS20);
|
||||
if(count > 600) {
|
||||
TCCR2 |= (1<<CS20);
|
||||
count = 0;
|
||||
}
|
||||
}
|
||||
} // namespace photointerrupter
|
|
@ -0,0 +1,6 @@
|
|||
#pragma once
|
||||
#define PHOTOINTERRUPT ISR(INT1_vect)
|
||||
|
||||
namespace photointerrupter {
|
||||
void init();
|
||||
} // namespace photointerrupter
|
Loading…
Reference in New Issue