Więc tnij jak pisałem, nie przejmując się czy działa tylko błędem. Wtedy znajdziesz i będziesz mądrzejszy ;-) Aha, a czy pies nie jest pogrzebany w braku static przed inline? Albert
Podmieniłem #define EVE_CFAF800480E0_050SC (ta z linii 104) na #define EVE_RVT35. Pytanie dlaczego akurat tutaj trzeba to podmienić skoro w 75 linii jest to samo #define EVE_RVT35 ?? Poniewaz wszystkie wczesniejsze #define masz w warunku #if 0 #endif czyli niespelnionym. Zreszta w CubeIde powinienes miec to zaznaczone na szaro (wylaczone). Czy zatem...
Czasem Arduino do czegoś się przyda Dodano po 2 Możesz dać przykład takiej krytycznej czasowo operacji? Problem jest a raczej był związany z buforem nadawczym uarta. Mam funkcję: Blokuj tylko przerwania od UART.
https://obrazki.elektroda.pl/2135111100_... Witajcie moi drodzy. Przedstawię tutaj płytkę Fubarino-Eth oferującą łączność USB i Ethernet opartą na 32-bitowym PIC32MX795F512H (512KB Flash, 128KB RAM) i nieśmiertelnym ENC28J60. Płytka ta stanowi moją wersję słynnego Fubarino-SD 1.5 od Projekt płytki Projekt ten jest moją przerobioną...
Po kilku godzinach program odpaliłem ..... podświetlanie się załącza dopiero po naciśnięciu kilka razy klawisza, monitor pokazuje start i numery naciśnietych klawiszy i to nie za każdym naciśnięciem. nie wiem jak "zatrzymać" dany ekran menu żeby zrealizować inna funkcje np; zmiana stanu wyjścia /* * sterownik który wykończy mnie i innych ..............
loocasm : funkcje static inline w nagłówku owszem mogą być, aczkolwiek nie powinno się tego stosować zbyt często - jeśli funkcja jest długa i nigdy nie została by wstawiona inline przez kompilator, to zostanie ona skompilowana w każdym module w którym jest używana z osobna - wynika to z tego, że kompilator ignoruje wtedy inline, po wstawieniu nagłówków...
Funkcje static inline zazwyczaj definiuje się w plikach nagłówkowych - ze względu na modyfikator static, który ogranicza zasięg widoczności definicji. Niemniej o tym czy funkcja będzie inlinowana decydują opcje kompilacji, a konkretnie opcja określająca koszt inlinowania - inline jest uznawane tylko dla funkcji poniżej określonej długości kodu. Z drugiej...
Nie moge z nią zrobić jak z inną funkcją bo funkcja przerwaniowa ma określony adres. A inna funkcja ląduje tam gdzie ląduje. Nie, to adres tej funkcji umieszczany jest w odpowiednim miejscu. No to jak skonstruować taki kod dla avr-gcc? Aby jeszcze był przenośny pomiędzy atmegami? Najlepiej static inline i w obu miejscach wywołać taką funkcję,
Nie. Kiedyś funkcja była jako static inline z atrybutem always_inline, no i kompilator skracał sobie bezpośrednie wywołania. Bez tego volatile komunikacja częściej zawodzi.
Hmm, zarówno zmiana optymalizacji, jak i dodanie atrybutu nie pomogło. Próbowałem nawet wywalić deklarację z pliku h, i w każdym pliku c dodawać extern inline void funkcja( void ); , żeby poszukał funkcji na zewnątrz, co prawda kompilacja przebiegała bez błędu, jednak dalej funkcja nie była rozwijana. N.B. to kompletnie bez sensu. Kompilator...
Nie jest to możliwe, gdyż optymalizacja _delay jest zabroniona - zawiera ona volatile. Dlatego też napisałem właśnie, że wydaje mi się to dziwne - nie miałem pod ręką kompilatora aby sprawdzić czy tam jest volatile w środku. Czyli mój trop był błędny. Dodatkowo nie ma atrybutu zezwalającego na zastąpienie wywołania wynikiem funkcji (__attribute__(const))....
Witam; uczę się języka C i dotarłem do programu w którym jest funkcja poprzedzona słowem Static. Coś w tym stylu: static Void nazwa_funkcji(void) i właśnie kompletnie tego nie rozumiem. Zmienna static która znajduje się wewnątrz funkcji jest dla mnie zrozumiała, ale oznaczenie funkcji jako static kompletnie nie rozumiem.
Cześć! Poszukuję wsparci gdyż powstał mętlik w głowie. Mam program, który komunikuję się z modułem GSM, używa wielu globalnych tablic, funkcji operujących na strumieniach typu strcpy, str n cpy, strstr, strtok, poniżej wklejam większość deklaracji dużych zmiennych: Dodano po 1 Przeniosłem deklarację StackPoint z .int1 do .int3 i program zaczął wyświetlać...
Trzeba dodać, że static inline będzie powielał kod w miejscach wywołania, co powoduje że kod działa szybciej (brak call'i) ale rozmiar kodu będzie większy. Ale jeśli użyjesz gdzieś pointera do funkcji to już funkcja skompiluje się normalnie. Takie rzeczy najlepiej czytać w dokumentacji do kompilatora, bo można czasem się nie miło zdziwić jaką mieli...
po 1. To gdzie funkcja się znajduje nie ma żadnego znaczenia. Jeśli jest static optymalizator może ją potraktować bardziej ostro. Inline jest tylko wskazówką. o tym czy zostanie ona rozwinięta w miejscu wywołania i tak zależy od jej długości zdaje się, że przy -Os może się tak zdarzyć bez dodania inline. po2. Inline należy stosować ze static. w innym...
(at)Tadzik ale o co Ci chodzi z tym static inline na końcu bo nie łapię? Taki twór służy "lepszej implementacji makra" w nagłówku. Nie pamiętam jak dokładnie standard mówi ale tak z głowy to z tego co pamiętam z dok. gcc: a. inline to sugestia, jakby co masz jeszcze attribute always_inline b. i tak musi być utworzona kopia tej funkcji, żebyś mógł pobrać...
1. Co to jest "nkoder"? Nie znam takiego urządzenia. Słyszałem coś o enkoderach. 2. nie prościej; static inline _Bool sprawdz_stan(int nkoderLewy) { return nkoderLewy < 9000; } ... o ile to w ogóle musi być funkcja 3. ustawiasz jakieś sterowanie gdy zatrzask == 1, a nie zmieniasz nic gdy zatrzask == 0, więc nic dziwnego, że robi dalej to samo, co...
Moim problemem jest podzielenie programu, który napisałem na stosowne moduły. Chodzi zatem o pliki *.c i *.h. Kompilacja przebiega właściwie dla nazwijmy to zwykłych funkcji. Problem jest natomiast z funkcjami zadeklarowanymi jako inline. Kompilator nie znajduje definicji takich funkcji. Przykład pliku attiny2313.c (fragment): [syntax=c] #include <attiny2313.h>...
Freddie Chopin : Funkcja inline jest wstawiana tylko w obrębie aktualnego modułu (kiedy to kompilator posiada funkcję w postaci nie skompilowanej i może ją w miejscu zoptymalizować do funkcji wywołującej). Jeśli funkcja nie jest statyczna, to mimo to pojawi się w ciele modułu jedna kopia ogólna, którą można wywoływać z zewnętrznych modułów (w nagłówku...
Jeśli chodzi o C to ja też zbyt zaawansowany nie jestem, ale czytam posty ludzi o wiele mądrzejszych ode mnie i stosuje się do ich rad. Jak funkcja nie jest inline to jest ona normalnie wywoływana co zabiera procesorowi kilka cykli na skok do bloku w pamięci, w którym ta funkcja się znajduje i jeszcze parę cykli na powrót z procedury. Jak funkcja jest...
Nie ma jednoznacznej odpowiedzi na to pytanie. Wszystko zależy gdzie ta funkcja zostanie umieszczona - w pliku nagłówkowym, czy źródłowym i od jej prototypu. O ile będzie w pliku źródłowym, a prototyp nie będzie zawierał static lub inline to funkcja zostanie stworzona tylko raz, niezależnie od ilości jej wywołań. Przy czym to też nie jest tak pewne...
Filtrować zasilanie zawsze warto. Ja przy swoim hc pin sclr podciągałem zawsze przez rezystor 470. Dodatkowo moja funkcja wygląda tak: [syntax=c]void Master_SPI_Transmit(uint8_t data) { SPI_RESET_SS(); SPDR=data; while(!(SPSR & (1<<SPIF))); SPI_SET_SS(); }[/syntax] Gdzie [syntax=c]static inline void SPI_SET_SS() { PORTB|=(1<<PB2); }...
Witam. Napisałem swoją bibliotekę do wyświetlacza w temacie, ale niestety są z nią problemy. [syntax=c]#include <avr/io.h> #include "HD44780.h" #include <avr/delay.h> int main(void) { LCD_Initalize(); for(int i=0; i<30; i++) LCD_WriteData('a'); while(1); return 0; }[/syntax] Na wyświetlaczu powinien wyświetlić się ciąg znaku "a", ale...
Witam, Przepisałem dokładnie cały przykład inicjalizacji interfejsu I2C z ksiązki Tomasza Francuza, a mimo to Avrstudio nie pozwala mi go skompilować. Szukałem pomocy w innych przykładach ale nie widze błędu. Prosze o pomoc. //Próbuje uruchomić akcelerometr mma7455l [syntax=c]#include <avr/io.h> // Załaduj bibliotekę input/output #include <avr/interrupt.h>...
no to doczytaj sobie jeszcze o takich rodzajach funkcji jak inline static itp - to znowu ci się wiele rozjaśni ;)
define w ogóle nie jest instrukcją strukturalną ani niczym co kompilator ANALIZUJE (sprawdza). Hmm... Z tego co wiem , a wiem o C jeszcze niewiele , to preprocesor "podmienia" makra na stringi i podrzuca to kompilatorowi. Poeksperymentowałem co nieco z inline i ... wygląda to nieciekawie w AVR-GCC.Bez optymalizacji kompilator generuje skok do podprogramu...
...Jak ktoś jest wstanie powiedzieć co jest ... NA PEWNO źle, to był bym wdzięczny za odpowiedź, bo cały czas stoję w miejscu. Na początek, sprawdź ten fragment: [syntax=c_loadrunner]uint16_t speed; void I2C_SetBusSpeed()// czestotliwosc taktowania magistrali { speed = (F_CPU/speed/100-16)/2; uint8_t prescaler = 0; while(speed>255) { prescaler ++;...
Próbuje rozgryść I2C w C, ale napotkałem mały problem. W kursie EDW do opóźnień używane sż wstawki assemblera, którego ni w ząb nie rozumiem. Zastanawiałem się czy jest możliwość zastąpienia ich opóźnieniami pisanymi w C? // Funkcja dłuższych opóźnień #if I2C_nhalf < 3 // Nic #elif I2C_nhalf < 8 static void i2c_xdelay(void) { NOP();...
Mam kod programu w którym definiuję stałą F_CPU: [syntax=c] #include <util/delay.h> #define F_CPU 8000000L //definicja częstotliwości zegara [/syntax] W bibliotece delay.h także jest zdefiniowany F_CPU i wygląda to tak: [syntax=c] #if !defined(__DOXYGEN__) static inline void _delay_us(double __us) __attribute__((always_inline)); static inline...
Dzięki, tak intuicyjnie wyczuwałem. Czy byłbyś jeszcze uprzejmy spojrzeć na kody dla Mega, które przesyłają te dane bez oczekiwań, a nic się nie dzieje? W którym miejscu tych funkcji jest oczekiwanie na gotowość Slave i jak to przełożyć na funkję nadającą w Xmega? Dodano po 1 Chyba wreszcie zbliżam się do jakiegoś finału. Podłączyłem analizator na magistralę,...
Wlaczam. Wywoluje w mainie enable_irq #define IRQ_MASK 0x00000080 #define FIQ_MASK 0x00000040 #define INT_MASK (IRQ_MASK|FIQ_MASK) static inline cpu_t get_cpsr(void) { cpu_t val; asm volatile ("mrs %[val], cpsr\n":[val]"=r&q... return val; } static inline void...
Witam, Mam następujące kłopoty (błedy przy kompilacji). Zastanawiam się, czemu niektore rzeczy nie są opisane w ksiażce :/ Np. jak powinna wyglądać definicja I2C_Error? Jaka jest potrzebna biblioteka avr zeby niktore funkcje I2C były "rozumiane" przez kompilator? W programie głównym dodałem #include <util/twi.h> ale zostało kilka błędów. Proszę...
Witam Temat być może pojawia się po raz wtóry, ale poprzednie tematy nie rozwiązały problemu. Chcę wykonać prosty zegarek cyfrowy oparty na uC ATMEGA8(L) oraz wyświetlaczu LCD 2x24. Wszystko chodzi bez zarzutów, gdyby nie fakt złego odliczania czasu przez mój uC. Otóż mój ATMEGA8 pracuje z kwarcem zewnętrznym 8MHz + dwa kondensatory ceramiczne 22pF...
Typy... od 19 lat mamy w C typy o jawnych rozmiarach - uint8_t, int16_t itd.. Też się nad tym zastanawiałem, jednakże jeśli ktoś nie trafi na kompilator gdzie typ unsigned char ma inną wielkość, to nie chciałem ograniczać rozmiaru danych. Przecież nawet same wskaźniki są różne w zależności od platformy. Dobra zasada - jeśli coś nie może być ujemne...
Boje się zapytać co w tym kodzie zajmuje tyle miejsca... - Nazwy funkcji/zmiennych zamieniane są na adresy, więc czy funkcja nazywa "konstantynopolitanczykiewiczowna" czy nazywa się "a" w pamięci zajmie tyle samo miejsca. - Między switchem a ifami nie ma różnicy. - Włącz sobie optymalizację. - Pozamieniaj zmienne globalne na automatyczne, podejrzewam,...
Witam. Prosiłbym o pomoc w znalezieniu błedu bo już sam nie wiem po prostu co jest grane. Wciąż nie moge otrzymać żadnej wiadomości od DS1307. Wzorowałem się na książce Tomasza Francuza, na internecie oraz na temacie elektrody: [url=http://www.elektroda.pl/rtvforum/vi... Mój kod: Main.c [syntax=c] /* Created at: 10.12.2015...
Witam, Jestem w trakcie przerabiania kursu z EdW http://sklep.avt.pl/photo/product_info/c... Pracuje na zestawie startowym ZL3AVR http://obrazki.elektroda.pl/1437402200_1... Zamieszczam kod programu: ////////////////////////////////////////... // main.c - testowanie...
Witam, ostatnio zabrałem się za opanowanie interfejsu I2C (TWI). Staram się od dobrych 2 dni odczytać dane z układu PCF8583 (RTC). Napisałem gromadę funkcji do obsługi I2C, większość pochodzi z książki "Język C dla mikrokontrolerów AVR" więc sądzę że nie mają błędów. Pierwszym problemem jest adres jaki ma układ ma podłączone wejście A0 do zasilania...
1. void ReadEncoder(); #define GLUE(a, b) a##b #define LEDPORT1(s)GLUE(PORT,s) #define LEDPORT LEDPORT1(LED) #define LEDDDR1(s)GLUE(DDR,s) #define LEDDDRLEDDDR1(LED) a) Co to jest? Coś jak podprogram? Ale dlaczego zakończony średnikiem? Pierwsza linia to deklaracja funkcji, dalsze linie...
Witam, mecze się z DS18B20. Naskrobałem poniższy kod ale wydaje się działać połowicznie. Ale po kolei, pierwsze co robię to ONE_WIRE_Init (), a potem ONE_WIRE_Read_Tmp(). I przy tej drogiej funkcji mam problem bo zwraca ona za każdym razem 0x0808 (jak by komendy nie zmienić zawsze tak samo, a nawet bez komend). ONE_WIRE_Init_Sequence() działa poprawnie...
jedyne co mogę jeszcze dołożyć to definicja struktury [syntax=c] struct connections { uint8_t detect : 3; //nr. detektora uint8_t triac : 3; //nr. triaka uint8_t setFlag : 2; //znacznik ustawienia fazy }; // zmienna connections ma zapisane w sobie // kolejności występowania faz oraz przyporządkowuje // do fazy detektor i triak volatile struct connections...
składanie zmiennej przez |= miało pokazać co musiałbym zrobić aby uzyskać podobny kod wynikowy do tego co wygenerował kompilator. I ja tak nie piszę lecz takie coś na podstawie prostej operacji wygenerował kompilator. Tak wygląda mój kod bo widzę, iż ktoś sięciągle czepia przykładu jak mniej więcej wyglądać musiałby kod źródłowy aby uzyskać taki dziwny...
Przystąpiłem do lekcji 10. Zrobiłem analogiczne poprawki, jak w lekcji 9, ale niestety również nie mogę skompilować kodu. Poświęciłem praktycznie cały dzień na szukaniu przyczyny. Pojawiają się takie błędy przy kompilacji: http://obrazki.elektroda.pl/4932303600_1... Tutaj zamieszczam kod programu po moich poprawkach: ////////////////////////////////////////...
Zrobiłem sobie takie uśrednienie: volatile int ADC_sr; //******************* ISR(ADC_vect) { int ADC_nowe; ADC_nowe=ADC; ADC_sr=(ADC_sr+ADC_nowe)/2; } No i skacze- co 2/100V. Tu cały kod- jakby się komuś chciało czytać: #include <stdint.h> #include <avr/io.h> #include <stdlib.h> #include <avr/interrupt.h>...
gaskoin- Twój kod minimalnie przerobiłem: #include <avr/io.h> #include <avr/interrupt.h> #include "HD44780.h" #include <stdlib.h> #define NO_CHANNELS 4 #define MIN_SOLAR_VOLTAGE 13.0 #define MIN_BAT_VOLTAGE 11.0 #define MAX_BAT_VOLTAGE 14.0 volatile float Voltage[NO_CHANNELS]; volatile uint8_t VoltagePointer; volatile...
Kolego kwarc mam 12MHz. Fuski oczywiście dobrze ustawione. Sprawdziłem też na wewnętrznym 1MHz i 8MHz - też nie działa. (Oczywiście we właściwościach projektu też zmieniłem) Hehe, dopiero teraz zauważyłem, że sprawdzam flagę zajętości we funkcji do jej sprawdzania ;) To też poprawiłem, ale dalej nie działa. EDIT. OK, wiem już co było nie tak. Dodanie...
Michał458 napisał: int function(void) { Gdzie ta funkcja się kończy? (nazwa też jakaś "mizerna" ) Brakuje nawiasu "}" przed static inline void lcd_sendHalf(uint8_t data) Funkcja kończy się na końcu całego kodu linia 297 Brakuje nawiasu "}" przed static inline void lcd_sendHalf(uint8_t data) A dlaczego on ma tam być skoro nie jest otwarty wcześniej?...
Witam Forumowiczów. Od dłuższego czasu staram się uruchomić wyświetlacz LCD GDM1602a , jednak nie udaje mi sie , problem leży w inicjalizacji jego , bo podłączenie mam poprawne. czytam na forach ze niby GDM1602a jest kompatybilne ze sterownikiem HD44780 , lecz chyba nie do końca bo w GDM1602a jest sterownik o nazwie : Built-in controller (S6A0069 or...
Witam poniżej program na procesor Atmega 128 w c++ . kompilowany jest w AVR Studio (WinAvr) problem polega na tym że po wykonaniu pierwszej funkcji program zamiast wykonywać kolejne wychodzi i zaczyna od początku. w programie głównym po naciśnięciu klawisza zostaje wywołana funkcja lcd_init(); w niej wykonywane są kolejno instrukcje aż do funkcji lcd_send(0x03);...
Dokładnie tak jak napisał Matejkos Napisałem ten kod na szybko i działa.. Ale zrobiłem go nie tak jak powinno się robić (w przerwaniach mam dosyć długie funkcje, a przerwania powinny być możliwie jak najkrótsze). Jeśli dodałbym ten kod to ktoś może pomyśleć, że tak jest dobrze i tak będzie robił, a tego bym nie chciał :) Jak sobie chcecie :) Tak jak...
Witam wszystkich. Uzywam Eclipse + OpenOCD (0.9.0) + GCC. Do tej pory używałem STM32F103 (Cortex-M3), a teraz przesiadłem się na STM32F373 (Cortex-M4). Wziąłem ze starego programu skrypt linkera, startup, vectors.c i posklejałem do kupy odpowiednio je modyfikując. Program generalnie odpala się, mogę sterować GPIO. Następnie spróbowałem uruchomić SysTicka....
inline static static inline funkcja inline
wzmacniacz hifonics schemat volvo silnika zestaw bluetooth radiu
jakie tanie dobre narzędzia jakie tanie dobre narzędzia
Zanussi 220l – demontaż panelu sterowania w zamrażarce, śruby PH2 i Torx T20, instrukcja HP t630 Realtek RTL8111HSH, Intel 3168/8265 – sterowniki karty sieciowej LAN/Wi-Fi