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)
#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

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

********************************************************************************
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_RECV)
{



}


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



}



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

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 alter UART Register vorkommt, welches nun auf UART1 (2ter Uart) gehen soll, dann muß der Zugriff natülich auch umgestellt werden:

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  >       UCSR0A                          
UCSR0B  >       UCSR0B                          
UDR0    >       UDR0                            
UBRR0L  >       UBRR0L                          
EICR0B  >       EICR0B                          
TXEN0   >       TXEN0                           
RXEN0   >       RXEN0                           
RXCIE0  >       RXCIE0                          
TXCIE0  >       TXCIE0                          
U2X0    >       U2X0                            
UCSR0B  >       UCSR0B                          
UDRE0   >       UDRE0