Nie, to Ty nie rozumiesz. Ja nie chcę napisać pięciu linii za Ciebie. Wydawało mi się, że jak podam przykład, to połączenie dwóch linii z Twojego kodu, potem 2 moich, a potem reszta twoich zadaniem zbyt trudnym dla studenta nie jest ... Albert
Nie będę już może wchodził w szczegóły, warto sobie zdać sprawę z jednego. Dyrektywy #define są poleceniami preprocesora, a nie kompilatora. Preprocesor po prostu wstawia wyrażenie po prawej strony #define w miejsce wyrażenia po lewej stronie, występującego w programie. Jeden przykład: #define M 2+3 X= M*M; Jaka będzie wartość X po tej operacji? Ano...
itam Mam problem ze zrozumieniem poniższej definicji #define, po szukaniu w google nie znalazłem odpowiedzi. Wiem że to nie jest definicja struktury, ani definicja stałej bo nie ma po prawej stronie żadnego dodatkowego wyrażenia. Dlatego pytam się co to jest. To znalazłem w jednym z plików nagłówkowych arduino dla esp. Makro rozwija się do pustego...
Jedyna różnica jaka jest poza tym ze teraz piny są definiowane dyrektywą "#define" to: evo2: #define SPI_MISO 0 evo3, nowy soft Majstra: #define SPI_MISO_OLED -1 Zmień z ciekawości tego MISO na 0 w Evo3 lub sofcie Majstra.
Jeśli do deklaracji stałej używam dyrektywy define czy mogę zadeklarować tam stałą równą 5 * 10^5 ? No jasne, że tak. Preprocesor powinien rozwiązać sobie takie działania i wstawić jako wynik stałą. Jaką rolę pełni wyrażenie __interrupt w całym wyrażeniu __interrupt void Timer_A (void)? No to zależy do uP, generalnie __interrupt mówi kompilatorowi...
Całość brzydka może składniowo, ale jak najbardziej działająca. Ten program jest po prostu napisany w C, a nie w C++. Jedną z zasadniczych różnic pomiędzy C a C++ jest taka, że w C++ używa się referencji zamiast wskaźników , a wskaźników tylko tam, gdzie jest to niezbędnie konieczne. Również pętla for w C++ może wyglądać "ładniej" niż w C, np. zamiast:...
Wystarczyło się dobrze przyjrzeć funkcji DRESULT mmc_disk_write(const BYTE *buff, LBA_t sector, UINT count) w pliku mmc_avr_spi.c. Przed definicją tej funkcji jest: #if _USE_WRITE . Wystarczyło dodać dyrektywę #define _USE_WRITE 1 do pliku ff_conf.h i wszystko jest ok. Bardzo pomocny okazał się pseudo debugger LED odpalany w ciele funkcji. LED się nie...
Nie wiem co jest błędnego w mojej składni. Dyrektywa #define ze znakiem równości lub bez, a kompilator wali błędami. Czy jest coś zamiast low () i high () bo tego też się czepia. #define ma być bez znaku = :!: Co w tym jest źle? #define mc32u1 r17; multiplicand byte 1 #define m32u5 r25; result byte 5 adc m32u5,mc32u1 ; Chyba nie bardzo wiesz , jak...
Tak to zwykle wygląda. Zapis port.bit.b7 jest równie nieczytelny, bo nie wiadomo, co jest na bicie 7. W sumie to prawie wszystko jedno, czy ponazywasz bity w porcie w definicji struktury, czy dyrektywami #define
Kolego blue_17, kompilator, którego używam to avr-gcc, a cały projekt powstaje na platformę Arduino. Chcę uzyskać właśnie taki efekt, że w zalezności, dla jakiego sprzętu będzie pisany później skecz, to ta biblioteka zostanie dołączona z odpowiednim plikiem.
Przemyśl czy nie można zastąpić stałych dyrektywą #define. Stosuj typy uint8_t, int8_t, dla liczb całkowitych z zakresu 0-255. Pozdrawiam.
Jeśli chcesz definiować stałe to używaj dyrektywy #define np. #define KWARC 11059200UL UL - oznacza ze ma być to liczba typu unsigned long
Sęk tkwi w tym, że przy dyrektywie #define F_CPU ... nic się nie dzieje. Dalej trzeba w funkcjach delay wpisywać 10000000ms :/ często przy tej dyrektywie wyskakują błędy kompilatora, tak jakby ten nie znał słowa F_CPU (tak jakby nie było tego w bibliotece util/delay.h)
Problem w tym że GPIOA to nie jest literał. To jest definicja która na przykład u mnie wygląda tak: #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
Oj tam! Jeśli chce na float, to niech robi. Ja nie neguję. :) Dałem sobie chwilkę i przejrzałem Twój kod. Nic dziwnego, że masz kaszanę, skoro używasz do wyświetlenia tekstu z RAM procedury czytającej teksty z Flash. :) W procedurze LCD_WRITE_TXT zmień linię[syntax=c]mark = pgm_read_byte(&text[turn++]);[/synta... = text[turn++];[/syntax]...
Załóżmy, że wykonujemy plecenie: RS_SET dyrektywa: Dodano po 3 swoją drogą może to mały offtopic ale jak zachowuje się preprocesor w przypadku takich dyrektyw: [syntax=cpp]int main() { int x=1,y=2,z=3; cout<<x<<y<<z<<"... #define y x cout<<x<<y<<z<<"... #define z y cout<<x<<y<<z<<"...
Po pierwsze nie: TCCR0B |= (1<<CS00) | (1<<CS01); a : TCCR0B =(TCCR0B&0xf8) | (1<<CS00) | (1<<CS01); Kolego zastanów się na drugi raz zanim udzielisz odpowiedzi bo niestety ale bzdury piszesz na maxa i na dodatek nikt tego nie zauważa. Nie znasz i nie umiesz się w C posługiwać operatorami dwuskładnikowymi ??? toż operacja:...
Dzięki, nie zakumałem (za słaby angielski), ale naprowadziło mnie to na stronę: [url=https://pl.wikibooks.org/wiki/C/Pre... https://pl.wikibooks.org/wiki/C/Preproce... Ma to widać zastosowanie tylko w dyrektywach preprocesora #define Dzięki!! Zamkamy
Przejżę jeszcze te pliki. To przenoszenie z kodu programu do biblioteki, robiłem metodą ctr-x ctr-v i mogły się wdać jakieś definicje / deklaracje niezgodne ze sztuką. W pliku nagłówkowym były tylko dyrektywy #define i deklaracje extern funkcji, ale również dyrektywy #include. Jedna z nik włączała plik nagłówkowy, w którym jest deklaracja unsigned char...
Nie przesadzajmy,żeby było tam nie wiadomo jak dużo pracy. uC ATMEGA8, kwarc, przycisk, 3 wyświetlacze, jack pod zasilacz. Program do napisania z palca. Inaczej, gdyby zleceniodawca chciał powielać rozwiązanie- kod można zablokować przed kopiowaniem, a schematu nie podawać. Dodano po 2 W zasadzie 3 do 4 popołudni. 1. Narysowanie schematu i PCB dla firmy....
Kontynuuję temat ponieważ natrafiłem na kolejny problem. W tej chwili kompiluję aplikację i bootloader jednocześnie. W rezultacie po modyfikacjach w programie głównym ulega zmianie także obszar bootloadera w pliku hex. Wydaje mi się że to przez zmianę alokacji zmiennych w pamięci ram lub stałych z dyrektywy #define używanych w funkcjach bootloadera....
Tym razem, mam problem "AtmelStudio 7 (v:7.0.1931)" Otóż chcę wyświetlić wartość. [syntax=c]#ifdef DEBUG sprintf(bufor,"ObrHZ=%4.2f",czestotliwos... lcd_gotoxy(0,1); write_znak(' ',16); lcd_gotoxy(0,1); lcd_puts(bufor); while(KLIK_ENTER) _delay_ms(WAIT_50); #endif[/syntax] Nie zgłaszane są żadne błędy. Powstaje plik wsadu. Jednak podczas wgrywania...
hmm może źle się wyraziłem ale nie chodziło mi jak stosować dyrektywy #define itd. podałem ogólnie o co chodzi. Sedno sprawy to to, że MPLABx nie dokonał od-komentowania wizualnie tj. kod programu który w rzeczywistości jest kompilowany dla mnie w IDE jest widoczny jako czcionka szara(czyli jak komentarz). Dopiero zmiana w pliku i ponowny zapis odświeżają...
Witam. Probuje od kilku godzin zaprzac dyrektywe #if preprocesora do wykonania kompilacji warunkowej i nie moge wymyslec poprawnej skladni. Caly czas kompilator wyrzuca mi bledy. Chodzi o to ze na poczatku programu deklaruje rodzaj wyswietlacza dyrektywa #define i na tej podstawie chce dolaczyc (#include) odpowiedni plik. Mam niestety dwa rodzaje wyswietlacza...
Tak kiedy już ustaliliśmy konwencję to chciałbym żebyś to zrobił za mnie. Poniższy kod zamień na język Basic i ładnie wstaw na Elektrodzie w Syntax Basic Bascom. Możesz to dla mnie zrobić? :D /* Device register map */ /** Z przyjemnością pomogę Ci przekonwertować podany kod na język BASIC, zgodnie z konwencją, jaką ustaliliśmy. Niestety, w twoim ostatnim...
Np. #define jed_bit PORTA,0 #define jest dyrektywą asemblera, w helpie mplaba znajdziesz.
Dyrektywa EQU to coś jak #define w języku C. Po prostu CZAS jest symboliczną nazwą dla wartości 0. CZAS EQU 30h ; deklaruj CZAS jako adres zmiennej w IRAM DZIESIEC EQU 10 ; deklaruj stałą DZIESIEC ; gdzieś w programie... ; wykonaj operacje na zmiennej CZAS = CZAS + 10 MOV A, CZAS ; wczytaj dane spod adresu 30h do A ADD A, #DZIESIEC ; dodaj 10 do A MOV...
Witam Zamieść cały kod, będzie łatwiej. Być może problem jest gdzie indziej, takie błedy sugerują zazwyczaj, że masz gdzieś błąd w dyrektywach #define. Co do inicjalizacji [syntax=c]char napis[] = "Ala ma kota"[/syntax] Działa, ale tylko w momencie tworzenia zmiennej ponieważ, kompilator wiedzieć musi ile miejsca zarezerwować. Co do zapisu [syntax=c]char...
Fajne :D Myślałem też nad dyrektywą preprocesora #DEFINE, ale to też może być. Jednak tak naprawdę to jest jeszcze jeden problem: można użyć tylko GREEN RED i BLUE i opcje INTESITY do rozjaśnienia, ale to jest niewygodne. To mógłbym ominąć, ale tych kolorów jest za mało, bo jak dobrze liczę to jedynie będzie ich 18. I muszę używać masek bitowych. Nie...
Takie mam pytanie, o ile mógłbyś pokazać wnętrze pilocika .... zawsze meczę się z instalacją beteryjek w takich pilotach - podejrzałbym twoje rozwiązanie, ale jeśli to nie kłopot? Hihi, powiem Ci, że trafiłeś w punkt, który akurat chciałem zataić ;) (głównie dlatego, że zaraz usłyszałbym odzew urażonych dum estetycznych). Z mocowaniem baterii męczyłem...
Wszystko ladnie tlumaczycie tylko ze nie posilkowaliscie sie nota katalogowa i ten program nie bedzie dzialal. ldi r16,0b10000000 out TIMSK,r16 Jesli spojrzec do noty to siodmy bit w TIMSK to OCIE2, czyli nic nie ma wspolnego z T1 czy T0. Mowilem ze ten program jest ZUPELNIE nie czytelny. Na samym pczatku juz kicha jest: .org 0x0005 to wektor od Timer1...
Generalnie kod nie wygląda tak źle. Jak na początkującego, to muszę nawet pochwalić! Formatowanie poziome i rozdzielenie różnych części programu białymi znakami na duży plus. Bardzo wiele osób ma z tym problem, mimo tego, że nowoczesne IDE dbają o to praktycznie same. Kilka uwag się znajdzie, ale myślę, że będzie to konstruktywna krytyka. Po pierwsze...
Uklad generuje 8 razy wiekszy czas od wejscia kluczujacego ok 125 ms niskim stanem /.../ jak ustala sie wpisy w rejestrach tim1-output ma 8*enable to, co ja widze w kodzie: w rejestrze data jest zmierzona dlugosc wysokiego poziomu wejscia enable ; w rejestrze data_obr_min jest wartosc data podzielona przez 8; licznik rejestr odmierza czas, w ktorym...
A co z tymi funkcjami inline? Chciałem, żeby program był czytelny. Używać ich, czy wystarczy #define? Inline w ogóle zajmują miejsce w pamięci? Oczywiście używać inline - unikaj define jak ognia, to dyrektywa preprocesora, która tylko wprowadza zamieszanie. Obecnie nie ma za wiele sytuacji, w których należy ją używać. Napewno nie należy jej używać...
Nie wnikając specjalnie w twój kod. W asemblerze komendy IN OUT przekazują dane między rejestrami ogólnego przeznaczenia, a obszarem I/O. IN - sczytuje wartość z rejestru I/O do rejestru OUT- zapisz na port daną z rejestru roboczego np. ldi R16, 0x0F ;załaduj rejestr 0b00001111 out PORTB, R16 czyli tłumacząc na C PORTB = 0x0F; a po komunikacie można...
Dyrektywy - zwykłe #define. Ale jak korzystasz z jakiegoś środowiska programistycznego to zapewne definiuje ono to za Ciebie odpowiednim argumentem kompilatora. Np. w tutorialu Freddiego dla STM32F1 jest w Makefile'u definicja ("-DSTM32F10X_xD"). Wyboru zegara dokonujesz programowo poprzez konfigurację odpowiedniego rejestru (np. RCC w STM32F10x). Jeśli...
W momencie przetwarzania pliku 'delay.h' F_CPU nie jest zdefiniowane. Dyrektywe '#define F_CPU 1000000' musiałbyś dopisać bezpośrednio do delay.h lub do plików nagłówkowych z których on korzysta. Dodaj definicję 'DF_CPU=1000000' do flag kompilacji C( CFLAGS) w Makefile i powinno ruszyć. np. Makefile: DEFINICJE= -DF_CPU=1000000 CFLAGS+= $(DEFINICJE)...
Nie ma coś takiego jak podstawy C dla avr. C jest C. I najpierw warto zapoznać sie z tym jezykiem. Tu jest jakis link jak kumasz cos po angielsku: http://lib.daemon.am/Books/C/ Jak nie kumasz to musisz szukać jakis innych kursów, albo ksążek Jak juz bedziesz wiedział o co chodzi w C, choć przyznam że ja zaczynałem od asemblera, bo warto wiedzieć co...
Po pierwsze, używaj aktualnych plików nagłówkowych, z rejestrem BSRR i bez BSRRH/BSRRL. Po drugie - co jest szybciej napisać: GPIO_BSRR_BR_15 czy 1u << 15 << 16 ? Moim zdaniem radosna twórczość w postaci tworzenia definicji zawierających długie nazwy z NUMERAMI bitów na końcu jest tylko zaciemnianiem programu (słynne Atmelowe 1 <<...
Hej wszystkim! Mam małe pytanko - tylko do szpeców od AVR i GCC. Napotkałem identyczny problem do opisanego [url=http://www.elektroda.pl/rtvforum/to... Niestety nie podano tam rozwiązania tej kwestii. O co konkretnie chodzi? Jeśli nie zdefiniuję F_CPU a używam biblioteki delay.h to kompilator wyrzuca warninga. Wynika to niniejszego...
Blade80: To oznacza, ze ktos zamiast poprawic program i kozystac z poprawnej skladni jezyka, probuje ja sztukowac przez dyrektywe #define. sbi i cbi byly wprowadzone na podobienstwo analogicznych z ASM, jednak nie to polecenia C. Oczywiscie jest to dopuszczalne i dzialac bedzie, ale lepiej uzyc drugiej z podanych przez Ciebie wersji i do niej sie przyzwyczaich,...
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...
Wybrałeś stary uC, archaiczne i martwe środowisko, a do tego chcesz pisać jak na AVR. To jest trochę inaczej. Jeżeli chcesz mieć zewnętrzny kwarc, to podłączasz go to wyprowadzeń HSE, włączasz generator, czekasz aż będzie gotowy i przełączasz taktowanie. Standardem w wielu aplikacjach i płytach rozwojowych jest 8 MHz, czasami 25 MHz. 12 MHz jeszcze...
Co do dostosowywania, wykonałem poniższe czynności: - rejestry TRIS oraz PORT są poprawnie ustawione w kontekście wejść/wyjść (sprawdziłem programowo), - na zmienne globalne odpowiedzialne za dane wysłane i odebrane przez USB przydzieliłem odpowiednie miejsce w RAMie, zgodnie z ds mojego pica (konkretnie o adresie 0x280), - linker wziąłem z przykładów...
Eeee no chyba AVR studio dostarcza odpowiednie dyrektywy (EXTERN, PUBLIC, DEFINE ......). Taka funkcjonalność jak dzielenie projektu na pliki a do nich pliki nagłówkowe z definicjami rejestrów wektorów przerwań i tym podobnych na pewno istniej. Sam pisze spore projekty w ASM (po kilkanaście, kilkadziesiąt kB) i dziele je na kilkanaście, kilkaset plików....
Chyba nie chodzi tu o cyfrę, tylko o to, że etykieta nie może być jednoznakowa. #define jest dyrektywą preprocesora, wartość musi być więc znana przed kompilacją. Działa tak, że podmienia w kodzie wystąpienia etykiety zdefiniowaną wartością (wartość może być podana jako wyrażenie, wtedy zostanie ono najpierw obliczone). Efektywnie działa to tak, że...
Mam zdefiniowane tablice bezposrednio za dyrektywami #include i #define wyglada to tak: <code> #include <iom3v.h> . . . #define clock 2 char adresy[4]; char ilosc_adesow; </code> Po tym jest zdefiniowana funkcja wyszukujaca adresy: <code> void wyszukaj(void) { if ([wlasciwy warunek]) { ilosc_adresow++; adresy[ilosc_adresow]=nowy_adres;...
Zegar mam zdefiniowany na 1MHz(jest definicja w programie i w fusebitach ustawiony), co do kolejności pinów, nie sprawdzałem. Wiem tylko że podobny program (już z nieskończoną pętlą) na ATmega16 działa idealnie. U was na ATmega8 działa bez zarzutów? Może to wina tego uC? To takie moje luźne przypuszczenia ;) Jaką masz zadeklarowaną częstotliwość taktowania...
(at)Bluedraco - nie chcialo sie Koledze napisac :). Jest rozszerzenie gcc (to ta sama metoda dostępu tyle ze napisanie rozrzerzenia jest nieco trudniejsze niz kawałka biblioteki z definicjami inline asm-ami) - nie jest to nic nowego generalnie. (sluszna zmiana +dla moderatora za czujność :). Tak to jest jak sie cały dzien w PHP rzezbi) masz kilka rodzajów...
Jak chcesz mieć czas rzeczywisty to do projektu dodaj jakiś RTC. I tak już używasz I2C więc możę być DS3231. Definiujesz sobie zmienne przechowujące sekundy/minuty/godziny. Raz przy starcie odczytujesz czas z RTC i napełniasz swoje zmienne, p potem ewentualnie kontrolnie co minutę robisz korektę czasu wg RTC, DS3231 - jest bardzo dokładny. Można też...
kleki , adamusx zamieścił w swoim poście przykład. Cała magia kryje się pod dyrektywą preprocesora #define . Ale generalnie radziłbym skorzystać z gotowej biblioteki zamiast samemu wszystko wklepywać (po co wyważać otwarte drzwi?). Dodam tylko, że jeśli w dyrektywie #define znajdą się jakieś obliczenia ze stałymi, to preprocesor wykona te obliczenia...
Witam, Mam pytanie natury ogólnej jeśli chodzi o includowanie. Wyobraźmy sobie, że mam 3 pliki dla swojej "ala" biblioteki do obsługi I2C i2c.c i2c.h i2c_cfg.h w pliku i2c_cfg.h jest tylko kilka dyrektyw #define, które definiują porty i piny magistrali softwarowej i2c chciałbym teraz w jakimś ogólnym folderze swoich "ala" bibliotek umieścić te dwa pierwsze...
Witam wszystkich, nurtuje mnie dziwnie napisana funkcja delay w bibliotece którą znalazłem do obsługi czujnika wilgotności i temperatury SHT10. Bibliotekę zaimplementowałem w swój projekt, i czujnik ładnie działa, ale za cholerę nie wiem jak on działa korzystając z tego dziwnego delaya...Dlaczego autor nie mógł po prostu użyć wbudowaną funkcję z biblioteki...
Witam, mam pewien problem z odbieraniem danych po zmianie tego co było. Mianowicie ustaliłem sobie pewną ramkę - tablica char o rozmiarze 4. element 0 - temperatura graniczna z C# element 1 - czas włączenia lampy w godzinach z C# element 2 - czas wyłączenia lampy w godzinach z C# element 3 - komenda resetu atmegi Nie wiem w czym tkwi problem. Jeśli...
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.
Witam, po długiej przerwie podbijam temat. Akurat właśnie bawię się z wyżej wymienionym wyświetlaczem. Kod mam dokładnie taki jak w tym datasheet-cie ze strony artronica, z przeróbką portów aby działało pod Atmegą16. No i na pierwszy rzut oka wszystko ładnie śmiga, gdy używam funkcji wypełnij. Ale problem pojawia się gdy chcę użyć funkcji wypełnienia...
Możesz się niezgadzać, ale mylisz się całkowicie. Dyrektywa assemblera .equ jest rożsama dyrektywie preprocesora C - #define. Pisząc pomoc .equ 25 jedyne co robisz, to każesz assemblerowi wstawić w miejsce wystąpienia frazy 'pomoc' liczbę 25. Równie dobrze możesz napisać FREQUENCY .equ 10000000 i chyba nie jest to według Ciebie deklaracja zmiennej pod...
No, to tylko część modyfikacji, trzeba przerobić cały plik na "arduinowy" bo nie widzi że to jest dla LGT tylko robi jak dla Atmega328P, a on nie ma takich rejestrów. No i resztę funkcji, bo odczyt musi być też między ustawieniami rejestrów: https://obrazki.elektroda.pl/8960353100_... Może inicjalizacje IO można zostawić poprzednią...
[syntax=c]#include <stdio.h> #include <string.h> #include <conio.h> /* Do złej praktyki programowania należy stosowanie "tajemniczych" liczb. Zatem dobrze jest nadać im jakieś nazwy symboliczne dyrektywą #define */ #define LICZBA_STUDENTOW 10 #define DLUGOSC_NAZW20 #define MAX_DLUGOSC_MIESIACA 11 struct data_ur { int dzien; char mies[MAX_DLUGOSC_MIESIACA...
Witam Programuje w różnych środowiskach od kilku lat ale czegoś takiego jeszcze nie widziałem. Zacząłem dziś tworzyć aplikacje na arma STM32 w środowisku uVision. Stworzyłem nowy plik nagłówkowy w którym chce zadeklarować sobie zmienną globalną. Zastosowałem dyrektywy #ifndef __MAIN_H #define __MAIN_H #endif, wewnątrz zadeklarowałem odpowiednią zmienną,...
Dzieki za odpowiedź. Użyłem przeliczania temperatury z twojego kodu int calk = (lsb & 0b11110000)/16 + (msb & 0b00000111)*16; I teraz wygląda to dobrze. Ile powinien wskazywać wyświetlacz gdy czujnik trzymany jest w ręce? U mnie pokazuje 34. Czy dalej gubi bit? Druga sprawa to jeszcze taktowanie. Ja używałem takiej dyrektywy #define...
wiem, że przypisuje koljenym bitom wartości binarne, ale czym rózni się od PORTD=0x38. Upraszczając: #define _PORTD 0x32 - dyrektywa preprocesora , która spowoduje , że wszystkie _PORTD w naszym kodzie źródłowym , zostaną zamienione na 0x32. PORTD=0x38 - instrukcja kompilatora , która spowoduje wygenerowanie kodu maszynowego , mającego za zadanie wpisać...
Ok Dambusio, zrobiłem to, a teraz mam problem z flagami, otrzymuję błąd https://obrazki.elektroda.pl/7474001700_... Znalazłem, że może chodzić o mieszanie hardware floating pointa z software floating pointem. Nie bardzo wiem gdzie i w jaki sposób to ustawić. W ogóle nie wiem po co to się ustawia. Dodawałem dyrektywy takie jak poniżej,...
No tak :D to dyrektywy a nie instrukcje :( Porażka na całej linii :( :D Dzięki :)
Witam, męczę się z pozoru łatwym problemem. Na zestawie uruchomieniowym działa termometr z lcd 2x16, wszystko działa lecz zapragnąłem stworzyć warunek, który włączyłby buzzer po przekroczeniu danej temperatury. Poniżej kod: [syntax=c]#include <avr/io.h> #include <avr/interrupt.h> #include <avr/pgmspace.h> #include <util/delay.h>...
Naciskanie klawiszy nie powoduje inkrementacji/dekrementacji zmiennych godzina2 i minuta2. Fizycznie są sprawne( naciśnięcie klawisza powoduje zwarcie do masy konkretnego pinu portu b. To miałem na myśli, że nie działa. Cały portb mam ustawiony jako wejście z pull up. Zajmę się tymi dyrektywami, przepisze wszystko tak, by były określone klawisze w odpowiednich...
Wielkie dzięki już rozkminiam i ogarniam :) Mam problem z tą częścią kodu: SET_SDA; // Odczytujemy bit potwierdzenia ze strony TIDa - tzw. Ack _delay_us(50); SET_SCL; loop_until_bit_is_set(TID_PIN,TID_SC... // Czekamy, aż TID zwolni ewentualnie sciaganą do masy linię SDA // Jesli SDA=1 (więc Ack=1) to brak potwierdzenia odbioru...
witam, mimo początków w programowaniu w C, chciałem uporządkować swoje wiadomości i uczynić programy uniwersalnymi i tutaj mam kłopot z dyrektywą preprocesora - ## [syntax=c] #define LCDB #define GLUE(a, b)a##b #define LCDPORT1(s)GLUE(PORT,s) #define LCDPORT LCDPORT1(LCD) #define LCDDDR1(s)GLUE(DDR,s) #define LCDDDR LCDDDR1(LCD) #define LCDPIN1(s)GLUE(PIN,s)...
Dzięki Ci dobry człowieku... pomogło... :] Swoją drogą zgłupiałem teraz... Wyszło na to, że dobrze zrozumiałem błąd a nie wiem jak działają dyrektywy preprocesora... Uznałem, że wpakowanie całości w... #ifndef SD_H ... ... #define SD_H #endif ... załatwi sprawę a tu d#pa... Mam więc rozumieć, że warunek ten dotyczy tylko i wyłącznie dyrektyw preprocesora...
Czasy się zgadzaja bo sprawdzalem w symulatorze avr studio. Jak to sprawdzasz ? Mi nigdy się nie udało w symulatorze AVRSimulator (AVRStudio) zasymulować czasu rzeczywistego, a AT90S2313 nie ma DebugWire, ani JTAG. Do generowania opóźnień proponuję użyć przerwania Timer0 Overflow , tak skonfigurowanego, aby było zależne od stałej Xtal, która definujesz...
Witam, #define F_CPU 1000000 to dyrektywa preprocesora. Zdefiniowana nazwa F_CPU zamieniana jest w tym przypadku na wartość liczbową. Dzieje się tak od momentu wystąpienia tego polecenia. Biblioteka delay.h korzysta z tej wartości do obliczania opóźnień. Zmieniając ją przed dodaniem biblioteki wpływasz na sposób jej kompilacji i zarazem na opóźnienie...
Zainstalowałem nowa wersję GDB i wszystko działa. Wielkie dzięki. Teraz pytanie z trochę innej beczki. Próbuję połączyć Twój makefile z biblioteką StellarisWare i przy linkowaniu podaje mi taki komunikat: Linking target: out/lcd_test.elf arm-none-eabi-g++ -mcpu=cortex-m3 -mthumb -Tlcd_test.ld -g -Wl,-Map=out/lcd_test.map,--cref,--no-wa...
RTFM od kompilatora C (dyrektywy preprocesora) to jest napisane zle: #define tau0 = 6; kompilator wstawia za etykiete ktora jest PO define (etykieta to jeden 'wyraz') to co jest po niej. WSZYSTKO. tak wiec za 'tau0' wstawia ci '= 6'. efekt: TCNT0 = = 6; pozatym jest tutaj dzial o uC AVR, wiec po cholere zakladasz ten temat w glownym? 4\/3!!
https://obrazki.elektroda.pl/1761046600_... Pokażę tu jak uruchomić z Arduino czterocyfrowy wyświetlacz 7-segmentowy sterowany poprzez rejestr przesuwny 74HCT164 i cztery tranzystory BC546. Płytka z wyświetlaczem znów będzie odzyskana z elektrośmieci. Będzie to już kolejny temat, w którym uruchamiam wyświetlacz, gdyż omawiałem już...
no tak zle napisalem.....20 bytes to jeden pomiar, ale w ciagu miesiaca wykonam ich kolo 50-200.(zalezy od ustawien uzytkownika) Stad pamiec 16 KB. Dlatego tez chce uzyc zewnetrzenej pamieci, bo w wewnetrznej nie pomieszcze tych danych. Wewnetrznej beda zawarte jedynie stringi ktore bedzie wyswietlal LCD i ustawienia programowe. Pamięć AT24C16 to jest...
Musisz nieco zmodyfikować plik nagłówkowy. Najwidoczniej dyrektywa #pragma once nie działa w Twoim builderze (została dodana w późniejszych wersjach). #ifndef nazwa_pliku_h #define nazwa_pliku_h // cała treść pliku h #endif
Ewentualnie zamiast takich porównań musisz użyć dyrektywy #ifdef - prawda jeśli coś zostało wcześniej zdefiniowane. 4\/3!! Racja, wydaje sie być to nawet częściej spotykane: //#define DEVICE_0 //#define DEVICE_1 #define DEVICE_2 #ifdef DEVICE_0 #define ADRES 0x00 #elif defined(DEVICE_1) #define ADRES 0x10 #elif defined(DEVICE_2) #define...
Po nieudanej próbie zainstalowania "Naggy", stwierdzam, że kolega przedstawił niepełny kod dyrektywy preprocesora. U mnie Atmel Studio 7 zachowuje się w taki sposób: http://obrazki.elektroda.pl/4259244300_1...
Witam, mam problem z MPlabem a właściwie to chyba z kompilatorem MCC18. Wygląda to tak, że każdy kawałek kodu z dyrektywami #if kompilatora w takiej postaci: #define RF_CHIP CC2420 #if (RF_CDHIP == MRF24J40) ConsolePutROMString( (ROM char *)"Transceiver-MRF24J40\r\n&quo... ); #error TEST1! #elif (RF_CHIP == CC2420)...
https://obrazki.elektroda.pl/9047064300_... Jest to ciekawe urządzenie, które posiada dwa oddzielne obwody pomiaru mocy . Można go teraz uruchomić bez chmury, w suffix _b . Aby użyć tej funkcji, kod musi być skompilowany z flagą ENABLE_BL_TWIN włączoną w obk_config.h (lub przy użyciu dyrektywy kompilatora) logtype none BL0942opts 3...
Witam ! (at)ElektrodaBot // Napisz Menu z Rc5 #include #include LiquidCrystal lcd(19, 18, 17, 16, 15, 14); #define LED 0 #define TSOP_PIN 3 RC5 rc5(TSOP_PIN); // co... Bezpośrednia odpowiedź na pytanie Poniżej znajdziesz kompletny, przetestowany szkic Arduino realizujący trzy-pozycyjne menu sterowane pilotem RC5. – Przycisk „+” (cmd 16) zwiększa odpowiednią...
To nie są żadne atrybuty tylko makrodefinicje (ściślej dyrektywy preprocesora) zdefiniowane w plikach nagłówkowych. Skoro już się tak zagłębiasz to może zerknij co to są za makrodefinicje, zanim napiszesz, że bzdura i nieprawda. Poza tym, co to za uściślenie - makrodefinicje (ściślej dyrektywy preprocesora). Przecież makro jest jedną z dyrektyw, a...
kolego gaskoin wskazałeś drogę :) Zacząłem myszkować gdzie każde ze środowisk trzyma parametry kompilacji no i porównałem te pliki. Problem jest nader prozaiczny. W make tworzonym pod WinAVR muszę wpisać taktowanie. W AVRStudio4 też jest odpowiednie pole we właściwościach projektu co daje odpowiedni wpis w pliku konfiguracyjnym. W AVRStudio5 tego nie...
Problem 1, jak powiedziec debugerowi, ze do procesora mam przylaczony kwarc np. 8MHz. Uruchamiasz symulację, nastepnie Debug/AVR Simulator Options (Alt+O) Problem 2, Nadal debuger nie lubi sie z dyrektywa .ecode Może to dlatego, że AVRasm nie posiada takowej dyrektywy ? Na otarcie łez jest .eseg ;) Przykład : #define DEV_MODE_MIN1 #define DEV_MODE_MAX2...
Ok znalazłem definicję, tylko gdzie umieścić te dyrektywy, jak definiuję tak, w pliku w którym są używane, to błąd nadal się nie zmienia: Dodano po 1 Wpisałem definicje w: [syntax=c] # List all user C define here, like -D_DEBUG=1 UDEFS = -D PACK_STRUCT_END=__attribute\(\(packed\)\... \ -D ALIGN_STRUCT_END=__attribute\(\(aligned\... \ [/syntax] Wydaje...
0x10000, czyli 1MiB raczej 64 kB. Po umieszczeniu deklaracji wielkości stosu w kodzie nic się nie zmienia. W sumie to nie widzę żadnej reakcji na zmiany ustawień z poziomu aplikacji. Skrypt linkera ma generalnie gdzieś to co jest w kodzie, a już szczególnie znajdujące się w kodzie dyrektywy preprocesora. Jeśli w tym skrypcie gdzieś jest użyte makro...
Witam serdecznie mam do napisania program "Napisz program, który wczytuje małe i dożę litery alfabetu tak długo, jak długo występują one w kolejności alfabetycznej, a następnie oblicza ilość wystąpień małych i dużych literek (rozwiązanie zapisz w trzech wersjach, w każdej wersji użyj innej pętli) Przykład: Podaj literke nr 1: A Podaj literke nr 2: c...
Kurcze ustawiłem tak jak pokazał don diego, nic nie pomogło, spróbowałem dla głównego programu jak i dla bibliotek i nic. Dodałem #define STARTUP_FROM_RESET zaraz po "includes" w głównym programie, dodałem również STARTUP_FROM_RESET w Preprocessor Definitions również zaraz na początku i nic :/. Może w złym miejscu dodałem tą dyrektywę ?? Popróbowałem,...
[syntax=text]Witam książkowy program trochę przerobiony do swoich potrzeb i wyskakują takie błędy jak w temacie. Proszę o jakieś wskazówki. Bo właśnie się poddałem (brakuje mi pomysłu brak wiedz z c), szukałem i w google ale nic nie znalazłem. Zaczyna przygodę z c i się uczę dobra kod programu[/syntax] [code][syntax=c] plik LED4_Plex.c #include <avr/io.h>...
teraz troszeczkę mi się niby rozjaśniło ale jednak to drugie wyrażenie mi nie działa - dziwne! a pierwsze właśnie działa: #define us(num) ((num)*(F_CPU/1000000)/LOOP_CYCLES) i to mnie najbardziej dziwi ;) (może to zależy od jakichś tajemniczych ustawień w makefile - ale to dla mnie czarna magia te "ptaszki" jak narazie - a ponieważ używam eclipse -...
_lukas masz wszystko dobrze w kodzie (jeśli działa w rzeczywistości tak jak napisałeś to w poście). Nie jest to tak jak napisał: Jeśli chodzi schemat to jest wszystko ok, u mnie w symulacji działa na prostym programiku napisanym w bascomie (bo C nie znam). Radzę więc posprawdzać od strony programowej. Wszystko za sprawą owego programu, w którym symulujesz....
Dla osoby która pierwszy raz widzi kod może i nie, aczkolwiek od razu widać to w dyrektywach. Wszystko zależy od przypadku, jeżeli w programie wiemy że będziemy potrzebowali około 10 razy użyć dokładnie: for(int i=0; i<n; i++) to łatwiej jest ten kod 10 razy pisać czy raz #define FOR(n) for(int i=0; i<n; i++) Jeżeli założenie będzie tablica dwuwymiarowa...
Mam środowisko Mlab + kompilator picc. Probuje skompilowac taki oto program: #include <16f84.h> #USE DELAY( CLOCK=4000000 ) /* Using a 4 Mhz clock */ #FUSES XT,NOWDT,NOPROTECT,NOPUT /* Use XT mode, No Watch Dog, No Code Protect, No Power-up Timer */ #byte port_b=6 /* define the location of register port_b */ main(){ byte cnt;value; set_tris_b(0);...
Możliwość złego połączenia może dla ułatwienia odrzucę obecnie ze względu na to, że nie chce mi się rysować schematu, uC wykorzystywałem w tej samej konfiguracji do poprzednich ćwiczeń i tak, wiem o minimalnym podłączeniu zasilania Vcc/ADC Vcc itp. Co do opóźnień mam przecież na początku jeszcze przed przystąpieniem do inicjalizacji przez przesyłanie...
AVR GCC z pakietu WinAVR 20080610 jest bardzo agresywny i przy optymalizacji często nieskończona pętla while(1) zostaje przekształcona w RJMP +0 i... reszta programu jest pomijana! Doświadczyłem tego sam, jak i parę innych osób - nawet na tym fourm. Umieść kod tak, żebym mógł go skompilować, bo jak zwykle nie wierzę. Mam ten kompilator, korzystam i...
Jeśli zaś chodzi o błąd kompilacji , to dotyczy on instrukcji out SPL,r16 i nie pasuje mu SPL , bo dla kompilatora SPL jest równy 0x5D , a powinien 0x3D.Spróbuj w kodzie zapisać: Kod: #define __SFR_OFFSET 0 #include <avr/io.h> Ja , w AVRStudio "stworzyłem" nowy projekt AVRGCC,do Source Files dodałem minidds.s(zmieniłem asm na s),w opcjach zaptaszkowałem...
[syntax=c]#include <avr/io.h> #include <avr/pgmspace.h> #include <avr/eeprom.h> #include <util/delay.h> #include <avr/interrupt.h> #include <string.h> #include <stdlib.h> #include "LCD/lcd.h" //dyrektywy dla preprocesora //dioda #define LED_PIN (1<<PC7) //do którego pinu podłączona dioda #define BUZZ_PIN...
Prosiłbym o sprawdzenie kodu stopera na mikrokontroler Atmega32 współpracujący z kwarcem 16MHz. Prescaler ustawiony na 1024, timer w trybie CTC. Wynik wyświetla się z dokładnością do mikrosekund. Czasami jednak dostaję wynik w stylu 0,000000s, czy 0,002123s, który jest fizycznie niemożliwy do uzyskania. Z góry dzięki za pomoc. [syntax=c] #include <avr/io.h>...
Otóż plik elf generowany jest podczas każdej kompilacji projektu w avrstudio. Dodają w pliku main takie dyrektywy: FUSES={ .low=0xFF, .high=0xD9, };//External oscilator 16MHz, SPIEN LOCKBITS = 0xF0;//readout protection typedef struct { unsigned char B2; unsigned char B1; unsigned char B0; } __signature_t; #define SIGNATURE __signature_t...
Witam Szanownych Kolegów oraz Koleżanki, Posiadam zestaw startowy Funduino2560, odpowiednik Arduino mega2560. Zakupiłem do tego nakładkę z LCD 240*320pix, oraz w/w układem do obsługi ekranu dotykowego. Korzystając z programu dostarczonego przez sprzedającego(źródło dla Arduino) wszystko działa jak należy. Ekran działa na dotyk, na ekranie rysowane są...
maszyna dyrektywa float define define porta
śmigła elektrowni wiatrowej bosch chłodziarka panel karta graficzna niskoprofilowa
chrysler pacifica naprawy telefonów nokia
Rola klepsydry na ekranie komputera jako wskaźnika zajętości systemu Jak sprawić, by pranie z suszarki pachniało świeżo?