-
Notifications
You must be signed in to change notification settings - Fork 20
/
features.h
145 lines (121 loc) · 3.07 KB
/
features.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
/*
* Copyright © 2010-2015, Matthias Urlichs <[email protected]>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License (included; see the file LICENSE)
* for more details.
*/
#ifndef FEATURES_H
#define FEATURES_H
#include <avr/io.h>
#include <avr/interrupt.h>
#include "dev_config.h"
#ifdef MAIN
#define EXTERN
#define INIT(x) = x
#else
#define EXTERN extern
#define INIT(x)
#endif
#ifndef BAUDRATE
#define BAUDRATE 38400
#endif
/* External definitions:
* F_CPU clock rate
* SKIP_SEARCH if you don't have enough ROM for search (saves ~200 bytes)
* HAVE_UART if you want to debug your code
*/
#ifdef __AVR_ATtiny13__
#define F_CPU_ 9600000
#define IMSK GIMSK
#define IFR GIFR
#endif
#if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
#define F_CPU_ 8000000
#define IMSK GIMSK
#define IFR GIFR
#define TIMSK0 TIMSK
#define TIFR0 TIFR
#define ADPIN PINB
#define ADPIN_vect PCINT0_vect
#define ADMSK PCMSK
#define PCIF0 PCIF
#define PCIE0 PCIE
#endif
#ifdef __AVR_ATmega8__
#define F_CPU_ 8000000
#ifdef HAVE_DBG_PORT
#define DBGPORT PORTB
#define DBGDDR DDRB
#define DBGIN PINB
#endif
#ifdef HAVE_DBG_PIN
#define DBGPINPORT PORTD
#define DBGPIN PORTD4
#define DBGPINDDR DDRD
#define DBGPININ PIND
#endif
#define IMSK GIMSK
#define TIMSK0 TIMSK
#define TIFR0 TIFR
#define EEPE EEWE
#define EEMPE EEMWE
#define IFR GIFR
#endif
#ifdef __AVR_ATtiny84__
#define F_CPU_ 8000000
#define IMSK GIMSK
#define IFR GIFR
#define ADPIN PINA
#define ADPIN_vect PCINT0_vect
#define ADMSK PCMSK0
#endif
#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega88__) || defined (__AVR_ATmega328__)
#define F_CPU_ 16000000
#define ONEWIRE_USE_T2
#ifdef HAVE_DBG_PORT
#define DBGPORT PORTC
#define DBGDDR DDRC
#define DBGIN PINC
#endif
#ifdef HAVE_DBG_PIN
#define DBGPINPORT PORTD
#define DBGPIN PORTD4
#define DBGPINDDR DDRD
#define DBGPININ PIND
#endif
#define IMSK EIMSK
#define IFR EIFR
#define ADPIN PINC
#define ADPIN_vect PCINT1_vect
#define ADMSK PCMSK1
#define ADIRQ
#endif
#ifndef F_CPU_
#error Unknown AVR chip!
#endif
#ifndef F_CPU
#define F_CPU F_CPU_
#endif
#ifndef ONEWIRE_USE_T2
# define ONEWIRE_USE_T0
#endif
#if defined(HAVE_UART_SYNC) && defined(HAVE_UART_IRQ)
#error Poll. Or IRQ. Not both.
#endif
#if defined(IS_BOOTLOADER) && defined(USE_BOOTLOADER)
#error "Either you're a the loader or you're the loaded."
#endif
#if defined(IS_BOOTLOADER) && !defined(USE_EEPROM)
#error "You need EEPROM support for bootloading"
#endif
#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)
#endif /* FEATURES_H */