Subversion Repositories FlightCtrl

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
508 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)
521 walter 37
 
38
#define BAUD_RATE1 57600		//Baud Rate für UART2
39
 
508 walter 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
 
521 walter 57
extern void UART1_Init (void);
508 walter 58
 
521 walter 59
 
508 walter 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
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
521 walter 93
SIGNAL(SIG_USART1_TRANS)
508 walter 94
{
95
 
96
 
97
 
98
}
99
 
100
 
101
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
102
//++ Empfangs-Part der Datenübertragung von zweitem UART
103
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
521 walter 104
SIGNAL(SIG_USART1_RECV)
508 walter 105
{
106
 
107
 
108
 
109
}
110
 
111
 
112
 
113
********************************************************************************
509 walter 114
 
115
Was sonst noch zu beachten ist:
116
 
508 walter 117
in "main.c" an geeigneter Stelle (z.B. dort wo bereits "UART_Init" aufgerufen wird nun auch "UART1_Init" aufrufen
118
 
119
 
509 walter 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.
508 walter 123
 
509 walter 124
hierbei gilt:
508 walter 125
 
509 walter 126
alt (Zugriff auf Uart0) > neu (Zugriff auf Uart1)
508 walter 127
 
509 walter 128
USR		>	UCSR1A
521 walter 129
UCR 	>	UCSR1B
509 walter 130
UDR		>	UDR1
521 walter 131
UBRR 	>	UBRR1L
132
EICR	>	EICR1B
133
TXEN	>	TXEN1
134
RXEN	>	RXEN1
135
RXCIE	>	RXCIE1
136
TXCIE	>	TXCIE1
509 walter 137
U2X		>	U2X1
521 walter 138
UCSRB	>	UCSR1B
139
UDRE 	>	UDRE1
508 walter 140
 
521 walter 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
508 walter 153
 
509 walter 154
 
155