~ubuntu-branches/ubuntu/feisty/avr-libc/feisty

« back to all changes in this revision

Viewing changes to doc/examples/demo/iocompat.h

  • Committer: Bazaar Package Importer
  • Author(s): Hakan Ardo
  • Date: 2006-11-15 21:12:47 UTC
  • mfrom: (3.1.2 feisty)
  • Revision ID: james.westby@ubuntu.com-20061115211247-b7qhgnb6o49v5zsg
Tags: 1:1.4.5-2
* Convertion to debheler fixed (closes: #398220)
* Reference to /usr/share/common-licenses in copyright file

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * ----------------------------------------------------------------------------
 
3
 * "THE BEER-WARE LICENSE" (Revision 42):
 
4
 * <joerg@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
 
5
 * can do whatever you want with this stuff. If we meet some day, and you think
 
6
 * this stuff is worth it, you can buy me a beer in return.        Joerg Wunsch
 
7
 * ----------------------------------------------------------------------------
 
8
 *
 
9
 * IO feature compatibility definitions for various AVRs.
 
10
 *
 
11
 * $Id: iocompat.h,v 1.1.2.6 2006/04/19 20:12:00 joerg_wunsch Exp $
 
12
 */
 
13
 
 
14
#if !defined(IOCOMPAT_H)
 
15
#define IOCOMPAT_H 1
 
16
 
 
17
/*
 
18
 * Device-specific adjustments:
 
19
 *
 
20
 * Supply definitions for the location of the OCR1[A] port/pin, the
 
21
 * name of the OCR register controlling the PWM, and adjust interrupt
 
22
 * vector names that differ from the one used in demo.c
 
23
 * [TIMER1_OVF_vect].
 
24
 */
 
25
#if defined(__AVR_AT90S2313__)
 
26
#  define OC1 PB3
 
27
#  define OCR OCR1
 
28
#  define DDROC DDRB
 
29
#  define TIMER1_OVF_vect TIMER1_OVF1_vect
 
30
#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)
 
31
#  define OC1 PB1
 
32
#  define DDROC DDRB
 
33
#  define OCR OCR1
 
34
#elif defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || \
 
35
      defined(__AVR_AT90S4434__) || defined(__AVR_AT90S8535__) || \
 
36
      defined(__AVR_ATmega163__) || defined(__AVR_ATmega8515__) || \
 
37
      defined(__AVR_ATmega8535__) || \
 
38
      defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || \
 
39
      defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__)
 
40
#  define OC1 PD5
 
41
#  define DDROC DDRD
 
42
#  define OCR OCR1A
 
43
#  if !defined(TIMSK)           /* new ATmegas */
 
44
#    define TIMSK TIMSK1
 
45
#  endif
 
46
#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega48__) || \
 
47
      defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)
 
48
#  define OC1 PB1
 
49
#  define DDROC DDRB
 
50
#  define OCR OCR1A
 
51
#  if !defined(TIMSK)           /* ATmega48/88/168 */
 
52
#    define TIMSK TIMSK1
 
53
#  endif /* !defined(TIMSK) */
 
54
#elif defined(__AVR_ATtiny2313__)
 
55
#  define OC1 PB3
 
56
#  define OCR OCR1A
 
57
#  define DDROC DDRB
 
58
#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || \
 
59
      defined(__AVR_ATtiny84__)
 
60
#  define OC1 PA6
 
61
#  define DDROC DDRA
 
62
#  if !defined(OCR1A)
 
63
#    /* work around misspelled name in avr-libc 1.4.[0..1] */
 
64
#    define OCR OCRA1
 
65
#  else
 
66
#    define OCR OCR1A
 
67
#  endif
 
68
#  define TIMSK TIMSK1
 
69
#  define TIMER1_OVF_vect TIM1_OVF_vect /* XML and datasheet mismatch */
 
70
#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || \
 
71
      defined(__AVR_ATtiny85__)
 
72
/* Timer 1 is only an 8-bit timer on these devices. */
 
73
#  define OC1 PB1
 
74
#  define DDROC DDRB
 
75
#  define OCR OCR1A
 
76
#  define TCCR1A TCCR1
 
77
#  define TCCR1B TCCR1
 
78
#  define TIMER1_OVF_vect TIM1_OVF_vect
 
79
#  define TIMER1_TOP 255        /* only 8-bit PWM possible */
 
80
#  define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)
 
81
#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */
 
82
#elif defined(__AVR_ATtiny26__)
 
83
/* Rather close to ATtinyX5 but different enough for its own section. */
 
84
#  define OC1 PB1
 
85
#  define DDROC DDRB
 
86
#  define OCR OCR1A
 
87
#  define TIMER1_OVF_vect TIMER1_OVF1_vect
 
88
#  define TIMER1_TOP 255        /* only 8-bit PWM possible */
 
89
#  define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)
 
90
#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */
 
91
/*
 
92
 * Without setting OCR1C to TOP, the ATtiny26 does not trigger an
 
93
 * overflow interrupt in PWM mode.
 
94
 */
 
95
#  define TIMER1_SETUP_HOOK() OCR1C = 255
 
96
#elif defined(__AVR_ATtiny261__) || defined(__AVR_ATtiny461__) || \
 
97
      defined(__AVR_ATtiny861__)
 
98
#  define OC1 PB1
 
99
#  define DDROC DDRB
 
100
#  define OCR OCR1A
 
101
#  define TIMER1_PWM_INIT _BV(WGM10) | _BV(PWM1A) | _BV(COM1A1)
 
102
/*
 
103
 * While timer 1 could be operated in 10-bit mode on these devices,
 
104
 * the handling of the 10-bit IO registers is more complicated than
 
105
 * that of the 16-bit registers of other AVR devices (no combined
 
106
 * 16-bit IO operations possible), so we restrict this demo to 8-bit
 
107
 * mode which is pretty standard.
 
108
 */
 
109
#  define TIMER1_TOP 255
 
110
#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */
 
111
#elif defined(__AVR_ATmega32__) || defined(__AVR_ATmega16__)
 
112
#  define OC1 PD5
 
113
#  define DDROC DDRD
 
114
#  define OCR OCR1A
 
115
#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) || \
 
116
      defined(__AVR_ATmega165__) || defined(__AVR_ATmega169__) || \
 
117
      defined(__AVR_ATmega325__) || defined(__AVR_ATmega3250__) || \
 
118
      defined(__AVR_ATmega645__) || defined(__AVR_ATmega6450__) || \
 
119
      defined(__AVR_ATmega329__) || defined(__AVR_ATmega3290__) || \
 
120
      defined(__AVR_ATmega649__) || defined(__AVR_ATmega6490__) || \
 
121
      defined(__AVR_ATmega640__) || \
 
122
      defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__)
 
123
#  define OC1 PB5
 
124
#  define DDROC DDRB
 
125
#  define OCR OCR1A
 
126
#  if !defined(PB5)             /* work around missing bit definition */
 
127
#    define PB5 5
 
128
#  endif
 
129
#  if !defined(TIMSK)           /* new ATmegas */
 
130
#    define TIMSK TIMSK1
 
131
#  endif
 
132
#else
 
133
#  error "Don't know what kind of MCU you are compiling for"
 
134
#endif
 
135
 
 
136
/*
 
137
 * Map register names for older AVRs here.
 
138
 */
 
139
#if !defined(COM1A1)
 
140
#  define COM1A1 COM11
 
141
#endif
 
142
 
 
143
#if !defined(WGM10)
 
144
#  define WGM10 PWM10
 
145
#  define WGM11 PWM11
 
146
#endif
 
147
 
 
148
/*
 
149
 * Provide defaults for device-specific macros unless overridden
 
150
 * above.
 
151
 */
 
152
#if !defined(TIMER1_TOP)
 
153
#  define TIMER1_TOP 1023       /* 10-bit PWM */
 
154
#endif
 
155
 
 
156
#if !defined(TIMER1_PWM_INIT)
 
157
#  define TIMER1_PWM_INIT _BV(WGM10) | _BV(WGM11) | _BV(COM1A1)
 
158
#endif
 
159
 
 
160
#if !defined(TIMER1_CLOCKSOURCE)
 
161
#  define TIMER1_CLOCKSOURCE _BV(CS10) /* full clock */
 
162
#endif
 
163
 
 
164
#endif /* !defined(IOCOMPAT_H) */