Gast
#440548
Hallo, ich möchte einen TL16C554 vorerst mit einen ATmega16 initialisieren. Das scheint auch zu funktionieren, nur das Divisor Latch übernimmt nicht die Änderung für das DLM (MSB). Der Divisor ist für 4800 Baud 24(0x18h), d.h. LSB=0x18h und MSB=0x00h Leider wird nur die Änderung für das LSB übernommen. Weiß jemand rat? :) Hyperterminalauszug: Vor dem Reset und der Initialisierung: Receiver buffer: 11111011 IER: 00000000 IIR: 00000001 LCR: 00000000 MCR: 00000000 LSR: 01100000 MSR: 11110000 LSB: 00011000 MSB: 11111111 Nach dem Reset und der Initialisierung: Receiver buffer: 00000000 IER: 00000000 IIR: 11000001 LCR: 00000011 MCR: 00000000 LSR: 01100000 MSR: 11110000 LSB: 00011000 MSB: 11111111 (MSB läßt sich nicht ändern, die anderen Register sind ok) Codeauszug: schreiben_ini(); PORTB = 0x03; // 0000 0011 A2A1A0=011 LCR PORTA = 0x80; // 1000 0000 DLAB setzen PORTB = 0x00; // 0000 0000 A2A1A0=000 divisor latch LSB PORTA = 0x18; // 0001 1000 4800 baud PORTB = 0x01; // 0000 0001 A2A1A0=001 divisor latch MSB PORTA = 0x00; // 0000 0000 Jürgen