Skocz do zawartości

Eclipse problem kompilacji (wielokrotna definicja)


BananWszyscy

Pomocna odpowiedź

Proszę o pomoc:

main

#include <avr\io.h>
#include <util\delay.h>
#include <avr\interrupt.h>
#include <stdlib.h>
#include <stdio.h>
#include "wyswietlacz_7segm.h"


int main()
{
	Timer0Init();

}

wyswietlacz_7segm obydwa pliki
 

#ifndef WYSWIETLACZ_7SEGM_H_
#define WYSWIETLACZ_7SEGM_H_
#include <avr\io.h>
#include <avr\interrupt.h>
/*
wyswietlacz LED ze wspolna anoda, ze wspolna katoda trzeba zanegować liczby
*/
#define LED D
#define GLUE(a, b) a##b
#define LEDPORT1(s) GLUE(PORT,s)
#define LEDPORT LEDPORT1(LED)
#define LEDDDR1(s) GLUE(DDR,s)
#define LEDDDR LEDDDR1(LED)

#define LEDDISPNO 4 // Liczba wyświetlaczy
volatile uint8_t LEDDIGITS[LEDDISPNO]; // Tablica zawierająca dane do wyświetlania

// Cyfry 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 i symbol -
static const uint8_t DIGITS[11]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82,
0xF8, 0x80, 0x90, 0xBF};
const uint8_t DOT=0x80;

void ShowOnLED(uint8_t val);
void Timer0Init();

#endif /* WYSWIETLACZ_7SEGM_H_ */
#include "wyswietlacz_7segm.h"

void ShowOnLED(uint8_t val)
{
uint8_t tmp=0xFF;
if((val & 0x7F)<11) tmp=DIGITS[val & 0x7F]; // Odczytaj kod znaku
if(val & DOT) tmp&=~DOT; // Sterowanie kropką dziesiętną na LED
LEDPORT=tmp;
}

void Timer0Init()
{
TCCR0=_BV(CS01); // Preskaler CLKIO/8
TIMSK|=_BV(TOIE0); // Odblokuj przerwanie nadmiaru timera 0
}

ISR(TIMER0_OVF_vect)
{
static uint8_t LEDNO;
PORTC|=0x0F; // Wyłącz wszystkie wyświetlacze
LEDNO=(LEDNO+1)%LEDDISPNO;
ShowOnLED(LEDDIGITS[LEDNO]);
PORTC=(PORTC & 0xF0) | (~(1<<LEDNO) & 0x0F); // Wybierz kolejny wyświetlacz
}

Właściwie dobra copy-pasta i dostaję takie oto:

Cytat

'Building target: Zegarek.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,Zegarek.map -mmcu=atmega8 -o "Zegarek.elf"  ./main.o ./wyswietlacz_7segm.o   
./wyswietlacz_7segm.o:(.rodata.DOT+0x0): multiple definition of `DOT'
./main.o:(.rodata.DOT+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [Zegarek.elf] Błąd 1
"make all" terminated with exit code 2. Build might be incomplete.

Co robię nie tak w tym eclipsie 😮

Link do komentarza
Share on other sites

5 minut temu, BananWszyscy napisał:

Co robię nie tak w tym eclipsie 😮

Spróbuj z extern'em albo static'em - C/C++ często nie lubi definicji wartości w nagłówkach.

https://stackoverflow.com/questions/36147476/initializing-variables-in-header-c

Edytowano przez H1M4W4R1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.