Gast
#672255
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