rt/msr_module.c
changeset 144 fdc24bf62f80
parent 142 e933f1adb550
child 156 43d7d714679f
equal deleted inserted replaced
143:f6c4f38b699f 144:fdc24bf62f80
    97     }
    97     }
    98 
    98 
    99     k_preio = (uint32_t) (get_cycles() - offset) * 1e6 / cpu_khz;
    99     k_preio = (uint32_t) (get_cycles() - offset) * 1e6 / cpu_khz;
   100 
   100 
   101 #ifdef ASYNC
   101 #ifdef ASYNC
       
   102 
   102     // Empfangen
   103     // Empfangen
   103     ecrt_master_async_receive(master);
   104     ecrt_master_async_receive(master);
   104     ecrt_domain_process(domain1);
   105     ecrt_domain_process(domain1);
   105 
   106 
   106     // Prozessdaten verarbeiten
   107     // Prozessdaten verarbeiten
   111     k_angle = EC_READ_U16(r_inc);
   112     k_angle = EC_READ_U16(r_inc);
   112 #endif
   113 #endif
   113 
   114 
   114     // Senden
   115     // Senden
   115     ecrt_domain_queue(domain1);
   116     ecrt_domain_queue(domain1);
       
   117     ecrt_master_run(master);
   116     ecrt_master_async_send(master);
   118     ecrt_master_async_send(master);
   117 #else
   119 
       
   120 #else // ASYNC
       
   121 
   118     // Senden und empfangen
   122     // Senden und empfangen
   119     ecrt_domain_queue(domain1);
   123     ecrt_domain_queue(domain1);
       
   124     ecrt_master_run(master);
   120     ecrt_master_sync_io(master);
   125     ecrt_master_sync_io(master);
   121     ecrt_domain_process(domain1);
   126     ecrt_domain_process(domain1);
   122 
   127 
   123     // Prozessdaten verarbeiten
   128     // Prozessdaten verarbeiten
   124 #ifdef BLOCK1
   129 #ifdef BLOCK1
   182 /*****************************************************************************/
   187 /*****************************************************************************/
   183 
   188 
   184 int __init init_rt_module(void)
   189 int __init init_rt_module(void)
   185 {
   190 {
   186     struct ipipe_domain_attr attr; //ipipe
   191     struct ipipe_domain_attr attr; //ipipe
       
   192 #ifdef BLOCK1
   187     uint8_t string[20];
   193     uint8_t string[20];
   188     size_t size;
   194     size_t size;
   189     ec_slave_t *slave;
   195     ec_slave_t *slave;
       
   196 #endif
   190 
   197 
   191     // Als allererstes die RT-Lib initialisieren
   198     // Als allererstes die RT-Lib initialisieren
   192     if (msr_rtlib_init(1, MSR_ABTASTFREQUENZ, 10, &msr_globals_register) < 0) {
   199     if (msr_rtlib_init(1, MSR_ABTASTFREQUENZ, 10, &msr_globals_register) < 0) {
   193         msr_print_warn("msr_modul: can't initialize rtlib!");
   200         msr_print_warn("msr_modul: can't initialize rtlib!");
   194         goto out_return;
   201         goto out_return;
   284     attr.priority = IPIPE_ROOT_PRIO + 1;
   291     attr.priority = IPIPE_ROOT_PRIO + 1;
   285     attr.entry = &domain_entry;
   292     attr.entry = &domain_entry;
   286     ipipe_register_domain(&this_domain, &attr);
   293     ipipe_register_domain(&this_domain, &attr);
   287     return 0;
   294     return 0;
   288 
   295 
       
   296 #ifdef BLOCK1
   289  out_deactivate:
   297  out_deactivate:
   290     ecrt_master_deactivate(master);
   298     ecrt_master_deactivate(master);
       
   299 #endif
   291  out_release_master:
   300  out_release_master:
   292     ecrt_release_master(master);
   301     ecrt_release_master(master);
   293  out_msr_cleanup:
   302  out_msr_cleanup:
   294     msr_rtlib_cleanup();
   303     msr_rtlib_cleanup();
   295  out_return:
   304  out_return: