SJA1000 / LPT

Gast #304220
Lesenswert?
• ▲
▼
Hallo, ich habe mir einen kleine Platine gebastelt, da drauf ist ein
SJA1000, den ich über die LPT ansteuere.
Die LPT kann ich auch problemlos mit einer DLL ansprechen.
Ich hab mir mal ein kleines Progrämmchen mit dem orland Builder C++
geschrieben. Mit dem will ich den SJA1000 ansprechen. Was mir da
auffält ist das sich der SJA1000 gar nicht initialisieren läst.
Zur kontroller habe ich ein Tool heruntergeladen, mit dem ich die
einzelnen PINS der LPT überwachen kann. Das sehe ich dann, das mein
Programm versucht den SJA1000 zu initialisieren.Ich hab sogar mal ein
Register beschriben zB. Rigister 6 und dieses habe ich dann auch gleich
wieder ausgelesen. Da bekomme ich auch immer den wert 255 zurück.
Ich verstehe das nicht. Den Schaltplan habe ich von dieser seite
http://www.cantronik.com/. Der Resonator 8Mhz am SJA1000 funktioniert.
Die +5V liegen auch an.
#304221
Lesenswert?
• ▲
▼
Hallo Gerhardt,

ich habe mir vor einiger Zeit diese Canbus-Platine nachgebaut:
http://pinguin.sauerland.de/can200.html

Allerdings hatte ich das unter Linux getestet. Windows bin ich noch
nicht zu gekommen.

Dabei hatte ich ähnliche Probleme wie Du. Mittlerweile läuft sie
einwandfrei. Wenn ich mich richtig erinnere, war der Reset nicht auf 5V
gelegt in einem der beiden Layouts.

Such mal im Code-Forum. Da gab es ähnliche Probleme mit dem SJA1000
unter Windows.
Du musst den Mode des PArallel-Ports umschalten so dass er in beide
Richtungen läuft.

Grüße
Andreas
Gast #304222
Lesenswert?
• ▲
▼
Danke Andreas, ich doch ohne weiteres die Schaltung so aufbauen wie auf
dieser Seite http://www.cantronik.com/ , oder? Ja die LPT funktioniert
prima. Vielleicht liegt es auch daran, dass ich vielleicht doch nicht
von der LPT lesen kann. Kann mir jemand sagen welche DLL am besten
dafür geeignet ist, und welchen Mode oder Einstellung ich machen
sollte?

ich verwende das Btriebssystem Windows XP!
Gast #304223
Lesenswert?
• ▲
▼
Korrektur:

Danke Andreas, ich kann doch ohne weiteres die Schaltung so aufbauen
wie auf dieser Seite http://www.cantronik.com/ , oder? Ja die LPT
funktioniert eigentlich prima. Vielleicht liegt es auch daran, dass ich
vielleicht doch nicht von der LPT lesen kann. Kann mir jemand sagen
welche DLL am besten dafür geeignet ist, und welchen Mode oder
Einstellung ich an der LPT machen sollte?

Ich verwende das Betriebssystem Windows XP!
Gast #304228
Lesenswert?
• ▲
▼
Guten Abend,

ich habe meine Schaltung nochmals überprüft. Scheint alles ok zu sein.
Ich habe im BIOS bei LPT EPP eingestellt. Jetzt kann ich auch meinen
SJA1000 via LPT initialisieren.
Um zu Testen ob die Botschaften gesendet werden können, verwende ich
einen USB PEAK CAN DONGLE. Der SJA1000 von diesem DONGLE wird mit 16Mhz
versorgt. Mein SJA1000 mit 8Mhz. Ich habe alles mögliche versucht, aber
ich kann nichts empfangen. Kann jemand meine Funktion überprüfen ob
diese stimmt? (Baudrate 100kBit/s; Intel Mode)


/*----Initialisierungsroutine für den CAN-Controller
SJA1000------------*/
void TForm1::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,0xC1);
 canreg_write(7,0xEB);
 canreg_write(8,0x00);
 canreg_write(31,0x07);

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

Sind die Register6 (BusTiming0 Register), Register7 (BusTiming1
Register) und Register8 (Output Control) richtig so eingestellt?

Beise Teilnehmer habe ich sowohl mit 60Ohm verbunden, sowie ohne
Widerstand zwischen CAn LOW und CAN HIGH.
Gast #304229
Lesenswert?
• ▲
▼
Register 6 und 7 habe ich jetzt schon 1000mal verändert. Ich war schon
auf sämtlichen Internetseiten, wo man die Taktfrequenz vorgibt und die
gewünschte Baudrate, aber leider hilft das auch nichts!

Oder Vielleicht liegt es auch noch an dem Register 8? Grr....
Gast #304230
Lesenswert?
• ▲
▼
Ich würde mich echt freuen, wenn mir einer bei meinem Problem helfen
könnte. Ich drehe mich die ganze Zeit im Kreis herum.

Ich vermute mal das die Einstellung dieser Register 6,7,8 nicht
stimmen.

canreg_write(6,0xC1);
canreg_write(7,0xEB);
canreg_write(8,0x00);
Gast #304232
Lesenswert?
• ▲
▼
Juhu ich kann endlich Botschaften senden und empfangen.
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?
Gast #304233
Lesenswert?
• ▲
▼
@wolf4124:
Ich habe das nur unter Linux getestet. Mir eine Software unter Windows
zu schreiben, dazu bin ich noch nicht gekommen. Aber vielleicht kann
Dir Gerhardt jetzt weiterhelfen.

@Gerhardt.
Das verstehe ich bei Dir nicht. Wenn ich die Platine abgelemmt habe,
dann musste ich den neu initialisieren. Wenn Du den nur vom LPT
abklemmst, dann kann das schon sein, dass die Initialisierung erhalten
bleibt. Bei mir hatte der eine eigene Stromversorgung.

Grüße
Andreas
Gast #304235
Lesenswert?
• ▲
▼
>Oder kann ich den REset Pin vom SJA1000 auch auf den LPT Port legen >
und dann den SJA1000 zurücksetzten? Das müsste doch auch gehen
> oder?

Das würde ich so machen. Müsste funktionieren
In einer der beiden Schaltungen, die ich Dir oben genannt habe, wird
das so gemacht.

Grüße
Andreas

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.