Bonsoir,
Je fait un bibliothèque d'objet en C pour programmer des µC. Je bloque un peu sur un objet ou j'ai besoin d'utiliser un tableau.
En fait il s’agit d'une structure symbolisant mon objet (voir sequenceur.h), celle ci contient un pointeur (unsigned int *sequence) sur un entier que j’aimerai bien utiliser pour renvoyer sur le tableau que je veut exploiter dans les fonctions de l'objet.
dans mon main j'initialise mon objet en lui envoyant l'adresse de la première case d'un tableau (voir les lignes soulignées du main.c)
Mais mon µC ne fonctionne pas comme voulu.. Je pense qu'il n'arrive pas à exploiter le tableau comme il faut, la sortie (s) de l'objet ne change pas d'état..
J'utilise la bonne méthode pour manipuler mon tableau ?
sequenceur.h
sequenceur.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct o_sequenceur{ unsigned char index; unsigned int *sequence; unsigned int count; unsigned char s, ev; }; void o_sequenceur_init(struct o_sequenceur *o, unsigned int *sequence); void o_sequenceur_run(struct o_sequenceur *o, unsigned int _ev, unsigned int _raz);
main.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include "sequenceur.h" // INIT de l'objet "o_sequenceur" void o_sequenceur_init(struct o_sequenceur *o, unsigned int *_sequence) { o->s = 0; o->ev = 0; o->index = 0; o->sequence = _sequence; } // RUN de l'objet "o_sequenceur" void o_sequenceur_run(struct o_sequenceur *o, unsigned int _ev, unsigned int _raz) { if(_ev == 1) o->count++; if(o->sequence[o->index] == o->count) { o->index++; o->s = !o->s; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 #include <xc.h> #include "clock.h" #include "ecu.h" #include "bp.h" #include "tor.h" #include "diviseur.h" #include "pwm.h" #include "front.h" #include "bit.h" #include "bit8.h" #include "tor8.h" #include "minuterie.h" #include "sequenceur.h" struct o_clock clock; struct o_tor led_run; struct o_diviseur h50ms, h1s; struct o_pwm pwm_run; struct o_tor8 porta; struct o_sequenceur sequenceur; unsigned int tableau[3] = {4,4,4}; void main(){ ecu_init(); o_clock_init(&clock,10000000,1000); o_tor_init(&led_run,5,2); o_diviseur_init(&h50ms, 50); o_diviseur_init(&h1s, 1000); o_pwm_init(&pwm_run,20); o_tor8_init(&porta,1); o_sequenceur_init(&sequenceur, &tableau[0]); while(1){ o_clock_run(&clock); o_diviseur_run(&h50ms, clock.ev); o_diviseur_run(&h1s, clock.ev); o_pwm_run(&pwm_run,10,h50ms.ev,0); o_tor_run(&led_run,sequenceur.s); o_tor8_run(&porta,0xEF); o_sequenceur_run(&sequenceur,h1s.ev,0); } }
Partager