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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.