Forum: Mikrocontroller und Digitale Elektronik AT90CAN128 - Offene Fragen


von Holger (Gast)


Lesenswert?

Hallo zusammen,

auch Dank eurer Unterstützung hab ich mich jetzt schon recht tief in
den AT90CAN128 reingearbeitet. Bei meinen ersten Versuchen hab' ich ne
CAN- Botschaft gesendet. Das hat soweit auch in allen Varianten
funktioniert (Std/Ext., verschiedene Anzahl von Daten- Bytes...). Mein
Problem ist jetzt, dass ich der Controller mir die Botschaft nur 1 Mal
verschickt. Eigentlich hatte ich das Datenblatt so verstanden, dass der
CAN- Channel die verschiedenen MObs regelmäßig scannt und abarbeitet.
Bitte klärt mich mal auf...
Meine zweite Frage betrifft die Identifier Mask. Was hat diese für eine
Funktion???

Ich hoffe auch dieses Mal wieder auf euren Beistand.

Gruß Holger

von Birger* (Gast)


Lesenswert?

Jeder Befehl wird nur einmal ausgeführt und danch muss CANCDMOB neu
konfiguriert werden, um für den nächsten Einsatz bereit zu sein. Siehe
S.256 bei Bit 6 und 7.

von Holger (Gast)


Lesenswert?

Hallo Birger,

danke für deine Antwort. Das funktioniert jetzt schonmal so.
Hat jemand noch ne Antwort auf die Frage nach der Identifier Mask?

MfG Holger

von MartinS (Gast)


Lesenswert?

Du kannst damit festlegen welche MObjekt emfangen werden sollen. Also
ein Filter quasi.

von MartinS (Gast)


Lesenswert?

Maske & Msg.ID = Maske -> Message wird empfangen und Ackn ausgelöst
Maske & Msg.ID <> Maske -> Massage nicht empfangen, kein Ackn.

von larsen (Gast)


Lesenswert?

...so ist das aber nicht im Datenblatt aufgezeichnet. Nach diesem
nämlich ist die ID Maske nutzlos. Vielleicht kann das irgend jemand
genauer erklären.

Danke, larsen

von Holger (Gast)


Lesenswert?

Hallo MartinS,

danke erst Mal für deine ANtwort. ALlerdings hab ichs noch net ganz
kapiert.
Im Datenblatt steht jeweils
            0 - comparison true forced
            1 - bit comparison enabled
Ich werd daraus einfach nicht schlau.

MfG Holger

von Rahul D. (rahul)


Lesenswert?

Ich kenne den 90CAN128 nicht, aber den MCP2515 und danach müsste es
eigentlich zwei Masken geben.
In der einen wird angegeben, welche Bits überhaupt beachtet werden (das
was Holger schreibt), und dann müsste es noch eine Maske geben, wo man
die Id angibt, die man empfangen will. So ist es möglich auch auf
Gruppen von Ids zu reagieren (nämlich alle, die in der ersten (Holgers)
Maske durch 0 markiert sind).
Wenn man in Holgers Maske alle Bits auf 1 setzt, dann wird nur eine
einzige ID entsprechend der 2. Maske empfangen.

von Rahul D. (rahul)


Lesenswert?

so, jetzt kenne ich auch den CAN-Controller...
Kapitel 20.5.2:Acceptence Filter (Seite 243).
Da ist sogar ein Beispiel für das Maskieren gegeben.
Das von Holger angesprochene Register ist das ID MSK-Register.
Hier kann man die Adresse vorfiltern; also alle Adressen festlegen, die
man empfangen will (eine Gruppe also).
Das ID TAG-Register legt dann fest, welche Adresse aus dem
vormaskierten Adressraum genau empfangen werden soll.

von Michael W. (mictronics) Benutzerseite


Lesenswert?

[quote]Im Datenblatt steht jeweils
            0 - comparison true forced
            1 - bit comparison enabled
[/quote]
Ich hab auch noch nicht mit dem AT90CAN128 gearbeitet, aber ich
versteht das Datenblatt so:

siehe Figure 120 auf Seite 239

Das ID MASK Register gibt an, welche Bits beachtet werden sollen. Eine
0 bedeutet, das der Vergleich auf jeden Fall TRUE ergibt (der
Bitzustand im ID TAG spielt also keine Rolle). Jedes Bit mit 1 im ID
MASK ergibt einen direkten Bitvergleich zwischen ID TAG und der
Empfangenen Frame ID.

Das ID TAG Register ist die Maske wo man die Id angibt, die man
empfangen will.

Das Beispiel für ID 0x317

111 1111 1111 ID MASK
011 0001 0111 ID TAG
------------- UND
011 0001 0111 Als empfangene ID ist nur 0x317 gültig


111 1111 1000 ID MASK (die 3 LSB mit 0 setzen das Ergebnis des UND auf
1)
011 0001 0xxx ID TAG
------------- UND
011 0001 0xxx Als empfangene ID ist nur 0x310 - 0x317 gültig

/Michael

von larsen (Gast)


Lesenswert?

...genau. So funktioniert das tatsächlich, ich habs mittlerweile
ausprobiert. Wieso nur muss ich alles, was ich hier frage dann doch
selbst rauskriegen? ;-)

VG larsen

von Rahul D. (rahul)


Lesenswert?

laut denken...

von glaskreis (Gast)


Lesenswert?

Hallo,
vielleicht gehört meine frage nicht ganz in dieses Forum,jedoch
benötige ich als neueinsteiger ein wenig hilfe.ich kenne mich garnicht
mit mikrocontroller aus.
mein problem ist,dass ich drei signale(zwei digitale und ein analoges)
mit 200kHz synchronisieren muss.alle drei signale sollen in den rechner
geladen werden und ausgewertet.
meine frage:wie kann ich das mit mikrocontrollerboards realisieren und
welche kommen da in frage?
ist nur ne variante von mir,alternativen sind PCI- oder
USB-Messmodule.die sind nur ein wenig teuer.
wär euch für eure hilfe sehr dankbar
MfG

von larsen (Gast)


Lesenswert?

@rahul: Ich wollte nur darauf anspielen, dass sich auf meinen Beitrag 10
Tage lang nix rührt und dann auf einmal mehrere Antworten an einem Tag
kommen, nur eben nicht mehr als Reaktion auf meine Frage...ging mir mit
anderen Threads genauso. Liegt das an mir schnüff ? ;-) Ansonsten hast
du recht, laut denken hilft oft.

von Claudia Junge (Gast)


Lesenswert?

Hast Du in Assembler oder in C geschrieben, könntest Du Dein Code mal
posten? Ich würde mich auch dafür interessieren.

mfg

Claudia

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.