Subversion Repositories FlightCtrl

Rev

Blame | Last modification | View Log | RSS feed

********************************************************************************
in "makefile":
MCU = atmega644 
ändern in:
MCU = atmega644p

in "makefile" an entsprechender Stelle hinzufügen:
ifeq ($(MCU), atmega644p)
FUSE_SETTINGS = -u -U lfuse:w:0xff:m -U hfuse:w:0xdf:m
#FUSE_SETTINGS = -U lfuse:w:0xff:m -U hfuse:w:0xdf:m  

# -u  bei neuen Controllern wieder einspielen

 HEX_NAME = MEGA644P
endif


********************************************************************************
in "main.h" hinzufügen: (bei den anderen #defines)

#if defined (__AVR_ATmega644P__)
#define SYSCLK  20000000L       //Quarz Frequenz in Hz
//#define SYSCLK        16000000L       //Quarz Frequenz in Hz
#endif

********************************************************************************
in "rc.h" hinzufügen:  (bei den anderen #defines)
#if defined (__AVR_ATmega644P__)
//#define TIMER_TEILER        CK64
#define TIMER_RELOAD_VALUE  250
//#define TIMER_TEILER        CK256                 // bei 20MHz
//#define TIMER_RELOAD_VALUE  -78                                       // bei 20MHz
#endif

********************************************************************************
in "uart.h" hinzufügen: (bei den anderen #defines)

#define BAUD_RATE1 57600                //Baud Rate für UART2

#if defined (__AVR_ATmega644P__)
#       define USR  UCSR0A
#       define UCR  UCSR0B
#       define UDR  UDR0
#       define UBRR UBRR0L
#       define EICR EICR0B
#   define TXEN TXEN0
#   define RXEN RXEN0
#   define RXCIE RXCIE0
#   define TXCIE TXCIE0
#   define U2X  U2X0
#   define UCSRB UCSR0B
#   define UDRE UDRE0
#   define INT_VEC_RX  SIG_USART_RECV
#   define INT_VEC_TX  SIG_USART_TRANS
#endif

extern void UART1_Init (void);


********************************************************************************
in "uart.c" hinzufügen:  und die entsprechenden interrupt routinen mit code füllen


//############################################################################
//INstallation der 2ten Seriellen Schnittstelle
void UART1_Init (void)
//############################################################################
{
        //Enable TXEN im Register UCR TX-Data Enable & RX Enable

        UCSR1B=(1 << TXEN) | (1 << RXEN);
    // UART Double Speed (U2X)
        UCSR1A   |= (1<<U2X);           
        // RX-Interrupt Freigabe
        UCSR1B |= (1<<RXCIE);           
        // TX-Interrupt Freigabe
        UCSR1B |= (1<<TXCIE);           

        //Teiler wird gesetzt 
        UBRR1L=(SYSCLK / (BAUD_RATE1 * 8L) - 1);
        //UBRR1L = 33;
        //öffnet einen Kanal für printf (STDOUT)
        //fdevopen (uart_putchar, 0);
        //sbi(PORTD,4);
  Debug_Timer = SetDelay(200);  
}



//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Sende-Part der Datenübertragung an zweiten UART
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(SIG_USART1_TRANS)
{



}


//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++ Empfangs-Part der Datenübertragung von zweitem UART
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
SIGNAL(SIG_USART1_RECV)
{



}



********************************************************************************

Was sonst noch zu beachten ist:

in "main.c" an geeigneter Stelle (z.B. dort wo bereits "UART_Init" aufgerufen wird nun auch "UART1_Init" aufrufen


Wenn in einer Routine der Zugriff auf ein altes UART Register vorkommt, welches nun auf UART1 (2ter Uart) gehen soll,
 dann muß der Zugriff natülich auch umgestellt werden. Bei den zugehörigen register Bit Definitionen gilt zwar das gleich, da 
 die Bits bei UART0 und UART1 jedoch an selber Stelle im register ist es hier nur Kosmetisch nötig.

hierbei gilt:

alt (Zugriff auf Uart0) > neu (Zugriff auf Uart1)

USR             >       UCSR1A
UCR     >       UCSR1B
UDR             >       UDR1
UBRR    >       UBRR1L
EICR    >       EICR1B
TXEN    >       TXEN1
RXEN    >       RXEN1
RXCIE   >       RXCIE1
TXCIE   >       TXCIE1
U2X             >       U2X1
UCSRB   >       UCSR1B
UDRE    >       UDRE1

UCSR0A  >       UCSR1A                          
UCSR0B  >       UCSR1B                          
UDR0    >       UDR1                            
UBRR0L  >       UBRR1L                          
EICR0B  >       EICR1B                          
TXEN0   >       TXEN1                           
RXEN0   >       RXEN1                           
RXCIE0  >       RXCIE1                          
TXCIE0  >       TXCIE1                          
U2X0    >       U2X1                            
UCSR0B  >       UCSR1B                          
UDRE0   >       UDRE1