Compare commits
No commits in common. "f85fd1a92958fe8cb85f49fa03aa3c923ad58846" and "dc31d518c182f80637f7de12ba1c773c1fcb7e8f" have entirely different histories.
f85fd1a929
...
dc31d518c1
2 changed files with 0 additions and 63 deletions
2
.clangd
2
.clangd
|
@ -1,2 +0,0 @@
|
||||||
CompileFlags:
|
|
||||||
Add: -I/usr/avr/include
|
|
61
timer/main.c
61
timer/main.c
|
@ -1,61 +0,0 @@
|
||||||
/*
|
|
||||||
* Control PB5 with the two buttons. One button disables, the other enables.
|
|
||||||
* The board uses interrupts for this. PB5 will quickly oscilate between on and
|
|
||||||
* off to make cool sounds with a summer.
|
|
||||||
*/
|
|
||||||
#define F_CPU 16000000UL
|
|
||||||
#define __AVR_ATmega328P__
|
|
||||||
#include <avr/interrupt.h>
|
|
||||||
#include <avr/io.h>
|
|
||||||
#include <util/delay.h>
|
|
||||||
|
|
||||||
#define MINUTE 60 * 1000
|
|
||||||
const int TIME = 45 * MINUTE;
|
|
||||||
|
|
||||||
int volatile reset = 0;
|
|
||||||
|
|
||||||
int alarm();
|
|
||||||
|
|
||||||
// code for INT0
|
|
||||||
ISR(INT0_vect) { reset = 1; }
|
|
||||||
|
|
||||||
int main(void) {
|
|
||||||
|
|
||||||
DDRB = 0xff; // write to B
|
|
||||||
DDRD = 0; // read from D
|
|
||||||
|
|
||||||
PORTD |= (1 << PORTD2) | (1 << PORTD3); // pull up D2 and D3
|
|
||||||
|
|
||||||
PORTB = 0; // pull down port B
|
|
||||||
|
|
||||||
// enable external interruprs
|
|
||||||
EIMSK |= (1 << INT0);
|
|
||||||
EIMSK |= (1 << INT1);
|
|
||||||
|
|
||||||
// trigger when anything changes
|
|
||||||
EICRA |= (1 << ISC00); // for INT0
|
|
||||||
EICRA |= (1 << ISC10); // for INT1
|
|
||||||
|
|
||||||
sei(); // interrupt magic macro
|
|
||||||
while (1) {
|
|
||||||
_delay_ms(TIME);
|
|
||||||
alarm();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int alarm(void) {
|
|
||||||
int sound = 0;
|
|
||||||
while (!reset) {
|
|
||||||
PORTB |= (1 << PORTB5);
|
|
||||||
_delay_us(sound);
|
|
||||||
PORTB &= ~(1 << PORTB5);
|
|
||||||
_delay_us(sound);
|
|
||||||
sound++;
|
|
||||||
if (sound > 1000) {
|
|
||||||
sound = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
reset = 0;
|
|
||||||
PORTB &= ~(1 << PORTB5);
|
|
||||||
return 0;
|
|
||||||
}
|
|
Loading…
Add table
Reference in a new issue