User Tools

Site Tools


arduino:rcan-de

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
arduino:rcan-de [2020/01/17 00:07] rainerkarduino:rcan-de [2024/03/14 00:30] (current) rainerk
Line 1: Line 1:
 ====== RCAN: GC2a ====== ====== RCAN: GC2a ======
- \\ 
 {{:arduino:gc2a-module.jpg?0x240}}{{:cbus:can-extframe.jpeg?0x240}}\\ {{:arduino:gc2a-module.jpg?0x240}}{{:cbus:can-extframe.jpeg?0x240}}\\
  \\  \\
 =====Einführung===== =====Einführung=====
 +{{ :arduino:rcan.jpg?0x200}}
 Die aktuelle __**[[:cbus:overview-de|CAN-GC*]]**___Hardware-Serie basiert auf MC-PICs.\\ Die aktuelle __**[[:cbus:overview-de|CAN-GC*]]**___Hardware-Serie basiert auf MC-PICs.\\
 RCAN ist Firmware für CAN-basierte Lösungen auf der Arduino-Plattform.\\ RCAN ist Firmware für CAN-basierte Lösungen auf der Arduino-Plattform.\\
-Das Firmware-Ziel ist der Arduino Nano __**[[https://www.microchip.com/wwwproducts/en/atmega328pb|ATmega328P(B)]]**__.\\+Das Firmware-Ziel sind der Arduino Nano und __**[[https://store.arduino.cc/products/arduino-nano-every|Nano Every]]**__.\\
  
  \\  \\
  
 =====Abhängigkeiten===== =====Abhängigkeiten=====
-{{ :arduino:rcan.jpg?0x200}} +{{:arduino:rcan:mcp_can.jpg?400}}\\ 
-Die einzige verwendete Nicht-Standard-Arduino-Bibliothek ist +Die **mcp_can**-Bibliothek hinzufügen um die Kommunikation mit dem MCP2515-IC zu ermöglichen.\\
-  * https://github.com/coryjfowler/MCP_CAN_lib +
-die die Kommunikation mit dem MCP2515-IC ermöglicht.\\+
  
 ====Modifikationen==== ====Modifikationen====
-Zwei Modifikationen im Bibliotheks-Quellcode sind DEBUG zu deaktivieren und erhöhen des Timeout-Wertes in der ''Documents/Arduino/libraries/MCP_CAN_lib-master/mcp_can_dfs.h'': (Zeilen 40 und 45)\\+Eine Modifikation im Bibliotheks-Quellcode ist DEBUG zu deaktivieren , um Speicher in der  
 +    ''Documents/Arduino/libraries/mcp_canr/mcp_can_dfs.h'': (Zeile 41zu sparen.\\
 <code cpp> <code cpp>
 // if print debug information // if print debug information
 +#ifndef DEBUG_MODE
 //#define DEBUG_MODE 1 //#define DEBUG_MODE 1
- +#endif
-/* +
-   Begin mt +
- */ +
-#define TIMEOUTVALUE    100+
 </code> </code>
-Der Original-Wert TIMEOUTVALUE von 50 ist zu gering und bringt Fehler beim Senden von Rahmen in einem CAN-Bus. (Abhängig davon, wieviel Verkehr auf dem CAN-Bus ist.)\\ 
 __Es ist sehr wichtig DEBUG_MODE zu deaktivieren, da anderenfalls nicht genügend Speicher verfügbar ist. \\ __Es ist sehr wichtig DEBUG_MODE zu deaktivieren, da anderenfalls nicht genügend Speicher verfügbar ist. \\
 Die Arduino-IDE würde sich darüber beschweren und RCAN würde kontinuierlich neustarten.__ Die Arduino-IDE würde sich darüber beschweren und RCAN würde kontinuierlich neustarten.__
Line 35: Line 30:
 =====GPIO-Baugruppe===== =====GPIO-Baugruppe=====
 Der Unterschied zwischen den Standard-PIC-basierten und Arduino-Baugruppen ist das FLAT-Adressierungsschema und dass nur lange Ereignisse unterstützt werden. (Lange/Kurze Ereignisse werden in Rocrail automatisch erkannt.) \\ Der Unterschied zwischen den Standard-PIC-basierten und Arduino-Baugruppen ist das FLAT-Adressierungsschema und dass nur lange Ereignisse unterstützt werden. (Lange/Kurze Ereignisse werden in Rocrail automatisch erkannt.) \\
-{{ :arduino:pin_arduino_nano.jpg?200}}+{{ :arduino:pin_arduino_nano.jpg?200}}{{ :arduino:nano-every-pinout.jpg?240}}
 Das GPIO ist mit dem __**[[:can-gca2-de|CAN-GC2]]**__ kompatibel. (Mit Ausnahme des Adressierungsschemas.)\\ Das GPIO ist mit dem __**[[:can-gca2-de|CAN-GC2]]**__ kompatibel. (Mit Ausnahme des Adressierungsschemas.)\\
 | Nanos mit dem ATmega328**P** __können Port A6 und A7 nicht als digitale I/O verwenden__ und sind nur als analoge Eingänge verfügbar (analoagRead).|  | Nanos mit dem ATmega328**P** __können Port A6 und A7 nicht als digitale I/O verwenden__ und sind nur als analoge Eingänge verfügbar (analoagRead).| 
  \\  \\
-====Nur-Eingangs-Stifte des ATmega328P====+====Nur-Eingangs-Stifte des Nano ATmega328P====
 |< >| |< >|
-^  Nano Stift  ^  GC2a   ArduCAN-IO  ^ +^  Nano Stift  ^  GC2a  ^ 
-|  A6  |  10   | +|  A6  |  10  | 
-|  A7  |  9  |   |+|  A7  |  9  | 
 + 
 +**Hinweis 1:** //Einen __**[[https://store.arduino.cc/products/arduino-nano-every|Nano Every]]**__ verwenden, um GC2a-Port 9 und 10 auch als Ausgang nutzen zu können.//\\ 
 +**Hinweis 2:** //Für die beste Leistung sollte ein **16-MHz-Quarz** verwendet werden.//\\ 
  
 ====Variable==== ====Variable====
Line 74: Line 73:
 |  1  |  1  | Ausgangs-Puls | Puls-Länge entsprechend der globalen Knoten-Konfiguration. | |  1  |  1  | Ausgangs-Puls | Puls-Länge entsprechend der globalen Knoten-Konfiguration. |
 |  2  |  1  | Invertieren | Invertiert den digitalen Port-Wert. | |  2  |  1  | Invertieren | Invertiert den digitalen Port-Wert. |
-|  3  |  1  | IR-Port | Nicht verwendet. | 
 |  4  |  1  | Sync | Synchronisiert den Ausgang auch mit der SYNCID | |  4  |  1  | Sync | Synchronisiert den Ausgang auch mit der SYNCID |
  \\  \\
-====CBus====+====CBUS==== 
 +//Das CBUS-Protokoll ist von Mike Bolton & Gil Fuchs urheberrechtlich geschützt.//
 |< >| |< >|
 ^  CBUS->RCAN  ^  Rocrail  ^  Bereich  ^ Bemerkung ^ ^  CBUS->RCAN  ^  Rocrail  ^  Bereich  ^ Bemerkung ^
-| Ereignis-Knoten-Nummer -> CANID | Bus | 0...127 (standard 127) | CBUS verwendet die 4 MSBits für Priorität. (Die Standard-CAN-Rahmen-ID ist 11 Bit.) |+| Ereignis-Knoten-Nummer -> CANID | Node-ID | 0...127 (standard 127) | CBUS verwendet die 4 MSBits für Priorität. (Die Standard-CAN-Rahmen-ID ist 11 Bit.) |
 | Ereignis-Adresse -> Port | Addresse | 1...16 (fest) | Dies ist die __**[[:can-gca2-de#einstellungen|Port-Nummer]]**__. | | Ereignis-Adresse -> Port | Addresse | 1...16 (fest) | Dies ist die __**[[:can-gca2-de#einstellungen|Port-Nummer]]**__. |
 Modul-Knoten-Nummer und Modul-CANID sind identisch und nur ein Wert in der Firmware.\\ Modul-Knoten-Nummer und Modul-CANID sind identisch und nur ein Wert in der Firmware.\\
Line 98: Line 97:
   * Ping wird auch als Abfrage im CBus-Knoten-Dialog unterstützt.   * Ping wird auch als Abfrage im CBus-Knoten-Dialog unterstützt.
  
- \\ 
- 
-====ZBus==== 
-|< >| 
-| In Arbeit |\\ 
-Unterstützung für Zimo-CAN-Protokoll. (Z21)\\ 
- 
-===Rahmen=== 
-|< >| 
-|  Ext. CAN-Rahmen  ||||||||| 
-^            ID          ^^^^^  F  ^  DLC  ^  8 Data  ^^ 
-| F | GRP | CMD | MODE | SID | CF | DLC | RID | DATA | ZCAN-Verwendung | 
-| 1 |  4  |  6  |  2   | 16  |  4  |  4  | 16  |  48       | Anzahl der Bits | 
- 
-  * F = ZCAN Flag (Kennzeichen) 
-  * GRP = Group (Gruppe) 
-  * CMD = Command (Befehl) 
-  * MODE = request, command, event or ack (Abfrage, Befehl, Ereignis oder Bestätigung) 
-  * SID = Sender ID (Sender-Kennung; Muss eindeutig sein, um Kollisionen lösen zu können) 
-  * CF = CAN Flags (Kennzeichen) 
-  * DLC = Data-Length-Code (Anzahl der Daten-Bytes)  
-  * RID = Recipient ID (Empfänger-Kennung) 
-  * DATA = Optionale Daten 
- 
- \\ 
  \\  \\
  
Line 142: Line 116:
 | 8m | Setzt MCP2515-Taktrate auf 8MHz. (standard)  | 8m | Setzt MCP2515-Taktrate auf 8MHz. (standard) 
 | 16m | Setzt MCP2515-Taktrate auf 16MHz.  | 16m | Setzt MCP2515-Taktrate auf 16MHz. 
-l0 Setzt das Stift-Schema passend zum CANGC2a. (standard) -> Reset-Taste drücken, um Änderungen zu aktivieren. |  +gpio 16 Ports I/O  |  
-l1 Setzt das Stift-Schema passend zum ArduCAN-I/O -> Reset-Taste drücken, um Änderungen zu aktivieren. +servo 4 Ports Servo und 12 Ports I/O  | 
 | =<id> | Setzt die CANID. <id> durch eine Zahl zwischen 1 und 255 ersetzen. |  | =<id> | Setzt die CANID. <id> durch eine Zahl zwischen 1 und 255 ersetzen. | 
 +| $pppppppppppppppp | Mehrfach-Ports konfigurieren: Das <p> kann sein: 0 für Ausgang, 1 für Eingang, 2 für Eingang mit AUS-Verzögerung, 3 für Impuls-Ausgang. \\ Beispiel: "$1111" konfiguriert Port 1 bis 4 als Eingang. |
 | #<port><config> | Konfiguriert einen Port. <port> durch ein Zeichen zwischen 0...9 und a...f ersetzen. \\ <config> kann sein: 0 für Ausgang, 1 für Eingang, 2 für Eingang mit Aus-Verzögerung, 3 für Puls-Ausgang. \\ Beispiel: "#a1" konfiguriert Port 10 als Eingang.| | #<port><config> | Konfiguriert einen Port. <port> durch ein Zeichen zwischen 0...9 und a...f ersetzen. \\ <config> kann sein: 0 für Ausgang, 1 für Eingang, 2 für Eingang mit Aus-Verzögerung, 3 für Puls-Ausgang. \\ Beispiel: "#a1" konfiguriert Port 10 als Eingang.|
 | :SxxxxNxx...xx; \\ :​XxxxxxxxxNxx...xx; | ASCII-Rahmen, der auf dem CAN-Bus gesendet und von der Baugruppe ausgewertet wird. ("GridConnect"-Schema wie von MERG CBUS verwendet.) \\ Siehe Kapitel 10 des {{:cbus:cbus-developer-6b-draft3.pdf|MERG "Developer’s Guide for CBUS"}}. | | :SxxxxNxx...xx; \\ :​XxxxxxxxxNxx...xx; | ASCII-Rahmen, der auf dem CAN-Bus gesendet und von der Baugruppe ausgewertet wird. ("GridConnect"-Schema wie von MERG CBUS verwendet.) \\ Siehe Kapitel 10 des {{:cbus:cbus-developer-6b-draft3.pdf|MERG "Developer’s Guide for CBUS"}}. |
  
-Im Seriellen Monitor ist auch der gesamte CAN-Verkehr und unterstützte OPCs zu verfolgen.\\+Im Seriellen Monitor sind auch der gesamte CAN-Verkehr und die unterstützten OPCs zu verfolgen.\\
  
 ====Loopback Mode==== ====Loopback Mode====
Line 185: Line 160:
  
  \\  \\
- 
-=====CBUS-Protokoll===== 
-  * {{:cbus:cbus-developer-6b-draft3.pdf|MERG "Developer’s Guide for CBUS"}} 
- 
-Das CBUS-Protokoll schreibt die Anzahl der Datenbytes für alle OPC-Bereiche vor. \\ 
-Dies ist für CAN nicht sinnvoll, da das DLC-Feld für die Anzahl der Datenbytes verantwortlich ist, die in einer Nachricht verwendet werden. \\ 
-Das CBUS-Protokoll scheint das LocoNet-Schema widerzuspiegeln ... \\ 
-Die OPC_PNN, eine Antwort auf eine Anfrage Module OPC_QNN, wird die DLC nicht auf 6, sondern auf 8 setzen. Die letzten zwei Bytes enthalten die Firmware-Version. \\ 
-Offiziell liegt der OPC_PNN im Bereich von 6 Datenbytes. \\ 
  
 ====Inkompatibilitäten==== ====Inkompatibilitäten====
Line 225: Line 191:
   * Linefeed   * Linefeed
 Mit dieser Option kann der GC2a auch alleinstehend betrieben werden (Standalone); das ist die minimale CBUS-Konfiguration.\\ Mit dieser Option kann der GC2a auch alleinstehend betrieben werden (Standalone); das ist die minimale CBUS-Konfiguration.\\
-> Hinweis: Weil das [[https://de.wikipedia.org/wiki/Controller_Area_Network#ACK-Slot|ACK-Slot-Bit]] nicht durch andere CAN-Module gesetzt werden kann, wird ein Sende-Fehler gemeldet, der aber im Standalone-Modus ignoriert werden kann. +> Hinweis 1: Weil das [[https://de.wikipedia.org/wiki/Controller_Area_Network#ACK-Slot|ACK-Slot-Bit]] nicht durch andere CAN-Module gesetzt werden kann, wird ein Sende-Fehler gemeldet, der aber im Standalone-Modus ignoriert werden kann. 
- \\+> Hinweis 2: Für die beste Leistung sollte ein 16-MHz-Quarz verwendet werden.  \\
  
 =====SyncID===== =====SyncID=====
Line 240: Line 206:
  \\  \\
 =====Quell-Code===== =====Quell-Code=====
 +  * {{:arduino:rcan:arduino-rcan.zip}}
   * https://gitlab.com/rocrail/Arduino/tree/master/RCAN   * https://gitlab.com/rocrail/Arduino/tree/master/RCAN
-  * https://gitlab.com/rocrail/Arduino/tree/master/libraries/MCP_CAN_lib-master 
-  * https://github.com/coryjfowler/MCP_CAN_lib (Original mit zu kleinem Timeout-Wert und aktiviertem DEBUG.) 
  
 ====Dokumentation==== ====Dokumentation====
arduino/rcan-de.1579216037.txt.gz · Last modified: 2020/01/17 00:07 by rainerk