Subversion Repositories FlightCtrl

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
522 walter 1
********************************************************************************
2
in "makefile":
3
MCU = atmega644
4
ändern in:
5
MCU = atmega644p
6
 
7
in "makefile" an entsprechender Stelle hinzufügen:
8
ifeq ($(MCU), atmega644p)
9
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
10
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
11
 
12
# -u  bei neuen Controllern wieder einspielen
13
 
14
 HEX_NAME = MEGA644P
15
endif
16
 
17
 
18
********************************************************************************
19
in "main.h" hinzufügen: (bei den anderen #defines)
20
 
21
#if defined (__AVR_ATmega644P__)
22
#define SYSCLK	20000000L	//Quarz Frequenz in Hz
23
//#define SYSCLK	16000000L	//Quarz Frequenz in Hz
24
#endif
25
 
26
********************************************************************************
27
in "rc.h" hinzufügen:  (bei den anderen #defines)
28
#if defined (__AVR_ATmega644P__)
29
//#define TIMER_TEILER        CK64
30
#define TIMER_RELOAD_VALUE  250
31
//#define TIMER_TEILER        CK256                 // bei 20MHz
32
//#define TIMER_RELOAD_VALUE  -78 					// bei 20MHz
33
#endif
34
 
35
********************************************************************************
36
in "uart.h" hinzufügen: (bei den anderen #defines)
37
 
38
#define BAUD_RATE1 57600		//Baud Rate für UART2
39
 
40
#if defined (__AVR_ATmega644P__)
41
#	define USR  UCSR0A
42
#	define UCR  UCSR0B
43
#	define UDR  UDR0
44
#	define UBRR UBRR0L
45
#	define EICR EICR0B
46
#   define TXEN TXEN0
47
#   define RXEN RXEN0
48
#   define RXCIE RXCIE0
49
#   define TXCIE TXCIE0
50
#   define U2X  U2X0
51
#   define UCSRB UCSR0B
52
#   define UDRE UDRE0
53
#   define INT_VEC_RX  SIG_USART_RECV
54
#   define INT_VEC_TX  SIG_USART_TRANS
55
#endif
56
 
57
extern void UART1_Init (void);
58
 
59
 
60
********************************************************************************
61
in "uart.c" hinzufügen:  und die entsprechenden interrupt routinen mit code füllen
62
 
63
 
64
//############################################################################
65
//INstallation der 2ten Seriellen Schnittstelle
66
void UART1_Init (void)
67
//############################################################################
68
{
69
	//Enable TXEN im Register UCR TX-Data Enable & RX Enable
70
 
71
	UCSR1B=(1 << TXEN) | (1 << RXEN);
72
    // UART Double Speed (U2X)
73
	UCSR1A   |= (1<<U2X);
74
	// RX-Interrupt Freigabe
75
	UCSR1B |= (1<<RXCIE);
76
	// TX-Interrupt Freigabe
77
	UCSR1B |= (1<<TXCIE);
78
 
79
	//Teiler wird gesetzt
80
	UBRR1L=(SYSCLK / (BAUD_RATE1 * 8L) - 1);
81
	//UBRR1L = 33;
82
	//öffnet einen Kanal für printf (STDOUT)
83
	//fdevopen (uart_putchar, 0);
84
	//sbi(PORTD,4);
85
  Debug_Timer = SetDelay(200);
86
}
87
 
88
 
89
 
90
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
91
//++ Sende-Part der Datenübertragung an zweiten UART
92
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
93
SIGNAL(SIG_USART1_TRANS)
94
{
95
 
96
 
97
 
98
}
99
 
100
 
101
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
102
//++ Empfangs-Part der Datenübertragung von zweitem UART
103
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
104
SIGNAL(SIG_USART1_RECV)
105
{
106
 
107
 
108
 
109
}
110
 
111
 
112
 
113
********************************************************************************
114
 
115
Was sonst noch zu beachten ist:
116
 
117
in "main.c" an geeigneter Stelle (z.B. dort wo bereits "UART_Init" aufgerufen wird nun auch "UART1_Init" aufrufen
118
 
119
 
120
Wenn in einer Routine der Zugriff auf ein altes UART Register vorkommt, welches nun auf UART1 (2ter Uart) gehen soll,
121
 dann muß der Zugriff natülich auch umgestellt werden. Bei den zugehörigen register Bit Definitionen gilt zwar das gleich, da
122
 die Bits bei UART0 und UART1 jedoch an selber Stelle im register ist es hier nur Kosmetisch nötig.
123
 
124
hierbei gilt:
125
 
126
alt (Zugriff auf Uart0) > neu (Zugriff auf Uart1)
127
 
128
USR		>	UCSR1A
129
UCR 	>	UCSR1B
130
UDR		>	UDR1
131
UBRR 	>	UBRR1L
132
EICR	>	EICR1B
133
TXEN	>	TXEN1
134
RXEN	>	RXEN1
135
RXCIE	>	RXCIE1
136
TXCIE	>	TXCIE1
137
U2X		>	U2X1
138
UCSRB	>	UCSR1B
139
UDRE 	>	UDRE1
140
 
141
UCSR0A	>	UCSR1A
142
UCSR0B	>	UCSR1B
143
UDR0  	>	UDR1
144
UBRR0L	>	UBRR1L
145
EICR0B	>	EICR1B
146
TXEN0 	>	TXEN1
147
RXEN0 	>	RXEN1
148
RXCIE0	>	RXCIE1
149
TXCIE0	>	TXCIE1
150
U2X0  	>	U2X1
151
UCSR0B	>	UCSR1B
152
UDRE0 	>	UDRE1
153
 
154
 
155