Forum: Compiler & IDEs Anfänger braucht Hilfe - finde Fehler nicht


von Rocco L. (kaufparkangucker)


Lesenswert?

Hallo,

ich habe nach Monaten mal wieder ein altes Projekt ausgegraben.
es werden follgende Fehler angezeigt:

../Mainframe.c:71: error: expected ')' before '{' token
../Mainframe.c:113: error: expected expression before '}' token
../Mainframe.c:113: error: expected 'while' at end of input
../Mainframe.c:113: error: expected declaration or statement at end of 
input

Ich check einfach nicht wo der Fehler liegt - liegt vieleicht an der 
Hitze, warscheinlicher aber an mir.
1
//B2 Taster K?ltebad
2
//B3 Taster W?rmebad
3
4
5
6
#include <avr/io.h>
7
#include <avr/interrupt.h>
8
#define F_CPU 2000000
9
#include <util/delay.h>
10
#include <inttypes.h>
11
#include <stdint.h>
12
13
#define TRUE 1
14
#define FALSE 0
15
16
// Anchlussbelegung:
17
18
#define KTEMP_DDR DDRD        //Temperatur Input vom Kältebad
19
#define WTEMP_DDR DDRC        //Temperatur Input vom Wärmebad
20
#define PTEMP_DDR DDRA        //Temperatur Input von Probe
21
22
#define MOTOR_DDR DDRB        //Datenrichtung zum Motor-Steuer-Atmega festlegen
23
#define MOTOR_OUT PORTB        //Ausgänge zum Motor-Steuer-Atmega
24
#define MOTOR_IN  PINB
25
26
#define WTEMP_IN   PINC        //Wärmebad abfragen
27
#define KTEMP_IN   PIND        //Kältebad abfragen      
28
#define PTEMP_IN   PINA        //Probentemperatur abfragen
29
30
#define CW   PB0          //Motor cw richtung Kältebad
31
#define CCW  PB1          //Motor ccw richtung Wärmebad
32
#define KB   PB2          //Taster Kältebad abfragen 
33
#define WB   PB3          //Taster Wärmebad abfragen
34
35
36
37
38
39
40
41
42
int main(void)
43
{
44
    uint8_t w_temp = 0;          //Variable zum speichern der Zustände vom Wärmebad
45
    uint8_t k_temp = 0;          //Variable zum speichern der Zustände vom Kältebad
46
    uint8_t p_temp = 0;          //Variable zum speichern der Zustände von der Probe
47
         
48
        const uint16_t pause = 200;
49
    const uint16_t pause_2 =80;
50
    
51
    
52
    KTEMP_DDR = 0x00;    //Eing?nge
53
        WTEMP_DDR = 0x00;    //Eing?nge
54
    PTEMP_DDR = 0x00;    //Eing?nge
55
    //B0 un B1 als Ausgänge, B2 und B3 als Eingänge:
56
    MOTOR_DDR = DDRB = (1 << DDB0) | (1 << DDB1) | (0 << DDB2) | (0 << DDB3);
57
        
58
59
60
    //Pause für 20 Sekunden damit alles andere initialisieren kann
61
    //for(int a=0; a<10; a++){_delay_ms( 1000 )};
62
    
63
64
        do
65
        {
66
      k_temp = KTEMP_IN;          //Temp vom Kältebad abholen
67
      p_temp = PTEMP_IN;          //Temp der Probe abholen
68
      w_temp = WTEMP_IN;          //Temp vom Wärmebad abholen
69
70
      //Wenn Taster vom K?ltebad an (d.h. Probe ist im Kältebad)
71
      if((PINB & (1<<KB))
72
      {
73
        //Motor erst mal grundlegend ausschalten, um einen definierten Startwert zu haben
74
      PORTB &= ~ (1<<CCW);  //Motor aus
75
      PORTB &= ~ (1<<CW);    //Motor aus
76
77
78
        if((p_temp <= k_temp + 1))   //fals Probentemp gleich Kältebadtemp ist
79
        {
80
         //Pause um damit Probe die Temp vom Kältebad vollständig annehmen kann
81
             //     for(int a=0; a<20; a++){_delay_ms( 1000 );}
82
83
         //ins Wärmebad fahren)
84
         PORTB &= ~ (1<<CCW);
85
         PORTB |= (1<<CW);
86
87
         //Pause für 20 Sekunden
88
               //     for(int a=0; a<20; a++){_delay_ms( 1000 );} 
89
        }
90
      }
91
         
92
      //Wenn Taster vom Wärmebad an (d.h. Probe ist im Wärmebad)
93
      if((PINB & (1<<WB))
94
      {
95
        if((p_temp >= w_temp - 1))// fals Probentemp gleich Wärmebadtemp ist
96
        {
97
         //Pause um damit Probe die Temp vom Wärmebad vollständig annehmen kann
98
      //     for(int a=0; a<20; a++){_delay_ms( 1000 );}
99
100
         
101
         PORTB &= ~ (1<<CW);
102
         PORTB |= (1<<CCW);
103
         
104
        }
105
      }
106
107
108
         
109
110
111
112
        } //ENDE do
113
    while(1);
114
115
} //ENDE main

von Uhu U. (uhu)


Lesenswert?

Zähl mal in Zeile 71 die Klammern nach...

Und gib deinen Threads in Zukunft einen aussagekräftigen Titel.

von Eddy (Gast)


Lesenswert?

if((PINB & (1<<KB))
3x (
2x )

von Werner B. (werner-b)


Lesenswert?

Die Fehlermeldung sagt es doch GANZ DEUTLICH.

      if((PINB & (1<<KB))

Da fehlt eine ")"

Der Rest aus Zeite 113 sind offensichtlich Folgefehler

von Rocco L. (kaufparkangucker)


Lesenswert?

Danke, ich habe es einfach nicht gesehen

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.