Forum: PC-Programmierung SJA1000


von Gerhardt (Gast)


Lesenswert?

So endlich funktioniert meine Applikation SJA1000 am LPT Port.
Ich habe den PIN5 von CAN Traciever 82C250 auf +5V gelegt.
Das Register 8 (OCR Register) da habe ich nicht so den Durchblick über
die genaue Funktionsweise.
Das Register habe ich bei mir mit dem Wert 0xEA initialisert.
Siehe da es funktioniert.


Wenn ich während dem Betrieb die Spannung vom SJA1000 unterbreche oder
den SJA1000 komplett von der LPT trenne und anschließend alles wieder
anschließe, dann kann ich weiterhin die gleichen Botschaften senden und
empfangen.
Normalerweise müsste ich doch erst den SJA1000 ganz neu initialisieren,
weil ich die Spannung zuvor abgeklemmte habe oder?
Gibt es eine Möglichkeit den SJA1000 abzuschalten, bzw. so dass man ihn
neu Initialiseren muss?

von Gerhardt (Gast)


Lesenswert?

Gibt es unter WIndows XP eine Möglichkeit, mit der ich feststellen kann
ob der ECP oder EPP Mode aktiviert wurde?
Wenn ich den LPT zum schreiben und lesen benutzen will, dann muss ich
im BIOS immer den LPT PORT auf EPP Mode umstellen.

von Gerhardt (Gast)


Lesenswert?

Im Internet habe ich folgenden Text gefunden:

ECP: Extended Capability Port
Das ECP-Protokoll wurde von Hewlett Packard und Microsoft als
modifizierte Kommunikation zwischen Druckern und Scannern ausgewiesen.
Ähnlich wie das EPP-Protokoll unterstützt ECP die Parallelübertragung
mit hoher Geschwindigkeit zwischen Host-Adapter und Peripherie. Ferner
sieht ECP einen eigenen DMA-Kanal vor, FIFO-Pufferung für Hin- und
Rückkanal und Datenkompression nach dem Run_Lenght-Encoding (RLE)
Verfahren. Die zusätzlich erforderlichen ECP-Register können durch
aufaddieren von 0x400 auf die Basisadressen adressiert werden. Auch
hier sind mehrere Geräte adressierbar. Spezifikationen:
·  4 Kontrolleitungen HOSTCLK, HOSTACK, 1284ACTIVE, REVERSEREQUEST
(Ausgang)
·  5 Statusleitungen PERIPHCLK, PERIPHACK, ACKREV, XFLAG, PERIRQ
(Eingang)
·  8 Adress-/Datenleitungen D0 - D7 (Ein+Aus)
Es gibt zwei Arten von bidirektionalen Datenübertragungszyklen:
·  Data Cycles
·  Command Cycles
Hier ist das Extended Control Register (ECR) ganz interessant, das
unter der Adresse BASE + 0x402 zu finden ist.

Bit  Betriebs-Modus
7-5  000  Standard Mode
  001  Byte Mode
  010  Parallel Port FIFO Mode
  011  ECP FIFO Mode
  100  EPP Mode
  101  Reserved
  110  FIFO Test Mode
  111  Configuration Mode
4  ECP Interrupt Bit
3  DMA Enable Bit
2  ECP Service Bit
1  FIFO Full
0  FIFO Empty

Da für die im folgenden gezeigten Beispiele für die Hardwareansteuerung
die Modi EPP und ECP nicht verwendet werden, sei für diese auf die oben
genannte Webseite von Warp Nine verwiesen.
Bei allen Experimenten am Parallelport ist Vorsicht geboten, weil bei
unsachgemäßer Handhabung Kurzschlüsse für den Parallelport oder gar für
das gesamte Mainboard entstehen können. Die Ausgänge eines
Centronics-Ports halten einer Strombelastung von ca. 5-15 mA stand.
Dies reicht mit einem geeigneten Vorwiderstand (z.B. 270 bis 680 Ohm),
um eine LED zum Leuchten zu bringen. Möchte man Taster oder Schalter
direkt abfragen, so müssen die Eingänge über Pull-Up-Widerstände in
einen definierten High-Zustand gebracht werden und können dann gezielt
auf Masse geschaltet werden.

Wie kann man dieses Register benutzen und warum gibt es diess Register
überhaupt?

von Gerhardt (Gast)


Lesenswert?

Jeder PC ist standardmäßig auf den ECP Modus eingestellt.
Um vom ECP Modus in den EPP Modus umzuschalten ohne zuvor im BIOS was
abzuändern, kann man doch per Software das Register 0x402 auslesen und
anschließen den enstpsrechenden Wert übergeben oder?
Welche Wert müsste ich dann in das Register 0x402 übergeben?

von Gerhardt (Gast)


Lesenswert?

Nun habe ich meine Applikation SJA1000 an LPT an einem anderen rechner
(Windows XP) drangehängt. Was mir da auffällt ist, dass die Botschaften
manchal nicht korrekt empfangen werden.

CAN.receive.byte[0];
CAN.receive.byte[1];
CAN.receive.byte[2];
CAN.receive.byte[3];
CAN.receive.byte[4];
CAN.receive.byte[5];
CAN.receive.byte[6];
CAN.receive.byte[7];

Das finde ich merkwürdig. genauso beim empfangen von Botschaften, da
kommt auch nur Misst an. Auf dem anderen Rechner Windows2000 da
funktioniert es prima. Liegt es vielleicht am Betriebssystem oder LPT
DLL?

von Gerhardt (Gast)


Lesenswert?

Guten Morgen,

das Problem ist bereits gelöst. Und zwar habe ich zwischen LPT vom PC
und Applikation ein selbergebasteltes Kabel verwendet. Wenn ich die
Applikation direkt auf den LPT hänge dann funktioniert es problemlos.
Also es lang nur an dem scheiß kabel.

von Milan (Gast)


Lesenswert?

hallo.
Ich habe ein tester program fur windows XP.
Meine preise ist 2,5EUR.
sivak@praktickaelektronika.sk

von micha (Gast)


Angehängte Dateien:

Lesenswert?

habe eine schaltung von elektor mit sja100 und 82c250
habe extra zwei stück davon gebaut um die komunikacion zwischen zwei pc
zu visualisiren aber es geht nicht . nach dem reset kann ich die
register von sja 1000 beschreiben aber es komt nichts bei dem andern an
was mache ich falsch ???

von micha (Gast)


Lesenswert?

wie initialisiert man den sja 1000

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.