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



Teraz jest 5 gru 2024, o 04:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 36 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 18 mar 2012, o 19:36 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Napotykam problem przy deklaracji każdej funkcji która zwraca lub pobiera argument uint8_t, pozostale funkcje bez tego typu sa przepuszczane przez kompilator.
Biblioteka hd44780lib jest pisana z mirka ksiazka wiec w 100% jest prawidłowa. W pliku led.h znajduja sie tez deklaracje funkcji które wykorzystuja typ uint8_t i rowniez nie sa przepuszczane przez kompilator
Dziwny problem nie wiem czym moze byc spowodowany, zamieszczam screena i kawalki plikow:Obrazek

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


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


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


bublioteka hd44780lib



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2012, o 20:44 
Offline
Moderator
Avatar użytkownika

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

A z jakiej paczuszki dokonujesz definicji zmiennych:

Kod:
volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, pwm8;
uint8_t i; // zmienna pomocnicza do pentli for


w pliku nagłówkowym *.h ?????

przecież masz przykłady w książce więc masz na czym się oprzeć. To karygodny błąd - i właśnie spotkała cię kara ;) ale może dzięki temu zapamiętasz sobie raz na zawsze żeby tak dziwnych rzeczy nie robić.

Zasada jest prosta:

W pliku nagłówkowym umieszczaj TYLKO --- DEKLARACJE a nie Definicje rozumiesz ? ;) (coś mi się zdaje że nie zrozumiałeś może czym różni się DEFINICJA zmiennej od DEKLARACJI zmiennej - a pisałem w książce wiele razy że niezrozumienie tego się zemści - no i masz ;) zemściło się.

czyli to co pokazałem wyżej przenieś do swojego pliku *.c

a deklaracje tych zmiennych daj w pliku *.h ale tak:

Kod:
extern volatile uint8_t pwm1, pwm2, pwm3, pwm4, pwm5, pwm6, pwm7, pwm8;
extern uint8_t i; // zmienna pomocnicza do pentli for


czy teraz jaśniej ? ;)

a w cudowny sposób twoje problemy opisane w tym wątku odejdą w zaświaty.

_________________
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: 18 mar 2012, o 21:39 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

hmm... Zmiana której dokonałem nie pomogła, ciągle wyskakuje ten sam błąd, co z funkcjami w bibliotece do lcd, też są traktowane jako błędne.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2012, o 21:46 
Offline
Moderator
Avatar użytkownika

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

Bo pewnie masz wiele błędów - ale jak mogę pomóc skoro widzę tylko informację że zmiana nic nie pomogła.

Wypadałoby pokazać kod po zmianie, i pokazać błędy

a kolejny babol jaki mi się rzucił w oczy to

sei();

które wywołujesz wciąż w pętli głównej - a po co ? Oczywiście nie ma to nic wspólnego z tymi błędami - no ale babol

_________________
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: 18 mar 2012, o 21:53 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Zamieszczam projekt w eclipse


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2012, o 22:12 
Offline
Moderator
Avatar użytkownika

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

No i widzisz - wszystko rozwaliło ci się przez brak jednego i to podstawowego #includa w jednym z plików źródłowych *.c

tymczasem gdy tworzysz jakikolwiek nowy własny plik *.c to jak możesz zapomnieć o zainkludowaniu tego co TRZEBA KONIECZNIE ZAWSZE zainkludować czyli:

#include <avr/io.h>

a zabrakło ci tego w pliku którego wcześniej nawet nie pokazałeś - no i potem szukasz błędów wcale nie tam gdzie one leżą.

zajrzyj do swojego pliku

lcd.c

masz tam tego inkluda ?

daj go - a potem zacznij walczyć ze wszystkimi już warnigami jakie ci wyskoczą bo masz jeszcze sporo baboli ;) ale już kończących się warnigiem a nie errorem

ale PAMIĘTAJ!!!! - WARNING to twój wróg i nigdy nie pisz tak żadnego programu żeby pozwolić sobie chociaż na 1 warning. Pamiętaj że ja nigdy sobie nie pozwalam na takie coś ok ?

_________________
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: 18 mar 2012, o 23:06 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

dostaje jeden warning w funkcji main warning: implicit declaration of function `lcd_init()'
Niewiem czy prawidłowo się go pozbyłem i czy ma jakiś sens wprowadzenie takiej deklaracji przed funkcja main extern void lcd_init(void);



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 mar 2012, o 23:37 
Offline
Użytkownik
Avatar użytkownika

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

To zamiast extern, po prostu podłącz plik nagłówkowy hd44780lib.h

edit:
Tak na marginesie moim zdaniem wprowadzasz sobie bałagan lub jak kto woli mniejszy porządek.
Według mnie pozbądź się LCD.c i LCD.h a to co wnich jest przerzuc do bilioteki dla wyswietlacza :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2012, o 00:06 
Offline
Moderator
Avatar użytkownika

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

Dokładnie - o ile te przerzucanie WSZYSTKIEGO do jednego maga_worka czyli folderu o nazwie LIB to tylko twoje ćwiczenia z kombinacjami z plikami *.h i w ogóle z tworzeniem projektu - to ok ćwicz.

Ale pamiętaj nigdy tak nie rób projektów żeby wszystko walić do jednego folderu, jeśli tak? to po co do tego folderu LIB , a wpakuj wszystko do głównego folderu. Aż zaczniesz sam rwać sobie włosy z głowy z bałaganu jaki powstał. Działasz totalnie niezgodnie z tym co pisałem w książce :(

warninga masz jeszcze od właśnie braku dołączenia zmienionego pliku nagłówkowego z biblioteki lcd, czyli hd44780.c ....

to takie moje porady - ale sam się przekonasz że zastosowanie się do nich tylko ci pomoże.

_________________
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: 19 mar 2012, o 15:49 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Mam takie pytanko, tworze deklaracje w pliku naglowkowym led.h
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

a w pliku led.c dolaczam plik naglowkowy led.h
i probuje przypisac pwm1=i;
dostaje błąd:
../lib/led.c:48: undefined reference to `pwm1'
../lib/led.c:49: undefined reference to `pwm2'
dlaczego ??
W Mirka ksiazce byl podobny przyklad (str 131) z tym ze po jego zastosowaniudostaje bledy

Kolejne pytanie:
Po przeniesieniu plikow lcd.c do biblioteki wyswietlacza moge korzystac z funkcji lcd_locate(),czy lcd_cls, ale przy probie użycia funkcji lcd_defchar() kompilator zglasza bledy:
../main.c:16: error: expected declaration specifiers or '...' before numeric constant
../main.c:16: error: expected declaration specifiers or '...' before 'znak_L'
../main.c:16: warning: data definition has no type or storage class
../main.c:16: warning: type defaults to 'int' in declaration of 'lcd_defchar'
../main.c:16: error: conflicting types for 'lcd_defchar'
../lib/hd44780lib.h:168: error: previous declaration of 'lcd_defchar' was here

pewnie znowu cos namieszane w bibliotekach, zamieszczam tez zaktualizowany projekt, jak ktos ma chwilke to prosze o pomoc


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Ostatnio edytowano 19 mar 2012, o 17:25 przez wasu, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2012, o 17:24 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
W Mirka ksiazce byl podobny przyklad (str 131) z tym ze po jego zastosowaniudostaje bledy


Wszystko dobrze ale proszę nie pisz, że po zastosowaniu sposobu z książki dostajesz błędy.

Błędy masz dlatego, że nie zrozumiałeś sposobu opisanego w książce i może warto czasem zastanowić się nad formą zadawanych pytań czy stwierdzeń - dobrze? proszę.

Ale jeszcze raz przypomnę ci ten sposób - bo przecież już wałkujemy go w tym wątku.

zrozum - ty MYLISZ totalnie pojęcia takie jak DEKLARACJA i DEFINICJA zmiennych. Proszę cię doczytaj z czym to się wiąże. Ja tylko powiem w uproszczeniu, że jeśli tak jak mówisz:

wasu napisał(a):
Mam takie pytanko, tworze deklaracje w pliku naglowkowym led.h


to to jest tylko DEKLARACJA nie wiążąca się z rezerwacją pamięci dla zmiennej - dlatego MUSISZ PAN w odpowiednim pliku *.C dodać jeszcze samą DEFINICJĘ tej zmiennej !!!!

plik *.h

extern volatile uint8_t pwm1,pwm2; // to jest panie DEKLARACJA bo słówko extern widzisz


natomiast w bliźniaczym pliku *.c

volatile uint8_t pwm1,pwm2; // to jest kolego DEFINICJA - i bez tego nie będzie rezerwacji pamięci i nie powstanie zmienna rozumiesz?


Tyle że na przyszłość Z A P A M I Ę T A J sobie, że zaczyna się od stworzenia DEFINICJI zmiennych czy funkcji w pliku *.c a dopiero później przerzuca się do pliku nagłówkowego ich same DEKLARACJE.

czy teraz będzie jaśniej ?

_________________
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: 19 mar 2012, o 17:32 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Dzieki Mirku za odpowiedź, to prawda od wczoraj głowie się nad różnicą między definicją a deklaracją, myslałem że skoro deklaruje zmienna w pliku naglowkowym
to w pliku c posuniecie pwm=i bedzie automatycznie definicją (właściwieczy konieczna jest deklaracja w pliku naglowkowym? Nie wystaczy sama definicja volatile uint8_t pwm1,pwm2;?)

Czy mógłbyś mnie nakierować jaki błąd zrobiłem że nie moge korzystać z funkcji lcf_defchar()?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2012, o 17:48 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
Dzieki Mirku za odpowiedź, to prawda od wczoraj głowie się nad różnicą między definicją a deklaracją, myslałem że skoro deklaruje zmienna w pliku naglowkowym
to w pliku c posuniecie pwm=i bedzie automatycznie definicją (właściwieczy konieczna jest deklaracja w pliku naglowkowym? Nie wystaczy sama definicja volatile uint8_t pwm1,pwm2;?)


Ok - postaram się jeszcze raz opanować i grzecznie odpowiedzieć z dużą dozą cierpliwości ;) .... Jeszcze raz odsyłam cię do książki. No powiedz sam - czy teraz na forum mam pisać drugą książkę w postach dla ciebie. Gdybyś chociaż odwołał się do książki że coś nie tak napisałem o tych deklaracjach i definicjach. A ty chcesz żeby ci wszystko od nowa apiać tłumaczyć - co i tak robię - a ty dalej.......

ostatni raz:

SAMA Definicja (jak piszesz) wystarczy ci jeśli tą zmienną będziesz chciał posługiwać się TYLKO w tym konkretnym PLIKU *.C ------ rozumiesz ??????? A po co tworzymy dodatkowo jej DEKLARCAJĘ ze słówkiem extern w pliku *.H ???????? No po to że np chcesz później z tej zmiennej korzystać w innym pliku *.c np w main.c bo tam zainkludujesz ten plik nagłówkowy. A jeśli nie chcesz w innym pliku z niej korzystać to nie musisz tworzyć jej DEKLARCAJI. ----- ale na ZEUSA - to jest bardzo wyraźnie napisane w książce - powiedz mi - czy gdy piszę ci żebyś zajrzał do książki - to robisz to ? czy masz gdzieś moje propozycje ? przecież książka powinna być pod ręką przy okazji takich ćwiczeń



wasu napisał(a):
Czy mógłbyś mnie nakierować jaki błąd zrobiłem że nie moge korzystać z funkcji lcf_defchar()?


Ponieważ masz na razie tak ogromne luki w wiedzy - co świadczy że na prawdę - po tym pytaniu że np wcale nie raczyłeś dokładnie przeczytać rozdziału o LCD - tylko ot tak sobie wziąłeś bibliotekę i próbujesz jak saper korzystać przecinając kolorowe kabelki i może nie wybuchnie ...

PRZECIEŻ NIE PISAŁEM TYCH ROZDZIAŁÓW, ŻEBY SOBIE WYBIERAĆ COŚ DO POCZYTANIA - TOŻ NA PODSTAWIE KAŻDEGO - DOKŁADNIE KAŻDEGO ĆWICZENIA W TYM TAKŻE GDY OMAWIAM BUDOWANIE BIBLIOTEKI LCD - UCZĘ PEWNYCH TECHNIK PROGRAMOWANIA W ŚRODKU !!!!!! A jak ktoś to sobie ......hmm..hmmm..hmmm ..... i nie czyta bo po co tam uczyć się jakiejś budowy biblioteki skoro leży gotowa do użycia na DVD - to później miej pretensje do samego siebie - przepraszam ale musiałem to napisać

Kiedyś do mnie napisał czytelnik, który zaczął opuścił rozdział o multipleksowaniu LED bo stwierdził, że on nigdy z takich kocich wyświetlaczy nie będzie korzystał tylko co najwyżej z graficznych więc po co mu czytać o bibliotece do tego...... A potem miał pretensje że przy jakimś dalszym ćwiczeniu nic nie opisywałem o timerze sprzętowym!!!! Napisałem mu żeby przeczytał książkę po kolei w tym o multipleksowaniu LED a potem zadał mi to samo pytanie i ewentualnie krzyczał na mnie że czegoś nie opisałem.................... to po miesiącu dostałem kolejnego maila w którym podziękował mi że już wszystko jasne gdy tym razem zaczął czytać i ćwiczyć wszystko po kolei a nie na wyrywki.

Widzisz kolego ..... ja szybko poznam po pytaniach jakie kto zadaje co przeczytał a czego nie z książki - więc uwierz mi, że widzę że pominąłeś sporo

a w rozdziale o LCD masz wyraźnie napisane jak się konfiguruje w pliku *.H w tej bibliotece - jak korzystać z różnych funkcji które można kompilować warunkowo - kurdę NO! .... przecież pokazuję tam na przykład jak można warunkowo kompilować - ty nawet o tym sekundę nie poczytałeś - i dlatego teraz masz problem - a wystarczyłoby tylko w jednym miejscu pliku *.h tej biblioteki zmienić JEDNO ZERO na JEDYNKĘ żeby odblokować kompilację z udziałem deflcdchar - ale sorki - tu już nie pomogę - poczytaj i wybacz mi ten ton.....

Jak wybaczysz i zrozumiesz moje poirytowanie to fajnie jeśli nie - no to trudno i przykro mi (w każdym razie na pewno nie było moim celem obrażać cię - za to ty traktujesz mnie troszkę niepoważnie i to jeszcze pisząc, że robiąc coś tam sposobem mirka z książki źle się kompiluje.

_________________
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: 19 mar 2012, o 18:05 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Mirku, czytam Twoja ksiazke dokladnie i analizuje poszczegolne cwiczenia, jednak napotkałem problemy w tworzeniu własnego 'projektu' i nie znalazłem jasnej analogii opisanej w ksiazce.
Ksiazke przerabiam pokolei od deski do deski i nie próbuje chodzić na skróty.
Wiem też o warunkowej kompilacji i zmieniłem w pliku nagłówkowym bibioteki LCD :
#define USE_LCD_DEFCHAR 1

Jednak jeśli umieszcze wywolanie funkcji
lcd_defchar(0x81, znak_); w pliku lcd.c poza jakakolwiek funkcja otrzymuje error:
/lib/led.c:39: warning: unused variable 'znak_'
../lib/led.c: At top level:
../lib/led.c:42: error: expected declaration specifiers or '...' before numeric constant
../lib/led.c:42: error: expected declaration specifiers or '...' before 'znak_'
../lib/led.c:42: warning: data definition has no type or storage class
../lib/led.c:42: warning: type defaults to 'int' in declaration of 'lcd_defchar'

natomiast jeśli wrzucę wywołanie tej funkcji do innej funcji kompilator to przepuszcza i zwraca warning:
/lib/led.c:40: warning: implicit declaration of function 'lcd_defchar'

Zastanawiam się dlaczego tak jest skoro kompilacja funkcji w piliku biblioteki lcd jest wlaczona,
z funkcji innych np lcd_cls() moge korzystac bez przeszkod natomiast z lcd_defchar nie

Jest to dla dość kłopotliwe i szukam informacji naten temat w różnych źródłach ale nie udało mi się jeszcze do tego dojść



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2012, o 18:31 
Offline
Moderator
Avatar użytkownika

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

To posługuj się częściej drobnymi przykładami kodu - miejsc gdzie masz te problemy, bo co to znaczy wyrwane z kontekstu:

Kod:
lcd_defchar(0x81, znak_);


a co to jest znak_ u ciebie ? No toż wypada chyba napisać nieco więcej zadając takie pytanie

Ale jeszcze raz powiem. Weź odpuść sobie na tym etapie przerzucanie zawartości tej mojej biblioteki LCD dzn tych plików do jakiegoś swojego dziwnego folderu lib ....... możesz zrobić to o co proszę ????

1. wgraj do swojego folderu głównego projektu na żywca cały folder LCD z którejś z lekcji gdzie on występuje
2. dodaj w pliku main.c plik nagłówkowy

Kod:
#include "LCD/lcd44780.h"


3. identycznie dodaj ten plik nagłówkowy do swojego pliku lcd.c, tyle że skoro masz ten swój plik w folderze lib to chyba oczywiste że przy inkludowaniu należy go uwzględnić np tak:

Kod:
#include "../LCD/lcd44780.h"


i proszę cię wtedy zadawaj mi pytania - bo teraz to narobiłeś gigantyczny bałagan w swoim kodzie o czym już wspominałem wyżej i wcale nie próbujesz go wyprostować

po tych zmianach spróbuj używać def_lcdchar() i innych funkcji - tak się składa, że to wtedy będzie działać bo musi działać a ty będziesz miał czas na przeanalizowanie czy dopytanie z czego to wynika OK?


Poza tym bardzo się dziwię jak możesz pisać, że nie możesz korzystać z def_lcdchar() - skoro masz na DVD lekcję gdzie to jest wykorzystane i działa - a ty tu piszesz że nie działa. Sorki ale jestem w szoku. Noż to chyba można się wrócić do lekcji i prześledzić co źle zrobiłem że tam to działa a u mnie nie. Ja na twoim miejscu bym takim tropem szedł. A nie jak mówiłem dokonać za jednym razem rewolucji w tysiącu plikach i potem zdziwienie że nic nie działa.

Dlaczego nie uruchamiasz swoich projektów krok po kroczku tylko od razu takie rewolucje????

_________________
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: 19 mar 2012, o 21:48 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Mirku, bardzo szanuje Twoje uwagi. A dlaczego robie taki bałagan, tworze jakies osobne foldery itp? Powiedzmy ze staram się nabrać jakiegoś chematu w pisaniu kodów czuć się swobodnie w dzieleniu kodu na pod pliki,a to czesto skutkuje błędamii.
W odpowiedzi na Twoje pytanie odnosnie funkcji led_defchar(), faktycznie projekt z plyty dziala w 100% prawidlowo, ale po moich zmianach cos sie syplo, dlaczego? Dopiero teraz mam chwile i bede zaraz walczyl, uwzglednie Twoje porady i w razie czego będę dalej pytał. Dzieki za zainteresowanie tematem. Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 mar 2012, o 23:01 
Offline
Moderator
Avatar użytkownika

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

No ok - w razie czego nie gniewaj się na mnie proszę za to że nieraz się unoszę. Przepraszam. Ale jeśli w końcu mogę coś sprowadzić do wspólnego mianownika - czyli np to co piszesz, że w końcu jest jakiś punkt zaczepienia - bo def_lcdchar() jednak działa we wzorcowym przykładzie - to już jest lepiej....

I jak pisałem wcześniej rozumiem i doceniam te podejmowane przez ciebie próby - powiem więcej, rozumiem, że można się w tym wszystkim jeszcze gubić - ale tak już całkiem na spokojnie - to właśnie wszystko się sprowadza, żeby może robić te własne testy nieco mniejszymi kroczkami. Bo zobacz, nagle za jednym zamachem w jednym nowym powołanym do życia projekcie:

- tworzysz nowy folder
- tworzysz własne nowe pliki *.c i *.h

Dobrze - ale przećwicz najpierw to od początku do końca - a jak wyjdzie to wtedy próbuj wpleść na przykład podmianki tych plików z bibliotekami do LCD, czyli zmiany ich nazw, wrzucenie do innego folderu itd itp

bo zauważ, że nagle za jednym razem przy takiej skomplikowanej operacji na początek, otrzymujesz nie jedną albo dwie niewiadome - otrzymujesz ich pełno :( ...... i nie dziwota że się gubisz w tym wszystkim a na dodatek wyciągasz nieprawidłowe wnioski

Zatem z mojego punktu widzenia i jeśli mogę coś podpowiedzieć - to jak pisałem wyżej zacznij mniejszymi kroczkami - będą się pojawiały pojedyncze warningi i nie zrozumiesz to od razu dopytuj - obiecuję że chętnie pomogę i postaram się wszystko dodatkowo wyjaśnić. Taką drogą dojdziemy do większych zmian OK ?

_________________
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: 20 mar 2012, o 00:23 
Offline
Użytkownik
Avatar użytkownika

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

mirekk36 napisał(a):
próbujesz jak saper korzystać przecinając kolorowe kabelki i może nie wybuchnie ...



:lol: :lol: :lol: Przepraszam nie mogłem się powstrzymać, toż wypisz wymaluj jak moje poczynania ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 00:35 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Zastosowałem się do Twoich porad, rzeczywiście teraz jest znacznie przejrzyściej po wyodrębnieniu każdego modułu do osobnego folderu. Skorzystałem z biblioteki LCD z DVD i rozbudowałem ją o kilka potrzebnych mi funkcji.
Napotykam się wciąż na jeden problem, czyli wywoływanie funkcji led_defchar(). Moze coś poprostu źle rozumiem i chce wywołać ją w nieodpowiednim miejscu (plik lcd44780.c)
Zamieszczam projekt żeby łatwo i szybko można było zweryfikować błąd.

Zastanawiam się również gdy chce w moim projekcie zdefiniować 1 znak, gdzie to najkorzystniej zrobić, czy w pliku main.c w funkcji main() badz przednia? Czy moze w bibliotece LCD


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 00:57 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
Napotykam się wciąż na jeden problem, czyli wywoływanie funkcji led_defchar(). Moze coś poprostu źle rozumiem i chce wywołać ją w nieodpowiednim miejscu (plik lcd44780.c)


No ale sam zobacz, przecież już pisałem ci o tym..... Jak chcesz korzystać z lcd_defchar() w swoim pliku o nazwie lcd.c jeśli nie masz w nim zainkludowanej biblioteki LCD ? no jak ? przecież trzeba ją tak samo zainkludować w każdym pliku *.c w którym chcesz użyć jakiejkolwiek funkcji bibliotecznej z biblioteki. No może z uwagi na to że twój plik led.c jest we własnym folderze to zainkludowanie musi tak wyglądać:

Kod:
#include "../LCD/lcd44780.h"


- spójrz do góry na moje posty - bardzo wyraźnie już to podawałem.


wasu napisał(a):
Zastanawiam się również gdy chce w moim projekcie zdefiniować 1 znak, gdzie to najkorzystniej zrobić, czy w pliku main.c w funkcji main() badz przednia? Czy moze w bibliotece LCD


A co to za różnica gdzie? to zależy zupełnie od ciebie, definiujesz tam gdzie ci wygodniej i już

_________________
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: 20 mar 2012, o 00:58 
Offline
Moderator
Avatar użytkownika

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

Malutki_27 napisał(a):
.... toż wypisz wymaluj jak moje poczynania ;)


;) najważniejsze, że od tego palców nie pourywa jak coś pójdzie nie tak ;)

_________________
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: 20 mar 2012, o 01:03 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

hmm nie wiem czy pobrale moj projekt ale w moim projekcie nie ma juz pliku lcd.c



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 09:12 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
hmm nie wiem czy pobrale moj projekt ale w moim projekcie nie ma juz pliku lcd.c


No literówka mi wyszła ale tylko na początku postu bo dalej podałem już nazwę led.c - ale czy nie mogłeś zajrzeć do innych swoich plików w tym projekcie po tych moich wytłumaczeniach. Zajrzałem przecież do tego projektu a chodziło mi o led.c bo przecież taki masz - oj oj nie czytasz dokładnie moich postów - takie mam wrażenie

pisałem przecież:


mirekk36 napisał(a):
przecież trzeba ją tak samo zainkludować w każdym pliku *.c w którym chcesz użyć jakiejkolwiek funkcji bibliotecznej z biblioteki. No może z uwagi na to że twój plik led.c jest we własnym folderze to zainkludowanie musi tak wyglądać:

Kod:
#include "../LCD/lcd44780.h"


- spójrz do góry na moje posty - bardzo wyraźnie już to podawałem.


_________________
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: 20 mar 2012, o 16:56 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Doskonale to rozumiem że żebym mógł używać tej funkcji musze najpierw dołączyć plik naglówkowy w którym jest zdeklarowana, tyle że to nie rozwiązuje mojego problemu.
Skoro przeglądałeś mój projekt to wiesz że w pliku /LCD/lcd44780.c znajduje sie cala biblioteka do wyswietlacza plus moje funkcji do wyświetlania. W takim razie skoro potrzebuje zdefiniować na własne potrzeby swój znak to najrozsądniej byłoby go zdefiniować także we wspomnianym pliku i tak też próbuje:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

komunikat:

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


Pomyślałem że może nie mogę używać tej funkcji w pliku gdzie ją definiuje(ale przecież tak nie jest, prawda?) i spróbowałem jej użyć w pliku key.c :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

i otrzymałem ten sam błąd.
Głowie się nad tym od wczoraj i nie mam pojęcia z czym to jest związane



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 17:16 
Offline
Moderator
Avatar użytkownika

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

Posłuchaj - no kręcisz już tak na maxa - że zaczynam się aż uśmiechać pod nosem ;) bo może jakiś kawał robisz hmmm? To jakaś ukryta kamera ?

No toż przecież JESZCZE RAZ CI WYRAŹNIE POWTÓRZĘ, że pobrałem ten twój ostatni projekt i do skompilowania bez warninga przy def_lcdchar() w pliku led.c - bo tam masz użyte wywołanie tej funkcji wystarczyło dodać plik nagłówkowy z biblioteki LCD !!!!!!!!!!!!!!!!!!!!!!!!

i nie mów mi że tak nie jest albo że jestem wielbłądem. Po tej operacji projekt się skompilował już do końca.....

a ty teraz znowu piszesz że masz ten sam błąd - no nie - poddaję się - przecież masz inny błąd teraz - kolego - no przykro mi - można nie znać angielskiego ale same wyrazy pomiędzy jednym a drugim błędem chociaż tak wzrokowo czy fonetycznie to można odróżnić a ty co ?

dla ciebie to jest ten sam błąd co wcześniej?????????????????????????

Cytuj:
lib/gcc/../../avr/include/util/delay.h:90:3: warning: #warning "Compiler optimizations disabled; functions from <util/delay.h> won't work as designed"


No nie - to musisz zacząć więcej uwagi poświęcać na czytanie tych błędów

A tak przy okazji ten nowy błąd wyraźnie mówi że masz problem z ustawionym stopniem optymalizacji w projekcie - prawdopodobnie masz w ogóle wyłączoną optymalizację czyli -O0 i się dziwisz.......

Ustaw że domyślnie na -Os

jeszcze raz powtarzam ja go skompilowałem więc nie wiem co ty tam wyprawiasz?

_________________
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: 20 mar 2012, o 17:23 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

Mówisz że do pliku led.c wystarczyło dołączyć bibioteke z LCD i działało, a ja przed chwilą wrzuciłem Ci przecież kawalek kodu key.c z dołączoną biblioteka LCD i mimo to nie działa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 17:29 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
Mówisz że do pliku led.c wystarczyło dołączyć bibioteke z LCD i działało, a ja przed chwilą wrzuciłem Ci przecież kawalek kodu key.c z dołączoną biblioteka LCD i mimo to nie działa


Ok a rozumiem, że mi nie wierzysz tak ? No bo przecież tamtego nawet nie sprawdziłeś tylko wymyśliłeś od razu inny plik i narobiłeś nowych błędów - szok - jak tam można? Uwierz mi że tak nie da się pomóc mimo najszczerszych chęci. Ty się zapierasz rękami i nogami żeby ci pomóc. Proszę bardzo specjalnie dla ciebie zrobiłem zrzut ekranu z kompilacji twojego projektu po dodanu tego inkluda w led.c ............

zobacz sobie:

Obrazek

i co ???? widzisz tam gdzieś jakieś znaczki zapytania, żółte podkreślenia od warnigów itp ???????

Zrozum panie kolego - rób mniejszymi krokami albo zacznij od projektów do migania jedną diodą - bo nie można nawet powiedzieć że tu ci coś nie wychodzi - ty wciąż robisz inaczej niż ci się podpowiada i za chwilę masz nowy problem

sorrry ale ja wymiękam już

dlatego przynajmniej na razie i dla twojego dobrze pojętego dobra nie podpowiem ci gdzie teraz zrobiłeś BYKA w tym swoim pliku key.c - no masakra - takie rzeczy to już samemu trzeba zauważać - ale jak się komuś podpowiada na zasadzie naprawy projektu a ta osoba nie stara się zrozumieć o co chodzi to potem właśnie tak jest

_________________
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: 20 mar 2012, o 17:34 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

uhh Mirku zupelnie sie nie zrozumielismy. Spróbuj wyciagnac ta funkcjie z funkcji led_on i wywolac ja zaraz pod deklaracja pwm



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 mar 2012, o 17:43 
Offline
Moderator
Avatar użytkownika

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

wasu napisał(a):
uhh Mirku zupelnie sie nie zrozumielismy. Spróbuj wyciagnac ta funkcjie z funkcji led_on i wywolac ja zaraz pod deklaracja pwm


Zamiast prosić mnie o wyciągnięcie (a ja nie wiem co to za bardzo znaczy) posłuż się kodem źródłowym, sam wyciągnij i pokaż o co ci chodzi ..... co masz na myśli.

_________________
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: 20 mar 2012, o 17:46 
Offline
Użytkownik

Dołączył(a): 07 mar 2012
Posty: 54
Pomógł: 0

chodzi mi oto że wywołujesz funkcję defchar w funkcji led_on a mi tez to dziala bez problemu. Pytam o to gdy wywołuje ją poza ciałem funkcji, a zaraz za definicja pwm, wowczas dostaje wspomniane bledy i nie jest to wina niedolaczonej biblioteki



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: 36 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO