Forum: Compiler & IDEs unerwartete Fehlermeldung


von Egon M. (kpc)


Lesenswert?

Hallo,

nachdem ich das Programm schon x-mal kompiliert und betrieben habe, 
bekomme ich plötzlich eine Fehlermeldung:

/usr/bin/sh: test: allgPorttest: binary operator expected
avr-gcc -gdwarf-2 -DF_CPU=16000000UL    -Os -funsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=allgPorttest.lst  -std=gnu99 
-Wl,-Map=allgPorttest .map,--cref    -lm  allgPorttest.c   -o 
allgPorttest
In file included from allgPorttest.c:32:
c:/progr-mcu/winavr090313/lib/gcc/../../avr/include/avr/io.h:356:6: 
warning: #warning "device type not defined"
allgPorttest.c: In function 'main':
allgPorttest.c:48: error: 'DDRA' undeclared (first use in this function)
allgPorttest.c:48: error: (Each undeclared identifier is reported only 
once
....
es folgen weitere Portbezeichnungen

In meinem WinAVR 090313 sind die üblichen Dateien (io.h, iom644.h) 
vorhanden und unverändert (sicherheitshalber neu installiert).

1. die erste Zeile der Fehlermeldung: leider wird nicht angezeigt,  w o
   der  binary operator fehlt. Am Programm ist nicht viel dran ( ich
   füge es unten an);
2. lt. io.h sei der device type nicht deklariert, er ist es aber im
   makefile (Atmeg644p);
3. die Portbezeichnungen werden plötzlich auch nicht mehr gefunden.

Kann mir jemand erklären, was da geschieht?

Hier das kleine Programm:
1
#include <util/twi.h>
2
#include <stdint.h>    // veraltet: #include <inttypes.h>  
3
#include <stdio.h>
4
#include <stdlib.h>   
5
#include <avr/io.h>           
6
#include <util/delay.h>  
7
#include "i2cmaster.h"   // Peter Fleury
8
9
10
11
#define SCL PC0     // PIN 
12
#define SDA PC1
13
#define RS  PC2     // LCD-PIN 4
14
#define E   PC3     // LCD-PIN 6
15
16
17
18
int main(void)
19
{
20
   
21
   DDRA = 0xFF;
22
   DDRC  |= (1<<SCL) | (1<<SDA) | (1<<E);    // PC0=SCL, PC1=SDA
23
24
   while (1)                  
25
   {
26
    PORTC |= (1<<E);
27
   PORTA |= 1;         
28
   _delay_ms(1000);
29
    PORTC &= ~(1<<E);
30
    PORTA =0;
31
    _delay_ms(1000);
32
  };
33
}

vielen Dank schon mal
Egon

von Stefan E. (sternst)


Lesenswert?

Die erste Zeile hat mit dem Programm nichts zu tun, sondern deutet auf 
einen Fehler im Makefile hin, wie auch die Tatsache, dass ein -mmcu in 
der avr-gcc-Kommandozeile fehlt (was dann die anderen Fehler 
produziert).

von Egon M. (kpc)


Lesenswert?

Hi Stefan,

so war es.
In der Tat hat mich an der ersten Zeile der Fehlermeldung besonders 
gewundert, daß in diesem frühen Stadium so etwas schon auffällt.

Ich habe ein neues makefile generiert und nun funktioniert es wieder.


Vielen Dank
Egon

Zusatzfrage:
Nach abgeschlossener Programmierung des AVR scheint es eine gestörte 
Trennung zwischen AVR und pn2/avrdude zuu geben, jedenfalls erscheint 
unentwegt:

avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout
avrdude: stk500_2_ReceiveMessage(): timeout

Ich finde leider nichts im makefile, wo man dies unterbrechen könnte.

von Egon M. (kpc)


Lesenswert?

> Zusatzfrage:
> Nach abgeschlossener Programmierung des AVR scheint es eine gestörte
> Trennung zwischen AVR und pn2/avrdude zuu geben, jedenfalls erscheint
> unentwegt:
>
> avrdude: stk500_2_ReceiveMessage(): timeout
> avrdude: stk500_2_ReceiveMessage(): timeout
> avrdude: stk500_2_ReceiveMessage(): timeout
>
> Ich finde leider nichts im makefile, wo man dies unterbrechen könnte.

Hat sich erledigt, nach pn2-Neustart ist es verschwunden!

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.