Hallo Zusammen Hab ein problem mit meinem script. Eigentlich sollte es die I/O-Ports zufällig high beziehungsweis low stellen. meiner meinung nach sollte das so funktionieren.
1 | #include <avr/io.h> //Controllerspezifikationenen |
2 | #include <stdlib.h> //Standard Library |
3 | #ifndef F_CPU
|
4 | #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
|
5 | #define F_CPU 3686400UL // Quarz mit 3.6864 Mhz
|
6 | #endif
|
7 | #include <util/delay.h> //Verz�gerungen max 71ms -->262.14/3.6864 |
8 | //-------------------------------------------------------------------------
|
9 | int main(void) |
10 | {
|
11 | int i; |
12 | int switchtime=12000;// ms/10 |
13 | int daytime=30000;// ms/10 |
14 | int nighttime=30000;// ms/10 |
15 | int now; |
16 | DDRA=0b11111111; |
17 | DDRB=0b11111111; |
18 | DDRC=0b11111111; |
19 | DDRD=0b11111111; |
20 | //Tag-Nacht-Schleife
|
21 | while(1) |
22 | {
|
23 | int remaining[32];// 32 Lichter |
24 | //Nacht
|
25 | for(i=0;i<nighttime;i++) |
26 | {
|
27 | _delay_ms(10); |
28 | }
|
29 | //�bergang
|
30 | // f�r jedes Licht mal eine zuf�llig Zeitdauer festlegen
|
31 | srand(remaining[10]); |
32 | for(i=0;i<32;i++) |
33 | {
|
34 | remaining[i] = rand()%switchtime; |
35 | }
|
36 | for(now=0;now<switchtime;now++) |
37 | {
|
38 | for(i=0;i<8;i++)// alle am Port A |
39 | {
|
40 | if(remaining[i]==now) |
41 | {
|
42 | PORTA|=(1<<i); |
43 | }
|
44 | }
|
45 | for(i=0;i<8;i++)// alle am Port B |
46 | {
|
47 | if(remaining[i+8]==now) |
48 | {
|
49 | PORTB|=(1<<i); |
50 | }
|
51 | }
|
52 | for(i=0;i<8;i++)// alle am Port C |
53 | {
|
54 | if(remaining[i+16]==now) |
55 | {
|
56 | PORTC|=(1<<i); |
57 | }
|
58 | }
|
59 | for(i=0;i<8;i++)// alle am Port D |
60 | {
|
61 | if(remaining[i+24]==now) |
62 | {
|
63 | PORTD|=(1<<i); |
64 | }
|
65 | }
|
66 | _delay_ms(10); |
67 | }
|
68 | //Tag
|
69 | for(i=0;i<daytime;i++) |
70 | {
|
71 | _delay_ms(10); |
72 | }
|
73 | //�bergang
|
74 | // f�r jedes Licht mal eine zuf�llig Zeitdauer festlegen
|
75 | for(i=0;i<32;i++) |
76 | {
|
77 | remaining[i] = rand()%(switchtime+1); |
78 | }
|
79 | for(now=0;now<switchtime;now++) |
80 | {
|
81 | for(i=0;i<8;i++)// alle am Port A |
82 | {
|
83 | if(remaining[i]==now) |
84 | {
|
85 | PORTA|=(0<<i); |
86 | }
|
87 | }
|
88 | for(i=0;i<8;i++)// alle am Port B |
89 | {
|
90 | if(remaining[i+8]==now) |
91 | {
|
92 | PORTB|=(0<<i); |
93 | }
|
94 | }
|
95 | for(i=0;i<8;i++)// alle am Port C |
96 | {
|
97 | if(remaining[i+16]==now) |
98 | {
|
99 | PORTC|=(0<<i); |
100 | }
|
101 | }
|
102 | for(i=0;i<8;i++)// alle am Port D |
103 | {
|
104 | if(remaining[i+24]==now) |
105 | {
|
106 | PORTD|=(0<<i); |
107 | }
|
108 | }
|
109 | _delay_ms(10); |
110 | }
|
111 | }
|
112 | }
|
leider ist mein mikro nicht der gleichen ansicht ;-) falls mir jemand helfen kann wär ich froh. seh den wald nämlich auch nicht mehr. Gruss Christian