Forum: Mikrocontroller und Digitale Elektronik HC12 CAN Programmierung


von Tobias Hauser (Gast)


Lesenswert?

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

von Jürgen Schuhmacher (Gast)


Lesenswert?

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.

von Tobias Hauser (Gast)


Lesenswert?

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

von Jürgen Schuhmacher (Gast)


Lesenswert?

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 ?

von Tobias Hauser (Gast)


Lesenswert?

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.

von Tobias Hauser (Gast)


Lesenswert?

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?

von Tobias Hauser (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.