Hallo, ich habe ein HC12 Board von elektronikladen.de nun würde ich gerne die CAN Schnittstelle in C programmieren. Bisher hab ich ein paar CAN Anwendungen am PC programmiert und würde einfach mal gerne probieren wie das am Mikocontroller läuft. Hat jemand ein Beispiel, in dem man sehen kann wie man - die Bitrate setzen kann - 8 Bytes auf einem bestimmten Identifier sendet - 8 Bytes und den Identifier lesen kann oder hat jemand Dokumente darüber? Ich habe das "Card12" Board mit MC912D60
Hm, wir haben damals den CAN-Stack gekauft - von Vector-Informatik. Die Software ist recht komplex. Bisher ist mir auch an anderer Stelle nur Industriesoftware in die Hände gefallen die ich nicht rausrücken oder anderweitig nutzen darf. Ich suche daher auch nach etwas einfacherem- wenn Du was findets, wäre ich dankbar.
ich hab im Geschäft auch eine Vector CAN Karte mit CANalyzer nun möchte ich halt für den "Heimgebrauch" zum etwas spielen eine kleine CAN Kommunikation mit dem HC12 und einer Peak PCAN USB Karte aufbauen. Was ich damit mache weiß ich noch nicht, im Moment will ich einfach nur eine CAN Botschaft vom HC12 an die Peak Karte schicken und das im CAN Monitor sehen ;) Hier hab ich einen Source gefunden, der relativ gut passen würde, leider ist das ganze in Assembler und nicht in C programmiert :( http://elmicro.com/files/canchat.zip
CANalyzer habe ich nicht privat und Peak PCAN USB sagt mir six. Das Assemblerprogramm ist klein genug um es in C zu reversen und neu zu backen. Must Dir halt Die Doku für dies Karte besoergen, um rauszufinden, welcher Port auf dieser Karte WAS genau macht. Ich kenne nun den HC12 nicht so gut, hatte es mit mit den x08-tern- könnte es sein, daß das derselbe CAn-Controller ist? Eigentlich müsste es doch seitens Motorola (inz. freescale) etwas doku geben, oder ?
ich hab nun den Assembler Code zum laufen bekommen :) nun muss ich das ganze nur noch nach C portieren. Wenn ich weiter gekommen bin dann melde ich mich. Peak PCAN USB ich ein USB to CAN Adapter auf Basis eines SJA1000 ist um einiges billiger wie eine Vector Karte, daher hab ich mir das für zuhause gekauft. Kann jedoch leider keine Wakeup Frames erzeugen.
also ich hab nun versucht das ganze in C zu konvertieren, leider klappt das ganze nicht. Ich hab das ganze so übersetzt: ------------------------------------------------- movb #$01,CMCR0 --> CMCR0 = 0x01; ------------------------------------------------- clr CMCR1 --> CMCR1 = 0x00; ------------------------------------------------- movb #2,Tx0+$0C --> #define Tx0 _P(0x0150) #define DLC _P(0x0150 + 0x0C) DLC = 0x1; ------------------------------------------------- Sloop brclr CTFLG,$01,Sloop staa Tx0+4 movb #$01,CTFLG --> #define CANTransmit _P(0x0150 + 0x04) CTFLG = 0x00; wait(30000); CANTransmit = 0xAA; CTFLG = 0x01; ------------------------------------------------- die Zeile: Sloop brclr CTFLG,$01,Sloop ist natürlich noch nicht optimal übersetzt, sollte so doch aber funktionieren oder? Sieht jemand den Fehler?
warum auch immer: es klappt ;) ich hab nochmal alles neu übersetzt und ein paar sachen entfernt. Ich fasse nun alles in ein paar Routinen zusammen und wenn gewünscht dann kann ich das natürlich hier posten.
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.