timer: Reconfigure the timer in fast pwm mode
[simavr] / examples / parts / button.h
1 /*
2         button.h
3
4         This defines a sample for a very simple "peripheral" 
5         that can talk to an AVR core.
6         It is in fact a bit more involved than strictly necessary,
7         but is made to demonstrante a few useful features that are
8         easy to use.
9         
10         Copyright 2008, 2009 Michel Pollet <buserror@gmail.com>
11
12         This file is part of simavr.
13
14         simavr is free software: you can redistribute it and/or modify
15         it under the terms of the GNU General Public License as published by
16         the Free Software Foundation, either version 3 of the License, or
17         (at your option) any later version.
18
19         simavr is distributed in the hope that it will be useful,
20         but WITHOUT ANY WARRANTY; without even the implied warranty of
21         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22         GNU General Public License for more details.
23
24         You should have received a copy of the GNU General Public License
25         along with simavr.  If not, see <http://www.gnu.org/licenses/>.
26  */
27
28 #ifndef __BUTTON_H__
29 #define __BUTTON_H__
30
31 #include "sim_irq.h"
32
33 enum {
34         IRQ_BUTTON_OUT = 0,
35         IRQ_BUTTON_COUNT
36 };
37
38 typedef struct button_t {
39         avr_irq_t * irq;        // output irq
40         struct avr_t * avr;
41         uint8_t value;
42 } button_t;
43
44 void
45 button_init(
46                 struct avr_t * avr,
47                 button_t * b,
48                 const char * name);
49
50 void
51 button_press(
52                 button_t * b,
53                 uint32_t duration_usec);
54
55 #endif /* __BUTTON_H__*/