AVR GCC Fehlermeldungen

Gast #2647388
Lesenswert?

Hallo,

ich probiere mich gerade daran ein PWM Signal auszuwerten und damit 
verschiedene LEDs anzusprechen. Jetzt wollte ich mein Projekt 
kompilieren, bekomme aber rund 40 Fehlermeldungen.

ca. 20 davon melden das gleiche Problem.

In meinem Programmcode habe ich geschrieben:

volatile unsigned int counting;
[...]
counting = 1;

In der Fehlermeldung steht dann "Conflicting type qualifiers for 
"counting""

Und es kommt die Warnung, dass F_CPU für die delay.h nicht definiert 
ist, obwohl ich das meines Wissens getan habe:

# undef F_CPU
# define F_CPU 8000000UL

Oder habe ich die falsch definiert?!

Diese verstehe ich also irgendwie nicht. Ist wahrscheinlich etwas ganz 
banales, aber ich komme einfach nicht drauf.

Ich hoffe ihr könnt mir helfen,

Lepo95
Gast #2647449
Lesenswert?

Danke erstmal. Die Variable Counting wird in der untenstehenden ISR 
benutzt. Immer wenn das PWM Signal auf High steht, steht in der Variable 
Counting auch eine 1.

Hier einmal alle Ausschnitte aus meinem Code, in denen Counting 
vorkommt:

volatile unsigned int counting;
[..]
counting = 1; // Um die Variable schon einmal mit einer 1 zu belegen
[..]
ISR(TIMER1_CAPT_vect) //Zum Messen der Länge eines High-Pegels
{
  if(counting)
  {
    time = ICR1;
    TCCR1B |= (1 << ICES1);
    TIFR |= (1 << ICF1); //deleting of the Input Capture Flag
    TCNT1 = 0;
    overflow = 0;
    counting = 0;
  }
  else if(counting == 0)
  {
    time2 = ICR1; //Copying of 2nd counter reading
    overflow = 0;
    TIFR |= (1 << ICF1);
    counting = 1;
    TCCR1B &= ~(1 << ICES1);
    time_difference = gettimer() / 1092; //Mü-Seconds
  }
}

Die Fehlermeldungen inkl. Warnungen sehen wie folgt aus, alle gehören zu 
der Variable Counting:

Warning  1  data definition has no type or storage class 
C:\Users\Leon-Laptop\Documents\AVRStudio 5.1\AVRGCC2\AVRGCC2\AVRGCC2.c 
52  1  AVRGCC2
Warning  2  type defaults to 'int' in declaration of 'counting' 
C:\Users\Leon-Laptop\Documents\AVRStudio 5.1\AVRGCC2\AVRGCC2\AVRGCC2.c 
52  1  AVRGCC2
Error  3  conflicting type qualifiers for 'counting' 
C:\Users\Leon-Laptop\Documents\AVRStudio 5.1\AVRGCC2\AVRGCC2\AVRGCC2.c 
52  1  AVRGCC2

Vielen Dank schon einmal im Voraus!

Lepo95
#2647480
Lesenswert?

Das sind ja immer noch zusammenhanglose Codefetzen.

Lepo95 schrieb:
> volatile unsigned int counting;
> [..]
> counting = 1; // Um die Variable schon einmal mit einer 1 zu belegen
> [..]

Aber ich nehme mal an, du deklarierst eine globale Variable und 
versuchst dieser einen Wert zuzuweisen. Das funktioniert nur direkt:
volatile unsigned int counting = 1;

Dir fehlen die Grundlagen in C. Programmieren lernt man nicht mit der 
Trial and Error Methode. Und C schon gar nicht.

mfg.
Gast #2647489
Lesenswert?

Vielen Dank. ich werde das gleich mal ausprobieren.
Mir ist schon klar, dass man C nicht einfach so lernt. Ich habe letztes 
Jahr ein Semester lang die Programmiersprache Ruby gelernt. Und habe 
versucht diese Kenntnisse auf C anzuwenden. Ich werde mich dann aber 
wohl noch etwas mehr mit den C-Grundlagen auseinandersetzen müssen. Aber 
vielen Dank für Eure gute Hilfe.

Lepo95
#2647531
Lesenswert?

Lepo95 schrieb:
> volatile unsigned int counting;
> [..]
> counting = 1; // Um die Variable schon einmal mit einer 1 zu belegen

Ach so. Wenn "counting = 1" im globalen Scope steht, erklärt das die 
Fehlermeldung. Das bedeutet dann, dass eine neue Variable angelegt 
werden soll und der die Zahl 1 zugewiesen werden soll. Da kein Typ da 
steht, gilt "int" als Default. Das ist aber weder unsigned noch volatile 
und beißt sich mit der vorherigen Deklaration von counting.
Gast #2648126
Lesenswert?

So, vielen Dank. Alle meine Fehlermeldungen sind jetzt weg.
Demnächst wird das Programm dann auf den Controller gespielt. Falls dann 
noch Probleme auftauchen, melde ich mich nochmal.

Vielen Dank
Lepo95

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