Portierung AT90S8035 nach ATmega163

Gast #11326
Lesenswert?

Hallo Thomas,

ich habe mich schon mal an der UART des MEGA163 versucht,
bin aber auf das Problem gestoßen das sich die Baudrate
nicht einstellen läßt.

Beim Mega323 gibts dafür sogar ein ERATA SHEET.

Ich benutze den IAR - COMPILER.

Hier ein Sourcecode auszug.

Villeicht mache ich ja auch bei der INIT phase einen Fehler
schaus dir mal an.

MFG
JOSEPH


Hier ein sourcecode auszug:

#include "stdio.h"
#include "iom163.h"

int putchar (int c)
{
unsigned char test;
test = UCSRA;
while((test & 0x20) == 0x00 );
UDR = c;

if (c == '\n')
{
while((test & 0x20) == 0x00 );
UDR = 0x0d;
}

return c;
}



void main (void)
{
UBRRHI = 0x00;
UBRRLO = 0x0B;


UCSRA = 0x20;
UCSRB = 0x08;


while (1)
{
printf ("hallo world");
}
}
Gast #11327
Lesenswert?

Vielen Dank für die Hilfe,
aber ich habe den Fehler schon gefunden.
Der ATmega163 hat sog. Fuse Bits, leider
stehen die Defaultmäßig auf interne
1MHz Takterzeugung. Mein 8Mhz Quarz wurde
nicht verwendet und somit lief mein Interruptprogramm zu langsam.

Danke
Gast #11329
Lesenswert?

Hallo Markus,
ja im Datenblatt steht, das der Defaultwert
der Fusebits den atmega163 auf den internen Oszillator einstellt. Man 
kann die
Fusebits mit dem Ponyprogrammer auslesen, aber Vorsicht, es wird ein 
invertierter Wert angezeigt. Am besten mal ins Datenblatt schauen 
(Seite5 und 134).

Aber Vorsicht mit den Fuse und Lock Bits.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren