Problem++ - Compilerfehler?!

Gast #2202713
Lesenswert?

Hallo zusammen,

Bin schon seit längerem auf einem ATTINY13 am programmieren, hatte 
zunächst etwas Assembler gemacht und wollte nun auf C++ umsteigen.
Jetzt zum Problem: Sobald ich in meinem Quelltext irgendwo z.B. i++ 
schreibe, um hchzuzählen, macht mir der Compiler (WinAVR) 28kB aus nem 
einfachen Blinkprogramm, blinken tuts auch nicht :-((( Ich benutze 
Code::Blocks mit WinAVR.

Dankeschön im Vorraus!
Gruß

.chris.
Gast #2202723
Lesenswert?

> Sobald ich in meinem Quelltext irgendwo z.B. i++
>schreibe, um hchzuzählen, macht mir der Compiler (WinAVR) 28kB aus nem
>einfachen Blinkprogramm, blinken tuts auch nicht

Was macht der Compiler aus dem einfachen Blinkprogramm?

Es ist zwar zur Gänze nie ganz auszuschliessen, das Compilerfehler 
vorliegen. Aber bei einem Operator wie ++ der millionenfach, täglich 
jedenfalls bestimmt mehrere tausend Male, verwendet wird, wäre so ein 
Fehler schon längst aufgefallen. Es ist also extremst unwahrscheinlich 
das es am Compiler liegt.

Im allgemeinen ist es sowieso so, das man zuerst seinen eigenen Code 
verdächtigen sollte als den Compiler (es sei denn man hat den Compiler 
gerade selbst geschrieben). Also schmink Dir das erstmal ab. Ich muss 
sowieso immer innerlich leicht grinsen, wenn jemand sowas ohne 
wenigstens den Ansatz eines Beleges behauptet. :-)

So global kann man ohnehin nicht antworten, wenn man nicht weiss was nun 
genau schief läuft. Beschreibe mal genau, was das Problem ist und zeige 
den Quellcode.
Gast #2202739
Lesenswert?

Hallo,

Sorry, hatte den Quelltext verpeilt.
Hier isser:
1
#include <avr/io.h>
2
#include <util/delay.h>
3
#include <stdint.h>
4
int main(void)
5
{
6

7
    int n = 1000;
8
    DDRB = (0 << DDB0 | 0 << DDB1 | 0 << DDB2 | 1 << DDB3 | 1 << DDB4);
9
    while(1)
10
    {
11
        do
12
        {
13
            PORTB = 16;
14
            _delay_ms(n);
15
            n-- ;
16
            PORTB = 8;
17
        } while(n>100);
18

19
    };
20

21
    return 0;
22
}

Wenn ich das so compiliere kommen gut 28kB zusammen, ohne das n-- sind 
es 1,4kB. Hatte zu Anfang ein Beispiel abgetippt, in dem ne For-Schleife 
als Pause eingebaut war, da bestand das gleiche Problem.

Danke schonmal für die Antworten!
lg

.chris.
Gast #2202756
Lesenswert?

Hi

ok, das Problem wäre gelöst, danke.
Wenn ich nun aber folgendes mache:
1
/*
2
 */
3

4
#include <avr/io.h>
5
#include <util/delay.h>
6
#include <stdint.h>
7
int main(void)
8
{
9

10

11
    DDRB = (0 << DDB0 | 0 << DDB1 | 0 << DDB2 | 1 << DDB3 | 1 << DDB4);
12
    int n = 3;
13

14
    while(1)
15
    {
16
        do
17
        {
18
            PORTB = 16;
19
            _delay_ms(1000);
20
            n-- ;
21
            PORTB = 8;
22
            _delay_ms(1000);
23
        } while(n!=0);
24

25
    };
26

27
    return 0;
28
}

dann müsste er eigentlich 3mal wechselblinken und dann stoppen - tut er 
aber nicht. Sorry für die Anfängerfragen, aber Assembler iss schon was 
anderes :-)

lg

.chris.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren