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



Teraz jest 10 lip 2026, o 04:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 22 lut 2014, o 16:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Próbuje uruchomić Bibliotekę wyświetlacza graficznego ale wyskakują mi dwa błędy w pliku
Jeden rozumiem jak naprawić drugiego niestety nie.

Tutaj zwraca mi błąd:
Kod:
../font_6x8.h:30:42: error: variable 'font_6x8' must be const in order to be put into read-only section by means of '__attribute__((progmem))'

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

Więc zamieniłem static na const i to pomogło.


Drugiego błędu nierozumiem
Zwraca mi
Kod:
../font_6x8.h:259:17: warning: 'ptr_font_6x8' defined but not used [-Wunused-variable]

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

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 16:35 
Offline
Użytkownik

Dołączył(a): 05 gru 2012
Posty: 67
Lokalizacja: Warszawa
Pomógł: 4

Jeżeli się nie mylę to "ptr_font_6x8" jest zdefiniowana ale nigdzie w programie nie użyta.

pozdrawiam
Wojtek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 16:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Też tak pomyślałem ale jednak chyba jest bo usunięcie jej wywala błąd w pliku main.c



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

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 16:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Daj przed nia atrybut extern

Jak jest uzyta w main.c to warning zginie.


Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 17:00 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Może być tak, że w programie istnieją warunki, które skutecznie omijają miejsce użycia tej zmiennej. Wtedy kompilator zwróci warninga. Jak usuniesz deklarację będzie błąd bo zostanie użyta zmienna nie zadeklarowana. Trzeba by zobaczyć całość kodu.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 17:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

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


Załączniki:

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

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 17:24 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Zawsze wydawało mi się, że extern i static wzajemnie się wykluczają.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2014, o 19:37 
Offline
Moderator
Avatar użytkownika

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

perlon napisał(a):
Zawsze wydawało mi się, że extern i static wzajemnie się wykluczają.


Nie miało ci się co wydawać ;) bo masz rację że się wykluczają

_________________
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: 23 lut 2014, o 10:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Pomożecie? ;) :D

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 11:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

tomson5 napisał(a):
static uint8_t *ptr_font_6x8 PROGMEM = font_6x8;


A próbowałeś dać tu const ?

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 11:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Tak próbowałem ale nic to nie zmieniło

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 13:53 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

no to spróbuj zakomentować i deklarację i definicję.
oraz wszystkie użycia, chociaż jak wynika z ostrzeżenia: nigdzie nie używasz ;-)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 14:27 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

No dobra. Moja propozycja jest taka. Nie wiem czy działa ale nie ma żadnych warningów.


Autor postu otrzymał pochwałę

Załączniki:

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

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 20:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

WOW @perlon Super działa :)
Widzę spore zmiany w kodzie. Możesz to skomentować co tam było zrypane ?

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2014, o 21:05 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Pierwsze primo.
Przeniosłem definicję stałych tablicowych fontów oraz staych wskaźnikowych na te tablice do pliku fonts.c Oczywiście tablice i wskaźniki jako const. Dodatkowo, żeby tablice nie były trzymane w ramie tablice są PROGMEM. Wskaźniki jako stałe w ram w celu uproszczenia dostępu do nich z programu. W plikach nagłówkowych pozostały tylko deklaracje stałych wskaźnikowych na te tablice we flashu z atrybutem extern żeby były widoczne w całym programie.
Te deklaracje są włączane poprzez #include do innych modułów ( main.c i lcd.c ) nie można łączyć atrybutu extern i static one się wykluczają. Zewnętrzne moduły powinny widzieć wyłącznie wskaźnik na tablicę we flashu. Więc extern tylko dla zmiennej wskaźnikowej. Same tablice nie muszą być extern bo nie odwołujesz się do tablic tylko do wskaźnika na tablicę.
Drugie primo
Zmieniłem deklaracje argumentów wywołania funkcji lcd_string i lcd_char doprowadzając do zgodności typów - wystarczyło w argumentach wskaźnikach o których mowa wyżej dopisać atrybut const (zarówno w definicji jak i w deklaracji funkcji).
Trzecie primo
Jak przypisujesz jakiejś zmiennej wartość a potem w kolejnej linijce kodu ponownie tej zmiennej przypisujesz inną wartość to pierwsze przypisanie będzie opatrzone warningiem bo nigdzie w kodzie nie jest wykorzystywane. W module SPI wpisałem w drugim przypisaniu zmiennej IOReg zamiast "=" operator "|=" co zlikwidowało warninga, ale nie analizowałem sensu zmiennych SPSR i SPDR.

Po tych zabiegach masz fonty we flashu i wskaźniki na te fonty jako stałe w ramie.
To tyle. Co było zrypane? Trzeba sobie rozpisać (w głowie :-) ) co ma być w jakiej pamięci i w jaki sposób się do tego odwoływać a następnie doprowadzić do zgodności typów. Strzelanie na oślep const/extern/static/PROGMEM etc. wprowadza jedynie zamęt a kontrola typów w C to jednak fajna sprawa. Czasami upierdliwa i coś trzeba oszukiwać przez np. rzutowanie typów, ale to temat na inną dyskusję i był poruszany na forum i w poradnikach.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2014, o 17:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Dziękuje bardzo za obszerny opis. Muszę go powoli przetrawić przez porównanie.

Obrazek

Tak jak widać na załączonym obrazku muszę chyba uzupełnić tablicę o brakujące polskie ogonki.
Czy dobrze rozumiem że muszę w tablicy odnaleźć ten "krzaczek" i zastąpić go polskim Ę ??

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2014, o 17:42 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Ale sympatyczny obrazek. Cieszę się, że mogłem pomóc. Co do znaku to faktycznie 202 dziesiętnie to "Ę" ale tylko w kodowaniu CP1250 i ISO-8859-2. Jak posiadasz definicje fontów z innego systemu kodowania to tam "Ę" nie będzie. Może warto sobie przygotować cały komplet PL wg jakiegoś standardu, albo poszperać w sieci za gotowcem. Może jeszcze sprawdź co masz pod 168 dziesiętnie. Tam jest "Ę" wg CP852 ( DOS Latin-2 )

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 lut 2014, o 18:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Właśnie siedzę i szukam programu FontEditor V1.0 który zaleca producent.

Edit: Dostałem odpowiedź że ten program jest odpłatny.
Zastanawiam się jak się dobrać do tej tabeli ze znakami.
Czy każdy znak jest w osobnej lini?

Edit2 Sam sobie odpowiem :-)
Znalazłem w tabeli 6x8 znaki 0 1 2
Jedynka to 0,66,127,64,0
Dwójka to 66,97,81,73,70

Rozpisywanie bitów na kartce papieru to masakra piłą mechaniczną. Zna ktoś lepszy sposób?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lut 2014, o 21:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Do emerytury będę poprawiał tą tablicę :)
Na razie poprawiłem to nieszczĘsne ę dzięki tablicy kodów CP852, kalkulatora, ołówka i kartki :) Zastanawiam się czy jest inna metoda może jakiś program.
Muszę jeszcze dokończyć pozostałe ogonki i została druga tablica z większymi fontami 8x16. Tam to będzie zabawa "będzie się działo...) :D


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


Edit:
EUREKA! Teraz mnie trafiło gdy dodałem listing tablicy i powstała numeracja wierszy.
Dokładnie pod numerem 171 jest moje ę i tak samo w tablicy znaków CP852 była ta semigrafka którą zastąpiłem
Teraz szybko dotrę do innych ogonków :)

_________________
"Nie programuj w święta - bug się rodzi"



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO