author | Tero Marttila <terom@paivola.fi> |
Wed, 24 Sep 2014 23:49:49 +0300 | |
changeset 2 | 2687fbd14fd9 |
parent 1 | dc293f9aa873 |
child 3 | 87dd3b72b024 |
permissions | -rw-r--r-- |
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
1 |
#include <avr/interrupt.h> |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
2 |
#include <avr/io.h> |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
3 |
|
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
4 |
#define DEBUG_DDR DDRB |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
5 |
#define DEBUG_PIN 5 |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
6 |
#define DEBUG_PORT PORTB |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
7 |
|
2 | 8 |
#define RELAY_DDR DDRC |
9 |
#define RELAY_PORT PORTC |
|
10 |
#define RELAY_PIN PINC |
|
11 |
#define RELAY_PINS 4 |
|
12 |
||
13 |
#define RELAY_DOWN1 0 |
|
14 |
#define RELAY_DOWN2 1 |
|
15 |
#define RELAY_LEFT 2 |
|
16 |
#define RELAY_RIGHT 3 |
|
17 |
||
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
18 |
#include "debug.h" |
2 | 19 |
#include "relay.h" |
1 | 20 |
#include "serial.h" |
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
21 |
#include "timer.h" |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
22 |
|
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
23 |
int main (void) |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
24 |
{ |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
25 |
debug_init(); |
2 | 26 |
relay_init(RELAY_PINS); |
1 | 27 |
serial_init(SERIAL_BAUD_9600, SERIAL_PARITY_N, SERIAL_STOPBITS_1); |
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
28 |
timer_init(); |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
29 |
|
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
30 |
// init |
1 | 31 |
char c = '.'; |
32 |
unsigned short timeout = 8000; |
|
33 |
||
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
34 |
debug_set(); |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
35 |
sei(); |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
36 |
|
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
37 |
// start |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
38 |
while (true) { |
1 | 39 |
if (timer_sleep(timeout)) { |
40 |
c = '.'; |
|
41 |
} else if ((c = serial_read())) { |
|
42 |
||
43 |
} else { |
|
44 |
c = '?'; |
|
45 |
} |
|
46 |
||
2 | 47 |
switch (c) { |
48 |
case '.': break; |
|
49 |
||
50 |
case 'L': relay_open(RELAY_LEFT); break; |
|
51 |
case 'R': relay_open(RELAY_RIGHT); break; |
|
52 |
case 'B': |
|
53 |
relay_open(RELAY_DOWN1); |
|
54 |
relay_open(RELAY_DOWN2); |
|
55 |
break; |
|
56 |
||
57 |
case 'l': relay_toggle(RELAY_LEFT); break; |
|
58 |
case 'r': relay_toggle(RELAY_RIGHT); break; |
|
59 |
case 'b': |
|
60 |
relay_close(RELAY_DOWN1); |
|
61 |
relay_close(RELAY_DOWN2); |
|
62 |
break; |
|
63 |
||
64 |
default: |
|
65 |
c = '!'; |
|
66 |
break; |
|
67 |
} |
|
68 |
||
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
69 |
debug_toggle(); |
1 | 70 |
|
71 |
// out |
|
72 |
serial_write(c); |
|
0
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
73 |
} |
cae83b7bfcf4
trivial avr-gcc hello skeleton using qmsk-arduino: debug timer
Tero Marttila <terom@paivola.fi>
parents:
diff
changeset
|
74 |
} |