From 105ff0bdd0a1b9afa0b28acbad37a4062188d32e Mon Sep 17 00:00:00 2001 From: Florian Pose <fp@igh-essen.com> Date: Mon, 27 Mar 2006 12:04:55 +0000 Subject: [PATCH] CRC-Counter nach ESC-Datasheet implementiert. --- master/slave.c | 27 ++++++++++++++++++++++----- todo.txt | 2 +- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/master/slave.c b/master/slave.c index 9d1d9d4d..f0013b21 100644 --- a/master/slave.c +++ b/master/slave.c @@ -871,14 +871,31 @@ int ec_slave_check_crc(ec_slave_t *slave /**< EtherCAT-Slave */) } // No CRC faults. - if (!EC_READ_U16(command.data) && !EC_READ_U16(command.data + 2)) return 0; + if (!EC_READ_U32(command.data)) return 0; - EC_WARN("CRC faults on slave %i. A: %i, B: %i\n", slave->ring_position, - EC_READ_U16(command.data), EC_READ_U16(command.data + 2)); + if (EC_READ_U8(command.data)) + EC_WARN("%3i RX-error%s on slave %i, channel A.\n", + EC_READ_U8(command.data), + EC_READ_U8(command.data) == 1 ? "" : "s", + slave->ring_position); + if (EC_READ_U8(command.data + 1)) + EC_WARN("%3i invalid frame%s on slave %i, channel A.\n", + EC_READ_U8(command.data + 1), + EC_READ_U8(command.data + 1) == 1 ? "" : "s", + slave->ring_position); + if (EC_READ_U8(command.data + 2)) + EC_WARN("%3i RX-error%s on slave %i, channel B.\n", + EC_READ_U8(command.data + 2), + EC_READ_U8(command.data + 2) == 1 ? "" : "s", + slave->ring_position); + if (EC_READ_U8(command.data + 3)) + EC_WARN("%3i invalid frame%s on slave %i, channel B.\n", + EC_READ_U8(command.data + 3), + EC_READ_U8(command.data + 3) == 1 ? "" : "s", + slave->ring_position); // Reset CRC counters - EC_WRITE_U16(data, 0x0000); - EC_WRITE_U16(data + 2, 0x0000); + EC_WRITE_U32(data, 0x00000000); ec_command_init_npwr(&command, slave->station_address, 0x0300, 4, data); if (unlikely(ec_master_simple_io(slave->master, &command))) { EC_WARN("Resetting CRC fault counters failed on slave %i!\n", diff --git a/todo.txt b/todo.txt index 6b70f9b5..bf7515b9 100644 --- a/todo.txt +++ b/todo.txt @@ -5,12 +5,12 @@ $Id$ - Anzahl Frames, die die Karte Puffern kann - Mehrere Frames versenden +- Typeninformation aus Master entfernen / XML-Dateien aus User-Space lesen - Kommandos mit dynamischem Speicher - Konfiguration Inkrementalgeberklemme - SSI-Klemme - SysFS-Interface implementieren - SDO Dictionary der Slaves auslesen und im SysFS darstellen -- Typeninformation aus Master entfernen / XML-Dateien aus User-Space lesen - DLL-Link-States auslesen und Topologie berechnen - Ethernet over EtherCAT (EoE) - eepro100-Kartentreiber -- GitLab