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



Teraz jest 22 wrz 2025, o 20:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 15 ] 
Autor Wiadomość
PostNapisane: 19 cze 2022, o 20:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Witam,

Chcę użyć w moim projekcie typu 24-bitowego: __uint24 oraz użyć sufiksu: __flash żeby umieścić tablicę we FLASH-u i wywala mi odpowiednio: "could not be resolved" oraz "syntax error" chociaż kompiluje się wszystko bez błędów i bez warningów.

Czy wie ktoś jak sobie z tym poradzić, żeby nie wyskakiwały wszędzie te pchełki i znaki zapytania?
Będę wdzięczny za podpowiedź.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2022, o 20:49 
Offline
Użytkownik

Dołączył(a): 09 lut 2017
Posty: 75
Lokalizacja: 51°03′22″N 15°45′48″E
Pomógł: 18

Pewnie trzeba to tak zrobić:
Obrazek


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 cze 2022, o 21:05 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 lut 2013
Posty: 158
Lokalizacja: KTT
Pomógł: 1

Pomogło dzięki.
Jeszcze w ramach dociekliwości spytam: czy jest jakieś 'globalne' rozwiązanie? Bo to działa osobno dla każdego projektu.
no i to nieszczęsne __uint24 "could not be resolved"... Próbowałem z inkludami ale kicha.

_________________
Gordon



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2024, o 10:49 
Offline
Użytkownik

Dołączył(a): 12 kwi 2012
Posty: 107
Pomógł: 0

Odświeżam temat: typ: __uint24

Mam kłopot z w/w typem danych. Eclipse 09/2021, AVR-GCC 5.4
Ciągle mam pchełki w eclipse z komunikatem: "Type '__uint24' could not be resolved".
Program się kompiluje. Ale czy wygenerowany kod jest ok? Czy korzysta z 3 bajtów?
Powyższe porady przytoczone wyżej nie pomogły.

Macie koledzy jakieś sugestie jak rozwiązać problem? Podobno od wersji 4.7 GCC obsługuje typy 24-bitowe.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 cze 2024, o 16:05 
Offline
Moderator
Avatar użytkownika

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

andrzej381 napisał(a):
Odświeżam temat: typ: __uint24

Mam kłopot z w/w typem danych. Eclipse 09/2021, AVR-GCC 5.4
Ciągle mam pchełki w eclipse z komunikatem: "Type '__uint24' could not be resolved".
Program się kompiluje. Ale czy wygenerowany kod jest ok? Czy korzysta z 3 bajtów?
Powyższe porady przytoczone wyżej nie pomogły.

Macie koledzy jakieś sugestie jak rozwiązać problem? Podobno od wersji 4.7 GCC obsługuje typy 24-bitowe.


W ogóle co to za jakiś pomysł z kosmosu na jakiś bezsensowny wymyślony z kapelusza typ uint24 ..... kompletny nonsens i bzdura ... Panowie jak będziecie tak wymyślać to wkrótce pojawią się pytania np:

dlaczego mam błędy kompilacji dla typu uint3,5

albo

dlaczego nie chce mi działać typ uint7

albo uint12

no proszę was zlitujcie się .... i zrozumcie jakieś podstawy że tu wszystko jest x2

czyli

uint8_t ---> uint16_t ---> uint32_t ---> uint64_t

i koniec ... dajcie spokój z bzdurami - lepiej zamiast wymyślać z głowy sobie jakieś bzdurne typy napiszcie co chcecie zrobić to prędzej się coś podpowie i 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: 24 cze 2024, o 15:23 
Offline
Użytkownik

Dołączył(a): 12 kwi 2012
Posty: 107
Pomógł: 0

Panie Mirku,
to nie jakiś wymysł tylko spotkałem się z tym typem danych w książce Tomasza Francuza. A ponieważ ten pan nie udziela supportu to szukam informacji na moim ulubionym forum. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 cze 2024, o 22:31 
Offline
Moderator
Avatar użytkownika

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

andrzej381 napisał(a):
A ponieważ ten pan nie udziela supportu

to sam sobie odpowiedz czy jest sens słuchać takich głupich porad o wymyślonych typach NIGDY przez nikogo w praktyce programowania nie używanych -ja też mógłbym zacząć tu wymyślać nowe typy i poprzez budowę struktur itp itd ale po co ?

wystarczą te typy które są do 100% zastosowań - zamiast szukać kocich porad o typach uint24_t

_________________
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: 25 cze 2024, o 12:30 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 34
Pomógł: 3

Co w stosowaniu typu __uint24 jest takiego głupiego, skoro twórcy kompilatora gcc wprowadzili ten typ od wersji 4.7, więc jakiś sens zapewne jest.
Sorry jestem początkujący i chciałbym poznać argumenty za tym, dlaczego go nie stosować.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 cze 2024, o 12:59 
Offline
Moderator
Avatar użytkownika

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

jarekt napisał(a):
Co w stosowaniu typu __uint24 jest takiego głupiego, skoro twórcy kompilatora gcc wprowadzili ten typ od wersji 4.7, więc jakiś sens zapewne jest.
Sorry jestem początkujący i chciałbym poznać argumenty za tym, dlaczego go nie stosować.

Ale uparci jesteście - to kurna pokaż mi źródło o tej swojej rewelacyjnej informacji o gcc od 4.7 i tych twoich typach 24 bitowych? no czekam na źródło ok? Ale nie tam przeklepaną informację przez kogoś w podobny sposób na jakimś forum. Bo ja widzę, że coś wiesz, że dzwonią w kościele ale nie za bardzo wiesz w którym i o co chodzi - szczególnie pisząc taką bzdurę:

jarekt napisał(a):
...skoro twórcy kompilatora gcc wprowadzili ten typ od wersji 4.7


więc proszę cię, nie ważne czy jesteś początkujący czy nie - pochyl się choć troszkę nad tematem, zadaj sobie minimum trudu i znajdź wiarygodne źródło przekazywanej przez siebie informacji - a gwarantuję ci, że już wtedy sam zaczniesz rozumieć o co w tym chodzi i dlaczego to głupi pomysł na takie durne typy ...

Poza tym pytasz co w nich głupiego - ja odpowiem pytaniem i odpowiedz mi na to pytanie. A z czym sobie nie radzisz w C że zaczynasz myśleć o takich kocich typach co?

_________________
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: 25 cze 2024, o 14:38 
Offline
Użytkownik

Dołączył(a): 16 lis 2013
Posty: 34
Pomógł: 3

Proszę bardzo. Sekcja AVR na stronie: https://gcc.gnu.org/gcc-4.7/changes.html
oraz tu: https://gcc.gnu.org/wiki/avr-gcc w sekcji Extensions

Poza tym tyle słów napisałeś, żeby mnie zdyskredytować a merytorycznej odpowiedzi dlaczego tego typu nie stosować, nie otrzymałem.
Trudno, myślałem że czegoś się dowiem.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 cze 2024, o 07:54 
Offline
Moderator
Avatar użytkownika

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

jarekt napisał(a):
Proszę bardzo. Sekcja AVR na stronie: https://gcc.gnu.org/gcc-4.7/changes.html
oraz tu: https://gcc.gnu.org/wiki/avr-gcc w sekcji Extensions

Poza tym tyle słów napisałeś, żeby mnie zdyskredytować a merytorycznej odpowiedzi dlaczego tego typu nie stosować, nie otrzymałem.
Trudno, myślałem że czegoś się dowiem.
Pozdrawiam.


Gdy pisałem że wiesz że dzwonią ale nie wiesz w którym kościele - to właśnie to miałem na myśli - że piszesz "gcc" a teraz podajesz źródła i nie dziwi cię, że dotyczy to tylko AVR ? A nie ogólnie GCC ? już samo to powinno ci coś powiedzieć ...

po drugie zadałem ci pytania - odpowiedziałeś chociaż na jedno ? bo próbowałem naprowadzić - NIE , nie odpowiedziałeś w ogóle a szczególnie w których sytuacjach sobie nie radzisz ze standardowymi typami.

A to do tego sprowadzają się różnice i to dość spore ... tyle tylko że to ty nie masz zamiaru dyskutować tylko tu coś udowodnić na siłę.

Ja jak pisałem wcześniej znam to durne rozszerzenie AVR GCC dające te typy skalarne ale nikomu tego nie polecam bo jest to głupota ich stosowanie.

Zaś to że jak to napisałeś GCC wprowadził to ale tylko w AVR GCC też dużo mówi i nie znaczy że te typy "działają" że tak powiem tak samo jak naturalne typy ... więcej akurat tobie nie będę tłumaczył bo widać od razu że wcale nie chodzi ci o wyjaśnienie czy dyskusję tylko o zadziorną kłótnię - znam takie typy jak ty panie kolego

_________________
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: 28 sie 2025, o 22:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 237
Lokalizacja: Rzeszów
Pomógł: 11

uint24 jest typem jak każdy inny. Używam go np. w zegarach do odliczania sekund na dobę. W dobie jest 86 400 sekund. Za dużo na uint16, a z kolei uint32 jest trochę za duży - najstarszy bajt nigdy nie będzie w nim modyfikowany. uint24 jest w sam raz. Dlaczego nie uint32 - bo kod jest krótszy. Zwłaszcza w przerwaniach jest to istotne.
Aby się w eclipse pozbyć wykrzyknika o błędzie zrób tak samo jak w przypadku __flasch.
Dla zachowania jednolitości oznaczeń typów możesz zrobić coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 sie 2025, o 06:49 
Offline
Moderator
Avatar użytkownika

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

APAP75 napisał(a):
uint24 jest typem jak każdy inny. Używam go np. w zegarach do odliczania sekund na dobę. W dobie jest 86 400 sekund. Za dużo na uint16, a z kolei uint32 jest trochę za duży - najstarszy bajt nigdy nie będzie w nim modyfikowany. uint24 jest w sam raz. Dlaczego nie uint32 - bo kod jest krótszy. Zwłaszcza w przerwaniach jest to istotne.
Aby się w eclipse pozbyć wykrzyknika o błędzie zrób tak samo jak w przypadku __flasch.
Dla zachowania jednolitości oznaczeń typów możesz zrobić coś takiego:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ale kolega popłynął teraz i to nieźle ;) żadna implementacja standardowa nie ma typu uint24_t ani uint24 a gdyby miała na zwykłych prockach czy to AVR czy na maszynach PC to nie wiązałoby się to nawet ani z mniejszym kodem ani z optymalniejszym wykonywaniem tegoż kodu.

Po tym co kolega pisze można poznać że to popłynięcie może być związane z majkerczipem i prockami pix które mają 24-bitowe adresowanie pamięci bo w tamtym ichnim kompilatorze jest rzeczywiście typ 24-bitowy - wtedy może on być natywnym typem ...

No ale nie w kompilatorach GCC dla normalnych procków :)

_________________
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: 29 sie 2025, o 08:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 237
Lokalizacja: Rzeszów
Pomógł: 11

"żadna implementacja standardowa nie ma typu uint24_" - wierzę Ci że tak jest, ale skoro autorzy kompilatora do avr dodali taki typ, to czego z tego nie skorzystać. Dlaczego go dodali - nie wiem.
Tak jak pisałem, wykorzystałem go przy budowie zegara na staruszku atmega8. Sprzęt działa. Kod wynikowy jest krótszy w porównaniu z zasotoswaniem uint32. Po przeyjrzeniu się plikowi lss widzę, że typ24 operuje na 3 bajtach, a typ 32 na czterech.
Reasumiując- jeśli kompilator daje taką możliwośc czemu nie skorzystać. Czy to jest zgodne ze standardami - nie wiem i szczerze mówiąc nie interesuje mnie to.

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 wrz 2025, o 08:27 
Offline
Nowy

Dołączył(a): 12 lis 2024
Posty: 16
Pomógł: 1

Nie będę cofał się aż do standardu ANSI C. Wystarczy jednak wyszukanie samego draftu standardu C 2023, by w punkcie 7.20.1 pkt. 2 (w starszych z doświadczenia podpowiem że powinien być ten sam punkt), odnaleźć informację o sposobie definiowania do implementacji typów o określonej ilości bitów bez paddingu (czyli w uproszczeniu, z mniejszą ilością konsumowanych danych). BTW, jako przykład w standardzie użyty jest uint24_t, z informacją o typedef.
Standard zawiera mechanizm definiowania i rozszerzania typów oraz określa jak to robić. Precyzuje także co jest standardem, a co rozszerzeniem dla danej platformy, jak należy tworzyć/nazywać/implementować typy rozszerzone a gdzie jest dowolność. Jest tu także informacja jaka jest hierarchia typów, także na platformach nietypowych (potocznie "niewyrównanych do 2x8 bitów").
Zachęcam do samodzielnego przeczytania :)



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 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