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



Teraz jest 17 lis 2024, o 14:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 30 sie 2012, o 14:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Witam,
Potrzebuje zmiennej umieszczonej w pamięci EEPROM

Projekt składa się z 3 plików
main.c, pwm.c, pwm.h

plik main.c incuduje pwm.h
plik pwm.c incuduje pwm.h

Teraz mam pytanie:
Gdzie powinienem umieścić tę linijkę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


aby zmiennej tryb mogłem używać w pliku main.c oraz pwm.c?

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

Jak umieszczę w pwm.h to otrzymuje error:
Kod:
./pwm.o:(.eeprom+0x0): multiple definition of `tryb'
./main.o:(.eeprom+0x0): first defined here



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2012, o 14:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 paź 2011
Posty: 780
Pomógł: 20

Ja tam niewiele wiem ale bym includował wszystko w pliku main :)

Nie wiem jaką u ciebie zmienną jest przedstawiona lokalna czy globalna.

Jak widać chce żebyś zdeklarował zmienną zdeklarował w main-ie :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2012, o 14:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Jak dam tą linijkę do main.c, to potem w pliku pwm.c nie będę mógł użyć zmiennej tryb ;/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2012, o 14:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lut 2012
Posty: 598
Lokalizacja: Warszawa
Pomógł: 13

Jak dobrze pamiętam to utwórz zmienną w pwm.c, natomiast w pwm.h tylko deklaracja z extern, i wtedy będzie dostępna w main.c


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 sie 2012, o 15:11 
Offline
Moderator
Avatar użytkownika

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

Najpierw odpowiedz sobie na pytanie - który plik jest jakby stworzycielem tej zmiennej, w którym jest ona częściej wykorzystywana i najbardziej potrzebna. Jeśli uznasz że takim plikiem jest pwm.c to umieść definicję tej zmiennej właśnie w nim.....

a z książki powinieneś wiedzieć, że jeśli masz jakąś zmienną w jakimś tam pliku to żeby ją uwidocznić w innych trzeba ją jakoś wyeksportować prawda ? ;) wystarczy nawet wyeksportować jej nazwę, a zatem musisz dodać co? Jej DEKLARACJĘ do pliku pwm.h !


extern uint8_t EEMEM tryb;

mówi ci to coś ? ;)

oczywiście EEMEM może być nierozpoznawane w pwm.h dlatego trzeba na jego początku zainkludować także

#include <avr/eeprom.h>

-------------------------------------------

a gdybyś chciał ją zdefiniować jednak w main.c ???? to co ? nie ma rady ???? też jest rada ale trzeba gdzieś umieścić przecież też jej DEKLARCJĘ tylko gdzie ? przecież nie ma pliku main.h ??? .... no ale dlaczego miałoby go nie być - zawsze można stworzyć ;)

tylko że ja stworzyłbym i tworzę najczęściej wtedy taki plik

common.h

gdzie umieszczam jakieś wspólne deklaracje, definicje preprocesora itp .... i wtedy to w nim możesz dodać DEKLARACJĘ tej zmiennej oraz zainkludować w pliku pwm.c plik common.h

proszę bardzo i sprawa rozwiązana na dwa sposoby ....

na pewno nie można wszystkiego na huuurrrra inkludować żeby JAKOŚ TAM BYŁO

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

ooo Malutki_27 dobrze prawi ;)

_________________
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: 30 sie 2012, o 15:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Dziękuję ślicznie :)



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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