Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/kernel.h>
- #include <linux/proc_fs.h>
- #include <rtai.h>
- #include <rtai_sched.h>
- #include <rtai_fifos.h>
- #include <rtai_proc_fs.h>
- #include <comedilib.h>
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("Squelette de programme RTAI et carte ni-6221");
- MODULE_AUTHOR("NOM BINOME");
- /*
- * command line parameters
- */
- #define ms 1000000
- #define microsec 1000
- #define CAN 0
- #define CNA 1
- #define DIO 2
- #define CHAN_0 0
- #define CHAN_1 1
- #define CAN_RANGE 1 // [-5, +5]
- float ech[50]={0.000000 , 0.125270 , 0.248566 , 0.367947 , 0.481530 , 0.587527 , 0.684268 , 0.770229 , 0.844055 , 0.904583 , 0.950859 , 0.982156 , 0.997978 , 0.998078 , 0.982454 , 0.951351 , 0.905261 , 0.844908 , 0.771244 , 0.685429 , 0.588815 , 0.482925 , 0.369427 , 0.250108 , 0.126849 , 0.001592 , -0.123690 , -0.247024 , -0.366465 , -0.480134 , -0.586238 , -0.683106 , -0.769212 , -0.843199 , -0.903902 , -0.950365 , -0.981855 , -0.997876 , -0.998176 , -0.982750 , -0.951841 , -0.905937 , -0.845759 , -0.772258 , -0.686589 , -0.590104 , -0.484321 , -0.370909 , -0.251653 , -0.128432};
- int bit_n = 0;
- int bit_a = 0;
- int bit_f = 0;
- int bit_p = 1;
- long Tp = 20000000;
- static RT_TASK Tache1_Ptr; // Pointeur pour la tache 1
- static RT_TASK Handler_Ptr; // Pointeur pour la tache de reprise de main
- comedi_t *carte;
- void Tache1 (long int x)
- {int i=0;
- long e;
- while (1)
- {
- e = (65535/20)*(ech[i]) + 32767;
- comedi_dio_read(carte,DIO,0,&bit_n);
- comedi_dio_read(carte,DIO,1,&bit_a);
- comedi_dio_read(carte,DIO,2,&bit_f);
- comedi_dio_read(carte,DIO,3,&bit_p);
- comedi_data_write(carte ,CNA,0,0,AREF_GROUND,e);
- rt_task_wait_period();
- i++;
- if (i==50) i=0;
- //comedi_perror("e=%d",e) ;
- }
- }
- int init_module(void)
- { RTIME now;
- // Création des tâches
- // Initialisation de la carte d'E/S
- carte = comedi_open("/dev/comedi0");
- if(carte == NULL)
- {
- comedi_perror("Comedi fails to open");
- return -1;
- }
- // Configurer le device DIGITAL_INPUT pour recevoir les donnees/signaux
- // et DIGITAL_OUTPUT pour envoyer les donnees/signaux
- rt_set_oneshot_mode();
- rt_assign_irq_to_cpu(TIMER_8254_IRQ, 0);
- // Lancement du timer
- start_rt_timer(0);
- now=rt_get_time();
- // Lancement des taches
- rt_task_init(&Tache1_Ptr,Tache1,0,2000,5,0,0);
- //timer_period = start_rt_timer(nano2count(100*microsec));
- rt_task_make_periodic(&Tache1_Ptr,now,nano2count(Tp));
- return 0;
- }
- void cleanup_module(void)
- {
- stop_rt_timer();
- // Destruction des objets de l'application
- rt_reset_irq_to_sym_mode(TIMER_8254_IRQ);
- rt_task_delete(&Tache1_Ptr);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement