ATNEL tech-forum https://forum.atnel.pl/ |
|
Blad unknown type name 'uint16_t' https://forum.atnel.pl/topic23872.html |
Strona 1 z 1 |
Autor: | krawi92 [ 4 sie 2021, o 17:19 ] |
Tytuł: | Blad unknown type name 'uint16_t' |
Hej. Tworze sobie dzis prosta inicjalizacje USART z funkcja wysylania znaku. W pierwszej wersji wszystkie deklaracje i definicje mialem w pliku glownym main.c. Wszystko dzialalo OK. Postanowilem, dla wprawy i nauki zrobic oddzielna biblioteke i stworzylem obok nowy folder a w nim 2 pliki, uart.c i uart.h. W pliku .c wiadomo wrzucilem definicje dwoch funkcji i zainkludowalem avr/io.h Do pliku .h wrzucilem naglowki funkcji. Ale po skompilowaniu dostalem taki oto blad. Cytuj: 18:08:16 **** Incremental Build of configuration Release for project test **** make all 'Building file: ../UART/uart.c' 'Invoking: AVR Compiler' avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega328p -DF_CPU=8000000UL -MMD -MP -MF"UART/uart.d" -MT"UART/uart.o" -c -o "UART/uart.o" "../UART/uart.c" In file included from ../UART/uart.c:8:0: ../UART/uart.h:20:20: error: unknown type name 'uint16_t' void USART_Init ( uint16_t ubrr); /// inicjalizacja UART ^ make: *** [UART/uart.o] Błąd 1 "make all" terminated with exit code 2. Build might be incomplete. 18:08:17 Build Failed. 1 errors, 0 warnings. (took 1s.228ms) Gdy typ zmienilem tak jak orginalnie w nocie na unsigned int to wszystko kompilowalo sie OK. Dopiero problem sie rozwiazal, jak do pliku uart.h zainkludowalem avr/io.h,wtedy wszystko sie ladnie kompilowalo. Pytam, poniewaz dzialam na podstawie video poradnika Mirka i on tam do pliku naglowkowego zadnej biblioteki nie dolaczal,tylko do pliku ".c" i tam sie kompilowalo. Nie wiem gdzie ja popelniam blad. Niby problem rozwiazany, ale nie do konca jestem pewien czy wszystko robie dobrze. Edit: Nie zauważylem jednego szczegółu, kolejność dodawania bibliotek jednak ma znaczenie. W pliku uart.c mialem to tak: #include "uart.h" #include "avr/io.h" Wystarczyło zmienić kolejność |
Autor: | mirekk36 [ 4 sie 2021, o 19:23 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
krawi92 napisał(a): Edit: Nie zauważylem jednego szczegółu, kolejność dodawania bibliotek jednak ma znaczenie. W pliku uart.c mialem to tak: #include "uart.h" #include "avr/io.h" Wystarczyło zmienić kolejność Widzisz ale nawet tu w tej wypowiedzi mieszasz - bo piszesz "avr/io.h" podczas gdy MUSI być <avr/io.h> Poza tym wszędzie w całej książce i poradnikach pokazuję i omawiam szczegółowo żeby NAJPIERW inkludować pliki SYSTEMOWE czyli te w nawiasach właśnie ostrych <> a dopiero później własne pliki w cudzysłowach ... przyjrzyj się WSZYSTKIM moim przykładom kodów w dowolnej książce , poradniku wideo - gdziekolwiek i pokaż mi żebym gdzieś zrobił to odwrotnie ... |
Autor: | mirekk36 [ 4 sie 2021, o 23:18 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
krawi92 napisał(a): Ale np; na tym obrazku z pliku zrodlowym biblioteki avr/io.h jest w "" Ale NUMER ! no to zobacz - w pierdyliardzie moich mteriałów jest to w <> a tu akurat - no rzeczywiście jakiś koci błąd literówka ! ... i ty akurat na tym przykładzie jedynym się wzorujesz ? ALe masz rację wyłapałeś - no literówkę bo avr/io.h MUSI być w nawiasach <> |
Autor: | krawi92 [ 5 sie 2021, o 11:23 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
No akurat korzystalem z tego poradnika, wiec tak tez napisalem, nie zastanawiajac sie wtedy(no moze troche) dlaczego tak a nie inaczej, jednak teraz juz wiem o co chodzi, dzieki Najwazniejsze ze pierwsza biblioteka do wysylania danych gotowa I mam osobne pytanie do wartosci UBRR... Mamy na to wzor, w nocie i Pan podal lepszy. Tylko, ze w nocie mamy rowniez podane te wartosci dla poszczegolnych predkosci. Wiec czemu nie wpisywac bezposrednio wartosci UBRR z noty, a nizeli sie martwic, czy wzor bedzie poprawny i dokladny. Ja wiem, ze mozna mowic, ze trzeba zagladac do noty, zmieniac to itp.. Jednak, gdy bedziemy chcieli zmienic wartosc baud rate tak czy siak musze zagladac do noty. Mowie tu akurat z perspektywy osoby poczatkujacej. Co wiecej, wpisujac bezposrednio wartosc UBRR z noty do Uart_init pozbywamy sie 2 linijek kodu To takie moje przemyslenie i chcialbym, zeby ktos sie do tego odniosl, byc moze sa inne powody, dla ktorych warto uzywac wzoru. |
Autor: | mirekk36 [ 5 sie 2021, o 11:43 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
No to odpowiadam, jeśli chodzi o ręczne wpisywanie wartości z noty - to pewnie, że można - ale jest to zadanie dla MASOCHISTÓW przez duże M ... dla mnie ręczne wpisywanie wartości to .... tfuuu na psa urok ! dlaczego ? Ręczne wpisywanie w kodzie jest wręcz ABSURDALNIE ABSTRAKCYJNE i w dłuższym okresie programowania, nawet jak jeszcze będziesz początkującym (a ja - pamiętaj! też jestem początkujący - tyle że może dopiero kilka kroków przed tobą, więc wiem co mówię ) ... a zatem będzie to ci sprawiało TYLE kłopotów i będzie TYLE bezesnsownych błędów i będziesz rwał sobie włosy z głowy do ostatniej cebulki ... dlaczego ? No pomyśl sobie przez chwilę, gdy się zaczyna programować to oznacza (przynajmniej dla mnie) robienie wielu projektów - bo jeśli zaczynasz i masz zamiar zrobić fizycznie jeden projekt bo coś ci pilnie potrzebne i nie będziesz zajmował się programowaniem przez najbliższe 5 lat to ok - wpisz sobie z noty ale jak będziesz robił kolejne projekty to: 1. często zaczynając kolejny, żeby się nie przemęczać ot po prostu skopiujesz sobie swoją bibliotekę UART albo te funkcje do innego projektu na szybko, oprogramujesz też w nim wiele innych rzeczy aż tu nagle okazuje się, że AŁĆ !!!! uart mi nie działaaaaa ... no bo zapomniałem że dałem np inne taktowanie procka niż w poprzednim projekcie i pierwsza KICHA ZALICZONA 2. pracujesz nad tym samym projektem ale po drodze przyjdzie ci sprawdzać go dla innego rodzaju taktowania procka - no to znowu jak zapomnisz - a najczęściej się zapomina po jakimś czasie o czymś co zostało dawno zrobione i dobrze działa - więc jak zapomnisz że z ręki wpisałeś UBRR z noty to znowu ZONK i szukanie błędu dlaczego mi uart nie działaaaa ? i kolejna KICHA ZALICZONA 3. Im więcej projektów różnych, różnego taktowania procka - a tak będzie bo przecież nie bawisz się kocim andruinem gdzie masz ZAWSZE przyspawany jeden koci kwarc 16 MHz - no to znowu dostaniesz kociego mętliku w głowie i czy tego chcesz czy nie SAM DOJDZIESZ do wniosku ... że po jasny gwint nie posłuchałem żeby to robić jak się należy ? czyli z automatycznym wyliczaniem UBRR Panie Panie, ten wzór jest prosty jak drut i UWAGA !!!! nie zabiera ci żadnych dwóch linijek kodu !!! nawet jednej ci nie zabiera ! toż to jest obliczane na etapie PREPROCESORA ! za pomocą makr #define przecież !!! więc gdy kompilator dostaje kod do skompilowania to w miejscu gdzie w kodzie masz __UBRR preprocesor PODSTAWI ci co ? ANO gotową obliczoną wartość i najczęściej to ona będzie DOKŁADNIE taka sama jak w nocie - tyle że nie muszę do niej zaglądać i się pierdzielić za każdym razem z ręczną zmianą jej wartości - gdzie też przy ręcznym wprowadzaniu - CZŁOWIEK JEST TYLKO CZŁOWIEKIEM i też się myli i jak będziesz miał literówkę bo zamiast np wartości 61 wpiszesz 16 to znowu KICHA ! weź przestań w ogóle myśleć o ręcznym wpisywaniu Po ostatnie, jak sobie zrobisz taką ala własną biblioteczkę do UART, i tam będzie ten wzór wyliczany (pamiętaj makrami #define więc to żaden kod programu!) to możesz sobie ją bez zastanowienia kopiować do każdego następnego projektu i nie powielać ZONKÓ KICH I BŁĘDÓW mam nadzieję że teraz jaśniej hmmm ? ------------------------ [ Dodano po: 1 minucie ] jak nie wierzysz że wyliczany wzór za pomocą #define - nie zajmuje miejsca w pamięci to ... skompiluj kod z tym wzorem sprawdź ile jest bajtów we FLASH a później usuń wzór i wpisz sobie ręcznie swoją wartość i skompiluj ... sam zobaczysz że ilość bajtów nie zmieni się nawet o jeden czy pół bajta |
Autor: | krawi92 [ 5 sie 2021, o 11:58 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
Ok, dziękuje Panie Mirku za rzeczową odpowiedź, oto mi chodziło. Moje przemyslenie spowodowane jest jeszcze brakiem doswiadczenia i dzialania albo na 1MHz albo 8MHz i jednym procesorze atm328p Gdy za jakis czas zaczne sie bawić i przeskakiwać to z takiego taktowania na takie, z procka na inny to napewno to będzie pomocne Ps. Nie lubi Pan kotów ? |
Autor: | mirekk36 [ 5 sie 2021, o 12:07 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
krawi92 napisał(a): Ps. Nie lubi Pan kotów ? Jaaa ? nie lubię kotów ? .... lubię tylko się troszkę długo gotują a na poważnie to miałem do niedawna aż 3 takie futrzaki w domu ale jeden ostatnio niestety odszedł do krainy wiecznych łowów .... zostały dwa ... i za żadne skarby świata bym się ich nie pozbył |
Autor: | krawi92 [ 5 sie 2021, o 12:08 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
No to juz Pana bardziej lubie, ja tez mam 2 kociory i musze dobrze chować gadżety elektroniczne, bo juz nie raz sie bawily LEDem albo rezystorem |
Autor: | mirekk36 [ 5 sie 2021, o 12:15 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
A ja myślę w końcu zrobić jakąś małą kamerkę na ESP żeby kotu do obróżki podczepić z małym aku LiPO i sprawdzić na wideo gdzie on się szwęda poza domem ... a już niedługo rusza u nas wielka AKCJA z ESP ... więc będzie można porobić różne ciekawe rzeczy |
Autor: | krawi92 [ 5 sie 2021, o 12:18 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
Ja czekam na ten kurs C na przykladzie AVR w trybie mailingowym, o którym mi Pan pisał na mailu |
Autor: | mirekk36 [ 5 sie 2021, o 13:00 ] |
Tytuł: | Re: Blad unknown type name 'uint16_t' |
krawi92 napisał(a): Ja czekam na ten kurs C na przykladzie AVR w trybie mailingowym, o którym mi Pan pisał na mailu Łooj i to też będzie - teraz szykujemy dużo niespodzianek |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |