Hi!
Ich habe seit kurzem damit angefangen mich mit Mikrocontrollern auseinander zu setzen und möchte nun den UART vom AtMega16 zum laufen bringen.
Ich benutze:
-STK 500 (RXD und TXD sind mit den richtigen Pins verbunden)
-AtMega16
-USB-Serial-Adapter
-den SW-Oscillator vom STK ( eingestellt mit 3686400 MHZ)
Leider bekomme ich durch das Terminal nur kryptische Zeichen oder Smileys zurück.
Ich habe schon etliche Fuse-Bits für die Clock-Source ausprobiert ,ohne Erfolg.
Muss ich etwas besonderes einstellen für den Software-Quarz des STK´s ?
Im Pc ist eingestellt:
BAUD : 19200
Stopbits: 1
Datenbits:8
Flusssteuerung : Keine
Parität: Keine
Der Code:
Gruß
Johan
Ich habe seit kurzem damit angefangen mich mit Mikrocontrollern auseinander zu setzen und möchte nun den UART vom AtMega16 zum laufen bringen.
Ich benutze:
-STK 500 (RXD und TXD sind mit den richtigen Pins verbunden)
-AtMega16
-USB-Serial-Adapter
-den SW-Oscillator vom STK ( eingestellt mit 3686400 MHZ)
Leider bekomme ich durch das Terminal nur kryptische Zeichen oder Smileys zurück.
Ich habe schon etliche Fuse-Bits für die Clock-Source ausprobiert ,ohne Erfolg.
Muss ich etwas besonderes einstellen für den Software-Quarz des STK´s ?
Im Pc ist eingestellt:
BAUD : 19200
Stopbits: 1
Datenbits:8
Flusssteuerung : Keine
Parität: Keine
Der Code:
Code:
#include <avr/io.h>
#include <inttypes.h>
#define F_CPU 3686400UL
#define BAUD 19200UL
#define UBRR_BAUD ((F_CPU/(16UL*BAUD))-1)
void uart_init(void)
{
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0x0ff);
UCSRB = (1<<RXEN)|(1<<TXEN);
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
int main(void)
{
uint8_t buffer;
uart_init();
buffer=1;
while (1)
{
while ( !( UCSRA & (1<<UDRE)) )
;
UDR = buffer;
}
}
Gruß
Johan