Hallo, wenn ich mit Eclipse eine while(1) Schleife baue, so wird diese genau einmal durchlaufen, danach macht das Programm dann "irgendwas", aber läuft eben nicht weiter. Das gleiche "Programm" (LED Lauflicht) in AVR Studio ebenfalls mit gcc kompiliert funktioniert wie erwartet. "For" Schleifen funzen auch in mit Eclipse erstellten hexfiles. Nun ist es ja so, dass beide IDEs auf die gleiche Toolchain zugreifen und ich hätte erwartet, dass bei Verwendung eines identischen Makefiles das Programm ein identisches Verhalten aufweist. Dem ist aber leider nicht so... Hat jemand eine Idee? Danke, geno
hmmmm....irgendwie habe ich es nun geschafft, dass die Schleife mit AVRStudio ebenfalls hängt :-/ Und das nicht nur mit ner while, sondern auch for-Schleife. Auch ohne Makefile tut es nun nicht mehr - ich wüsste echt gern, warum das so ist. thx for reading.
1 | #include <avr/io.h> |
2 | #include <util/delay.h> |
3 | #ifndef F_CPU
|
4 | #define F_CPU 16000000UL
|
5 | #endif
|
6 | |
7 | |
8 | int main(void) |
9 | {
|
10 | DDRD = 0xFF; |
11 | DDRB = 0x0; |
12 | PORTD = 0xFF; |
13 | |
14 | for (int i = 1; i < 200000; ++i) |
15 | {
|
16 | for (char LED = 0x0; LED < 8; ++LED) |
17 | {
|
18 | _delay_ms(10); |
19 | PORTD &= ~(1 << LED); |
20 | _delay_ms(10); |
21 | PORTD |= ( 1 << LED); |
22 | |
23 | }
|
24 | for (char LED = 7; LED >= 0; --LED) |
25 | {
|
26 | _delay_ms(10); |
27 | PORTD &= ~(1 << LED); |
28 | |
29 | _delay_ms(10); |
30 | PORTD |= ( 1 << LED); |
31 | }
|
32 | }
|
33 | return 0; |
34 | }
|
1 | for (int i = 1; i < 200000; ++i) |
Wie soll i denn jemals die 200000 erreichen?
1 | for (char LED = 7; LED >= 0; --LED) |
Ob char ein Vorzeichen hat, hängt vom Compiler und den Optionen ab (der Standard legt das nicht fest). Wenn du AVR-Studio das Makefile generieren lässt, dann ist das auf jeden Fall eine Endlosschleife, denn dann wird mit -funsigned-char übersetzt. Wenn du die Schleife unbedingt in der Form haben möchtest, dann so:
1 | for (signed char LED = 7; LED >= 0; --LED) |
Moin Stefan, danke für deine Antwort. Gerade eben habe ich herausgefunden, dass die Endlosschleife läuft, wenn ich in den Projekteinstellungen (Makefile habe ich rausgeschmissen) "unsigned chars" abschalte. Warum das aktiviert war - keine Ahnung... Danke, geno
Halli Hallo, Das ist wie beim Raucherproblem du musst einfach. class A.N.A.L. implements Runnable { public void run() { for (int i = 65 ; i < 94; i++) { System.out.println(Thread.currentThread().getName() + " : " + (char) i) ; try { Thread.sleep(1000); // pausiere eine Sekunde } catch (InterruptedException e) { System.out.println(e); } } } musst mal gucken Kuss Engli
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.