Hey ich habe folgendes Probelm,
ich habe folgenden code:
1 | //main.c
|
2 | void main(void)
|
3 | {
|
4 | bool vtest = false;
|
5 | int ret = 0;
|
6 |
|
7 | init();
|
8 |
|
9 | if (!vtest){
|
10 | ret = test();
|
11 | }
|
12 |
|
13 | while (ret){
|
14 |
|
15 | switch_output_K3_ON;
|
16 | _delay_ms(1000);
|
17 | switch_output_K3_OFF;
|
18 | _delay_ms(1000);
|
19 | }
|
20 | }
|
21 |
|
22 |
|
23 | //switch.c
|
24 | int test(void)
|
25 | {
|
26 |
|
27 | //.... CAN definitionen
|
28 |
|
29 | bool test_ON = true;
|
30 |
|
31 | while (test_ON){
|
32 | if(can_rcv && can_rcv_message.id == 0x255){
|
33 | switch (can_rcv_message.data[0])
|
34 | {
|
35 | case 0xFF:
|
36 | switch_output_K1_ON;
|
37 | _delay_ms(1000);
|
38 | switch_output_K1_OFF;
|
39 | _delay_ms(1000);
|
40 | test_ON = false;
|
41 | return 1;
|
42 | break;
|
43 |
|
44 | case 0x00:
|
45 | switch_output_K2_ON;
|
46 | _delay_ms(1000);
|
47 | switch_output_K2_OFF;
|
48 | _delay_ms(1000);
|
49 | test_ON = false;
|
50 | return 0;
|
51 | break;
|
52 | default:
|
53 | test_ON = false;
|
54 | break;
|
55 | }
|
56 | }
|
57 | }
|
58 | }
|
Der Code funktioniert eigentlich super. Ich empfange CAN Nachrichten und
lasse die Ausgaenge K1 und K2 blinken, jedoch reagiert mein Programm
nicht auf return Befehl und somit gehe ich nicht in die while Schleife
in main.c um den Ausgang K3 zu schaltem. Kann mir einer sagen was ich
falsch mache? Auch wenn die Variable test_ON auf falsch setze, dann gehe
ich auch nicht aus der while Schleife von switch.c. Was ich auch
irgendwie nicht ganz verstehe.
Help & Danke