Forum: Compiler & IDEs Alseits beliebt GCC plugin error


von Lothar S. (magic33)


Lesenswert?

servus mich hat es erwischt

ich hab alle 20 posts zu diesem thema gelesen und find einfach keine 
lösung

anscheinend hängt es am headerfile
1
#ifndef _I2C_MASTER_H
2
#define _I2C_MASTER_H
3
4
/*****************************************************************************
5
******************************************************************************
6
****                                    ****
7
****  I²C Groundroutinen für AVR Prozessoren mit hardwareseitigem       ****
8
****  I²C Bus. Start, Stop, read und Send Routinen            ****  
9
****                                    ****
10
****  Autor:    Robert Schilling   robert.schilling@gmx.at        ****
11
****        Stefan Tschiggerl  stefan.tschiggerl@gmx.net      ****
12
****  Datum:    26.09.2006                        ****
13
****                                    ****
14
****  Hardware:  Ein Avr Mikrocontroller mit hardwareseitigem      ****
15
****        I²C Bus.                           ****
16
****                                    ****
17
****  Software:  i2c_master Library:    I²C Basic Routinen            ****
18
****                                    ****
19
******************************************************************************
20
*****************************************************************************/
21
22
#include <avr/io.h>
23
#include <stdlib.h>
24
25
#define SOFTWARE  0x00
26
#define HARDWARE  0x01
27
28
#define I2C_MODE   SOFTWARE
29
30
31
#if I2C_MODE == SOFTWARE
32
#define I2C_PORT  PORTC
33
#define I2C_PIN    PINC
34
#define I2C_SCL    PC3
35
#define I2C_SDA    PC2
36
37
#define set_output(port, pin)  port |= (1 << pin)
38
#define set_input(port, pin)  port &= ~(1 << pin)
39
40
#define SDA_LOW()    I2C_PORT &= ~(1 << I2C_SDA)
41
#define SDA_HIGH()    I2C_PORT |= (1 << I2C_SDA)
42
43
#define SCL_LOW()    I2C_PORT &= ~(1 << I2C_SCL)
44
#define SCL_HIGH()    I2C_PORT |= (1 << I2C_SCL)
45
46
#endif
47
48
#define ACK  0x01
49
#define NACK 0x00
50
51
/**************************************************************
52
      Initialisiert den I²C Bus des AVR
53
54
Parameter:       NONE
55
              
56
              
57
Rückgabewert:    NONE
58
**************************************************************/
59
void i2c_init(void);  
60
  
61
/**************************************************************
62
      Sendet ein Startkommando
63
      
64
Parameter:    adress    Adresse des I²C Telnehmers
65
        r_w      Lesen oder schreiben
66
      
67
Rückgabewert:  NONE  
68
**************************************************************/
69
70
void i2c_start(unsigned char adress, uint8_t r_w);  
71
72
/**************************************************************
73
      Sendet ein Stopkommando
74
      
75
Parameter:    NONE
76
      
77
Rückgabewert:  NONE  
78
**************************************************************/
79
80
void i2c_stop(void);                  
81
82
/**************************************************************
83
      Sendet ein Byte über den I²C Bus
84
      
85
Parameter:    data  Datenbyte das gesendet werden soll
86
      
87
Rückgabewert:  NONE  
88
**************************************************************/
89
90
void i2c_send(unsigned char data);          
91
92
/**************************************************************
93
      Empfängt ein Byte über den I²C Bus
94
      
95
Parameter:    NONE
96
      
97
Rückgabewert:  Das Byte das ausgelsesn wurde  
98
**************************************************************/
99
  
100
unsigned char i2c_read(uint8_t ackflag);              
101
102
#endif

von Lothar S. (magic33)


Angehängte Dateien:

Lesenswert?

die beiden anderen files auch noch
master angehangen
und main hier
1
#include <avr/io.h>
2
#include <avr/delay.h>
3
4
#ifndef F_CPU
5
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
6
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */
7
#endif
8
#include "i2c_master.c"
9
int main(void)
10
{
11
 i2c_init();
12
 uint8_t zahl=2;
13
 while(1)
14
 {
15
  i2c_start(0x40,0x00);
16
  i2c_send(zahl);
17
  zahl++;
18
  i2c_stop();
19
  _delay_ms(100) ; 
20
 }
21
22
return 0;
23
24
}

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

AVR Studio updaten.  Das aktuelle sollte dir bei Compilerfehlern nun
endlich freiwillig das Fenster mit den Fehlermeldungen aufblenden.

von Lothar S. (magic33)


Lesenswert?

neue version installiert 4.15
nix ises
gleiches spiel nur error ohne roten punkt

is schon toll

bitte um hilfe
fehlerfenster????aufblenden ????

von Peter D. (peda)


Lesenswert?

Lothar Sammel wrote:
> ich hab alle 20 posts zu diesem thema gelesen und find einfach keine
> lösung

Und nun?

Soll man nun erstmal suchen, welche 20 Posts Du meinst?

Wenns um Compilerfehler geht, ist es witzlos, Codefragmente einzufügen.
Du mußt schon die (alle) echten Files als Anhang posten.
Mach maln Zip draus, dann könnt ich mal gucken, obs bei mir compiliert.

Und welches Target, welcher WINAVR, Compilerschalter?


Peter

von Lothar S. (magic33)


Angehängte Dateien:

Lesenswert?

anbei das ganze projekt

hoffe jemand kann helfen
danke

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

1
% avr-gcc -Os -mmcu=atmega168 -o main.elf main.c i2c_master.c
2
In file included from main.c:2:
3
/usr/local/lib/gcc/avr/4.2.2/../../../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
4
In file included from /usr/local/lib/gcc/avr/4.2.2/../../../../avr/include/avr/delay.h:37,
5
                 from main.c:2:
6
/usr/local/lib/gcc/avr/4.2.2/../../../../avr/include/util/delay.h:85:3: warning: #warning "F_CPU not defined for <util/delay.h>"
7
/var/tmp//ccGRtpGb.o: In function `long_delay':
8
i2c_master.c:(.text+0x0): multiple definition of `long_delay'
9
/var/tmp//cctLNEHp.o:main.c:(.text+0x0): first defined here
10
/var/tmp//ccGRtpGb.o: In function `short_delay':
11
i2c_master.c:(.text+0x16): multiple definition of `short_delay'
12
/var/tmp//cctLNEHp.o:main.c:(.text+0x16): first defined here
13
/var/tmp//ccGRtpGb.o: In function `scl_toggle':
14
i2c_master.c:(.text+0x22): multiple definition of `scl_toggle'
15
/var/tmp//cctLNEHp.o:main.c:(.text+0x22): first defined here
16
/var/tmp//ccGRtpGb.o: In function `i2c_start_cond':
17
i2c_master.c:(.text+0x30): multiple definition of `i2c_start_cond'
18
/var/tmp//cctLNEHp.o:main.c:(.text+0x30): first defined here
19
/var/tmp//ccGRtpGb.o: In function `i2c_init':
20
i2c_master.c:(.text+0x3a): multiple definition of `i2c_init'
21
/var/tmp//cctLNEHp.o:main.c:(.text+0x3a): first defined here
22
/var/tmp//ccGRtpGb.o: In function `i2c_start':
23
i2c_master.c:(.text+0x44): multiple definition of `i2c_start'
24
/var/tmp//cctLNEHp.o:main.c:(.text+0x44): first defined here
25
/var/tmp//ccGRtpGb.o: In function `i2c_stop':
26
i2c_master.c:(.text+0x50): multiple definition of `i2c_stop'
27
/var/tmp//cctLNEHp.o:main.c:(.text+0x50): first defined here
28
/var/tmp//ccGRtpGb.o: In function `i2c_send':
29
i2c_master.c:(.text+0x62): multiple definition of `i2c_send'
30
/var/tmp//cctLNEHp.o:main.c:(.text+0x62): first defined here
31
/var/tmp//ccGRtpGb.o: In function `i2c_read':
32
i2c_master.c:(.text+0x6a): multiple definition of `i2c_read'
33
/var/tmp//cctLNEHp.o:main.c:(.text+0x6a): first defined here

Ungefähr das würdest du wohl in deinen Compilermeldungen auch sehen.

Eine C-Datei ist nicht dafür da, per #include irgendwo reingezogen
zu werden.

p.s.: Das ist von deinen oben geposteten Dateien, das Projekt war
da noch nicht im Forum, als ich das angefangen habe.

von Peter D. (peda)


Lesenswert?

Jörg Wunsch wrote:
> Eine C-Datei ist nicht dafür da, per #include irgendwo reingezogen
> zu werden.

Und wenn man das auskommentiert, kommen noch diese Meldungen:
1
4.3.0
2
In file included from 8515_i2c.c:9:
3
c:/avr/winavr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
4
8515_i2c.c: In function 'main':
5
8515_i2c.c:13: warning: implicit declaration of function 'i2c_init'
6
8515_i2c.c:17: warning: implicit declaration of function 'i2c_start'
7
8515_i2c.c:18: warning: implicit declaration of function 'i2c_send'
8
8515_i2c.c:20: warning: implicit declaration of function 'i2c_stop'
9
In file included from i2c_master.c:18:
10
c:/avr/winavr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."

Compilieren läßt es sich aber und HEX wird erzeugt.


Peter


P.S.:
Wenn ich die Optimierung "-Wl,--relax" einschalte, schmiert der ld.exe 
ab, aber die ist eh bei <=8kB wirkungslos.

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.