Forum: Mikrocontroller und Digitale Elektronik Portierung AT90S8035 nach ATmega163


von Thomas (Gast)


Lesenswert?

Hallo,
kann mir jemand einen Tip geben wenn
ich ein Programm das für den AT90S8035 geschrieben ist auf den 
PIN-kompatiblen
ATmega163 übertragen will.
Besonders im Hinblick auf UART und TC-Interrupt.

Danke

von joseph (Gast)


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");
}
}

von Thomas (Gast)


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

von Markus Burrer (Gast)


Lesenswert?

Aha, interessante Info. Wird der 163 standartmäßig  so ausgeliefert? 
Wäre interessant zu wissen.

von Thomas (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.