Tak, wystarczy abyś zainkludował #include <Arduino.h> na początku, i w 1.0.6 też sie skompiluje. Pozdr Sławek
Może pomogłoby ujęcie plików napisanych w c w blok: [syntax=c]#ifdef __cplusplus extern "C" { #endif[/syntax] [syntax=c]#ifdef __cplusplus } #endif[/syntax] Pozdrawiam.
Musisz miec wszystkie <bibloteki.h> komplet. [syntax=c] #ifdef INCLUDE_TACHOMETER #include <Tone.h> #endif #include <avr/pgmspace.h> #include <EEPROM.h> #include <SPI.h> #include "Arduino.h" #include <avr/pgmspace.h> #include <Wire.h> #include "LedControl.h" #include "Adafruit_GFX.h" #include "FlowSerialRead.h"...
Piny podpięte są dokładnie tak samo jak przy LCD HD44780. Z opóźnieniami też nie powinno być problemu, bo uruchomiłem pracę krokową AVR przez JTAG-a i też nie działa. Biblioteka rklib jest tutaj http://www.freepgs.com/robkry/?t=avrgcc/... Oto moje procedurki: void LCD_init(void) { register u08 i; #ifdef LCD_HALF_LO LCD_PORT_D|=0x0F|_BV(LCD_EN)|_BV...
Poniżej program do obsługi wyświetlacza TFT: Interesuje mnie dlaczego funkcja LCD_Clear(WHITE) na STM32 działa wolniej niż na Atmedze32 z kwarcem 16MHz. Wydawało mi się że powinno czyścić ekran szybciej na STM32 a już na pewno nie wolniej. Tylko nie zwracajcie mi uwagi na temat pętli opóźniającej;) ponieważ i tak nie jest wykorzystywana w LCD_Clear....
"extern" nie musisz dopisywać przy każdej funkcji. Możesz dopisać raz dla pliku nagłówkowego: 1 Na początku: #ifdef __cplusplus extern "C" { #endif I na końcu: #ifdef __cplusplus } #endif lub możesz dopisać to w twoim kodzie przy włączaniu nagłówka: extern "C" { #include "my-C-code.h" } Albert
Nie miałem za bardzo czasu ale wracam do nierozwiązanego problemu. http://obrazki.elektroda.pl/7699775600_1... http://obrazki.elektroda.pl/3826926900_1... Tak wyglądają screeny po wywołaniu programu CRCGEN. Pliki wgrane programatorem działają poprawnie a przez bootloader tylko ten krótki (choć po przemieleniu ma także...
Już dołączam I jeszcze jestem ciekawy różnic między plikami hex, elf i bin. To znaczy głównie chodzi mi o to dlaczego na przykład przez SAM-BA muszę podawać plik bin?? A przez inny programator pewnie mogę hex? To chodzi o to, że każde oprogramowanie przystosowane jest do określonych plików tylko? # Hey Emacs, this is a -*- makefile -*- # # WinARM template...
Możesz przekonwertować plik na tablicę C (jest wiele narzędzi, poza tym to max kilkanaście linii w większości języków). Albo wygenerować od razu plik obiektowy i zlinkować z programem. arm-none-eabi-objcopy -I binary -O elf32-littlearm --set-section-flags .data=alloc,load,data,readonly --rename-section .data=.rodata plik.bin plik.o Dodaj plik plik.o...
Nie wiem jakiego kompilatora asm używasz, to co przedstawiam, używam na AVRasm2, który obsługuje preprocesor C oraz mam wygenerowane pliki nagłówkowe C Atmela narzędziem xmlconvert.exe[syntax=c]#ifdef WDP3 #define WDP_2K 0 // ~16ms #define WDP_4K (1<<WDP0)// ~32ms #define WDP_8K (1<<WDP1) // ~64ms #define WDP_16K ((1<<WDP1)|(1<<WDP0))//...
dodając coś takiego: Przy takiej opcji ja bym poszedł jeszcze dalej. Wybór toolchainu - jako jeden z #define'ów Na podstawie wyboru - lokalizacja Na podstawie wyboru - prefix - itd... [syntax=c]#define TOOLCHAIN1 //#define TOOLCHAIN2 //#define TOOLCHAIN3 #ifdef TOOCHAIN1 #define TOOLCHAIN_PATH #define TOOLCHAIN_INCLUDE #define TOOLCHAIN_OPTIONS #endif...
Tak udało się zamieniając definicje w pliku /wiringPi/drcNET.h na /********* struct drcNetStruct { uint32_t pin ; uint32_t cmd ; uint32_t data ; } ; **************/ #ifdef __cplusplus extern "C" { #endif extern int drcSetupNet (const int pinBase, const int numPins, const char *ipAddress, const char *port, const char *password) ; #ifdef __cplusplus }...
W demie WLAN najprawdopodobniej brakuje kluczowych definicji: - CONFIG_WLAN_AP - CONFIG_WLAN_STA - CONFIG_WLAN_MONITOR Są one wymagane do włączenia poleceń WiFi: [syntax=c] #ifdef CONFIG_WLAN_AP { "ap", cmd_wlan_ap_exec, CMD_DESC("ap command") }, #endif #ifdef CONFIG_WLAN_STA { "sta", cmd_wlan_sta_exec, CMD_DESC("sta command") }, #endif #ifdef CONFIG_WLAN_MONITOR...
Przecież w Tiny2313 rejestry PWM są takie same jak w 2313 classic. Zatem po co tak kompikujesz: #if defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || \ defined(__AVR_AT90S4434__) || defined(__AVR_AT90S8535__) || \ defined(__AVR_ATmega163__) || defined(__AVR_ATmega16__) || \ defined(__AVR_ATTINY2313__)...
Nie widzę tych zmiennych w avr/io.h. Znalazłem coś takiego: // _UCR_ #ifdef UCR #define _UCR_ UCR #endif #ifdef UCSRB #define _UCR_ UCSRB #endif #ifdef UCSR0B #define _UCR_ UCSR0B #endif // _USR_ #ifdef USR #define _USR_ USR #endif #ifdef UCSRA #define _USR_ UCSRA #endif #ifdef UCSR0A #define _USR_ UCSR0A #endif Niestety po dodaniu tego do avr/io.h...
Witaj, zapomniałem dodać, iż zdefiniowane jest makro zapewniające przenoszalność kodu: /* * podmiana nazw rejestrów dla różnych układów AVR */ // ----------------------------------------... /* * _UBRR_ */ #ifdefUBRR #define _UBRR_UBRR #endif #ifdefUBRRL #define _UBRR_UBRRL #endif #ifdefUBRR0 #define _UBRR_UBRR0 #endif #ifdefUBRR0L...
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...
Ponieważ na etapie kompilacji wartości x i y są nieznane, więc takie zastosowanie preprocesora nie zadziała. Jednak intencje są słuszne, warto wiedzieć, że gdzieś program się wywala. Dlatego można tu preprocesor zastosować w nieco inny sposób - ustaw sobie jakąś etykietę, np. DEBUG (to można zrobić z poziomu makefile) i w programie w blokach #ifdef...
Fakt, ruszyło. Dzięki. A skoro już jesteśmy przy konfiguracjach: zmieniłem workspace i kompilator nie widzi miak typów z stdint.h (uint32_t i tym podobne). Doszedłem do tego, że są one zdefiniowane w gcc chociażby tak: [syntax=c]#ifdef __INT8_TYPE__ typedef __INT8_TYPE__ int8_t; #endif #ifdef __INT16_TYPE__ typedef __INT16_TYPE__ int16_t; #endif...
działa tak, jak pisałem w #2. [syntax=c]#define FIELD_WIDTH 12 #define FIELD_HEIGHT 12 #define ORIENTATION_HORIZONTAL #define USE_FAST_LED #define FAST_LED_CHIPSET WS2812B #define FAST_LED_DATA_PIN 3 #define MAX_BRIGHTNESS 255 #define MIN_BRIGHTNESS 10 #define NUM_PIXELS FIELD_WIDTH*FIELD_HEIGHT*2 #include "FastLED.h" CRGB leds[NUM_PIXELS]; void setPixel(int...
Może zacznę od opisu konfiguracji. Mam czujnik TSOP1736 podłączony do zasilania 5V, zaś jego wyjście do wejścia P0.16 mikrokontrolera LPC2148. Pozostałe połączenia (zasilanie, JTAG itp.) są OK, gdyż jest to zestaw ewaluacyjny Propoxu - EVBlpc213x\4x. Napisałem sobie bibliotekę do odbioru kodu RC5. Posiłkowałem się tą #include "lpc214x.h" #include...
Jeśli nie masz ochoty używać C++ , przejdź do startupa (*.s) i zakomentuj tą linijkę co zawiera w sobie __libc_init_array albo otocz ją #ifdef __cplusplus #endif .
Nic to nie zmieniło. HandleEncoder jedynie sprawdza czy zmienna została zmieniona, nic tam nie wpływa na samo działanie interrupt'a. ponadto w Encoder.h obie funkcje są używane wielokrotnie więc to kiedy ja ich użyje i tak raczej zostanie nadpisane. Oto zawartość Encoder.h: [syntax=c]/* Encoder Library, for measuring quadrature encoded signals * http://www.pjrc.com/teensy/td_libs_Encod...
Poczytaj o #ifdef #ifndef Jeżeli np. bedzie coś takiego #ifdef MA_BYC //tutaj twoje definicje itp. #endif To jak bedziesz miał w programie #define MA_BYC to zostanie to skompilowane a jak nie bedzie #define MA_BYC to nie bedzie skompilowane Czy o takie cos ci chodziło.
Dodam moj przepis na ładną tablicę wektorów (przykład dotyczy ATtiny2313) : .cseg ;—————R...
Czołem! W swoim projekcie muszę umieścić kilka struktur w konkretnych miejscach w pamięci. Dodałem sobie atrybut do definicji tych obiektów i obecnie plik źródłowy wygląda tak jak poniżej [syntax=c] /* * config_data.c * * Created on: Jan 12, 2021 * Author: mateusz */ /** * This is NOT an editable configuration file where ParaTNC settings are made! Do...
Choćby tak: #define LCDVerA //#define LCDVerC #ifdef LCDVerA #include "LCDverA.asm" #endif #ifdef LCDVerC #include "LCDverC.asm" #endif lub #define LCDVerA #ifdef LCDVerA #include "LCDverA.asm" #else #include "LCDverC.asm" #endif Piotrek
ja też korzystam z biblioteki radzia, na szybciocha przerobiłem sobie to tak: w pliku HD44780.h dodałem takie linie #define LCD_4x20 //#define LCD_4x16 #ifdef LCD_4x16 #define LCD_WIDTH 16 #define LCD_LINE20x10 #define LCD_LINE30x50 #endif #ifdef LCD_4x20 #define LCD_WIDTH 20 #define LCD_LINE20x14 #define LCD_LINE30x54 #endif 1-szymi dwiema liniami...
Czy jest jakiś sposób, aby w Atmel Studio 6.2, lub 7.0 kod umieszczony pomiędzy znacznikami: [syntax=c]#ifdef ... #endif[/syntax]został odpowiednio wyróżniony. Kiedyś dostępne było rozszerzenie "Niggy", ale teraz nie widzę, aby można było je zainstalować.
Najlepiej nagłówki dołączane do projektu zaopatrzyć w standardowe zabezpieczenie: #ifdef __cplusplus extern "C" { #endif // ... tutaj wszystko z tego pliku #ifdef __cplusplus } #endif Problem spowodowany jest "name mangling", które stosowane jest w C++ 4\/3!!
Np. z tego kodu: [syntax=arduino]#include <Arduino.h> #include <U8g2lib.h> #include <SPI.h> #include <Wire.h> // Konfiguracja pinów dla wyświetlacza OLED #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif // Konfiguracja wyświetlacza SSD1306 U8G2_SSD1306_128X64_NONAME_F_HW_I2C...
Mam jakieś przykłady z keila z kamami.pl, więc jak chcesz zzipuję i wrzucę. akurat ja używam zl10arm+zl9arm czyli też lpc2148. elm-fata kiedyś odpaliłem na avr, a pewno też będę chciał na lpc więc pochwal się, jak Ci się uda;) Tutaj proszę pliczek .s z tej paczki. //Plik startowy dla mikrokontrolerow LPC214x /****************** KONFIGURACJA *********************/...
2. Co to oznacza Ten kod oznacza, że w zależności od tego która definicja została zdefiniowana (np. LED8), takimi danymi zostanie zainicjowana tablica led_params ledx , czyli dla LED8 będzie to równoważne: 1). Co to oznacza Kod: Ten kod oznacza że do trzeciej pozycji tablicy request zostanie wpisany wynik działania funkcji LED_GetBlinkState której...
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
Nie mam pod ręką Arduino, żeby spróbować, więc przerobiłem program tak, by móc przetestować jego działanie pod Linux-em bez Arduino - i działa. Przy zdefiniowanym symbolu ARDUINO kompilują się te elementy, które są dla Arduino; bez niego te, które są do Linux-a. [syntax=c]#ifdef ARDUINO #include <TM1637Display.h> #define ZEGAR A5 #define DANE...
Atom1477 w pliku syscalls.c zrób tak: na początku dodaj #ifdef __cplusplus #define CPP_PREFIXextern "C" #else #define CPP_PREFIX #endif potem przed każdą funkcją dodaj CPP_PREFIX np. CPP_PREFIX int _read_r(...
Eee... Jedynie w moim Makefile warto ustawić stosowną flagę aby skorzystać ze statycznych konstuktorów/destruktorów i tyle - nic więcej nie trzeba robić. Zestaw problemów na jaki się natkniesz pewnie jednak wymagać będzie osobnego tematu [; Extern "C" w zasadzie tylko w nagłówkach, zabezpieczone koniecznie "#ifdef __cplusplus" - jak poszukasz tego w...
W ASM tak niestety jest ... ale usuwanie zbędnych procedur wykonuje się w gotowym projekcie. I wtym miejscu muszę zaprotestować ;) W każdym porządnym kompilatorze , jest coś takiego , co nazywa się potocznie "kompilacja warunkowa" . Za pomocą w/w mechanizmu można kompilować dowolne fragmenty z całości , kiedy i jak się chce. I przykładzik: program_główny.asm...
Czy jest szansa, że jest to spowodowane brakiem czegoś takiego w nagłówku pliku *.c? [syntax=C]#ifdef NAGLOWEK_H_ #define NAGLOWEK_H_ #ifdef __cplusplus extern "C" { #endif ... // tutaj zasadnicza treść nagłówka ... void test(void); void Thread_C_Function(void); ... #ifdef __cplusplus } // extern "C" #endif #endif // NAGLOWEK_H_[/syntax] Chodzi oczywiście...
Sprawa trochę skomplikowana inaczej. jest kilka pozycji do wyświetlenia:[syntax=c]//oblicz OCRx dla zegara T2 // OCR2= ((F_CPU/czestotliwosc_krokow) / (2*1024))-1 licznik =(float) F_CPU/czestotliwosc_krokow; //#ifdef DEBUG wys_parametr32(licznik); //#endif ----------------------------------------... void wys_parametr32(float...
gmp... Do Twojej wiadomości... .IF .ENDIF .ELSE .ELIF .IFDEF .IFNDEF .MESSAGE .ERROR np. .set stala = 1 .if stala == 1 .message "Jest zadeklarowana i wynosi 1" .elif stala == 0 .message "Jest zadeklarowana i wynosi 0" .else .error "Nie zadeklarowano!" .endif //lub .ifdef stala .message "Zadeklarowana" .endif...
Trzeba kota zamknąć, bo najwyraźniej biega Ci po klawiaturze. Na obrazku widać rozpoczętą definicję funkcji i nagle zaczyna się kolejna, ja w ogóle ściągnąłem to co tu pokazałeś w temacie i nie mam funkcji 'sendState()", może Mruczek Ci to wkleił z innego szkicu. Ja tak to widzę: [syntax=c]// ----------------------------------------...
Oczywiście, że posiada. Ma też fajne dodatki - zainstaluj sobie Naggy - masz na bieżąco analizę składni i w dymkach ci podpowiada co jest źle i jak to poprawić. Błędną składnię masz podkreśloną wężykiem tak jak w Wordzie. Koniec głupich błędów typu zapomniałem średnika, a przy kompilacji gcc wywala błąd w zupełnie innym miejscu. Dodatkowo analizuje...
Masz na myśli fragment z un7zip? Added after 11 Tu jest użyty biblioteka LZMA: https://github.com/erwinbsbqq/PDK_GoDroi...
A mógłbyś mi jeszcze pomó w takim czyms? ; Mam problem. Pisze program do komunikacji przez port UART, żeby móc wysyłać tekst i odbierac. Niestety coś mi to nie dziala. Kopiluje sie z jednym warningiem. Kod wygląda tak : #include <avr/io.h> // dostęp do rejestrów #include <avr/pgmspace.h> #include "uart.h" // Zmieniając poniższe definicje...
Witam! Piszę aplikację w c++, która ma korzystać z biblioteki dll napisanej w delphi. Do biblioteki nie ma dołączonego żadnego innego pliku z deklaracjami funkcji, tylko sama dll-ka. Z dokumentacji biblioteki wynika, że funkcja którą chcę wywoływać ma następującą postać: function Command(LnId : TLnId; InpStr: string; var OutBufPtr :pchar;...
A tak wracając do tematu... W nagłówkach (.h) do plików C (nie C++!) dodaj na początku: #ifdef __cplusplus extern "C" { #endif a na końcu: #ifdef __cplusplus } #endif Tutaj można pewnie znaleźć trochę więcej o tym konstrukcie: http://stackoverflow.com/questions/37893... Chodzi o to,...
Witam Panowie ja trochę z innej beczki, mianowicie po 3 dniach udręki z mmnet104 udało mi się go skonfigurować, skompilować addsy i wypuścić przykładowy serwer w eter. W prawdzie mówiąc słabiutko znam C ale cały czas się rozwijam :P Dobra do rzeczy tak aktualnie wygląda przykładowy serwer zrobiony przez Propoxa [url=http://89.200.228.170/]http://89.20...
No to może zaproponuję własne podejście do USART w AVRasm2 (AVRStudio) : - Inicjalizacja (Częstotliwość zegara ustawiasz gdzieś wcześniej w kodzie #define F_CPU=14745600 - czy jakakolwiek inna, jaka jest, oraz #define USART_BAUD=19200 - mozna zmieniać do woli na odpowiednie ustawienia w terminalu, a zaglądanie do tabelek można sobie podarować) : #define...
A jak kompilowane są same źródła do postaci obiektów? Jeśli któryś plik źródłowy będzie napisany w c++ w którym to istnieje możliwość przeciążania funkcji, to kompilator analizując plik nagłówkowy będzie przyjmował możliwość przeciążania, a więc wewnętrznie nazwy będą posiadać sufiksy. Wtedy w pliku eeprom.h należy zrobić coś tego typu: #ifdef __cplusplus...
ricoh reset bębna wymiana grzałki aster cewka zapłonowy
Jak wyłączyć iPhone X lub około 10 urządzeń? Podłączenie przewodów gramofonu do wtyku DIN 5-pin