PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Usart0 von Atmega162



homedom
10.04.2008, 19:11
Hi,
ich bin grad dabei mir ein kleines Bussystem aufzubauen. Als Schnittstelle zum PC will ich einen Atmega162 benutzen, da der 2 Uarts hat. Mein Problem is aber, dass ich es nicht zum laufen bekomm. Ich hab ein kleine Programm geschrieben, dass nur über Uart0 ein Zeichen ausgeben soll, an Uart0 hängt die serielle Com Schnittstelle. Hier mal mein Programm:


#include <avr/io.h>
#include <stdint.h>
#include <avr/interrupt.h>

#define F_CPU 16000000L
#define CBAUD 9600L
#define COM_VAL ((F_CPU/(CBAUD*16))-1)

void com_init()
{
UBRR0H = COM_VAL >> 8;
UBRR0L = COM_VAL & 0xFF;
UCSR0B = (1<<TXEN0)|(1<<RXEN0);
UCSR0C = (1<<URSEL0)|(1<<UCSZ01)|(1<<UCSZ00);
}
void com_send(unsigned char c)
{
while ( !( UCSR0A & (1<<UDRE0)) )
;
UDR0 = c;
return;
}

int main(void)
{
DDRD = 0xFF;
com_init();

while(1)
{
com_send('E');
}


return 0;
}

Harwaretechnisch sollte alles i.O. sein, da der bootloader auch funktioniert. Kann mir einer sagen was ich falsch mache? Am PC kommt kein Zeichen an?!

gruß, homedom

McJenso
11.04.2008, 19:03
Hallo,
prüfe mal die Hardware, die Einstellungen am PC und die Taktfrequenz des µC (FuseBits).
Kannst du den MAX232 entfernen? Dann kannst du die Leitung zum PC so brücken, dass er sein eigenes Signal (Echo)empfängt. Das gleiche versuchst du noch einmal hinter dem MAX. Wenn das auch geht ist der MAX richtig angeschlossen. Die Verbindung von da bis zum µC sollte man per Sichtprüfung hinbekommen.

Gruß

Jens

homedom
02.05.2008, 12:44
Hi,
leider bin ich immer noch nicht vorran gekommen. Wie gsagt, die Hardware sollte OK sein, weil ja der Bootloader auch geht und der sendet ja auch ein zeichen und empfängt wieder zeichen, also der MAX232 sollte richtig angeschlosse sein. Die Taktfrequenz muss demnach auch richtig sein und die Einstellungen am PC hab ich auch geprüft.. Hat keiner ne erklärung?

gruß, homedom