arduino:rcan-de
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
arduino:rcan-de [2020/01/17 00:07] – rainerk | arduino:rcan-de [2024/03/14 00:30] (current) – rainerk | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== RCAN: GC2a ====== | ====== RCAN: GC2a ====== | ||
- | \\ | ||
{{: | {{: | ||
\\ | \\ | ||
=====Einführung===== | =====Einführung===== | ||
+ | {{ : | ||
Die aktuelle __**[[: | Die aktuelle __**[[: | ||
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 | + | Das Firmware-Ziel |
\\ | \\ | ||
=====Abhängigkeiten===== | =====Abhängigkeiten===== | ||
- | {{ : | + | {{: |
- | Die einzige verwendete Nicht-Standard-Arduino-Bibliothek | + | Die **mcp_can**-Bibliothek |
- | * https:// | + | |
- | die die Kommunikation mit dem MCP2515-IC | + | |
====Modifikationen==== | ====Modifikationen==== | ||
- | Zwei Modifikationen | + | Eine Modifikation |
+ | | ||
<code cpp> | <code cpp> | ||
// if print debug information | // if print debug information | ||
+ | #ifndef DEBUG_MODE | ||
//#define DEBUG_MODE 1 | //#define DEBUG_MODE 1 | ||
- | + | #endif | |
- | /* | + | |
- | | + | |
- | */ | + | |
- | #define TIMEOUTVALUE | + | |
</ | </ | ||
- | 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, | __Es ist sehr wichtig DEBUG_MODE zu deaktivieren, | ||
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/ | Der Unterschied zwischen den Standard-PIC-basierten und Arduino-Baugruppen ist das FLAT-Adressierungsschema und dass nur lange Ereignisse unterstützt werden. (Lange/ | ||
- | {{ : | + | {{ : |
Das GPIO ist mit dem __**[[: | Das GPIO ist mit dem __**[[: | ||
| 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 | + | ^ Nano Stift ^ GC2a ^ |
- | | A6 | 10 | + | | A6 | 10 | |
- | | A7 | 9 | 1 | | + | | A7 | 9 | |
+ | |||
+ | **Hinweis | ||
+ | **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-> | ^ CBUS-> | ||
- | | 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 |
| Ereignis-Adresse -> Port | Addresse | 1...16 (fest) | Dies ist die __**[[: | | Ereignis-Adresse -> Port | Addresse | 1...16 (fest) | Dies ist die __**[[: | ||
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; | ||
- | * 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/ |
- | | 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: | ||
| #< | | #< | ||
| : | | : | ||
- | Im Seriellen Monitor | + | Im Seriellen Monitor |
====Loopback Mode==== | ====Loopback Mode==== | ||
Line 185: | Line 160: | ||
\\ | \\ | ||
- | |||
- | =====CBUS-Protokoll===== | ||
- | * {{: | ||
- | |||
- | 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); | Mit dieser Option kann der GC2a auch alleinstehend betrieben werden (Standalone); | ||
- | > Hinweis: Weil das [[https:// | + | > Hinweis |
- | \\ | + | > Hinweis 2: Für die beste Leistung sollte ein 16-MHz-Quarz verwendet werden. |
=====SyncID===== | =====SyncID===== | ||
Line 240: | Line 206: | ||
\\ | \\ | ||
=====Quell-Code===== | =====Quell-Code===== | ||
+ | * {{: | ||
* https:// | * https:// | ||
- | * https:// | ||
- | * https:// | ||
====Dokumentation==== | ====Dokumentation==== |
arduino/rcan-de.1579216037.txt.gz · Last modified: 2020/01/17 00:07 by rainerk