LPT Port

Gast
er ist bidirektional

such mal bei google hatte mir damals mal ein programm in c geschrieben
um den paralelport aus der console anzusprechen

eigendlich ganz einfach
Gast
Was bedeutet Bit 5 umkehren? Wenn ich Daten lesen will, muss ich das Bit
auf eins setzen oder auf Null?

Im Internet habe ich erfahren, dass das BIT 5 vom ControlRegister nicht
bei jedem LPT Port funktioniert. Stimmt das?
Gast
Starte debug (du must in einem richtigen DOS sein, also von ner
Bootdiskette booten)

gib ein:

o 378 00

i 378

es muß 00 angezeigt werden (sonst ist der Port kaputt)

dann

o 37a 10

i 37a

wenn jetzt FF angezeigt wird, dann ist der Port bidirektional.
ansonsten kommt 00 zurück -> nicht bidirektional
Gast
Wenn Bit5 nicht unterstützt wird dann wird LPT auch nicht Bidirektional
sein. Das ist bei recht alten Computer der Fall.
Mein 14 jähriger PC unterstützt Bidirektionaler Datenverkehr.

Du kannst ja Bit5 lesen und dann Invertieren.

Gruss

Der Weihnachtsmann
Gast
Hallo Joe


Wenn deine LPT ECP oder EPP unterstützt dann ist sie auch
Bidirektional. Und das kannst du im Bios nachschauen und/oder sogar
einstellen.

Gruss

Weihnachtsmann
Gast
Ok im BIOS habe ich die Einstellung für den LPT vorgenommen.
Leider kann das Reset Request Bit nicht auf "1" setzen.

Das Reset Request Bit muss doch geprüft werden um dann das Bittiming
und die Nachrichtenfilter zu setzen. Erst dann können CAN-Botschaften
gesendet oder empfangen werden. Das Programm bleibt immer in der
do..while Schleife hängen. Was muss ich ändern damit die
Initialisierung durchläuft?

/*----Initialisierungsroutine für den CAN-Controller
SJA1000------------*/
void can_init(void)
{
 do
  {
   canreg_write(0,0x01);
  }
 while (((canreg_read(0)) &0x01)==0);
 canreg_write(4,0xFF);
 canreg_write(5,0xFF);

 canreg_write(6,0x43);
 canreg_write(7,0x2F);
 canreg_write(8,0x1A);
 canreg_write(31,0x07);

 do
  {
   canreg_write(0,0x00);
  }
 while (((canreg_read(0))&0x01)==01);
 canreg_write(1,0x0C);
}
Gast
Hallo Joe

Ich moment bin ich überfragt. Das hat jetzt mit CAN zu tun?
Anhand es Codes sehe ich nicht ob dies direkt mit LPT oder mit CAN zu
tun hat. Ich sehe nur dass du Bit1 prüfst.

Wenn ja dann Prüf ob LPT ohne CAN richtig funktioniert.
Sonst kannst du den Fehler nicht erruierten.

Gruss

Weihnachtsmann
Gast
Ok so wie es aussieht funktioniert die CAN Initialisierung.
Jetzt bin ich gerade dabei eine Botschaft auf den CAN Bus zu senden.
Das habe ich bis jetzt nicht zum laufen gebracht.
Das Programm bleibt bei "warten bis Sendung ausgelöst" stehen.
Es kann auch sein das die Initialisierung doch nicht richtig ist. Wie
gesagt den SJA1000 habe ich zusammen mit einem ATMEL Controller
am laufen. Klappt wunderbar.

/*----CAN Botschaft
senden------------------------------------------------*/
void TForm1::canmessage_write(struct message *ptransmit)
{
   unsigned int id_1,id_2,id_3;
   unsigned int id_1_hilf,id_2_hilf,id_3_hilf;
   unsigned int trdscr_wert;
   unsigned int i;

   id_3=(ptransmit->id)&0x0f;
   id_2=((ptransmit->id)/16)&0x0f;
   id_1=((ptransmit->id)/256)&0x0f;

   id_1_hilf=id_1*32;
   id_2_hilf=id_2*2;
   id_3_hilf=id_3/8;

   trdscr_wert=(id_1_hilf)|(id_2_hilf)|(id_3_hilf);
   canreg_write(10,trdscr_wert);


   id_3=(ptransmit->dlc)&0x0f;
   id_2=(ptransmit->rtr)*16;
   id_1=((ptransmit->id)&0x0f)*32;

   trdscr_wert =(id_3)|(id_2)|(id_1);
   canreg_write(11,trdscr_wert);

   for (i=0;i<=7;i++)
    {
     canreg_write (12+i,ptransmit->byte[i]);
    }
   canreg_write (1,0x01);                //Sendung auslösen

   do
    {
    }
   while (((canreg_read(2))&0x08)==0);    //warten bis Sendung fertig

}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.