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.
Jakie to są te dziwne błędy ? Jaka wersja WinAVR ?
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...
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
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.
Może trzeba użyć long zmienna. Tak WinAVR chyba lubi najbardziej (bo podświetla na kolorowo).
15 == 15 M. Nie powinno być if (zmienna == 15) ... Może dalsza część polecenia jest nieznacząca i kompilator to w taki sposób optymalizuje ?
Witam, Mam prośbę, w szczególności do kolegów którzy mają sprawdzony sposób linkowania bibliotek z pakietu AVRlib. Czy możecie podpowiedzieć co i jak poustawiać w pliku "makefile" aby nie było problemów z kompilacją? Próbowałem już różnych sposobów podawanych na forach dyskusyjnych ale jak na razie nie udaje mi się skompilować nawet przykładów z AVRlib...
Jesli dobrze zrozumialem ;) W przerwaniu poza odbiorem danej inkrementujesz jakas zmienna. W programiw glownym jesli bedzie ona wynosila 3 to wiesz ze cala ramka jest odebrana i ozesz ja zczytac z bufora, nasteobnie zerujesz zmienna.
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...
Witam, mam pytanie związane ze zmiennymi, mianowicie co oznacza gwiazdka na początku zmiennej char *zmienna; i co oznacza coś takiego *zmienna++;
zmienna jest typu double, tak jak w dokumentacji do winavr
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
zmienna double w ARM7 ma 64bity.
a jak chcesz przesunac zmienna opisana na 8 bitach o 24 bity? Oczywista sprawa, ze wyjdzie z tego zero. Rzutuj tmp=0x12; tmp32=(uint32_t)tmp<<24; //na 32 bitach juz wolno posuwać o 24 bez utraty danych
Grafika to pewne zmienna deklarowana w programie. Jak to się robi zapewne w postaci zmiennej tablicowej np. char grafika[][] = {}; jak zrobisz char grafika[][] PROGMEM = {}; Uzyskasz to samo w pamięci programu. Nie ma sensu ładować obrazków do RAMu.
inicjalizuj zmienne, tak jak napisał Tobie skynet. Ponieważ jest to zmienna statyczna, inicjalizacja nastąpi tylko raz w startupie (kod wykonywany przed main). Wygląda to bardzo podobnie, jak by to była zmienna globalna, tylko że sam kompilator ogranicza jej widoczność.
zmienna "i" zadeklaruj zaraz przed pętlą powinno pomóc pozdrawiam
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, Zmienna l (i wszystkie inne uaktualniane w przerwaniach) powinna być zadeklarowana jako volatile: volatile unsigned int l; Dzięki temu kompilator wie, że może ona zmienić wartość poza kontrolą kompilatora np. w przerwaniu. Takiej zmiennej kompilator np. nie usunie podczas optymalizacji Twojego programu :) PS. w PHP operatory wyglądają tak samo,...
Jak w WinAVR zadeklarować tablicę która jest stała, żeby załadowało ją do pamięci porgramu, a nie do RAM? Zauwałzyłem, że po zadeklarowaniu w ten sposób liczba komórek RAM zmniejsza się: const uint16_t zmienna[10] = {0,1,2,3,4,5,6,7,8,9};
Tak, ale to zmienna - więc od pytającego zależy, ile bajtów ;) Pozdrawiam!
Zmienna powinna być typu: volatile char Temp; wtedy będzie dostępna wszędzie.
Ciekawe ... jeśli to ma działać to potwierdza się reguła że często niepotrzebnie szuka się skomplikowanych rozwiązań do banalnych rzeczy. Nie wpadł bym na to :D Sprawdzę, mam nadzieję że będzie działać Dodano po 5 Chodzi o rzutowanie? zmienna_char=(char)zienna_float ?;) zmienna float = 99.045 => zmienna CHAR = 99 zmienna float = 54.7454 => zmienna...
Nie bardzo rozumiem , jaki cel chciałbyś osiągnąć :( Do czego są Ci potrzebne , dane w "tab_mala" :?: A jeśli chodzi o wskaźniki , to możno z nimi robić właściwie wszystko.Ustawić na dowolny adres w pamięci , bez względu na to , czy będzie to tablica , struktura ,unia , inna zmienna , itp. Piotrek
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...
Nie wiem moze zle interpretuje funkcje _delay_us(x) - dla mnie to jest funkcja ktora czeka tyle us(mikro sekund) ile ma ma w argumencie funkcji _delay_us(10) czeka 10us .W nazwie funkcji jest us czyli jednostka podstawowa jest mikro sekunda a argument mowi ile razy powielic jednostke podstawowa no i zakladam ze argument jest zmienna typu calkowitego...
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)
W twojej pierwszej deklaracji jest nieszczęście. Spróbuj tak: struct TPole{ unsigned char bit_0:1; unsigned char bit_1:1; . . unsigned char bit_7:1; } bit_field; zdefiniuj dodatkowo takie coś: #define Get_bit(adr) (*( (volatile bit_field*) (adr) ) ); Teraz chcąc wyłuskać jakiś bit piszesz: zmienna = Get_bit (i tu adres właściwy bajtu na którym ci zależy...
wiem ze static powoduje ze zmienna nie jest czyszcona po wyjściu z funkcji ale tutaj nie zauwazyłem zebym miał taka sytuacje.......;/
Czy istnieje komenda prekompilatora która wyciągała by pierwiastek kwadratowy z liczby? tzn gdy zdefinuje: #define zmienna 128 #define zmienna2 √zmienna żeby pod zmienna2 bylo 7.
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...
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
Taki zapis ( definicja )powinien być w jednym pliku C (zmienna globalna) volatile unsigned char stan = CZEKAJ; w pliku headera (chyba sensor.h) tylko deklaracja extern volatile unsigned char stan; w żadnym wypadku nie można dawać w headerze (pliku *.h) includowanym do wielu plików *.c definicji zmiennej statycznej static unsigned char stan = CZEKAJ;...
A nie wie ktoś może jak podglądać pola struktury ? Niestety dodającd za pomocą watch pole struktury jest zawsze "not in scope". Dodam że zmienna strukturalna jest zadeklarowana jako globalna. używam: AVR Studio + WinAVR.
Downiedziałem się również, że w programie należy dopisać $crystal=częstotliwość, żeby kompilator wiedział na jakim kwarcu pracuje. $crystal to jest dyrektywa Bascoma , nie WinAVR ... W WinAVR częstotliwość konfigurujemy w pliku Makefile - (zmienna preprocesora ?) F_CPU -- Pozdrawiam, Daniel
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.
Na przykład powiedzmy że w funkcji jest bałagan (tak nazywam kilka wyjść) i przed opuszczeniem funkcji jakaś zmienna powinna być modyfikowana. Jeżeli w jednym przypadku zapomnisz jej zmodyfikować to pozamiatane. Program działa jak trzeba.... do czasu gdy trafi w ten jeden return gdzie zmienna nie została zmodyfikowana i bum.
Probowalem ze wskaznikami i tez nie dziala. Moze inaczej sie zapytam: Jak zadeklarowac zmienna do wyswietlenia, aby wstawic ja do funckji pisztekst(PSTR("wyswietl cos")) Zamiast "wyswietl cos" chcialbym wstawic zmienna,ktorej wartosc to "wyswietl cos".
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...
Dlatego najlepiej zrobić tak #include <inttypes.h> Następnie uint16_t zmienna; I wtedy wiemy co mamy:)
Czysta estetyka, przyjęło się że zmienna po lewej, wartość po prawej, logice to nie robi różnicy(; W ostatnim Samuraj error Ci wyskoczy (;
obliczaj z takiego wzoru: c=((msb<<8)|lsb)*1... a przed wysłaniem na wyświetlacz: dtostrf((float)c/10,5,1,a... zmienna którą wyświetlasz jest "a"
No ale dlaczego kolega do temp2temp kopiuje wartość decicośtam, a nie temp2 ? To decicośtam podlega ewentualnie modyfikacji przy zapisywaniu do temp2 w zależności od subcośtam2. Analiza w tym wypadku jest zatem błędna. Po drugie, tak sobie oglądam, i zmienna licznik nigdy nie jest równana do zera poza uruchamianiem programu. Oznacza to, że przekręca...
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
A jak już opanujesz PWM to zajrzyj tu: http://www.elektroda.pl/rtvforum/topic20... na jeden z końcowych postów. Może program można jeszcze poprawić- ale taki jak jest ma pewne zalety. Działa bez problemu dla ośmiu serw. No i wcale nie musi być ośmiu potencjometrów- zmienna sterująca może być dowolna a nie z ADC.
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!!!!!
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...
Przepraszam ,że męczę, ale czy to PATH powinno być w polu zmienne systemowe czy zmienne użytkownika i co mogłaby oznaczać zmienna AVR32_HOME? Nie wiem gdzie szukać w rejestrze czegoś na temat WinAvr? P.S. w drugim komputerze w domu mam dokładnie ten sam zestaw AS+WinAVR i tu jest dobrze, poprawnie są zawsze wpisywane ścieżki do avr-gcc i make.exe oraz...
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.
Miałem na myśli to, że początkowo są ustawione, by zachowywały się tak jak stany logiczne na pinach portu, które sa obsadzone przyciskami. Tylko po to, by mi się nie zajączkowało. Problem w tym, że zmienna będzie mi się inkrementować co 65ms, czyli baaardzo szybko. PS. Wywaliłem AVR6.0 i zainstalowałem winavr. Teraz po prostu ściągnąć i zainstalować...
Przecież to wszystko co masz w #define to są stałe, które mogą siedzieć w PROGMEMie. Przecież nie ma znaczenia, czy napiszesz: #define TEXT "ten tekst wjedzie na zmienna numery_autoryzowane" USART_Transmit_Word(TEXT); czy USART_Transmit_Word("ten tekst wjedzie na zmienna numery_autoryzowane"); więc to wszystko może...
Faktycznie pomyliłem wciśnięty przycisk z jedynką, a wciśnięty to zero. Czy PINB z jednym zadeklarowanym wejściem - PB0 i włączonym na nim pull-upie to 00000001? Nie wiem czy dobrze rozumiem: Warunek drugi będzie zawsze spełniony jeśli dioda się świeci, bo jeśli pin jest wyjściem to na PINB będziesz miał PORTB (w uproszczeniu) Znaczy że jak mam na PORTB...
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...
Już znalazłem. Wracając do sedna tematu postanowiłem nie męczyć się już z głupimi problemami keila i przejść na darmowe środowisko szczególnie że już kiedyś się nim bawiłem. Postępując zgodnie z Twoim tutorialem zainstalowałem: Sourcery CodeBench Lite 2012.03-56 w katalogu C:\CodeSourcery\Sourcery_CodeBench_Lite_... I niestety z pod linii komend...
Hej. Mam do Ciebie jeszcze takie pytanie przy okazji. Po kompilacji pokazuje sie komunikat o zajetości SRAM (całkowitej bo tam sa sekcje wypisane) i pokazuje 1 bytes (1,6%). Pokazuje 1 bajt mimo że deklarowane jest w sumie 11 bajtów (w tym 4 uint16_t). Jak uruchamiam symulacje i dodaje zmienne do "watch" to kazda zmienna jest pod innym adresem. Czy...
Witam, Jeszcze przy okazji niejako, może mi ktoś wyjaśni, bo spotkałem się z dwiema metodami zapisu i chciałbym zrozumieć, czym różni się taki zapis eeprom_write_byte(&zmienna, wartosc); od zapisu takiego eeprom_write_byte((uint8_t *)zmienna, wartosc); zakładając, że uint8_t to unsigned char? Jeśli używasz &zmienna, to zapisujesz...
Witam!! Oto moje pytania: 1. Jak sie dolacza kod programu napisany w asemblerze?? Nie chodzi mi o jedna linijke tylko raczej o plik? 2. Jesli przed deklaracja zmiennej badz funkcji jest slowko extern np: extern void funkcja(void){} extern char zmienna; to jak to interpretowac?? 3. Co oznacza #pragma ... Z gory dziekuje za pomoc/smalski
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.
Witam, Temat dotyczyć będzie warninga w WinAVR o treści: passing argument 1 of '<nazwa_funkcji>' discards qualifiers from pointer target type Do funkcji przekazuje zmienną typu volatile za pomocą referencji. struct struktura { volatile char x; } volatile struct struktura zmienna; Funkcja(&zmienna); Sama funkcja wygląda tak:...
Znalazłem przyczynę problemów. We właściwościach projektu miałem dodaną ścieżkę do bibliotek #include. Po usunięciu ścieżki funkcja _delay_ms() działa jak należy (przy F_CPU 16MHz). Problem znalazłem po tym jak utworzyłem nowy projekt (i zapomniałem podać ścieżki do bibliotek) i ku mojemu zaskoczeniu program mający ten sam kod działał w różny sposób...
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?
... jesli mamy zmienna modyfikowana jednoczesnie i w przerwaniu i w petki glownej musimy zadbac o wylaczy do niej dostep. Czyli przerwanie powinno być "powiązane" z wykonywaniem się pozostałych funkcji. Jeżeli flaga jest dalej ustawiona znaczy że jeszcze nie wykonała się funkcja która ją zeruje.
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)
Jeżeli soft został wgrany poprawnie, to zmienna w EEPROM przyjmuje np. wartość 0x00 i Sama, czy ustawia ją aplikacja, czy bootloader? Jeśli bootloader, to równie dobrze a moim zdaniem lepiej może być we flash. Jeśli aplikacja to patrz mój poprzedni post. Albert
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...
Ja już dawno porzuciłem deklarowanie zmiennych w części inicjalizacji pętli for. Po opisie błędu można wnioskować, że owa zmienna mimo że zadeklarowana w pętli for, obowiązuje również poza pętlą, a więc deklarujesz ją kilka razy na tym samym poziomie, co nie jest dozwolone. Rozwiązanie pierwsze, to zmienną "i" deklarować tylko w pierwszej z pętli, rozwiązanie...
To dziwne...u mnie się pojawia taki:) c:/winavr-20080512/lib/gcc/../../avr/inc... warning: #warning "F_CPU not defined for <util/delay.h>" Dodano po 1 A to wszystko i tak jest w manualu...ale po co do niego zajrzeć, lepiej zapytać, prawda?:)
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;...
Witam, mam taki problem. Po instalacji windows xp servive pack 3 nie działa zmienna srodowiskowa %systemroot%\system32. Mniej więcej wygląda to tak: wybieram uruchom: cmd <enter>, w oknie konsoli wpisuję np. calc i otrzymuje komunikat: Nazwa 'calc' nie jest rozpoznawana jako polecenie wewnętrzne lub zewnętrzne, program wykonywalny lub plik wsadowy....
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...
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...
Przeczytaj datasheet - ten rejestr musisz zerować ręcznie. Przykład dla ATmega8: [syntax=c]void main(void){ //zapamiętaj powód resetu mikrokontrolera unsigned int reset_MCUCSR;//zmienna pomocnicza reset_MCUCSR = MCUCSR; //zapamiętaj przyczynę resetu MCUCSR = 0; //zgaś flagi rejestru resetu //Jeżeli reset nastąpił z innych przyczyn niż z powodu //włączenia...
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ść...
'make' musi znajdować się w bierzącym katalogu, lub w jednym z katalogów, na który wskazuje zmienna środowiskowa PATH (systemowa). W win98 dopisywało się do w autoexec.bat, albo sonfig.sys. W katalogu z projektem powinien być tylko Makefile. W win xp: moj komputer -> wlasciwosci -> zaawansowane -> zmienne środowiskowe ja mam tak: D:\Program Files\Atmel\WinAVR\bin;D:\Program...
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! Piszę program który ma mniej więcej obliczać mi ile paliwa jest wtryskiwane do cylindra w samochodzie. Ale chciałem aby wartość uśredniona już nie była tracona wraz z odłączeniem zasilania, tak więc trzeba ją do EPROM'a zapisać. Robię to tak: float wynik = 0; eeprom_write_byte( (float *)0x0, wynik); wynik = eeprom_read_byte(...
Chciałbym wysyłać jakiś string lub zmienna. A tutaj wysyła się tylko jeden znak. Przecież wysłanie np. ciągu znaków to nic innego jak wysłanie jakiejś ilości pojedynczych znaków. Można dopisać sobie przykładowo taką funkcję: void USART_Transmit_string(char * str) { while(*str) { USART_Transmit(*str); str++; }...
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...
%.o : $(SRCDIR)%.c To mówi programowi make, że dalej nastąpi instrukcja jak z plików w podkatalogu SRCDIR z rozszerzeniem .c utworzyć pliki z rozszerzeniem .o w bieżącym katalogu. $(CC) -c $(CPFLAGS) -I . -I $(INCDIR) $< -o $(OUTDIR)$(at) To z kolei jest wzorzec instrukcji kompilacji -zmienna CC z zasady...
Witam grono szanownych kolegów. Temat byl wielokrotnie poruszany na forum ale dotyczyło to przeważnie środowiska winavr. Niestety co kompilator to inne zasady operowania na zmiennych w pamięci. W związku z tym proszę o uprzejmą pomoc. Szukałem w manualu kompilatora ale już skończyły mi się pomysły:/ Problem polega na tym, że gdy zgłaszam zmienna w taki...
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...
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...
Postanowiłem kontynuować wątek pomimo, że nie pisze w BASCOM'ie a w GCC. Problem jednak wydaje mi się uniwersalny bez względu na język programowania. Ja mam problem jak rozbić liczbę dziesiętną zapisaną w zmiennej 64-bitowej na pojedyncze cyfry. To rozbicie ma posłużyć mi do wyświetlenia wartości zmiennej na wyświetlaczu. Procedurę obsługi wyświetlacza...
A jak sprawdzać wolną pamięć w czasie pracy programu na AVR, podaj przyklad kodu Dodano po 1 Cześć! Bardzo dobrze, że pytasz o monitorowanie wolnej pamięci w trakcie pracy programu na mikrokontrolerach AVR, ponieważ jest to ważny aspekt w projektowaniu stabilnych i efektywnych aplikacji. Istnieje kilka metod na sprawdzanie dostępnej pamięci RAM, ale...
A mógłbyś to dokładniej opisać ? W jaki sposób skonstruować ten licznik Deklarujesz zmienną char i obsługujesz jej wartość - wystawiasz stan kolumn dla danego kodu i sprawdzasz odpowiedni wiersz. Jeżeli klawisz jest wciśnięty, to wpisujesz jego kod do jakiejś przytulnej zmiennej np KeyScanCode . Następnie robisz druga procedurkę do "odpluskwienia"...
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("...
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, mam dziwny problem ze zmiennymi podczas programowania Atmega8-ki. Problem polega na tym, że gdy tworzę zmienną typu np. int, long int, unsigned int, to wszystkie te zmienne posiadają zakres short int (-32768 - 32767). Zmienna float również dziwnie się zachowuje zaokrąglając wynik gdy jest dość długi (pamiętałem o zaznaczeniu "floating point"...
heh wydawało mi sie że skorzystanie z gotowca będzie łatwiejsze niż pisanie tych funkcji od podstaw :) listing pliku keyb.c [syntax=c] //**************************************... // Plik: keyb.c // // Zaawansowana obsługa przycisków i klawiatur // Wersja: 1.0 // Licencja: GPL v2 // Autor: Deucalion // Email: deucalion#wp.pl...
diody są w porządku bo już sporo programów na nich zrobiłem w tej konfiduracji a oto kod: [syntax=c]#define F_CPU 1000000L #include <avr/io.h> #include <util/delay.h> unsigned int pomiar; // Zmienna do przechowywania wyniku pomiaru void Inicjalizacja(void) { DDRB=0xff; //diody pod PB1, PB2, PB3 PORTB|=(1<<PB1)|(1<<PB2)|(1&...
witam, Korzystam z AVRStudio i WinAVR. Problem jest następujący: //#include "CC1000.h" #include "RS232.h" #include <avr/io.h> #include <avr/interrupt.h> volatile char DATACNT; SIGNAL(SIG_INTERRUPT1) { cli(); ++DATACNT; sei(); } int main(void) { sei(); // turn on interrupts...
Witam chciałem skonfigurować timer1 w ten sposób że: 1.chodzi on cały czas odliczając 0-255 2.Przerwanie wywoływane jest po pierwsze po każdym przepełnieniu (czyli SIG_OVERFLOW1) 3.Przerwanie wywoływane jest w określonym czasie odliczania zapisanym w ICR1 (czyli TIMER1_CAPT_vect) Mój kod inicjujący przerwanie wygląda tak: TCCR1A = (1<<WGM10);...
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....
Przecież pisałem, że nie ma tu nic specyficznego dla typu procesora. Zwracanie wyniku przez wskaźnik - to są podstawy podstaw języka C: void funkcja( int argument, int *wynik1, int *wynik2) { /* ... */ *wynik1 = costam; *wynik2 = cosinnego; } int main( ) { int zmienna1, zmienna2; /* ... */ funkcja( 7, &zmienna1, &zmienna2);...
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);...
winavr zmienna adres timer1 winavr makefile winavr
wymiana zawiesi koszt zapowietrzona instalacja odzyskać zdjąć telefon
mikrokomputer cobra1 urwana świeca żarowa
Amica Optimum 800 - pulsująca dioda i płukanie Żółta kontrolka oleju w Audi B4 po uzupełnieniu oleju