mikrocontroller.net

Forum: Compiler & IDEs Alseits beliebt GCC plugin error


Autor: Lothar Sammel (magic33)
Datum:

Bewertung
0 lesenswert
nicht 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
#ifndef _I2C_MASTER_H
#define _I2C_MASTER_H

/*****************************************************************************
******************************************************************************
****                                    ****
****  I²C Groundroutinen für AVR Prozessoren mit hardwareseitigem       ****
****  I²C Bus. Start, Stop, read und Send Routinen            ****  
****                                    ****
****  Autor:    Robert Schilling   robert.schilling@gmx.at        ****
****        Stefan Tschiggerl  stefan.tschiggerl@gmx.net      ****
****  Datum:    26.09.2006                        ****
****                                    ****
****  Hardware:  Ein Avr Mikrocontroller mit hardwareseitigem      ****
****        I²C Bus.                           ****
****                                    ****
****  Software:  i2c_master Library:    I²C Basic Routinen            ****
****                                    ****
******************************************************************************
*****************************************************************************/

#include <avr/io.h>
#include <stdlib.h>

#define SOFTWARE  0x00
#define HARDWARE  0x01

#define I2C_MODE   SOFTWARE


#if I2C_MODE == SOFTWARE
#define I2C_PORT  PORTC
#define I2C_PIN    PINC
#define I2C_SCL    PC3
#define I2C_SDA    PC2

#define set_output(port, pin)  port |= (1 << pin)
#define set_input(port, pin)  port &= ~(1 << pin)

#define SDA_LOW()    I2C_PORT &= ~(1 << I2C_SDA)
#define SDA_HIGH()    I2C_PORT |= (1 << I2C_SDA)

#define SCL_LOW()    I2C_PORT &= ~(1 << I2C_SCL)
#define SCL_HIGH()    I2C_PORT |= (1 << I2C_SCL)

#endif

#define ACK  0x01
#define NACK 0x00

/**************************************************************
      Initialisiert den I²C Bus des AVR

Parameter:       NONE
              
              
Rückgabewert:    NONE
**************************************************************/
void i2c_init(void);  
  
/**************************************************************
      Sendet ein Startkommando
      
Parameter:    adress    Adresse des I²C Telnehmers
        r_w      Lesen oder schreiben
      
Rückgabewert:  NONE  
**************************************************************/

void i2c_start(unsigned char adress, uint8_t r_w);  

/**************************************************************
      Sendet ein Stopkommando
      
Parameter:    NONE
      
Rückgabewert:  NONE  
**************************************************************/

void i2c_stop(void);                  

/**************************************************************
      Sendet ein Byte über den I²C Bus
      
Parameter:    data  Datenbyte das gesendet werden soll
      
Rückgabewert:  NONE  
**************************************************************/

void i2c_send(unsigned char data);          

/**************************************************************
      Empfängt ein Byte über den I²C Bus
      
Parameter:    NONE
      
Rückgabewert:  Das Byte das ausgelsesn wurde  
**************************************************************/
  
unsigned char i2c_read(uint8_t ackflag);              

#endif

Autor: Lothar Sammel (magic33)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
die beiden anderen files auch noch
master angehangen
und main hier
#include <avr/io.h>
#include <avr/delay.h>

#ifndef F_CPU
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz */
#endif
#include "i2c_master.c"
int main(void)
{
 i2c_init();
 uint8_t zahl=2;
 while(1)
 {
  i2c_start(0x40,0x00);
  i2c_send(zahl);
  zahl++;
  i2c_stop();
  _delay_ms(100) ; 
 }

return 0;

}

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

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

Autor: Lothar Sammel (magic33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neue version installiert 4.15
nix ises
gleiches spiel nur error ohne roten punkt

is schon toll

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Sammel (magic33)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
anbei das ganze projekt

hoffe jemand kann helfen
danke

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
% avr-gcc -Os -mmcu=atmega168 -o main.elf main.c i2c_master.c
In file included from main.c:2:
/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>."
In file included from /usr/local/lib/gcc/avr/4.2.2/../../../../avr/include/avr/delay.h:37,
                 from main.c:2:
/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>"
/var/tmp//ccGRtpGb.o: In function `long_delay':
i2c_master.c:(.text+0x0): multiple definition of `long_delay'
/var/tmp//cctLNEHp.o:main.c:(.text+0x0): first defined here
/var/tmp//ccGRtpGb.o: In function `short_delay':
i2c_master.c:(.text+0x16): multiple definition of `short_delay'
/var/tmp//cctLNEHp.o:main.c:(.text+0x16): first defined here
/var/tmp//ccGRtpGb.o: In function `scl_toggle':
i2c_master.c:(.text+0x22): multiple definition of `scl_toggle'
/var/tmp//cctLNEHp.o:main.c:(.text+0x22): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_start_cond':
i2c_master.c:(.text+0x30): multiple definition of `i2c_start_cond'
/var/tmp//cctLNEHp.o:main.c:(.text+0x30): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_init':
i2c_master.c:(.text+0x3a): multiple definition of `i2c_init'
/var/tmp//cctLNEHp.o:main.c:(.text+0x3a): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_start':
i2c_master.c:(.text+0x44): multiple definition of `i2c_start'
/var/tmp//cctLNEHp.o:main.c:(.text+0x44): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_stop':
i2c_master.c:(.text+0x50): multiple definition of `i2c_stop'
/var/tmp//cctLNEHp.o:main.c:(.text+0x50): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_send':
i2c_master.c:(.text+0x62): multiple definition of `i2c_send'
/var/tmp//cctLNEHp.o:main.c:(.text+0x62): first defined here
/var/tmp//ccGRtpGb.o: In function `i2c_read':
i2c_master.c:(.text+0x6a): multiple definition of `i2c_read'
/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.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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:
4.3.0
In file included from 8515_i2c.c:9:
c:/avr/winavr/lib/gcc/../../avr/include/avr/delay.h:36:2: warning: #warning "This file has been moved to <util/delay.h>."
8515_i2c.c: In function 'main':
8515_i2c.c:13: warning: implicit declaration of function 'i2c_init'
8515_i2c.c:17: warning: implicit declaration of function 'i2c_start'
8515_i2c.c:18: warning: implicit declaration of function 'i2c_send'
8515_i2c.c:20: warning: implicit declaration of function 'i2c_stop'
In file included from i2c_master.c:18:
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.