Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 30 mar 2026, o 22:38


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 25 wrz 2015, o 18:53 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Dobry Wieczór,

Stworzyłem projekt, który składa się z plików main.c, klaw_7seg.c, klaw_7seg.h.

Przy próbie wgrania pliku na mikroprocesor (przez Eclipse) pjawia mi się komunikat:
Obrazek

Na forum znalazłem już podobny temat, ale tam rozwiązanie sprowadzało się do wybrania opcji Release zamiast debug. Ja natomiast nie mam wcale Debug, a jedynie Release, więc nie musze tego zmieniać. Oprócz tego zauważyłem, że w folderze Release mojego projektu rzeczywiście nie ma żadnego pliku hex oraz nie powstaje on podczas buildowania. Czy mógłbym prosić o pomoc?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 19:08 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Pokaż wynik kompilacji z konsoli Eclipse. W jakim katalogu masz zainstalowane AVRDude? Jakie masz ścieżki do AVRToolchaina?

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 19:09 
Offline
Użytkownik

Dołączył(a): 04 paź 2011
Posty: 8631
Pomógł: 338

wydaje mi się że nie masz pliku .hex , projekt sie nie skompilował , albo śpacje w ścieżkach :P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 19:28 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Inne projekty się normalnie kompilują, więc avrdude i toolchain są w porządku.
W konsoli nic się nie pojawia po kompilacji



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 19:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Sprawdź czy masz zaznaczone generowanie plików hex jak na obrazku
Obrazek
Najlepiej utwórz nowy projekt i przekopiuj pliki źródłowe

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 20:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 162
Pomógł: 6

Sprawdź czy nie porypalo Ci się coś z Javą. Miałem ostatnio dokładnie ten sam problem. Przeinstalowanie javy pomogło

Wysłane z mojego HUAWEI P6-U06 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 02:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2014
Posty: 293
Lokalizacja: Jaskółowo k. Warszawy
Pomógł: 9

Witaj.
Czy nie kopiowałeś tych plików z innego kompa/użytkownika?
Nadaj uprawnienia do katalogu z projektem.
Pamiętaj aby zaznaczyć aby zastosował do folderów, podfolderów i plików.

_________________
POZDROWIONKA



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 10:00 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Więc tak:

- projekt utworzyłem sam na tym samym komputerze, z którego próbuję go wgrać na mikrokontroler, nie by kopiowany
- w ustawieniach zaznaczone są dokładnie te same opcje co u kolegi Krausera
- przeinstalowałem Jave (nie pomogło)
- tworzyłem inne projekty i kopiowałem do nich potrzebne pliki (nie pomogło)
- po ponownym zbuildowaniu projektu otrzymałem 6 ostrzeżeń w konsoli:
Kod:
../main.c:14:1: warning: data definition has no type or storage class [enabled by default]
../main.c:14:1: warning: type defaults to 'int' in declaration of 'ilosc_wierszy' [enabled by default]
../main.c:15:1: warning: data definition has no type or storage class [enabled by default]
./main.c:15:1: warning: type defaults to 'int' in declaration of 'ilosc_kolumn' [enabled by default]
../main.c:16:1: warning: data definition has no type or storage class [enabled by default]
../main.c:16:1: warning: type defaults to 'int' in declaration of 'port_c' [enabled by default]


- struktura mojego projektu:
Obrazek

- plik main.c:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


- początek pliku klaw_7seg.c (plik jest długi i chyba nie ma sensu wstawiać całości):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


- plik klaw_7seg.h:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie mam pojęcia na czym polega problem, inne projekty kompilują się normalnie



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 10:19 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Loreno napisał(a):
ilosc_wierszy = 4;
ilosc_kolumn = 4;
port_c = 0b00001111;


int main(void)
{
init_klaw();
init_7seg();

while(1)
{
cyfra();
}

return 0;
}

Panie - panie - a co to jest w pliku main.c ? .... to mniej więcej tak jakbyś wyjął sobie wątrobę z brzucha i byś się zastanawiał dlaczego ci organizm źle działa i dziwnie się zachowuje ;) też miałbyś pełno ostrzeżeń - że coś jest nie tak

Poza ciałem funkcji NIGDY NIE PISZEMY kodu ;) czyli nie wyciągamy wątroby

------------------------ [ Dodano po: 1 minucie ]

Masz może Bluebooka ? jeśli tak to zajrzyj do niego jak się tworzy funkcje w C ... i jak się pisze w nich kod - i dlaczego TYLKO w funkcjach

Bo inaczej to będziesz w kółko Javę przeinstalowywał zupełnie niepotrzebnie


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 10:40 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Ale to są przecież zmienne globalne - wstawiamy je poza funkcjami. Program działał bez problemu zanim podzieliłem go na kilka plików.

Dzieląc projekt na kilka plików wzorowałem się przykładem z bluebook'a - na stronie 133 jest przykładowy plik main.c i jest tam zdefiniowana zmienna idx - zaraz przed funkcją main.

//EDIT

Zmieniłem main.c (dodałem typ int):

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Przy próbie wgrania programu na mikroprocesor nadal wyskakuje błąd z pierwszego postu, a konsola pokazuje coś takiego:
Kod:
11:45:30 **** Incremental Build of configuration Release for project TEST ****
make all
'Building target: TEST.elf'
'Invoking: AVR C Linker'
avr-gcc -Wl,-Map,TEST.map -mmcu=atmega16a -o "TEST.elf"  ./klaw_7seg.o ./main.o   
./main.o:(.data.port_c+0x0): multiple definition of `port_c'
./klaw_7seg.o:(.data.port_c+0x0): first defined here
./main.o:(.data.ilosc_kolumn+0x0): multiple definition of `ilosc_kolumn'
./klaw_7seg.o:(.data.ilosc_kolumn+0x0): first defined here
./main.o:(.data.ilosc_wierszy+0x0): multiple definition of `ilosc_wierszy'
./klaw_7seg.o:(.data.ilosc_wierszy+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [TEST.elf] Błąd 1

11:45:30 Build Finished (took 119ms)


Coś nie tak z deklaracjami zmiennych


//EDIT

W pliku klaw_7seg usunąłem wszystkie zmienne globalne i wstawiłem je do main.c. Program się wgrywa i działa, ale ciekawi mnie czy dałoby się jednak zrobić tak, aby zmienne wiersz oraz kolumna znajdowały się w pliku klaw_7seg.c?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 10:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

A ile razy Chcesz deklarować te same zmienne?
Zajrzyj do "głębokiej wody" na stronie 201 - jak robi się definicję zmiennych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 10:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Loreno napisał(a):
Dzieląc projekt na kilka plików wzorowałem się przykładem z bluebook'a - na stronie 133 jest przykładowy plik main.c i jest tam zdefiniowana zmienna idx - zaraz przed funkcją main

Pisząc to co wyżej zacytowałem nie mogłeś się wzorować na bluebooku a na stronie 133 na pewno nie ma takiego przykładu - ale już chyba to zauważyłeś skoro dodałeś typ

Widać z tego - że jak na razie kompletnie nie rozumiesz co to jest

DEFINICJA ZMIENNEJ

i co to jest

DEKLARACJA ZMIENNEJ

a w książce piszę o tym i WAŁKUJĘ ten temat do bólu - bez zrozumienia tej fundamentalnej rzeczy ZAWSZE KAŻDY będzie miał problemy z C

Teraz panie dodałeś typ w main.c ..... a co masz w pliku klaw_7seg.c ??? toż tam nadal masz te same zmienne zdefiniowane .... a za to w pliku *.h masz ich deklaracje - więc dziwisz się że są podwójnie widziane ?

WYWAL ich definicje z main.c .... po choinkę ci tam te definicje jeśli masz je w pliku klaw_7seg.c .... zajrzyj jeszcze raz do książki o podziale projektu na pliki bo tam masz przykłady. Jeszcze raz zaczytaj o różnicy między DEFINICJĄ a DEKLARACJĄ zmiennej

------------------------ [ Dodano po: kilkunastu sekundach ]

Loreno napisał(a):
ale ciekawi mnie czy dałoby się jednak zrobić tak, aby zmienne wiersz oraz kolumna znajdowały się w pliku klaw_7seg.c?

To poczytaj co napisałem wyżej


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 11:08 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Zrobiłem tak jak Pan napisał i działa, ale nadal nie do końca to rozumiem, będę musiał poczytać książkę.

Dziękuję wszystkim za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 11:16 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

Loreno napisał(a):
Zrobiłem tak jak Pan napisał i działa, ale nadal nie do końca to rozumiem,


a no to teraz działa to panie kolego tak:

1. ZDEFINIOWAŁEŚ sobie zmienne w pliku klaw_7seg.c
2. Wstawiłeś słusznie ich DEKLARACJE w pliku klaw_7seg.h

3. i teraz UWAGA! ;) przecież tenże plik klaw_7seg.h zainkludowałeś w main.c tak czy nie ? ;) ja widzę , że tak

więc dzięki temu punktowi trzeciemu - twoje funkcje w main.c mogą korzystać ze zmiennych które ZDEKLAROWANE są globalnie w pliku klaw_7seg.h

teraz jaśniej ?

I tak się właśnie robi ;)


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 13:41 
Offline
Użytkownik

Dołączył(a): 18 lip 2014
Posty: 69
Pomógł: 0

Jeszcze raz dziękuję za rozjaśnienie sytuacji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO