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
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.
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
Du kannst damit festlegen welche MObjekt emfangen werden sollen. Also ein Filter quasi.
Maske & Msg.ID = Maske -> Message wird empfangen und Ackn ausgelöst Maske & Msg.ID <> Maske -> Massage nicht empfangen, kein Ackn.
...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
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
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.
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.
[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
...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
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
@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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.