No lepiej, ale jasno to do końca nie jest. Teraz myślę, czy chodzi Ci o coś takiego: [syntax=c]#define DEBOUNCE DEB #define NO_DEBOUNCE NOTHING #define NOTHING(name) #define DEB(name) DEB_##name, #define LIST_IO PIN(A1, DEBOUNCE) \ PIN(B3, NO_DEBOUNCE) \ PIN(C2, DEBOUNCE) \ PIN(D1, NO_DEBOUNCE) uint8_t x = [ #define PIN(name, deb) deb(name) LIST_IO...
Chyba za bardzo się zrobić coś, czego zadanie nie wymaga :) Napisz po prostu kalkulator, a kompilacja warunkowa w tym zadaniu to chyba tylko dla zmylenia przeciwnika ;) W każdym razie już doszedłeś dlaczego nie da się tego problemu rozwiazać w ten sposób, co zaproponowałeś na początku. PS. A jak nie jesteś pewien, to zapytaj autora zadania. Pozdrawiam,...
Coś takiego odpowiada za stworzenie mapy pamięci. Z pewnością jednak takiej przestrzeni adresowej nie ma w AVR. Tutaj przestrzeń adresowa jest tylko 16-bitowa. Stąd jest komunikat "never used". Wygląda na to, że jest to jakaś kompilacja do debugowania tego kodu, ale pod inną platformą (np. Windows). Biorąc to pod uwagę myślę, że zmienić trzeba też coś...
... Fejnie by było obciąć kilka zer po przecinku... Ostatni prezent i zapewne nowość dla niektórych użytkowników Bascoma. Kompilacja warunkowa: $regfile = "2313def.dat" Config Lcd = 16 * 2 '***** Kompilacja warunkowa **** Const Sing = 0 'Obliczenia Sing=1 ->Single(float) , Sing=0 -> Long(int) Const Uv = 1 'Rozdzielczość...
W czym rozwiazanie z zamiana *.c na *.inc oraz warunkowa kompilacja w pliku types.common.c jest lepsze od warunkowej kompilacji kazdego pliku types_xxx.c z osobna ? type1.c: [syntax=c] #ifdef TYPE1 //tutaj wszystkie funkcje #endif [/syntax] type2.c: [syntax=c] #ifdef TYPE2 //tutaj wszystkie funkcje #endif [/syntax] Jak chcesz bardziej wyszukanego rozwiazania...
W AVRPascal IDE logika projektu jest tam, gdzie powinna być: w kodzie. Dlatego program nie stosuje plików projektu. Trochę to megalomania sądzic, że wszyscy dookoła to same matoły, które nie wiadomo dlaczego tworzą jakieś coraz bardziej złożone "build systems" aby konfigurawać i budować projekty. A tu proszę = okazuje się że kompilacja warunkowa wystarcza....
Spróbuj najpierw zresetować ustawienia. Wejdź w Help -> About i tam pod licencją masz ścieżkę do pliku XML w którym trzymane sa wszystkie ustawienia. Możesz wejść do tej lokalizacji, ale zaraz potem zamknij Bascom Potem zmień nazwę tego pliku XML na jakąś inną, na przykład dodając słowo _backup. Po tej akcji kiedy uruchomisz Bascom to powinien być jak...
#define LCDver C . . . #if (LCDVer==A) #include "LCDverA.asm" #elif (LCDVer==C) #include "LCDverC.asm" #endif Poza tym poproszę albo zrzut ekranowy "Project/Assemblewr options, albo co siedzi w AVRBuild.bat. Która wersja AVRStudio ? No i bez całości kodu niewiele można powiedzieć, być może cos jest przypadkiem zakomentowane...
A jak to rozwiązujesz w asemblerze? Rozwiązanie zależy od zapotrzebowania. O czego u Ciebie zależy, czy bedą odwołania? Rozumiem, że static nie załatwia sprawy, bo odwołania są z innych plików? Jeżeli chcesz stworzyć coś w rodzaju biblioteki, to nie ma lepszego rozwiązania niż stworzenie biblioteki - wóczas linker zadba o dołącznie tylko potrzebnych...
(at)jorax - chodziło mi o to, że w bibliotece wykorzystywana jest kompilacja warunkowa w zależności od linii mikrokontroleram, więc gdzieś trzeba zdefiniować z jakiego uC korzystamy (za pomocą dyrektywy prekompilatora). "Wyłączam" się w kwestii biblioteki :) Są tu mądrzejsi ludzie ode mnie a nie chcę Ci głupot nagadać ;) Co do funkcji pokazanej przez...
W zasadzie kodu takiego, co bez przeróbek zadziała to nie mam - każdy fragment ma różne zależności zdefiniowane w innych plikach/procedurach. Ale dla przykładu mogę wrzucić jedną prostą maszynę stanów - część rzeczy można wykomentować, stworzyć jakieś swoje fikcyjne zmienne, itp... [syntax=c] //======================================...
Ty mówisz o jakich kompilatorach? Używam kompilator Hi-tech dla PICów. Producent ściśle trzyma się normy C89 i inline nie ma. Jeśli chcę pisać kod przenośny (niektóre biblioteki) PC<->PIC<->ARM to muszę kurczowo trzymać się standardu i zrezygnować z udogodnień występujących w nowszych kompilatorach.C. Zawsze pozostaje kompilacja warunkowa...
Przeczytałem wątek z dużym zainteresowaniem, wracam do uP po paru latach natomiast jestem starym programistą C Nie będę redagował jednolinijkowych cytatów, wypowiem się w punktach mam nadzieję każdy wyczyta co pochwalam / czemu się sprzeciwiam 0) nie zmienimy starego albo nie swojego kodu (np AVR czy innego) ale nowy możemy pisać lepiej. a) makra to...
Nad pierwszy bym dyskutował (nawiasem mówiąc napisałem najmniej złe). Doceniam, że chce wprowadzić "emulację" w miarę pełnej jednostki syntaktycznej, ale eliminuje inny aspekt bloku: blok ma wartość powrotną (rzecz bardzo rzadko wykorzystywana), moje rozwiązanie to zachowuje, Twoje nie. Twój blok również nie zwraca wartości. Jak już takie coś chcesz...
Jeżeli w tej "bibliotece" lcd.c masz niewiele funkcji , to możesz zastosować kompilację warunkową. Np. global.h //... #define LCD_CURSOR_ON //... lcd.c #include "global.h" //... #ifdef LCD_CURSOR_ON void lcd_cursor_on() { } #endif Ot , prosty - żeby nie powiedzieć prostacki - sposób ;) Piotrek
Dziękuje za pomoc. Działa. [syntax=c]#if __AVR_ATmega328P__ == 1 #define LED_SCK PB5 #endif #if __AVR_ATmega644P__ == 1 #define LED_SCK PB7 #endif #define LedON PORTB |= 1 << LED_SCK; /// LED SCK #define LedOFF PORTB &= ~(1 << LED_SCK); /// LED SCK #define LedNOT PORTB ^= 1 << LED_SCK; /// LED SCK[/syntax]
Że to dzisiaj skompilujesz, to raczej możesz zapomnieć. -D AVR powoduje ustawienie symbolu "AVR", a w programie masz elementy kompilacji warunkowej (#ifdef AVR), lecz i tak program się nie skompiluje - bo pokazany kod wymaga nagłówków, które w AVR są niedostępne (m.in. time.h). Dodatkowo sam kod jest błędny, m.in. źle są zadeklarowane zmienne wykorzystywane...
Witam Czy mozna uzyskac mozliwosc kompilacji warunkowej, w taki sposob aby na poczatku programu, zmieniajac wartosc tylko jednej zmiennej/parametru moc w zaleznosci od jej wartosci, z programu pomijac wszelkie funkcje opozniajace, cos na styl dyrektywy $sim w Bascomie. Jednym slowem chodzi mi o to, ze w czasie symulacji programowej np w AVR Studio,...
Ewentualnie możesz dodać kompilację warunkową dla poszczególnych sterowników LCD. Optymalizator gcc wytnie niepotrzebne fragmenty kodu (jeśli numer sterownika będzie stałą). Co do kompilacji warunkowej to wiem o co chodzi. (at)gaskoin: możesz podać mały przykład ze stałą ?
Raczej to nie będzie problemem, ale moja głupota już prędzej. Nie jestem tego już w stanie sprawdzić, bowiem nie mam już kodu w wersji umieszczej tutaj ale istnieje ogromne prawdopodobieństwo, że błędnie umieściłem dyrektywę kompilacji warunkowej i do przesłanego wsadu dołączony został fragment programowej implementacji 2 portu UART, który służył mi...
Unowocześnienie AT90S2313 brzmi : ATtiny2313 .... ;) No to OK, kody przerobione pod modłę AVRStudio + gotowy HEX - na AT90S2313, ATtiny2313 i ATmega8515. Licencja GNU zachowana - mamy binaria i źródła... ;) Some other requests ? ;) P.S. ; Code is written for use with AVR-GCC in assembler mode ; flag: -x assembler-with-cpp - oryginalny kod jest pod avrgcc......
Ok. Robię sam pod siebie. Ale jak myślisz, czy przeciętny programista Systemów wbudowanych zrozumie rozbudowany system konfiguracyjny? Dołóż do tego tonę dokumentacji i mamy problem z długością wdrożenia w projekt. Normalne aplikacje (na pc) to konieczność z powodu złożoności systemu. Ale tutaj gdy cały hex ma kilkaset kilo to może być przerost formy...
To jest tak zwana kompilacja warunkowa, przydatna w trakcie pracy ad programem, szczególnie gdy walczymy za jakimś problemem. Np. często stosuje się bloki, które są kompilowane tylko gdy jesteśmy w debug modzie, a nie w wersji release, żeby np. w pewnych miejscach podejrzeć wartości zmienny, których w finalnej wersji programu nie chcielibyśmy oglądać...
Otóż niekoniecznie... Chwilę wcześniej masz bloki kompilacji warunkowej #if UDA1380_SYSCLK_USED ... #else //Use WSPLL ... #endif gdzie masz możliwość wyboru (prawdopodobnie) źródła sygnału zegarowego. Jeśli to nie zostało zdefiniowane poprawnie, to następna komenda Uda1380_Mute(FALSE) ma prawo zwrócić błąd.
#ifdef RTS_ENABLE Masz odblokowaną obsługę wyjścia RTS ? Tu wygląda to na kompilację warunkową więc jeśli nie zdefiniujesz tego to wyjście nie będzie używane i odpowiedzi nie dostaniesz bo max485 jest cały czas w nasłuchu i nie przełączy się na nadawanie
Zarówno ja, jak i kolega tzok mówimy o przyjęciu wstępnych ograniczeń . W temacie jednak ustalono, że nie ma się czym przejmować, ani ograniczać. Podejście jest zatem w stylu typowej polskiej uczelni. Należy zatem opracować protokół komunikacyjny, potem zaś "zobaczyć co uda się zaimplementować". Jest to błąd już u samych założeń. Ponadto jest tu wątek...
Płytę tą można programować w kilku językach, m.in Python i C. Kompilacja przebiega do pliku img. W większości języków będzie to kod opierający się na pętli warunkowej if i pętli while.
Można poprosić o listę lub jakiegoś linka. Jak dołączysz do projektu plik io.h to tam masz warunkowe dołączenie pliku io specyficznego dla danego procesora. Po kompilacji w AS masz też w zależnościach wymieniony odpowiedni dla procesora plik, wystarczy go podejrzeć i tam będzie definicja symboli.
Możesz spróbować tak, jak to zrobione jest w ARM-ach (CMSIS). Warstwa sprzętu jest zależna od rodzaju konkretnego procesora ARM (LPCxxx, STM32xxx), a reszta jest taka sama dla całej rodziny procesorów (ARM Cortex). Możesz zdefiniować CPU i elementy sprzętowe i zrobić kompilacje warunkową. Najlepiej rzeczy niezależne trzymać w oddzielnym katalogu. Spójrz...
3grosze.. B4X Piszesz apke na iOS i ona automatycznie pasuje na Androida, na Raspi, na PC... 1. Już sobie wyobrażam ogromne wsparcie w bibliotekach, które kolega integrujący z uK będzie musiał wcześniej czy później użyć 2. to, co zerkam, to nie jest "write once, run everywhere", ale są odnogi kodu na różne środowiska, sterowane kompilacją warunkową....
.if to dyrektywa preprocesora, działa jak ci pisano, wyłącznie na etapie translacji mnemoników na opcody. W gotowym programie nie działa, bo jej tam już po prostu nie ma. Zwykle .if i pokrewne wykorzystuje się do zrealizowania kompilacji warunkowej. Np. w zależności od typu procesora masz np. 256 bajtów SRAM lub więcej, co za tym idzie adres jest 8...
Tak jak pisałem - Twój startup załatwia manipulacje stosem, więc w takiej sytuacji atrybut dla funkcji jest zbędny, a wręcz błędny. Jeśli masz debugger, to przecież możesz sobie sprawdzić czy w ogóle wchodzi do przerwania oraz czy wchodzi do tego assemblerowego wrappera który jest pod etykietą "VIC". Profilaktycznie włącz sobie też ręcznie przerwania...
Wszystko zależy od twojej wygody i tego jak często i w jakich sytuacjach masz zamiar manipulować tym parametrem. Ja zawsze w katalogu common projektu trzymam plik typu config.h, gdzie są zdefiniowane kluczowe i ogólne dla całego projektu switche, wartości itd. Inna sprawa, że pewne rzeczy wolę definiować, jak wyżej wspomniano, w argumentach dla programu...
Czy definicje funkcji moga byc zawarte w plikach naglowkowych? Do dobrych praktyk to nie należy ale jak ktoś sobie tak ubzdura to może do includowanych plików wsadzić wszystko co mu się podoba. Czyli kod lacznie z funkcja main tez moze byc w pliku naglowkowym? Może być nawet makrem albo przez kompilację warunkową i też będzie działać. A może Twój problem...
Niektóre kompilatory pozwalają na oznaczenie takiej funkcji jako inline lub robią to automatycznie. Warto zatem sprawdzić efekt debugując na poziomie CPU :) Jeśli jednak chcesz być pewny rozwiązania, to najlepiej zastosować kompilację warunkową (bo rozumiem, że chcesz dostarczyć pod każdy sprzęt inną wersję programu). O tym, czy Twój kompilator na to...
Prawdopodobnie już wiem dlaczego tak to działa jak działa. W pliku projektu STM32CubeMX w konfiguracji FATFS -> System Parameters jest parametr FS_REENTRANT . W przypadku kodu bez FreeRTOS ten parametr ustawiony jest na Disabled i dlatego działa dobrze. Jeżeli wygenerujemy kod z FreeRTOS to ten parametr jest ustawiony na Enabled i wtedy nie wnikając...
...Działo się tak dlatego, że wcześniej debugowałem sobie ten program, a żeby ominąć troszkę kodu to skok bezwarunkowy walnąłem tam. A jak program był gotowy to zapomniałem to wyjąć. Wcześniej też miałem problem zinicjalizacją lcd, ponieważ była ona zakomentowana... Aż mi się ciśnie na klawiaturę , by zakrz... napisać: "a widzisz ?!?!?" :D A na przyszłość...
Okazało się, że brakuje parametru -DROM_RUN przy kompilacji plików (asm i c), niestety nie mogłem się doszukać co tak na prawdę ta opcja robi, może ktoś wie? I dlaczego napisałem już do tej pory 70kb kodu (bez malloca oraz -DROM_RUN) i wszystko ładnie śmigało... Ależ ona nic nie robi tylko przekazuje do TWOJEGO kodu że symbol ROM_RUN jest zdefiniowany...
Chodziło mi o ten konkretny przypadek :) Co do warunkowej kompilacji - robiąc "normalne" ify, gcc stworzy w większości przypadków taki sam kod jak w przypadku użycia dyrektyw preprocesora.
Dzięki, za vbModeless, o to mi chodziło. Teraz sobie przypomniałem że miałem już kiedyś doczynienia z otwieraniem formy modalnie lub nie i miałem jakieś problemy, które minęły gdy zrezygnowałem z tego parametru. Dotyczyło to zdaje się wcześniejszej wersji Excela, którą od czasu do czasu używam na starszym kompie. W związku z tym takie pytanie dodatkowe,...
No i właśnie o to chodzi... Byłem przekonany, że dyrektywa warunkowej kompilacji załatwi sprawę... Warunek z założenia powinien powodować, że treść sd.h jest brana pod uwagę tylko raz... a tu wychodzi na to, że jest to pic na wodę, fotomontaż...
Koledzy. Z jednej strony kol. Pijopic ma rację: Jeśli kod (źródłowy w domyśle) korzysta z nowych żródeł przerwań i innego HW dostępnego w M88 to nie da się go po prostu przekompilować na M8 z powodów technicznych. Z drugiej strony kol. upanie też ma rację, gdyż do kilkunastu rejestrów w M88 - które były dostępne przez IN/OUT w kostce M8 - dostęp jest...
Bardzo dobrze, poszło łatwiej niż się spodziewałem. Pozwólcie, że połączę tę gałąź, a teraz przyjrzyjmy się drugiej kwestii. Mimo to jestem zaskoczony, że poniższy kod nie działa: [syntax=c] //value is in 0 100 range void HAL_PIN_PWM_Update(int index, float value) { int channel; if (IsPinIndexOk(index) == 0) return; channel = PIN_GetPWMIndexForPinIndex(index);...
Witam, ze względu na wymagania "klienta" musiałem zamienić język programowania i środowisko IDE na Dev-c++. Aktualnie używam 4.9.9.2 i od strony IDE nie mam większym zastrzeżeń, czasem są problemy ale da się z tym żyć. Natomiast od strony kompilatora mam kilka zastrzeżeń, jakość kompilacji jest niezła, kod mały ale: 1.) problemy kompilatora same z sobą,...
test(at)ubuntu:~$ test(at)ubuntu:~$ ./test sh: cls: not found Wybierz jedna z czterech opcji: 1. Srednia harmoniczna z n wyrazow 2. Srednia harmoniczna liczona do czasu wprowadzenia 0 3. Srednia geometryczna z n wyrazow 4. Srednia geometryczna liczona do czasu wprowadzenia 0 Twoj wybor: 2 Podaj liczbe nr 1: 0.5 Srednia z...
oczywiście wywalają się kompilacje Kilka pytań: Co to są kompilacje? Co to znaczy że się wywalają? Czy taka kompilacja |(|nawet jedna) jest ciężka? Czy nie sprawia oporu podczas podonoszenia. Odpowaiadam na pytania: 1.Mam na myśli proces kompilacji i linkowania programu jako całość 2.Mam tu na myśli zakończenie kompilacji z błędami uniemożliwiającymi...
Czy jest metoda, aby wyświetlić model mikroprocesora na jaki skompilowany jest program w AVR GCC, jakaś zmienna globalna czy odczyt rejestrów W środowisku AVR GCC nie ma bezpośredniej metody, która pozwalałaby na uruchomieniu programu na mikrokontrolerze, aby automatycznie wykryć i wyświetlić model mikroprocesora, na którym ten program jest uruchamiany....
Wielkie dzięki!!! Spróbuję w poniedziałek zainstalować keila w pracy i uruchomić któryś z przykładów. W GCC strasznie ciężko to zrobić nie mając podglądu do opcji projektu, z tego co widzę są tam jakieś definicje które jak sądzę wykożystywane są później przy kompilacji warunkowej ale myślę, że z tym sobie poradzę, drobne różnice w składni już przerobiłem...
Mam podwójne buforowanie. Ale może gdybym najpierw puścił transfer DMA i potem - nie wychodząc z przerwania - dopiero dokonał "rozparcelowania danych" po buforach, to pewnie by zadziałało. W sumie wyszło inaczej - zsynchronizowałem to z pobraniem danych z SD - też działa. Problem z wyświetlaczem LCD też rozwiązany - trzeba było dodać sprawdzanie czy...
(at)Freddie Chopin No nie całkowicie. Często mamy do czynienia z warunkową kompilacją typu: [syntax=c] void fun(int *a, int *b) { #ifdef CONFIG_FEATURE_ENABLED //do something ... #else (void)a; (void)b; //do something else #endif }[/syntax] Tak czy inaczej fajnie wiedzieć, że w C++ jest coś takiego:)
funkcja warunkowa excel kompilacja openwrt kompilacja notepad
symetryczny przedwzmacniacz mikrofonowy electrolux moduł naprawa początkujący piaskownica
bateria niteo uszkodzony czujnik spalin
Przywracanie oryginalnego oprogramowania Volvo S40 - krok po kroku Wzmacniacz audio SAGM1 8002B - cechy i zastosowania