Tak, ma. Proponowałem Ci we wcześniejszym poście przeczytanie strony AvrSide. Gdybyś mnie posłuchał to wszystkiego byś się dowiedział. Jest tam taki fragmencik: Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); //...
Przecież w C jest dzielenie na integerach. Możesz pomnożyc okres przez np. 100 (jak chcesz w procentach), lub 128 czy cokolwiek innego, jak ci tzreba skalować i dzielić przez czas stanu. Uwaga na przekroczenei zakresów!! Być może zmienna przejściowa typu long.
Proponuję zapomnieć o sbi i cbi . To jest dobre w assemblerze ale w C można się na tym przejechać (w zależności od wersji kompilatora). Na stronie # Avr-gcc nie posiada składni bezpośredniego dostępu do bitów zmienna.numer_bitu. Operacje na bitach wykonujemy używając iloczynu i sumy bitowej, np. dla bajtu: zmienna |= _BV(numer_bitu); // ustawienie bitu...
ODp2: Zeby wyswietlic folat na LCD musisz uzyc funkcji printf lub dtostrf ( polecam ta druga bo zajmuje znacznie mniej pamieci ) . Itoa i ltoa konwertuja tylko liczby staloprzecinkowe. Funkci dtostrf szukaj w stdlib.h w katalogu WinAVR, jest tam opisana. ODP1: Jak masz zadeklarowana zmienna p_gora_1?? Jesli nie float to zadeklaruj ja jako float, albo...
W avrgcc jest takie makro jak : _BV() Tak się operuje na bitach: zmienna |= _BV(numer_bitu); // ustawienie bitu zmienna &= ~_BV(numer_bitu); //zgaszenie bitu zmienna ^= _BV(numer_bitu); // przełączenie bitu Ze sprawdzaniem ustawienia bitu nie powinno być problamu.
Dołącz biblioteki do liczb zmienna przeciekowych;) Float coś tam w opcjach projektu chyba;) Nie mam teraz WinAVR wiec ci nie powiem gdzie dokładnie jak zainstaluje to dam edita - chyba ze znajdziesz
Chopin, zeby bylo jeszcze smieszniej to ((char*)ptr)++; w gcc 4.3 (g++) z WinAVR kompiluje sie ok, a w gcc 4.4 (g++) z Fedory12 64-bitowej zwraca blad j.w. Atom - twoj przyklad generuje ciekawy blad - wskaznik wskazuje na zmienna tymczasowa, ktora w chwili odwolywania sie do wskaznika juz nie bedzie istniala. Efekt - zachowanie niezdefiniowane. Kompilator...
No coz myslalem ze troche kumasz o co chodzi w Makefile i bedziesz w stanie dopasowac sobie to co napisalem do wlasnych celow no ale mylilem sie ;-).Poprawilem ten Makefile ale nie mam mozliwosci go przetestowac wiec jakby jakies bledy byly to daj znac ale najpierw sprobuj pokombinowac w ten sam desen co ja.Dodalem wygodna zmienna OBJDIR tak aby tylko...
U mnie zmienna i jak również i2 ładnie się zmienia. Jedynie ta deklaracja jest coś nie tak: TCNT0= tau0; Pracuję na AVR Studio 4,12
Znalazłem conajmniej 2 błędy 1. Zadeklaruj enterRx jako volatile 2. Najpierw przypisujesz zmiennej enterRx wartość 1, a potem sprawdzasz czy zmienna ma wartość '1' (czyli 49) Spróbuj z tymi 2 zmianami i powinno zacząć chodzić Mirekk36, może on ma procedury LCD buforowane (ja zwykle takich używam), wtedy to niebyłby taki wielki błąd, ale wnikał niebędę.
Witam, 1. UL to jest unsigned long (32bitowa liczna bez znaku) standardowo wszystkie stale liczby traktowane są jako int ponieważ 4000000 nie zmieści się na 16bitowym int , wiec musi być jako long lub też unsined long 2. uint8_t to tak naprawde unsigned char w pakiecie WinAVR znajduje się plik inttypes to właśnie w nim są zdeklarowane podobne typy zmiennych...
A czy można wiedzieć w takim razie ile do dyspozycji mam pamięci RAM (lub ile przy standardowej optymalizacji w winavr zajmuje stos)? Pozdrawiam Ja stosuje nastepujacy sposob. W dowolnym przerwaniu odczytuje wskaznik stosu do zmiennej porównując z poprzednia wartoscia i zapisuje mniejsza. Puszczam program naciskam co mam nacisnąc staram sie wykonac...
Witam szukałem w Internecie ale nic na ten temat nie znalazłem. W WinAVR gdy próbuję użyć zmiennej o nazwie SP to wyskakują jakieś dziwne błędy podczas kompilacji. [syntax=c]int SP;[/syntax] Pytam tylko z czystej ciekawości dlaczego nie można tak nazwać zmiennej? Pozdrawiam A.T.
Witam ostatnio założyłem temat [url=http://www.elektroda.pl/rtvforum/to... ale przez moje nie dopatrzenie zostało no wyrzucony dziękuje wszystkim za pomoc chwilowo (po poprawkach) zegarek wygląda tak [syntax=basic4gl]$regfile = "m32def.dat" $crystal = 16000000 Config Timer0 = Timer , Prescale = 256 On Timer0 Przerwanie Dim Licz As Byte...
zmienna jest typu double, tak jak w dokumentacji do winavr
Zmienna powinna być typu: volatile char Temp; wtedy będzie dostępna wszędzie.
To załóżmy taka sytuacje.. Obsluga przerwania Timera1 zlicza nam czas. Po okreslonym czasie,nastepuje zalaczenie portu. Jezeli licznik do zliczania czasu w WinAVR bedzie zadeklarowany jako zmienna lokalna i nastapi reset to czy licznik bedzie dalej prawidlowo zliczal?fakt ze wystapi zwłoka wynikajaca z kasacji zawartosci timera1. w bascomie juz taka...
1.Masz fatalny styl tego kodu, nie potrafię go czytać. To z Basiców? 2. zmienna b jest za krótka (pośrednio o tym piszesz)
Mógłbyś wytłumaczyć mi co oznacza zapis: sect4 = 512 * (sect3+1); ??? parametr segment pozostaw 0. spróbuj zmieniać sect4 zmienna sect4 nie może przekroczyć 0xFFFF
wiem ze static powoduje ze zmienna nie jest czyszcona po wyjściu z funkcji ale tutaj nie zauwazyłem zebym miał taka sytuacje.......;/
W main nie, ale są mi potrzebne, bo zmienna ucDigit2_char to jedna z cyfr wyświetlana na wyświetlaczu, a ucBlink steruje miganiem wyświetlacza. Więc zależy mi na nich.
po co to 'static'? 4\/3!! static przy zmiennej globalnej powoduje, że zmienna jest widoczna tylko w tym pliku w którym została zdefiniowana. Jest to tzw ukrywanie zmiennych globalnych
W makefile masz np wywołanie avr-size.exe: size: ${TARGET} (at)avr-size -C --mcu=${MCU} ${TARGET} Teraz analogicznie dodaj w swoim makefile wywołanie batcha ktory bedzie obsługiwał liczenie buildów. Prosty licz_mi_buildy.bat moze wygladac tak: (at)echo off remsprawdza czy plik z wersja juz istnieje if not exist buildnumber...
Wciąż nie wiem, czy to ja gdzieś robię błąd, czy też jest to wina kompilatora - pierwszy raz mam takie zjawisko, a zawsze bezboleśnie używałem różnych takich konstrukcji.... Ponieważ jest to zmienna lokalna może być przechowywana tylko w rejestrach procesora lub cos w tym rodzaju. Spróbuj ja zrobić volatile.
No właśnie.. nich ktoś mi wytłumaczy tak na chłopski rozum co oznacza słowo volatile? Do czego to się używa? Oznacza tyle że zmienna ma być przechowywana w pamięci i wszystkie operacje na niej nie będą optymalizowane. BYŁO JUŻ O TYM KILKA RAZY NA FORUM!!!!!
IDE to środowisko, edytor np. :AVR Studio, Eclipse czy inne. Czy ta zmienna była wcześniej zadeklarowana jako "double"? Sprawdź właściwe użycie tej zmiennej. A może kompilator protestuje, bo przekroczona jest pojemność pamięci procka, może operujesz na pamięci już nie dostępnej?
Witam, przeglądałem posty na temat pól bitowych, sam ich czasami używam, ale potrzebuje stworzyć tablice pól bitowych, a dokładnie to chcę odwoływać się do pól poprzez indeks, a nie tylko nazwe. Wydawałoby się to proste: struct TPole{ unsigned char bit:1; }; volatile struct TPole Pole[100]; i teraz odwołanie powinno wyglądać :...
Slowko kluczowe extern przed deklaracja obiektu najczesciej stosowane jest w plikach naglowkowych programu. Powoduje ono, ze w tym konkretnym miejscu nie jest przydzielana pamiec dla obiektu, a wiec nie mozna w jednej linijce zdefiniowac tej zmiennej [przypisac wartosci poczatkowej] //naglowek extern char zmienna; //plik zrodlowy zmienna =12; Poprostu...
Problem dotyczy WinAVR (GCC) i ATmega32. Chciałem zmusić kompilator aby zmienną 32bitową (long) umieszczał w rejestrach. Dla zmiennych 8 bitowych (char) działa coś takiego register unsigned char zmienna asm("r4"); ale jak to zrobić dla zmiennej 32 bity ( ew. dla 16 bitowej). Będę wdzięczny za pomoc.
Nie znam się zabardzo na C, ale tak na oko to nie możesz porównywać zmiennej typu char (bo chyba tego typu jest zmienna znak) z typem liczbowym czyli znak>0 nie może być wykonane, bo porównujesz dwa różne typy. spróbuj dać znak>chr(0)
Oki rozumiem, napisałem tak: [syntax=c]//zapis do eeprom twistart(); if ((TWSR & 0xF8) != (TWINT)) ERROR(); else { twiwrite(0b10100000); twiwrite(2); //adres twiwrite(123); //wartosc twistop(); _delay_ms(200); }[/syntax] No i wchodzi w if-a i wyrzuca komunikat o błedzie. Czyli co mam zła funkcje twistart(), tak.?? EDIT: Zauważyłem jeszcze ze przy zakomentowaniu...
Zadeklarowałem zmienna w podany przez Ciebie sposób, spróbowałem też skorzystać z <pgmspace.c> deklarując: prog_uint8_t znaki[3] = {0b01010000, 0b11110011, 0b00011010} Ten sam efekt. Niestety po typowym odwołaniu się: PORTB = znaki[1]; wyciąga mi z pamięci śmieci. Dlaczego?
A co, przepraszam bardzo, ma wspólnego zmienna unsigned char (stałe bez znaku, 8bit -0-255) z obsługą liczb zmiennoprzecinkowych...?.?.? Owszem jeżeli użyjemy faktycznie typu float (i pochodnych) to program wynikowy jest wielokrotnie większy... Tyle, że tutaj kompletnie nie wiedzę związku...!.!.! No chyba, że w bibliotece delay jest zrobiony jakiś kompletny...
Wykonałem ten kod i otrzymałem: avr-gcc: CreateProcess: No such file or directory PATH to plik, czy wpis w jakimś pliku? Przenieś projekt gdzie indziej. Przeinstaluj jako administrator winavr. PATH to zmienna środowiskowa.
Wielkie dzięki za wszystkie wyjaśnienia, dużo mi pomogly. Temat troche zeszedl na inny watek ale ja powróce jeszcze do moich wątpliowsci. Chcę mój wskaźnik na strukturę albo zmienną (no właśnie co lepiej?) tworzącą tą strukturę w pamieci przekazywac jako parametr różnych funkcji. I teraz jak jest lepiej? typedef struct TFrame_LCD { uint8_t line1_start;...
Nie, pamięci nie brakuje. Zajęte jest ok 40% pamięci kodu i ok 80% na zmienne. To atmega128. Nie łatwo ją zapchać. Najbardziej dziwi mnie to że program wykrzacza się tylko na tej jednej zmiennej. Niezależnie od jej nazwy. Jak mówiłem w programie jest więcej zmiennych podobnego typu i zastosowania ale problem jest tylko z tą. Dodano po 15 Zabijcie mnie...
Jeżeli odpaliłbyś Windows 3.11 na teraźniejszych komputerach różnica do Windows 8, czy nawet XP byłaby taka jak AVR Studio do AS. Czy jednak oznacza to, że Win 3.11 jest lepszy? Nie bardzo wiem o czym dyskutujesz - napisałem przecież wyraźnie - mam zainstalowany na mocniejszym komputerze Atmel Studio 6, ale mój laptop nie wyrabia z tym środowiskiem,...
Witam. Mam taki problem i probowalem juz kilka sposobow. Nie weim jak przekazac zmienna z klasy do programu glownego ( nie wiem nawet czy to jest klasa ) W programie glownym robilem kilka modyfikacji i oto przyklad np: u08 chwila[3]; pcf8583GetTime(chwila); godz = chwila[2]; min = chwila[1]; sek = chwila[0]; rprintf("...
W podręcznikach które mam rzutowanie opisane jest bardzo pobierznie.. Napewno nie ma nic o rzutowaniu na const. Const zabezpiecza przed zmianą przekazywanej zmiennejv i modyfikacją wewnątrz funkcji. Skoro więc zmienna char * x musi być przyjęta jako const char * x to rzutowanie powinno odbyć się niejawnie funkcja (const char * y) funkcja(x) a mimo to...
Piszę program który w założeniu ma posiadać pamięć ustawień. Dokładniej jest w nim 11 zmiennych oraz 128 możliwości ich ustawień (128 banków pamięci dla tych 11 zmiennych). Każda zmienna jest 8bitowa. No i dostaje od kompilatora (WinAVR ) dziwne komunikaty: warning: pointer targets in passing argument 1 of 'eeprom_read_byte' differ in signedness W kodzie...
Pijopic : A ja proponuję czytać dokumentację od avr-libc, ten temat oraz temat, którego link dałem (opisałem tam problemy z _delay_ms). _delay_ms(500) nie będzie działać - przy zegarze 1MHz maksymalne opóźnienie wstawiane przez _delay_ms wynosi 262.14ms. The maximal possible delay is 262.14 ms / F_CPU in MHz. . Nie wprowadzaj znów w błąd. rrata : równie...
Witam ! Tracąc dziesiątki godzin szukania w Internecie i dwa tygodnie prób i błędów z w/w LCD proszę o pomoc (i pokazanie błędu) Dołączam kod w http://obrazki.elektroda.pl/7865128700_1... [syntax=c][/syntax] // --------- sterownik LCD -> chyba NT7108/NT7107 (podobny do KS0108 ) --------------- // ATmega 128 + POWERTIP -> LCD PG12864...
Probuję oprogramować kość DDS (AD9835); częstość generowanego sygnału programuje się wysyłając cztery razy 16bitowe słowa, w każdym słowie jest 8 bitów tworzących 32 bitowe słowo określające bezpośrednio częstość. Tego za bardzo nie rozumiem. 16-bitowe słowo, które ma 8 bitów? Czy chodzi o to, że poza danymi o częstotliwości wysyłane jest coś jeszcze,...
Witam Ostatnio chciałem wykonać prosty wyświetlacz widmowy, ale po zlutowaniu okazało się, że nie da się zaprogramować procesora poprzez gniazdo KANDA na PCB. Wyjąłem procesor, dolutowałem się do odpowiednich wyprowadzeń i go zaprogramowałem(przy okazji tymczasowo zablokowałem, bo ustawiłem fusebity na zewnętrzny kwarc). Jednakże układ nie ruszył. Ciągłość...
Rozumiem że w zmiennej tekstowej masz liczbę zakodowaną jako ASCII, można to przekonwertować na różne sposoby w int, np. w WinAVR można tak(cytat z dokumentacji): 6.19.4.4 int atoi (const char * string) Convert a string to an integer. The atoi() function converts the initial portion of the string pointed to by nptr to integer representation....
Witam Używam AVR Studio 4 + najnowsze WinAVR Mam taką funkcję: void czekaj_us(unsigned int stala) { unsigned int i; for(i=0;i!=stala;i++) { asm("nop"); } } Ustaliłem sobie mnożniki dla odpowiednich argumentów i tak np, żeby uzyskać opóźnienie ok 20µs tak wywołuje funkcję: czekaj_us(20*0.58);...
Mam uC Atmega8 a dokładnie płytkę uruchomieniową ZL2AVR i uczę się programować tego procka a ze względu na brak dobrze opisanych podstaw programowania uC AVR w C to tak trochę po omacku to robię i nie zawsze mi to wychodzi. To co mam jeszcze w swoim kodzie zmienić żeby dla Atmega8 to wszystko dobrze działało :?: jeżeli dopiero zaczynasz zabawe z uC...
Po 1: Z tego co pamiętam C jest językiem wyczulonym na wielkość liter. Więc zmienna "Porta" to nie to samo co "PORTA" czy "porta". To samo dotyczy słów kluczowych w stylu "if else". No i nazwy plików nagłówkowych masz źle. O czym Ci kompilator mówi w błędach. Teraz moje pytanie. Czy kiedykolwiek pisałeś coś w C czy po prostu znalazłeś ten kod na jakimś...
Witam, Mam problem z zapisem i odczytem do EEPROM łancucha zmiennych typu char Atmega162, avrgcc, program symuluje w winavr + hapsim + virtual port kit char ipaddress[16]; char ipaddress_odczytany[16]; char portnumber[6]; char portnumber_odczytany[6]; char phonenumber[11]; char phonenumber_odczytany[11];...
Witam, korzystam z WinAVR oraz AVR Studio. Napisałem dwie proste funkcje: void zapisz( uint8_t pozycja, uint8_t wartosc ) { eeprom_busy_wait(); eeprom_write_byte(&pozycja,wartosc... } char odczyt(uint8_t pozycja) { eeprom_busy_wait(); return eeprom_read_byte(&pozycja); } Wiem, że ATmega...
Witam! Ostatnio próbuję swoich sił z tym mikrokontrolerem i napotkałem się na dziwne zachowanie, otóż w przypadku takiego kodu [syntax=c] counter_temp =0; unsigned long temp; temp = (*(Table_temp + 4) - '0'); counter_temp += (*Table_temp - '0') * 100000000; counter_temp += (*(Table_temp + 1) - '0') * 10000000; counter_temp += (*(Table_temp + 2) - '0')...
winavr zmienna adres timer1 winavr makefile winavr
grzewcze systemy sprzedać falownik uszkodzi szczotka alternator
schematy chiński silnik renault laguna bezpiecznik szyby
Maxcom mBook 15 BIOS – dostęp, aktualizacja, wejście do UEFI, InsydeH2O, klawisze bootowania Błąd 01705 w Audi A4 B6 - OBDEleven nie usuwa