Hallo Leute,
irgendwie bin ich entweder zu doof, oder meine Compilerkombination hat
'nen Schuss. Folgendes Miniprogramm wird anscheinend nicht richtig
übersetzt:
1 | #define MCU atmega168
|
2 |
|
3 | #include <avr/io.h>
|
4 |
|
5 | int main( void )
|
6 | {
|
7 |
|
8 | uint8_t PulsWidth; // PWM-Counter
|
9 | uint8_t amplitude;
|
10 | uint8_t MStep; // Schrittzähler
|
11 |
|
12 | amplitude = 50;
|
13 |
|
14 | DDRD |= (1 << DDD0) | (1 << DDD1) |(1 << DDD2) |(1 << DDD3);
|
15 | while(1){
|
16 |
|
17 |
|
18 | for( MStep = 1 ; MStep <= 4 ; MStep++ )
|
19 | { for( PulsWidth = 1 ; PulsWidth <= 255 ; PulsWidth++ ){
|
20 | if (PulsWidth <= 100){
|
21 | switch (MStep){
|
22 | case 1:
|
23 | PORTD = 0x09;
|
24 | break;
|
25 | case 2:
|
26 | PORTD = 0x05;
|
27 | break;
|
28 | case 3:
|
29 | PORTD = 0x06;
|
30 | break;
|
31 | case 4:
|
32 | PORTD = 0x0A;
|
33 | break;
|
34 | default:
|
35 | break;
|
36 | }
|
37 |
|
38 | } else {
|
39 | PORTD = 0x00;
|
40 | }
|
41 |
|
42 | } // Next PulsWidth
|
43 |
|
44 | } // Next MStep
|
45 | }
|
46 | return(0);
|
47 | }
|
Die innere Schleife wird richtig übersetzt und funktioniert auch. Die
Äußere will einfach nicht so, wie ich mir das gedacht habe. Auch die
*.lss Datei wirft nur Schwachsinn raus. Habe sie mal angehängt. Hier mal
ein paar Fakten zur Software:
OS: SUSE 12.1
IDE: Eclipse Indigo 3.7.1
Plugin: 2.4.0 beta2
Toolchain: 3.2.3.314 von Atmel
MCU: Atmega168, 20MHz
Ich habe da auch schon die Versionen aus dem AVR-Repo von Suse verwendet
und andere Experimente gemacht, wie z.B. auf while-Schleifen umgestellt.
Kann mir jemand einen Hinweis geben, was ich hier falsch mache?
Gruß Andreas.
Ihr habt mir immer geholfen .....