Hallo! Da ich am verzweifeln bin, wende ich mich zum letzten mal an Euch! Zur Zeit bin ich gerade dabei den SJA1000 an einem LPT Port unter Win2000 mit Borland Builder C++ zu betreiben. Den LPT Port kann ich ohne Probleme ansprechen. So wie es aussieht funktioniert auch die Initialisierung des CAN Controllers. Nur beim Senden einer CAN Botschaft, bleibt das Programm (siehe Funktion unten)immer in der do...while Schleife hängen. Einen CAN Teilnehmer habe ich auch angehängt mit der gleichen Baudrate von 100kBit/s. Wie gesagt den SJA1000 habe ich zusammen mit einem ATMEL Controller am laufen. Klappt wunderbar. Ich weiss einfach nicht mehr weiter. Gibt es hier in diesem Forum jemand der schon einmal einen CAN Baustein an einem LPT Port unter Win2000 bzw. WinXP betrieben hat? /*----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 }
Ich habe noch vergessen zu sagen, dass ich die DLL "inpout32.dll" verwende! MFG Joe
Klappt denn die prinzipielle Kommunikation über den LPT Port? Also mal Register im SJA beschreiben und zurücklesen? Gruß Falk
Hallo Joe, lies mal in der do-while Schleife das Can-Register 2 komplett aus und zeige alle 8 Bits an und poste diese hier. Hast du mal mit dem Oszi auf den Can-Leitungen nachgeprüft, ob sich da was tut wenn du eine Botschaft abschickst? Volker
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.