UART mit 250kBaud

Gast #672255
Lesenswert?

Hi Leute,

ich hab heut den ganzen lieben langen Tag alles versucht um bei meinem
AT89C51RC eine Baudrate von 250k über die UART raus zu bekommen, bei 
einer Fosc von 16MHz.
und ich bin kläglich gescheitert.
Ich hab so ziemlich alles versucht, hab mich durch atmel.com gewühlt hab 
datenblätter studiert hab dieses forum durchwühlt hab google gefragt 
alles was mir eingefallen ist hab ich versucht; OHNE ERFOLG
ich bin grad echt am verzweifeln.

mein vorgehen war bisher so dass ich versuche mit Timer1 die Baudrate zu 
definieren. aber der höchste Wert den ich bisher geschafft habe waren 
83kBaud
(gemessene 12us pro Bit)
und ich brauche 4us pro Bit

meine UART INIT sieht folgendermaßen aus:

void InitSerial(void)
{
  ET1 = 0;    /* TIMER1 INT DISABLE */
  TMOD = 0x20;
  PCON |= 0x80;           /* Double UART Frequenzy*/

  TH1 = 0xFF;    /* X2(SMOD=1) at 16 MHZ */

  TR1 = 1;    /* START THE TIMER1 */
  SCON = 0x52;    /* SERIAL MODE 1, REN=1, TI=1, RI=0 */

  /* Interrupt */
  ES   = 0;     /* Serial interrupt disable */
  RI   = 0;
  TI   = 0;
  while(TI && RI);
}

außerde setzte ich das X2 Bit für die doppelte Systemtaktrate
CKCON = 0x01;     // X2 Mode



Is wirklich nicht mehr drin oder mach ich einfach was grundlegendes 
falsch??
es wäre echt super toll wenn mir wer sagen könnte wo mein fehler ist 
oder mir einfach mal ne RICHTIGE Init zeigen könnte^.^

schon jetzt danke für eure Mühen
Stefan
Gast #672443
Lesenswert?

Danke für die schnellen Antworten,
hab mich jetzt nochmal 1,5h hingesetzt und des ganze in Ruhe mal mit 
Timer 2 am Papier entwickelt. und ich glaube auf eine brauchbare lösung 
gekommen zu sein.
sollte alles stimmen und ich es zum laufen bringen werd ich meine 
UART_init() posten für alle die das dann noch wissen wollen g

dankeschön

Stefan

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