Also die Baudrate ist im Programm-Code festgelegt. Hier nochmal der Code zur Erinnerung:
Code:
#include <avr/io.h>
#include <avr/sfr_defs.h>
//Einige Makros zur Berechnung des Baud-Raten Registers
#define F_CPU 8000000 // 8MHz Taktfrequenz
#define BAUD_RATE 9600 // gewünschte Baud-Rate für UART
#define BAUD_SELECT (F_CPU/(BAUD_RATE*16l)-1) //Berechnungsformel für das Baud-Raten Register
//Diese Funktion sendet ein einzelnes Zeichen an die UART
void uart_putchar(char c)
{
//warte, bis das Bit UDRE im Register UCSRA gesetzt ist.
//Dieses Bit wird vom Prozessor gesetzt, wenn das Senderegister leer ist
loop_until_bit_is_set(UCSRA, UDRE);
//Übergebenes Zeichen ins Senderegister UDR legen.
//Die Daten werden jetzt an die UART geschickt.
UDR = c;
}
int main (void)
{
//Zuerst muss die UART initialisiert werden
//Hier wird der Sender der UART aktiviert.
//Der Empfänger und die Interrupts bleiben in diesem Beispiel aus
UCSRB = 0x08;
//Jetzt muss noch die Baudrate eingestellt werden.
//Wir weisen dem Register einfach das Makro von oben zu.
UBRRL = BAUD_SELECT;
//Jetzt kommt die Hauptschleife
//Es wird immer das gleiche Zeichen (x) an die UART ausgegeben
while(1)
{
uart_putchar('x');
}
return 1;
}
Mit Quarzen kenn ich mich überhaupt nicht aus. Ich nehm aber mal an, dass es dieses silberne kleine Kästchen direkt neben dem Prozessor ist, da neben dem CoController auch nochmal sowas ist. (kling logisch, ein Quarz für jeden Prozessor) Mal abgesehen davon steht auf dem neben dem MainController 8.000 Mhz, auf dem anderen 4.000 Mhz.
mfg
jagdfalke
Lesezeichen