Hallo, ich versuche über die normale RS232 Daten vom µC zum PC zu senden. Ich arbeite mich gerade in die Thematik des 89c51cc01 ein. Beim 80c537A z.B. muss die Baudrate über den reload-wert des Timers bestimmt werden. Wie geht das mit dem Atmel? Gibt es zu diesem µC eine oder mehrere Internetseiten mit Beiträgen und Beispielprogrammen? Danke
Gast
#596651
Ist ein Standard-8051er bzw. -8052er Kern. Also Beispielcode so viel du willst im Netz. Außerdem, was ist immer so schlimm am Datenblatt-Lesen? http://www.atmel.com/dyn/resources/prod_documents/doc4129.pdf Kapitel "Serial I/O Port", S.55
Hallo, leider ist in der Doku u.a. nichts über die Bestimmung der Baudrate zu lesen etc. Das ist einesder Probleme.
Gast
#596689
Hilft Dir das weiter (T89C51CC01)?
// Baudraten gelten fuer 32MHz, SMOD = 1
unsigned char code baudrate_hwvalue[] = {
117, /* 0 1200 Baud -0,08% */
187, /* 1 2400 Baud 0,64% */
221, /* 2 4800 Baud -0,80% */
239, /* 3 9600 Baud 2,08% */
247, /* 4 19200 Baud -3,68% */
};
void uart_init(unsigned char baudrate)
{
TR1 = 0;
PCON = 0x80; /* PCON: SMOD=1 double baudrate */
SCON = 0x52; /* SCON: Mode 1, 8-bit UART */
TMOD &= 0x0F;
TMOD |= 0x20; /* TMOD: Timer 1, Mode 2 */
TH1 = baudrate_hwvalue[baudrate];/* TH1: reload value */
TR1 = 1; /* TR1: Timer 1 run */
}
Meiner Erinnerung zur Folgeist die Berechnung der Baudrate schon
einigermassen brauchbar im Datenblatt dokumentiert. Vielleicht find ich
auch noch mein Excel-Sheet, mit dem ich das damals berechnet habe.