Statistics
| Branch: | Revision:

root / toolbox / freemodbus / port / port.h @ 07718da3

History | View | Annotate | Download (4.79 KB)

1
/*
2
 * FreeModbus Libary: AVR Port
3
 * Copyright (C) 2006 Christian Walter <wolti@sil.at>
4
 *   - Initial version + ATmega168 support
5
 * Modfications Copyright (C) 2006 Tran Minh Hoang:
6
 *   - ATmega8, ATmega16, ATmega32 support
7
 *   - RS485 support for DS75176
8
 *
9
 * This library is free software; you can redistribute it and/or
10
 * modify it under the terms of the GNU Lesser General Public
11
 * License as published by the Free Software Foundation; either
12
 * version 2.1 of the License, or (at your option) any later version.
13
 *
14
 * This library is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
 * Lesser General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU Lesser General Public
20
 * License along with this library; if not, write to the Free Software
21
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
22
 *
23
 * File: $Id: port.h,v 1.6 2006/09/17 16:45:52 wolti Exp $
24
 */
25

    
26
#ifndef _PORT_H
27
#define _PORT_H
28

    
29
/* ----------------------- Platform includes --------------------------------*/
30

    
31
#include <avr/io.h>
32
#include <avr/interrupt.h>
33

    
34
/* ----------------------- Defines ------------------------------------------*/
35
#define        INLINE                      inline
36
#define PR_BEGIN_EXTERN_C           extern "C" {
37
#define        PR_END_EXTERN_C             }
38

    
39
#define ENTER_CRITICAL_SECTION( )   cli()
40
#define EXIT_CRITICAL_SECTION( )    sei()
41

    
42
#define assert( x )
43

    
44
typedef char    BOOL;
45

    
46
typedef unsigned char UCHAR;
47
typedef char    CHAR;
48

    
49
typedef unsigned short USHORT;
50
typedef short   SHORT;
51

    
52
typedef unsigned long ULONG;
53
typedef long    LONG;
54

    
55
#ifndef TRUE
56
#define TRUE            1
57
#endif
58

    
59
#ifndef FALSE
60
#define FALSE           0
61
#endif
62

    
63
/* ----------------------- AVR platform specifics ---------------------------*/
64

    
65
#if defined (__AVR_ATmega168__)
66
#define UCSRB           UCSR0B
67
#define TXEN            TXEN0
68
#define RXEN            RXEN0
69
#define RXCIE           RXCIE0
70
#define TXCIE           TXCIE0
71
#define UDRE            UDRE0
72
#define UBRR            UBRR0
73
#define UCSRC           UCSR0C
74
#define UPM1            UPM01
75
#define UPM0            UPM00
76
#define UCSZ0           UCSZ00
77
#define UCSZ1           UCSZ01
78
#define UDR             UDR0
79
#define SIG_UART_TRANS  SIG_USART_TRANS
80

    
81
#elif defined (__AVR_ATmega169__)
82

    
83
#define SIG_UART_TRANS  SIG_USART_TRANS
84

    
85
#elif defined (__AVR_ATmega8__)
86
#define UBRR            UBRRL
87
#define TCCR1C          TCCR1A  /* dummy */
88
#define TIMSK1          TIMSK
89
#define TIFR1           TIFR
90
#define SIG_USART_DATA  SIG_UART_DATA
91
#define SIG_USART_RECV  SIG_UART_RECV
92

    
93
#elif defined (__AVR_ATmega16__)
94
#define UBRR            UBRRL
95
#define TCCR1C          TCCR1A  /* dummy */
96
#define TIMSK1          TIMSK
97
#define TIFR1           TIFR
98

    
99
#elif defined (__AVR_ATmega32__)
100
#define UBRR            UBRRL
101
#define TCCR1C          TCCR1A  /* dummy */
102
#define TIMSK1          TIMSK
103
#define TIFR1           TIFR
104

    
105
#elif defined (__AVR_ATmega128__)
106
#define UCSRB           UCSR0B
107
#define UBRR            UBRR0L
108
#define UDR             UDR0
109
#define TIMSK1          TIMSK
110
#define TIFR1           TIFR
111
#define SIG_UART_TRANS  SIG_USART0_TRANS
112
#define SIG_USART_DATA  SIG_USART0_DATA
113
#define SIG_USART_RECV  SIG_USART0_RECV
114
#define UCSZ0           UCSZ00
115
#define UCSZ1           UCSZ01
116
#define UPM0            UPM00
117
#define UPM1            UPM01
118
#define UCSRC           UCSR0C
119

    
120
#elif defined (__AVR_ATtiny1634__)
121
#define UCSRB           UCSR0B
122
#define UBRR            UBRR0
123
#define UDR             UDR0
124
#define UDRE            UDRE0
125
#define TIMSK1          TIMSK
126
#define TIFR1           TIFR
127
#define UCSZ0           UCSZ00
128
#define UCSZ1           UCSZ01
129
#define UPM0            UPM00
130
#define UPM1            UPM01
131
#define UCSRA           UCSR0A
132
#define U2X             U2X0
133
#define UCSRC           UCSR0C
134
#define SIG_UART_TRANS  USART0_TX_vect
135
#define SIG_USART_DATA  USART0_UDRE_vect
136
#define SIG_USART_RECV  USART0_RX_vect
137
#define SIG_OUTPUT_COMPARE1A TIMER1_COMPA_vect
138

    
139
#define RXEN            RXEN0
140
#define RXCIE           RXCIE0
141
#define TXEN            TXEN0
142
#define TXCIE           TXCIE0
143

    
144
#endif
145

    
146
/* ----------------------- RS485 specifics ----------------------------------*/
147
#ifdef  RTS_ENABLE
148

    
149
#define RTS_PIN         PC2
150
#define RTS_DDR         DDRC
151
#define RTS_PORT        PORTC
152

    
153
#define RTS_INIT        \
154
    do { \
155
        RTS_DDR |= _BV( RTS_PIN ); \
156
        RTS_PORT &= ~( _BV( RTS_PIN ) ); \
157
    } while( 0 );
158

    
159
#define RTS_HIGH        \
160
    do { \
161
        RTS_PORT |= _BV( RTS_PIN ); \
162
    } while( 0 );
163

    
164
#define RTS_LOW         \
165
    do { \
166
        RTS_PORT &= ~( _BV( RTS_PIN ) ); \
167
    } while( 0 );
168

    
169
#endif
170

    
171
#endif