Forum: Mikrocontroller und Digitale Elektronik Probleme beim Compilieren (ATmega 32)


von Gernot (Gast)


Lesenswert?

Da ich nun mit meiner Platine für ein Solar Projekt von mir fertig bin, 
bin ich nun daran gegangen den µC zu programmieren.
Wenn ich aber eine .hex erstellen will dann gibt mir der compiler aus 
das in der stdint.h 3 fehler wären. Bei vorherigen Projekten hat er sich 
dabei noch nie aufgeregt. Deswegen hab ich ein altes Projekt neu 
compiliert, und musste leider feststellen das er auch die nicht mehr 
richtig compilieren schafft.
Hat jemand eine Ahnung woran das liegen könnte?

P.S.:
folgende Fehlermeldung kommt:
c:/winavr-20070525/bin/../avr/include/stdint.h:121: error: expected '=', 
',', ';', 'asm' or '__attribute__' before 'typedef'

von Gast (Gast)


Lesenswert?

poste deinen code

von Gernot (Gast)


Lesenswert?

1
void main(void)
2
{
3
  float AkkuWert;
4
5
  AkkuWert = AD_start(0x02);
6
  pwm_dimm(0xFF);
7
8
  while(1)
9
  {
10
    AkkuWert = AD_start(0x02) * 5.8;
11
    
12
    if (AkkuWert < 12.4)
13
      pwm_dimm(0xFF);
14
    else
15
      pwm_dimm(0x00);
16
    
17
  }
18
      
19
}

Das ist der code vom einfachen Projekt.
Auch bei dem kommt die Fehlermeldung, obwohl es schon zuvor funktioniert 
hat.

von Johannes M. (johnny-m)


Lesenswert?

Nö, das ist nicht der komplette Code. Wenn ein Fehler in der stdint.h 
gemeldet wird, dann liegt der Fehler im Bereich der #includes, und die 
zeigst Du nicht. Ich vermute aber mal ein Semikolon zu viel nach einer 
Präprozessoranweisung, und zwar vor #include<stdint.h>...

von Gernot (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#include <stdint.h>
3
#include <stdlib.h>
4
#include <avr/interrupt.h>
5
#include <avr/wdt.h>
6
7
8
float AD_start (char Kanal);
9
void pwm_dimm(char Helligkeit);
10
11
void main(void)
12
{
13
  float AkkuWert;
14
15
  AkkuWert = AD_start(0x02);
16
  pwm_dimm(0xFF);
17
18
  while(1)
19
  {
20
    AkkuWert = AD_start(0x02) * 5.8;
21
    
22
    if (AkkuWert < 12.4)
23
      pwm_dimm(0xFF);
24
    else
25
      pwm_dimm(0x00);
26
    
27
  }
28
      
29
}

Hier jetzt auch mit den includes und den Funktionsprototypen.
Hoffe du kannst mit damit weiter helfen.
In den einzelnen funktionen ist stdint.h nicht als #include datei 
hinzugefügt.

von Karl H. (kbuchegg)


Lesenswert?

Du hattest nicht zufällig die avr/io.h mal offen (oder
das Include File welches von dort includiert wird) und hast
ohne es zu merken, dort einen Fehler eingebaut.
Wie Johannes schon anmerkte, sind das meist irgendwelche
Semicolons die im Include File vor dem mit dem Fehler
gemacht werden oder dort fehlen.

> In den einzelnen funktionen ist stdint.h nicht als
> #include datei hinzugefügt.

Im Build Log siehst du ja, welche *.c gerade compiliert wird.
In deinem Fall müsste das dann die *.c mit dem main() sein.

Schau mal in die stdint.h hinein. Such dir die Zeile 121
und schau dort mal nach. Wenn in dieser Zeile nichts Auffallendes
ist, dann auch die Zeilen davor untersuchen. Wenn das die
erste interessante Zeile ist (weil davor nur Kommentare sind),
dann auch im Header File, welches unmittelbar davor benutzt
wird, die letzten Zeilen begutachten.

Es kommt schon mal vor, dass man in diesen Header Files
etwas nachschlägt und dabei unabsichtlich ein Zeichen
einfügt oder weglöscht.

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
Noch kein Account? Hier anmelden.