Forum: PC-Programmierung SJA1000 über LPT ansteueren


von Joe (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Gibt es hier im Forum jemand der den CAN-Controller (SJA1000) über die
LPT angesteuert hat?
Die LPT kann ich unter Win2000 sowie WinXP problemlos ansteueren.
Ich schaffe es nur nicht den CAN Controller richtig anzusteueren.
Programmiertool: Borlaqnd Builder C++ Version5.0
DLL für LPT Ansteuerung: "inpout32.dll"

Für die Hilfe bin ich sehr dankbar!

MFG

von Joe (Gast)


Lesenswert?

Leider ist es mir immer noch nicht gelungen vo CAN Controller die Daten
auszulesen.
Gibt es in diesem Forum überhaupt niemand der sich damit auskennt?

von Pontonfrog (Gast)


Lesenswert?

Hallo, habe das selbe Problem wie Du. Ich arbeite mit Visual C++.
Eine Initialisierung des SJA ist mir bisher auch nicht gelungen. Ich
wollte zunächst den SJA in den Resetmode bringen um das Bittiming und
die Nachrichtenfilterung zu initialisieren. Das mit dem Resetsignal
klappt bei mir schon mal nicht.
Gelingt es Dir den SJA an Pin 17 auf low zu ziehen?

Mfg

PS: Ich arbeite mit Win2k und habe DirectIO um auf die parallele
Schnittstelle zuzugreigfen.

von Joe (Gast)


Lesenswert?

Hallo !

Wie gesagt ich schaffe es nicht von einem Register die Daten über die
LPT auszulesen.
AM RESET EIngang habe ich einfach einen 10K Ohm WIderstand auf VCC +5V
gelegt. Der PIN 17 bleibt ja nicht die ganze Zeit auf LOW.
Zuvor habe ich den SJA mit einem normalen ATMEL COntroller angesteuert.
Funktioniert problemlos.
Schaffst du es eingentlich die Daten vom SJA über die LPT auszulesen?

von Joe (Gast)


Lesenswert?

Die Schaltung wird bei mir mit den +5V vom USB Anschluss des PC's
versorgt.

Ja klappt es bei dir, dass du z.B. vom Register (Adresse 0x01) die
Daten auslesen kannst ?

von Pontonfrog (Gast)


Lesenswert?

Hallo, musste zwischendurch zum Arbeiten...

1.
Welche Adresse meinst Du? Die Adresse 0x01 am SJA?

Ehrlich gesagt ist mir auch nicht so ganz klar, wie die Adressen im SJA
zugeordnet werden, bzw. wie über die 8 Datenleitungen der Adressraum des
SJA angesprochen wird. Bisher konnte ich auch keinerlei Infos dazu
erhalten.

Gibt es da von Deinem ATMEL Projekt noch irgendwelche Hinweise? Die
schreiben immer, dass der SJA wie ein gemappter Speicher verstanden
werden kann.
2.
So wie ich das bisher gelesen habe(vgl. Philips Application Note
AN97076 Kap. 4.2.1) muß ein Reset an Pin 17 erfolgen. Anschließend kann
das Reset Request Bit noch geprüft werden um dann das Bittiming und die
Nachrichtenfilter zu setzen. Erst dann können CAN-Botschaften gesendet
oder empfangen werden.

3.
Welche Einstellungen des LPT (EPP, ECP normal Mode) verwendest Du?

von Joe (Gast)


Lesenswert?

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

}

von tüdel (Gast)


Lesenswert?

seh dir doch mal das an!
http://pinguin.sauerland.de/can200.html
über links kommst du zu quellen der treiber ;-)

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.