mini/ec_mini.c
changeset 54 7506e67dd122
parent 53 6b3b8acb71b5
child 55 059a9e712aa7
--- a/mini/ec_mini.c	Fri Jan 13 15:47:44 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,289 +0,0 @@
-/******************************************************************************
- *
- * ec_mini.c
- *
- * Minimalmodul für EtherCAT
- *
- * $Id$
- *
- *****************************************************************************/
-
-#include <linux/module.h>
-#include <linux/delay.h>
-#include <linux/timer.h>
-
-#include "../drivers/ec_master.h"
-#include "../drivers/ec_device.h"
-#include "../drivers/ec_types.h"
-#include "../drivers/ec_module.h"
-
-/*****************************************************************************/
-
-// Auskommentieren, wenn keine zyklischen Daten erwuenscht
-#define ECAT_CYCLIC_DATA
-
-/*****************************************************************************/
-
-static EtherCAT_master_t *ecat_master = NULL;
-
-static EtherCAT_slave_t ecat_slaves[] =
-{
-#if 0
-    // Block 1
-    ECAT_INIT_SLAVE(Beckhoff_EK1100, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL4102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3162, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-
-    ECAT_INIT_SLAVE(Beckhoff_EL4102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL4102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL4102, 1),
-
-    ECAT_INIT_SLAVE(Beckhoff_EL3162, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3162, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3162, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3102, 1),
-
-#endif
-
-#if 1
-    // Block 2
-    ECAT_INIT_SLAVE(Beckhoff_EK1100, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL4102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3162, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL3102, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-
-    // Block 3
-    ECAT_INIT_SLAVE(Beckhoff_EK1100, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL2004, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1),
-    ECAT_INIT_SLAVE(Beckhoff_EL1014, 1)
-#endif
-};
-
-#define ECAT_SLAVES_COUNT (sizeof(ecat_slaves) / sizeof(EtherCAT_slave_t))
-
-#ifdef ECAT_CYCLIC_DATA
-
-int value;
-int dig1;
-
-struct timer_list timer;
-unsigned long last_start_jiffies;
-
-#endif // ECAT_CYCLIC_DATA
-
-/******************************************************************************
- *
- * Function: next2004
- *
- *****************************************************************************/
-
-#ifdef ECAT_CYCLIC_DATA
-
-static int next2004(int *wrap)
-{
-    static int i = 0;
-    unsigned int j = 0;
-
-    *wrap = 0;
-
-    for (j = 0; j < ECAT_SLAVES_COUNT; j++)
-    {
-        i++;
-
-        i %= ECAT_SLAVES_COUNT;
-
-        if (i == 0) *wrap = 1;
-
-        if (ecat_slaves[i].desc == Beckhoff_EL2004)
-        {
-            return i;
-        }
-    }
-
-    return -1;
-}
-#endif
-
-/******************************************************************************
- *
- * Function: run
- *
- * Beschreibung: Zyklischer Prozess
- *
- *****************************************************************************/
-
-#ifdef ECAT_CYCLIC_DATA
-
-static void run(unsigned long data)
-{
-  static int ms = 0;
-    static int cnt = 0;
-    static unsigned long int k = 0;
-    static int firstrun = 1;
-
-    static int klemme = 0;
-    static int kanal = 0;
-    static int up_down = 0;
-    int wrap = 0;
-
-    ms++;
-    ms %= 1000;
-
-    if (firstrun) klemme = next2004(&wrap);
-
-    if (cnt++ > 20)
-    {
-        cnt = 0;
-
-        if (++kanal > 3)
-        {
-            kanal = 0;
-            klemme = next2004(&wrap);
-
-            if (wrap == 1)
-            {
-                if (up_down == 1) up_down = 0;
-                else up_down = 1;
-            }
-        }
-    }
-
-    if (klemme >= 0)
-        EtherCAT_write_value(&ecat_slaves[klemme], kanal, up_down);
-
-    // Prozessdaten lesen und schreiben
-    rdtscl(k);
-    EtherCAT_process_data_cycle(ecat_master, 1, 100);
-    firstrun = 0;
-
-    timer.expires += HZ / 1000;
-    add_timer(&timer);
-}
-
-#endif // ECAT_CYCLIC_DATA
-
-/******************************************************************************
- *
- * Function: init
- *
- *****************************************************************************/
-
-int __init init_module()
-{
-    unsigned int i;
-
-    printk(KERN_INFO "=== Starting Minimal EtherCAT environment... ===\n");
-
-    if ((ecat_master = EtherCAT_request(0)) == NULL) {
-        printk(KERN_ERR "EtherCAT master 0 not available!\n");
-        goto out_return;
-    }
-
-    printk("Checking EtherCAT slaves.\n");
-
-    if (EtherCAT_check_slaves(ecat_master, ecat_slaves,
-                              ECAT_SLAVES_COUNT) != 0) {
-        printk(KERN_ERR "EtherCAT: Could not init slaves!\n");
-        goto out_release_master;
-    }
-
-    printk("Activating all EtherCAT slaves.\n");
-
-    for (i = 0; i < ECAT_SLAVES_COUNT; i++) {
-        if (EtherCAT_activate_slave(ecat_master, &ecat_slaves[i]) != 0) {
-            printk(KERN_ERR "EtherCAT: Could not activate slave %i!\n", i);
-            goto out_release_master;
-        }
-    }
-
-#ifdef ECAT_CYCLIC_DATA
-    printk("Starting cyclic sample thread.\n");
-
-    init_timer(&timer);
-
-    timer.function = run;
-    timer.data = 0;
-    timer.expires = jiffies+10; // Das erste Mal sofort feuern
-    last_start_jiffies = timer.expires;
-    add_timer(&timer);
-
-    printk("Initialised sample thread.\n");
-#endif
-
-    printk(KERN_INFO "=== Minimal EtherCAT environment started. ===\n");
-
-    return 0;
-
- out_release_master:
-  EtherCAT_release(ecat_master);
-
- out_return:
-  return -1;
-}
-
-/******************************************************************************
- *
- * Function: cleanup
- *
- *****************************************************************************/
-
-void __exit cleanup_module()
-{
-    unsigned int i;
-
-    printk(KERN_INFO "=== Stopping Minimal EtherCAT environment... ===\n");
-
-    if (ecat_master)
-    {
-#ifdef ECAT_CYCLIC_DATA
-        del_timer_sync(&timer);
-#endif // ECAT_CYCLIC_DATA
-
-        printk(KERN_INFO "Deactivating slaves.\n");
-
-        for (i = 0; i < ECAT_SLAVES_COUNT; i++) {
-            EtherCAT_deactivate_slave(ecat_master, &ecat_slaves[i]);
-        }
-
-        EtherCAT_release(ecat_master);
-    }
-
-    printk(KERN_INFO "=== Minimal EtherCAT environment stopped. ===\n");
-}
-
-/*****************************************************************************/
-
-MODULE_LICENSE("GPL");
-MODULE_AUTHOR ("Florian Pose <fp@igh-essen.com>");
-MODULE_DESCRIPTION ("Minimal EtherCAT environment");
-
-module_init(init_module);
-module_exit(cleanup_module);
-
-/*****************************************************************************/
-
-/* Emacs-Konfiguration
-;;; Local Variables: ***
-;;; c-basic-offset:4 ***
-;;; End: ***
-*/