Wie kann ich den FIFO des 16550 einschalten?
Ich brauche da ein kleines (Free)BASIC-Programm, das die Register des 16550 so verfummelt das der FIFO benutzt wird.
Es geht um eine kleine Steuerungs-Bastellei.
Meine Hardware ist ein ITX-Motherboard.
Betriebssytem ist FreeDOS, also kein Windows...
wo ich mal eben die bla.INI oder die Registry verfummeln könnte.
Programmieren - alles kontrollieren 4.938 Themen, 20.667 Beiträge
Hi!
Das läuft über direktes Ansteuern des Bausteines über Portadressen und dem Setzen von entsprechenden Bits.
Die Umsetzung ist bei mir (unter DOS mit TurboPascal) schon einige Jahre her, so dass ich das auch nicht mehr aus dem Ärmel schütteln kann. Ich habe damals den grossen "PC-Intern 4" Schmöker vom M. Tischer. Ich keine da wäre das beschrieben gewesen.
Online habe ich mit einer Google suche, die folgende Seite aufstöbert: http://www.lammertbies.nl/comm/info/serial-uart.html
Dabei hatte ich nach folgenden Suchbegriffen gesucht: use FIFO 16550
Bis dann
Andreas
PS: ich habe doch noch Sourcen auf meinem Notebook. Da ist sogar eine Routine darunter, welche die FIFOs aktiviert. Villeicht hilft es dir ja zusammen mit der Googlesuche und dem Oben eingefügten Link weiter.
{Initialisierungsproceduren:}
procedure OpenCOM1;
var r:registers;
begin
{COM1 für SPS-Kommunikation verwenden}
SPS_COM:=0; {(COM2: DX:=1)}
r.ah:=0; {Funktion 0 des Interupts $14 wählen}
r.dx:=SPS_COM; {Schnittstelle COM1 gewählt }
r.al:=128+64+32+16+8+2;
{128+64+32: 9600Baud
128+64 : 4800Baud
16+8 : gerade Paritaet
2 : 7 Bit}
r.ds:=0; {Vorbelegung laut Online-Hilfe}
r.es:=0; {ditto}
intr($14,r);
{FIFOs einschalten:}
port[$3f8+2]:=4+2+1;
{ 1: FIFOs einschalten
2: Empfangspuffer löschen
4: Sendepuffer löschen}
{Serielle Schnittstelle als Gerät öffnen:}
assign(COM1out,'com1');
rewrite(COM1out);
assign(COM1in,'com1');
reset(COM1in);
end;