mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR CAN Teinehmer gezielt ansprechen


Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen

Was den CAN-Bus angeht, stehe ich noch ganz ganz weit am Anfang. Ich 
habe noch  einige Verständnisprobleme mit der Abarbeitung von Anfragen. 
Bsp. Bus mit mehreren Knoten , die alle eine Temperatur Messen können. 
Beim I2C war es ja so, da habe ich gesagt "Start-Adresse,lesen - was 
will ich lesen-Stop". Und dann hat ja genau der adressierte Teilnehmer 
seine Info zurückgesendet.

Wie läuft denn das nun beim CAN. Ich möchte jetzt meinetwegen genau vom 
Tempfühler im Badezimmer die Temperatur wissen, und nicht die vom 
Tempfühler im Gewächshaus. Wenn ich jetzt eine Nachricht verschicke "ID 
- lesen" dann hören ja alle mit. Wenn jetzt nur der Tempfühler im 
Badezimmer antworten soll, muss dann die Id der Anfrage nach der 
Temperatur im Bad eine andere sein, als die ID der Anfrage nach der 
Temperatur im Gewächshaus?

Das heißt, brauche ich bei 20 verschiedenen Tempfühlern (rein 
theoretisch ;-)) 20 mal die ID (1=TempS1 , 2=TempS2... usw) oder wie?

Bedeutet das auch, dass mein BUS bzw dessen Teilnehmer zusammen, bei 
11bit ID genau 2048 verschieden Befehle "versteht"?

So, dass wäre das erste Unklare. Nun noch eine zweite Sache ... vorerst 
:-).
Mein Testbus besteht aus 3 Knoten 
(MAX232<->ATmega8<->MCP2515<->PCA82C250) und  die ganzen Teile dafür 
kommen hoffentlich in den nächsten Tagen und dann lege ich los mit 
probieren.
Aber... jetzt kommts :-),im dem Datenblatt des AT90CAN128 (ist mir für 
den Anfang zu umständlich zum Testbordaufbau) bin ich über den Begriff 
"Pages" gestolpert. Was sind denn nun wieder die Pages? Ist das eine 
Ablage, wenn mehrer Datenpakete in schneller Folge kommen? Da würde mir 
die grobe Info erstmal reichen, da meine ersten Gehversuche bestimmt 
keine gewaltigen Datenmengen bewegen werden.

Danke im Voraus
Marco

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei CAN läuft nichts über Adressen, sondern über Nachrichten IDs.
Du kannst zwei verschiedene Wege gehen:

1) Remote : Dabei Sendet der "Master" an alle - "Ich brauche die 
Nachricht mit der ID xxx". Dies interessiert aber nur einen einen deiner 
Teilnehmer, und der schick darauf hin den Temperaturwert mit der 
Nachrichten ID xxx zurück.

2) Jeder Sensor schickt in regelmäßigen Abständen die Temperatur über 
den CAN-Bus. Jeder Sensor schickt dabei den Wert mit einer 
unterschiedlichen ID. Jeder CAN-Bus Teilnehmer kann das empfangen wenn 
der lust dazu hat. Anhand der ID kann der Empfanger feststellen welche 
Temperatur gemeint ist.

Autor: Marco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah jetzt ja!

Ich habe in der Zwischenzeit noch die CAN Doku auf der seite Kvaser.com 
durchgelesen und bin danke der "Summeries" gut hintergestiegen.

Das heißt für mich, dass ich, wenn ich 10 gleiche Temperatursensoren 
baue, alle mit der selben Software  füttere, ich ihnen per Dipschalter 
oder weiß der Geier wie mitteilen muss, Du bist jetzt der Sensor aus dem 
Bad und Du der Sensor im Gewächshaus und dementsprechend  verpackt der 
eine Sensor seine Temperatur mit der ID X und der andere Sensor seine 
Temperatur mit der ID Y. Liegt nun auf dem Buss die ID Y wissen alle, 
das ist die Temperatur aus dem Gewächshaus.

Super, wieder einen Schritt weiter.

Das bedeutet, wenn ich demnächst in der Firma das geile sech-Achs-System 
von Trinamic vor mir zu liegen habe ( wird erstmal mit der passenden 
Software und Schnittstelle von Trinamic betrieben), kann ich, wenn ich 
weiß, welche ID welche Daten enthält, das ganze auch über einen kleinen 
Atmel steuern.

Vielleicht ergibt sich ja auch noch eine Antwort auf die Geschichte mit 
den Pages.

Falls nicht mehr heute, schönes WE.

Autor: sniper (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Martin:
"Remote : Dabei Sendet der "Master" an alle"


ist etwas mißverständlich ausgedrückt, denke ich.
1. Es gibt keinen Master. CAN ist ein Multimaster Bus, die Chips 
arbitrieren.
2. Es gibt kein "an alle"
3. Ein Knoten muss nicht zwangsläufig per Remote Transmit Request (RTR: 
nur CAN ID keine Daten) zum Senden aufgefordert werden. Das kann auch 
mit beliebigen anderen IDs gemacht werden - die Software hats in der 
Hand.

So wie bereits dargestellt, werden lediglich Nachrichten mit eindeutigen 
IDs versendet. Ob eine Nachricht ein "an alle" (also ein Broadcast) ist, 
hängt davon ab, wie das Bus-Protokoll definiert wurde.

Sinnvoller Weise benutzt man die ID Bits, um Knoten-IDs und Broadcasts
zu codieren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.