Subversion Repositories FlightCtrl

Rev

Rev 508 | Go to most recent revision | Details | Compare with Previous | 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)
37
#if defined (__AVR_ATmega644P__)
38
#	define USR  UCSR0A
39
#	define UCR  UCSR0B
40
#	define UDR  UDR0
41
#	define UBRR UBRR0L
42
#	define EICR EICR0B
43
#   define TXEN TXEN0
44
#   define RXEN RXEN0
45
#   define RXCIE RXCIE0
46
#   define TXCIE TXCIE0
47
#   define U2X  U2X0
48
#   define UCSRB UCSR0B
49
#   define UDRE UDRE0
50
#   define INT_VEC_RX  SIG_USART_RECV
51
#   define INT_VEC_TX  SIG_USART_TRANS
52
#endif
53
 
54
#define BAUD_RATE1 57600		//Baud Rate für UART2
55
 
56
********************************************************************************
57
in "uart.c" hinzufügen:  und die entsprechenden interrupt routinen mit code füllen
58
 
59
 
60
//############################################################################
61
//INstallation der 2ten Seriellen Schnittstelle
62
void UART1_Init (void)
63
//############################################################################
64
{
65
	//Enable TXEN im Register UCR TX-Data Enable & RX Enable
66
 
67
	UCSR1B=(1 << TXEN) | (1 << RXEN);
68
    // UART Double Speed (U2X)
69
	UCSR1A   |= (1<<U2X);
70
	// RX-Interrupt Freigabe
71
	UCSR1B |= (1<<RXCIE);
72
	// TX-Interrupt Freigabe
73
	UCSR1B |= (1<<TXCIE);
74
 
75
	//Teiler wird gesetzt
76
	UBRR1L=(SYSCLK / (BAUD_RATE1 * 8L) - 1);
77
	//UBRR1L = 33;
78
	//öffnet einen Kanal für printf (STDOUT)
79
	//fdevopen (uart_putchar, 0);
80
	//sbi(PORTD,4);
81
  Debug_Timer = SetDelay(200);
82
}
83
 
84
 
85
 
86
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
87
//++ Sende-Part der Datenübertragung an zweiten UART
88
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
89
SIGNAL(SIG_USART1_RECV)
90
{
91
 
92
 
93
 
94
}
95
 
96
 
97
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
98
//++ Empfangs-Part der Datenübertragung von zweitem UART
99
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
100
SIGNAL(SIG_USART1_TRANS)
101
{
102
 
103
 
104
 
105
}
106
 
107
 
108
 
109
********************************************************************************
509 walter 110
 
111
Was sonst noch zu beachten ist:
112
 
508 walter 113
in "main.c" an geeigneter Stelle (z.B. dort wo bereits "UART_Init" aufgerufen wird nun auch "UART1_Init" aufrufen
114
 
115
 
509 walter 116
Wenn in einer Routine der Zugriff auf ein altes UART Register vorkommt, welches nun auf UART1 (2ter Uart) gehen soll,
117
 dann muß der Zugriff natülich auch umgestellt werden. Bei den zugehörigen register Bit Definitionen gilt zwar das gleich, da
118
 die Bits bei UART0 und UART1 jedoch an selber Stelle im register ist es hier nur Kosmetisch nötig.
508 walter 119
 
509 walter 120
hierbei gilt:
508 walter 121
 
509 walter 122
alt (Zugriff auf Uart0) > neu (Zugriff auf Uart1)
508 walter 123
 
509 walter 124
USR		>	UCSR1A
125
UCR 		>	UCSR1B
126
UDR		>	UDR1
127
UBRR 		>	UBRR1L
128
EICR		>	EICR1B
129
TXEN		>	TXEN1
130
RXEN		>	RXEN1
131
RXCIE		>	RXCIE1
132
TXCIE		>	TXCIE1
133
U2X		>	U2X1
134
UCSRB		>	UCSR1B
135
UDRE 		>	UDRE1
508 walter 136
 
509 walter 137
UCSR0A	>	UCSR0A
138
UCSR0B	>	UCSR0B
139
UDR0  	>	UDR0
140
UBRR0L	>	UBRR0L
141
EICR0B	>	EICR0B
142
TXEN0 	>	TXEN0
143
RXEN0 	>	RXEN0
144
RXCIE0	>	RXCIE0
145
TXCIE0	>	TXCIE0
146
U2X0  	>	U2X0
147
UCSR0B	>	UCSR0B
148
UDRE0 	>	UDRE0
508 walter 149
 
509 walter 150
 
151