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
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?
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.
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?
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 ?
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?
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 }
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.