Hallo,
Ich muss Werte von einem Array in einen anderen "kopieren".
1 | #include <avr/io.h>
|
2 | #include <util/delay.h>
|
3 | #include <stdlib.h>
|
4 |
|
5 | #include "uart.h"
|
6 |
|
7 | uint8_t pwm[8];
|
8 |
|
9 | void update() {
|
10 |
|
11 | char s_val[3];
|
12 |
|
13 | for ( uint8_t i = 0; i < 8; i++ ) {
|
14 |
|
15 | itoa(pwm[i], s_val, 10);
|
16 | sendString(s_val);
|
17 | sendString("\r\n");
|
18 |
|
19 | }
|
20 |
|
21 | sendString("\r\n");
|
22 | sendString("\r\n");
|
23 |
|
24 | }
|
25 |
|
26 | int main(void) {
|
27 |
|
28 | init_USART();
|
29 |
|
30 | //Clear screen
|
31 | sendString("\033[2J");
|
32 |
|
33 | while ( 1 ) {
|
34 |
|
35 | pwm[0] = 1;
|
36 | pwm[1] = 7;
|
37 | pwm[2] = 15;
|
38 | pwm[3] = 33;
|
39 | pwm[4] = 40;
|
40 | pwm[5] = 80;
|
41 | pwm[6] = 140;
|
42 | pwm[7] = 255;
|
43 |
|
44 | update();
|
45 | _delay_ms(1000);
|
46 |
|
47 | pwm[0] = 255;
|
48 | pwm[1] = 140;
|
49 | pwm[2] = 80;
|
50 | pwm[3] = 40;
|
51 | pwm[4] = 33;
|
52 | pwm[5] = 15;
|
53 | pwm[6] = 7;
|
54 | pwm[7] = 1;
|
55 |
|
56 | update();
|
57 | _delay_ms(1000);
|
58 |
|
59 | }
|
60 |
|
61 | return 0;
|
62 |
|
63 | }
|
Dass dieser Code in der Form keinen echten Nutzen hat, ist mir bewusst,
sei jetzt aber erst einmal egal.
Einmal pro Sekunde wird das Array per Hand umgedreht. Das überprüfe ich
via UART. Nun aber der Output, der mich vor ein Rätsel stellt:
1 | 1
|
2 | 7
|
3 | 15
|
4 | 33
|
5 | 40
|
6 | 80
|
7 | 140
|
8 | 255
|
9 |
|
10 |
|
11 | 255
|
12 | 0
|
13 | 80
|
14 | 40
|
15 | 33
|
16 | 15
|
17 | 7
|
18 | 1
|
19 |
|
20 |
|
21 | 1
|
22 | 7
|
23 | 15
|
24 | 33
|
25 | 40
|
26 | 80
|
27 | 0
|
28 | 255
|
29 |
|
30 |
|
31 | 255
|
32 | 0
|
33 | 80
|
34 | 40
|
35 | 33
|
36 | 15
|
37 | 7
|
38 | 1
|
Wo ist die 140 ab der zweiten "Ausgabe" hin? Entweder der Compiler macht
Müll (was ich stark bezweifle), ich sehe den Fehler einfach nicht oder
es gibt etwas über Arrays zu wissen, dass ich noch nicht weiß.
Wenn mir jemand helfen kann, wäre ich mehr als dankbar,
LG Peter