Nie rób zmiennych ze stałych - first i last są zbędne. Nie deklaruj tablic wewnątrz funkcji - spowalnia to wykonanie i grozi przepełnieniem stosu. Nie potrzebujest wskaźników na bufory 15- elementowe - przedeklaruj je jako wskaźniki na char.
No ale po co Ty tworzysz osobną sekcje na JEDNĄ zmienną? Zmienne będą miały taki rozmiar jak mieć powinny, Jeśli w tych strukturach masz bufory jako tablice bez rozmiaru, to one będą miały rozmiar "zero". To po prostu powinno być zrobione inaczej. Przy okazji umieszczanie wszystkiego w CCM RAM to nie jest wcale taki dobry pomysł, bo z pamięci tej nie...
Bo patrzę na Wasze dzieła, gdzie większość zawiera się w jednej linijce, jakieś tablice, bufory i dziwy. A u mnie takie przedszkole i wydawało mi się bałagan...
Kopiujesz nazwisko zawsze do zerowego elementu tablicy zamiast do i-tego: strcpy(tablica[0].nazwisko, nazw); W tej sytuacji zapamiętywane jest tylko ostatnie nazwisko, przy czym może dojść do przekroczenia bufora przydzielonego przez malloc() jeśli jakieś nazwisko jest dłuższe od pierwszego. Wszystkie następne bufory zawierają śmieci, co pewnie jest...
Nie wiem, co ma do tego pseudolosowanie. ;-) Co miało by się znaleźć na tych dwóch ostatnich? Musisz w osobnej pętli dopisać tam jakieś zera czy cokolwiek chcesz. A jeśli chcesz, żeby tam było to co wcześniej było na początku, to musisz sobie zrobić dodatkowy bufor (tablicę) na te dwie zmienne i zapamiętać je przed przesuwaniem. Po przesunięciu skopiować...
Witam, Wg manual'a do procesora Cortex M3 jeśli się zmienia kod programu lub/i tablicę wektorów przerwań, to przed następną instrukcją powinno się użyć instrukcji ISB, DSB i DMB aby bufory załadowały nowe wartości.
jak dałem kopiowanie w funkcji odbierającej to działa, odbieram to co wysłałem z Packet Sendera. Teraz własnie muszę ogarnąć co się stanie jeżeli wysyłana dana bądź zdjęcie jest duże i nie mieści się w jednej ramce, bo to co wysyłam z PS sie mieści wszystko przelatuje w jednej ramce i jest fajnie. Jeżeli dobrze rozumuje muszę zrobić tablice takich buforów...
... Kiedy dla próby użyłem konwersji hexval to w komórkach otrzymywałem C8. U mnie Twój kod działa bezbłędnie.Natomiast 1 uwaga: 'zamień Dim Nm As String * 1 'na Dim Nm As Byte Czy m32 na pewno chodzi na kwarcu ? Dobrze ustawiłeś opcje transmisji , w PC-towym terminalu ? Piotrek
kolega Freddie zasugerował jedno z możliwych rozwiązań, mianowicie: zamiast deklarować jakiś wskaźnik do bufora, spróbuj zadeklarować tablicę, np: unsigned char bufor[10]; nie jestem pewien co z tą funkcją dtostrf(), może to ona nie działa...
Witam, Do pamięci zewnętrznej odwołujesz się przez zwykły wskażnik o adresie większym niż wewnętrzna przestrzeń adresowa RAM'u Więc aby stworzyć tablice musisz odwołać się przez wskażnik char* bufor = (char*)0x8000; // deklaracja adresu początkowego tablicy //--------------------------------------...
najprościej chyba użyć funkcji itoa [syntax=c]itoa(liczba_int, bufor*, podstawa) [/syntax] jako bufor podajesz tablice charów, podstawa mówi jaki format liczby chcesz wyświetlić. np 2, 10 ,16 p.s nie musisz inkludować plików *.c Starczy same nagłówki
Tak przy okazji opinia Linusa: aa tiaa, ale to nie problem, zawsze po wyjściu z niej wystarczy dać : desc Dodano po 8 AD.1. zawsze, końcowe zero jest nieodłącznym elementem c stringów, więc słowo 'Ala' będzie miało cztery znaki. "Jeśli mam wyświetlacz 2x16 i chcę zapisać pełne 16 znaków w wierszu, to robię tablicę 16 bajtów, czy 17" - char bufor_1...
Problemem dla mnie w moim projekcie jest to, że ramki które składam i wysyłam mają klika długości (12B, 20B,48B i 248B). W związku z tym może lepszym rozwiązaniem będą osobne bufory statyczne dla każdego typu ramki np. bufor kołowy z tablicami dwuwymiarowymi?
Adres zmiennej zwracany jest poprzez operator '&' - nie wiem skąd wytrzasnąłeś tą małpę... Twoja funkcja działą gdy podasz jej bufor, ponieważ nazwa tablicy jest wskaźnikiem na pierwszy jej element. Jeśli chcesz wskaźnik na inny element, to już potrzebny jest operator '&' 4\/3!!
Trochę mały ten bufor...
(at)paweleke Tam jakieś urządzenie o IP 192.160.0.115 generuje problem - popatrz ile tam zapytań dropped forward pocket Restart może powodować przepełniona tablica wpisów bufora firewalla w modemorouterze. Rozwiązanie - znaleść urządzenie walące w firewalla w modemorouterze, spróbować wyłączyć całego firewalla (albo wyłączyć co i ile się da), co 24h...
Jak to, nie możesz zadeklarować? Jedynym sposobem w C na problem "buffer overflow" jest przekazywanie zawsze rozmiaru wraz ze wskaźnikiem na bufor/tablicę. Wskaźnik przekazuje tylko adres zmiennej. Z samego adresu nie da się wywnioskować, ile jest pamięci dostępnej pod tym adresem. sizeof() działa na typie danych, tzn. tylko zwraca informacje ile miejsca...
To zrób sobie bufor (tablica pixeli) na której będziesz szybko operował a wyniki przerzucaj do Tbitmap.
Przede wszystkim wydaje mi się, że nie zdajesz sobie sprawy z tego, że w C/C++ tablice są numerowane od 0. Tak więc tablica zdeklarowan tak: char bufor[5]; Jest 5-cio elementową tablicą o elementach, do których możemy się tak odwołać: bufor[0]='a'; bufor[1]='z'; bufor[2]='1'; bufor[4]=NULL; Natomiast w przypadku...
Jeszcze nie pracowałem na procesorach STM32 (co zmieni się jutro), ale z tego co już wyczytałem, to: - w pamięci PMA (widocznej przez okno zaczynające się od 0x40006000) musi znajdować się tablica BTABLE oraz bufory na dane - (ad3) wartość wpisana do BTABLE to offset wewnątrz pamięci PMA, pod którym zaczyna się tablica deskryptorów buforów. EPnTxAddr...
Piszesz, że jesteś początkujący więc będzie Ci trudno zrozumieć wyjaśnienie bez znajomości przynajmniej wskaźników i tablic. Przeczytaj najpierw podręcznik dla tej funkcji - [url=http://www.cplusplus.com/reference/... Funkcja wpisuje do zmiennej "bufor" (tablica znaków - cstring) odpowiednie dane (godzinę) ale żeby nie...
Musisz np. odbierane znaki wpisywać do bufora (tablicy) i po odebraniu znacznika końca komendy (np. <CR> czy <LF>) porównywać cały napis.
1. Tak, jak przypiszesz null, lub nic ne przypiszesz do wskaźnika w trakcie jego życia to if nie przejdzie. 2. Tak, wynikiem będzie 33. Chociaż przekazanie powinno być inne, w przeciwnym wypadku dostaniesz warningi: [syntax=c] //1. Funkcja( &tablica[0] ); //2. Funkcja(tablica ); [/syntax] Może się to na pierwszy rzut oka wydawać dziwne, ale jeżeli się...
Najprościej zrobić sobie stały bufor, tablica char, tak poukładany by każda pozycja tablicy odpowiadała stałej wartości, np. pod text[10] zawsze jedności lat, pod kolejną dziesiątki miesięcy, itd. reszta danych. Wystarczy wtedy wczytać linię tekstu do drugiego bufora i porównać komórki pamięci, co trzeba zmodyfikować w pierwszej i zapisać do pliku.
niema. musisz sam napisać. powyjmuj pamięci i procesor z płyty podepnij się pod bufory wyjściowe napisz program i wio. w EDW kiedyś opisywali sterowanie tablic. poszukaj.
Czołem Próbuje stworzyć 4 bufory filo, z 10 próbkami 12 bitowymi. Zakodowałem to tak Sliced name is allowed only on single-dimensional arrays Jakies pomysły jak to zapisać inaczej?
Jak miała być kolejność? No właśnie , kolejność :-P Jakoś nikt nie zauważył, że pierwszy element tablicy bufor, ma być najmłodszym bitem liczby docelowej. Moja propozycja wygląda następująco: [syntax=c]char bufor[32]={0,1,1,0,1,0,0,1,1,1,1,1,1,1,1... uint32_t wynik; //... for(uint8_t i=0;i<32;i++) { wynik>>=1;...
Zamykam temat. Sprawa okazała się dość trywialna. Przesyłałem łańcuch znaków co było błędem. Ramka składała się z 10 osobnych zmiennych USINT zapisywanych w kodzie HEX. Zatem krok 1 : zapis do tablicy 10 elementowej krok 2 : wyliczenie sumy kontrolnej i uzupełnienie tablicy krok 3 : kopiowanie tablicy do bufora z wykorzystaniem wskaźnika za pomocą polecenia...
Przecież to co opisujesz to jest odbiór "po jednym znaku". Czy tobie chodzi raczej o całą liczbę mówiąc o "jednym znaku"? Jeśli tak to musisz sobie stworzyć bufor (tablica znaków), do którego będą zapisywane kolejne znaki. Gdy zbierze się kompletna liczba, wywołać na nim itoa . Pozdrawiam, GSM
Dokładnie jak kolega wspomniał powyżej. Poza tym, dodam tylko od siebie, że trochę kolega autor tematu namieszał z różnymi typami danych. W zdarzeniu nadejścia znaku ASCII ( OnRxChar ) czyta kolega dane do bufora zbudowanego z tablicy byte? To "niewielka" niekonsekwencja :) Sugeruję zdecydować się na konkretny typ danych (znaki albo bufor danych) i...
Na szybko, moim zdaniem masz błąd w wołaniu metod write i read. Do read musisz przekazać tablice bufora przez wskaźnik, inaczej nic Ci się tam nie zapisze "buf Pointer to a buffer where the data should be written" Do write natomiast wskaźnik potrzebny nie jest ale nie szkodzi Druga sprawa to sprawdź czy oby na pewno działasz na tych samych kanałach,...
Przypadkiem :) Jeśli bufory są zmiennymi globalnymi, sizeof zwróci Ci rozmiar tablicy pomnożony przez wielkość typu tej tablicy. Jeśli przekazujesz je przez parametr, cóż... sizeof zwróci Ci liczbę 4. W Twoim przypadku zadziałało, bo to pewnie zmienne globalne, a DMA bez sensu kopiuje 4x więcej danych (jakieś śmieci z jednej części pamięci do drugiej...
Mogłeś chociaż przeczytać komentarze w załączonym kodzie: [syntax=c] //polecenie ma wygladac tak: cmd=zmienna1,zmienna2,zmienna3,zmienna4 z zalozenia sa to 4 liczby calkowite // do 5 cyfr, dlatego buffsize32 ma zapas, dla innych trzeba zmodyfikowac bufor, tablice zmiennych, funkcje // do konwersji napisu na liczby //cmd=234,342,553,3432[/syntax] Funkcja...
Ten bufor w postaci tablicy(niepotrzebnie za dużej) jest zbędny. Deklarujesz zmienną int32_t, zerujesz ją, wpisujesz pierwszy bajt, przesuwasz 8 pozycji w lewo, wpisujesz drugi bajt operatorem |=, przesuwasz 8 pozycji w lewo, wpisujesz ostatni bajt operatorem |=. Można to zrobić w pętli - zaoszczędzisz miejsce. [syntax=c] int32_t read_data(void) { int32_t...
Problem leży tu: SIGNAL(USART_RXC_vect) { if(UDR=='$') zapis=1; if((i<14)&&(z... { buf[i]=UDR; i++; } if(i>=14) { k=1; zapis=0; i=0; } } Otóż odczyt z rejestru UDR powoduje jego wyzerowanie a następnie załadowanie następnego odebranego znaku (jeżeli...
Teraz masz prescaler ADC ustawiony tak że zegar ADC ma 125kHz. Zegar ADC- a nie inne zegary. Zegar ADC ma mieć 50-200kHz. Jak Ci mniej zależy na dokładności niż na szybkości- można dać zegar ADC na 250kHz. A oprócz tego- możesz zrobić tablicę albo bufor dla UART-a.
Wielkie dzięki :) bardzo mi pomogłeś Widzę że śmiało można zrealizować bufor na tablicy jednowymiarowej :)
Ja bym zdecydowanie przeszedł na integerowe indeksy w buforze jako tablica. Z latami mam coraz mniej ochoty na arytmetykę wskaźników. Z gwiazdkami *) precz. *) w nadmiarze.
np używając : snprintf(jakosc, sizeof(jakosc)-1, "Jakosc %d", zmienna); tylko trzeba dobrać długość bufora żeby się pomieściło.
Napisałem więcej punktów więc może pomieszałem. W tej strukturze będą znajdować się bufory w formie tablicy 100 bajtów, oraz spora ilość flag pomiędzy wątkiem głównym a przerwaniami i różne zmienne pomocnicze. Taki sposób jak zaprezentowałem ma pewną zaletę: łatwo debagować, bo w dowolnym momencie mogę podejrzeć całą strukturę, wszystkie bufory itd....
sam mu to powiedziales. liczby w formacie osemkowym zaczynaja sie dla kompilatorow od zera. szesnastkowe zaczynaja sie od 0x, binarne od 0b, osemkowe od 0 bufor1[i+i]=buforz[0]; //linia 2 bufor1[i+i+1]=buforz[1]; a co to za herezje? masz tutaj odpowiedz, czemu LCD sie krzaczy. konwertujesz liczbe jednocyfrowa. sila rzeczy...
Znalazłem ten filmik... [url=http://www.youtube.com/watch?v=UFAo... matryca 7x80 czyli przy 50Hz musi wpisać w ciągu 2,8ms 1 linie tu jest to w miarę proste... Lecz mając 16x128 mam tylko 893us na linie z 2 kolorami, z tym isp muszę sprawdzić Może ktoś ma pomysł na inny wygląd bufora ? tablica[256] ? albo inne szybsze wysyłanie...
Tak jak napisałem, jeżeli tylko rozbijasz tekst w buforze na np. wyrazy, to prawdopodobnie sama tablica wskaźników Ci wystarczy. Ale to jednoznacznie z Twojej pierwszej wypowiedzi nie wynikało. Jeżeli wczytujesz ciąg znaków z wejścia, to najpierw musisz zaalokować bufor (tablicę), gdzie ten ciąg wczytasz. Teraz możesz albo przydzielić b. dużą tablicę,...
ReadFile zwraca bool'a, więc: i f(ReadFile(hFile1, bufor1, Stat.cbInQue, &NumberOfBytesRead, 0)) { //kod do wykonania po pomyślnym odczycie } else { //kod do wykonania przy wystąpieniu problemu } ew. można jeszcze uściślić warunek - jeżeli odczyt się powiódł, ale odczytano 0 bajtów... czyli: if((ReadFile(hFile1, bufor1,...
Pokaż funkcję LCD_WriteText(), bo sądzić można, że jako parametr zawiera wskaźnik na tekst i nie służy do wyświetlania liczby 8-bit. Jeśli jest tak jak napisałem, to musisz najpierw przekonwertować liczbę na ciąg znaków ASCII i zapisać w buforze (tablicy) i dopiero funkcji LCD_WriteText() wskazać jej początek. Przykłady: http://mikrokontrolery.blogspot.com/2011...
Dzięki za odpowiedzi. alagner pomyliłem się kolejnością odnośnie stosów ( zmienione w pierwszym poście ) Freddie według Twojej wskazówki zmieniam wartości stosów i sprawdzę czy problem się pojawi ponownie. Mam pytanie jeszcze odnośnie samej sztuki programowania. Mam duże bufory nadawczo[500]/odbiorcze[500] uzupełniane danymi w przerwaniach. Czy dobrym...
nie bardzo rozumiem - skoro bufor jest tablicą, to jak możesz konwertować tablicę i to z tekstu na int? i co to w zasadzie ma dać?
Dziękuje kolegom za szybkie podpowiedzi Macie rację tam nie powinno być "" bo to oznaczało by tekst a ja chciał bym porównać to co znajduje się w buforze z tym co znajduje się w tablicy niestety nie wiem jak? funkcja strcmp jakby nie widziała tablicy i teraz pytanie czy strcmp może porównać bufor z tablicą czy tą tablicę należy jakoś przekonwertowac...
Hmmm... Odczyt odbywa się bajt po bajcie. Jeśli wykryto początek to zapis do bufora (tablicy/wektora) i jednoczesne liczenie CRC. Jeśli nie wykryto końca w odpowiednim momencie (ramka o stałym rozmiarze) lub nie zgadza się CRC to ramka jest olewana. Jeśli ok to w buforze znajduje się poprawna ramka. A co zyskuję mając zapis do struktury skoro i tak...
Tak, tak powinno wyglądać... A nie działa? Ja może zaproponuję większy kawałek kodu: [syntax=c] void lcd_int(int val) { char bufor[17]; lcd_str( itoa(val, bufor, 10) ); } [/syntax] lcd_str przyjmuje oczywiście w tym przypadku wskaźnik na tablicę bufor (bo taki wskaźnik zwraca funkcja itoa. Reprezentacja liczby w postaci tekstu jest przechowywana w tablicy...
Prosisz i masz :-) FFT Hamming dla 600kHz, 300kHz, 100kHz, 20kHz, 1kHz https://obrazki.elektroda.pl/8317404600_... https://obrazki.elektroda.pl/2428259400_... https://obrazki.elektroda.pl/4630621100_... https://obrazki.elektroda.pl/6088087100_... https://obrazki.elektroda.pl/4308112800_...
Poszukaj komponentow do obslugi portow dla buildera lub delphi jeden z nich chyba sie ComPort nazywa. Wraz z komponentem dostaniesz przykladowe programy dzieki ktorym latwo skumasz o co chodzi. Co do samego sposobu dzialania programu. Wydaje sie niezbyt dobrym rozwiazaniem zapisywanie danych z portu zaraz po odebraniu. Dysk bedzie non stop zapisywal...
Właśnie zawsze mnie zastanawiało jak zabezpieczyć, żeby użytkownik nie mógł wyjść poza bufor danej tablicy Zapamiętać rozmiar i sprawdzać indeks podczas odczytu/zapisu z tablicy.
Nie wiem o jakiej stałej czasowej jest mowa. Na filmie #9 gdzie następuje mieszanie kolorów zmieniłem trochę soft i zastosowałem coś w rodzaju bufora fifo (tablica) z 30 próbkami dźwięku. Próbki przesuwają się w tym buforze. Nowa próbka zapisywana jest na początku, a najstarsza wylatuje. Każdorazowo po zapisie nowej próbki, ze wszystkich 30 obliczana...
To co napisałeś jest bez sensu, multipleksowania nigdy nie robi się z maksymalną możliwą prędkością w głównej pętli programu, poza tym mikrokontroler musi przecież też realizować inne funkcje, które zakłócałyby wyświetlanie. Obsługę multipleksowania należy zrobić używając timera i przerwań wywoływanych co ok. 1ms (częstotliwość 1kHz) - aby nie występowało...
C# pod .NET ma skopane rysowanie, nie korzysta prawie wcale z akceleracji sprzętowej. Moja propozycja, zresztą już wcześniej zasugerowana - program wielowątkowy, jeden wątek odbiera dane po RS232 i zapisuje je w buforze (tablicy), drugi wątek rysuje to co jest w tablicy (nie musi się śpieszyć), trzeci zapisuje do pliku, chociaż zastanawiałbym się nad...
(...) wiedzi z urządzenia. Szukaj początku ramki. Użyj tego polecenia do odczytania 18 bajtu od początku ramki. ``` char byte = (frame >> 18) & 0xFF; ``` aczkolwiek uważam, że lepszym podejściem jest zdefiniowanie typu struktury (koniecznie packed) i odczytanie tego bajtu jako jej atrybut. Rozumiem Twoje zastrzeżenia, więc spróbujmy podejść...
Próbowałeś z innymi 2313? Na pewno nie jest to problem z lockbitem, bo wtedy przy odczycie w buforze miałbyś "tablice do nauki liczenia w kodzie szesnastkowym" czyli 01 02 03 04 05 itd...
ELEKTRONIK nie jest na jagiellonskiej tylko przy Karłowicza :P Nie! Mylisz się! Elektronik jest przy Jagiellońskiej i uczą w nich ciekawi profesorowie, jeżdżacy ciekawymi czerwonymi pojazdami produkcji FSO (wtajemiczeni wiedzą o kogo chodzi :D). Tylko z tego co ja pamiętam to oni juz na koszu mają tablicę - tylko może sie popsuła. Jeśli bronisz u takiego...
eee... bufor robi sie tablica, wiec nie do konca kumam co ty chcesz zrobic. 4\/3!!
Tablica data to bufor (z komendą), jeżeli jej drugi bajt oznacza komendę USBASP_FUNC_SETLONGADDRESS, to następne cztery bajty (od data[2]) zawierają adres wpisywany do prog_address. Tak wynika z tego programu. Rzutowanie na wskaźnik na unsigned long jest po to, aby ta pierwsza gwiazdka "wyciągnęła" z pamięci unsigned long. Inaczej, takie użycie to bezpośrednia...
Tablica Bufor() jest typu Byte więc to nie Stringi i konwersja Hexval do niczego się nie przyda. Bajty są zamieniane niejawnie we Frame tylko na potrzeby wyświetlania na LCD. Coś w ten deseń powinno działać. Ogólnie to można to mocno poskracać, ale nie chciałem zaciemniać. [syntax=vbnet]Dim Arr(4) As Byte Dim Test As Single At Arr(1) Overlay Dim Bufor(9)...
Widze że używasz biblioteki którą stworzył Peter Fleury. Osbługa uarta odbywa się w przerwaniach, może masz ustawione za duże bufory w kodzie uart.c i przekroczony zostaje 1k ram w Atmega8? Z drugiej strony spróbuj zmienić lokalne tablice z funkcji main() na globalne, bo zmienne lokalne są tworzone na stosie i może tu leży problem.
Deklaracja char *Bufor[10] deklaruje tablicę wskaźników na typ char, a nie bufor 10 bajtowy. Powinno być char Bufor[10];. Poza tym coś takiego asm("nop"); nie zadziala, musi byc volatile.
To dlaczego rozmiar bufora 512 bajtów miałby nie wystarczyć? Po zarezerwowaniu wypełnił bufor jakąś wartością, później w czasie pracy podejrzyj co się w nim dzieje. Wypełniłem bufory odbiorczy i nadawczy odpowiednio 1 i 2-kami. Poza zakresem zajmowanym przez przesyłane struktury, zarówno przy działaniu poprawnym jak i niepoprawnym programu, pozostała...
nie wiem czy was dobrze rozumiem, ale przecież tak jak jest zrobione teraz to moje bufory (odbioru i wysyłu) mają stałą wartość i stały rozmiar, dane są cały czas wpisywane te same i dokładnie w te same miejsca tablicy Ale z jakimi częstotliwościami są wpisywane/wypisywane...
Może nie przyszły jeszcze następne dane, a ty za szybko zapisujesz z bufora odbioru do tablicy buffer[] ? Jakiego typu jest zmienna data ? czy to char ?
Czyli jak rozumiem, wprost czytać z tablicy bufora ? Gdzie znajduje się ten bufor z którego odczytuje INPUT ? Jak wtedy w Bascomie z 4 bajtowej tablicy wyjąć pierwsze 2 bajty, które potem porównuje Select Case ?
Możesz zdefiniować tablice 8-elementową ładować do niej dane i wysyłać poleceniem Printbin . [syntax=basic4gl]Dim Bufor(8) As Byte ' tablica 8 elemetowa .............. Printbin Bufor(1) , 8 ' wyślij 8 bajtów zaczynając od Bufor(1)[/syntax]
Dodano po 7 tablica (bufor) Ponieważ tylko ją deklarujesz, ale nie używasz została ona z programu wywalona. Albert nie prawda, popatrz tutaj void main (void) { BITY0 = 0x55; BITY1 = 0xaa; dlatego tablicę zainicjowałem abym ją widział. A to przypisanie nadpisuje mi dane w tablicy. Faktycznie albertb ma rację, co z tego że deklarujesz tablicę...
Kasiula61, dokładnie tak. Musisz przydzielić odpowiednią ilość pamięci na bufor (tablicę) znakową powiększoną o conajmniej 1 np zadeklarować tablicę lub fumkcją z rodziny malloc. A co do wydobywania podciągów (odpowiednik substr) to podaję patent: Zakładamy, że gdzieś jest łańcuch str. [syntax=c] char substr[n + 1]; /* zarezerwuj odpowiednio dużą ilość...
[syntax=c]TWI_write(pgm_read_byte( &cyferki[cy4] ));[/syntax] Mam tablicę znaków wyświetlacza "cyferki" a zmienną "cy1" - "cy4" wskazuje odpowiedni znak z tablicy. W buforze z RFM12 mam stringi a potrzebuje int aby wyświetlić znaki z tablicy.
Wydajniejsza jest tablica-bufor. Na końcu dopisuj wyliczone pozycje wyrzutu, a od początku odczytuj i kasuj te zrzucone. Zapis w tablicy wykonuj w kółko. Pojemność tablicy ilość butelek od czujnika do wyrzutnika i mały zapas.
Co do stk200 nie ma co czytać jak on działa - to jeden prosty bufor. Weź tablicę prawdy, o ile można o czymś takim mowić dla bufora, sprawdź czy działa w 100% dobrze potem wymuszaj stany w LPT i sptawdzaj na złaczu idc10(lpc10, i kilku innych nazwach popularnie na złaczu kanda lub 10 pinowej wanience). Jak są poprawne, to może problem z ecp+epp? Ale...
... Przypuszczam, że to jakiś błąd kompilatora Arduino. ... Kuszące stwierdzenie. Ja po wielu latach przestałem widzieć "błędy kompilatora" a zacząłem widzieć swoje. W praktyce C/C++ są liczne undefined behavior (UB), czyli kod jest zły, ale wystąpienie błędu może się długo ukrywać, nie zawsze palnie w łeb. A serio, twoja rada jest szkodliwa. 1. temat...
Witam. Przeczytałem tematy związane z tą tematyką i nadal jestem trochę w niepewny. Chcę się upewnić, czy dobrze rozumuję. Chcę napisać własną funkcję w języku C realizującą FFT. Funkcja ma być uniwersalna, żebym mógł ją sobie przenosić na różne uC. Na początek, nie musi być szybka, byle by zadziałała. Ulepszaniem zajmę się potem. A więc co wiem i co...
W przerwaniu od timera, które ma następować co ileś tam ms (20, 30). Bufor to dość patetyczne słowo :D chodzi o tablicę lub po prostu jakieś zmienne gdzie jest przechowywany stan przycisku.
Załaczam kod, który działa. odbiera dane z portu szeregowego i wyswietla je w MsgBox(). Zwróć jedynie uwagę na zdarzenieSerialPort1_DataReceived. Zmień w nim ilośc bajtów po której mają zostać odczytane dane z BUFORA portu szeregowego. Początkowo bowiem dane trafiają do bufora (każdy bajt oddzielnie wywołuje przerwanie i trafia do bufora) a stamtąd...
[syntax=c]void read_string(unsgined char* buffer) { while(*buffer++ = serial_read()); } //wywołanie #define BUFF_SIZE 81 int main(void) { usinged char bufforLinii[BUFF_SIZE]; read_string(bufforLinii); } [/syntax] Pisane z palca. Jest to najprostsza wersja bez kontroli przepełnienia bufora. Pozdr.
Chyba trochę mały ten bufor na napis, w dodatku na stosie (pozostałe bufory tak samo). Zajeżdżasz sobie stos, więc nie dziw się, że się "cuda" dzieją.
W przerwaniu nie powinno być funkcji obsługi LCD. Obsługę LCD daj do pętli głównej, bo inaczej będziesz miał problemy z przerwaniem. Jeżeli masz w buforze więcej rozkazów niż tylko RING, to strcmp ci nic nie da, bo funkcja ta porównuje dwa łańcuchy. Ale jeżeli w buforze bedzie zawsze tylko jeden rozkaz to możesz tak zrobić i wtedy nie potrzeba nawet...
Skonwertować możesz przy użyciu sscanf podając jako wskaźnik na ciąg znaków miejsce, w którym powinna się zaczynać dana liczba. Ale najpierw musisz się upewnić, że odebrałeś pełne dane. Zapisuj je w tablicy, a nie w pojedynczej zmiennej char.
A tam na początku pamięci to nie jest tablica deskryptorów buforów? Jeśli tak, to chyba nie można tam wpisywać co popadnie, bo np. pod 0x4000_6002 byłby 9-bitowy USB_COUNT0_TX. Edit: Ok, doczytałem, że to i tak jest zwykła pamięć 16b, więc zapis i odczyt powinien mieć dostęp do pełnej komórki 16b. A jak robisz te zapisy i odczyty?
Witam, A jakiego typu jest tablica Bufor ? w pierwszej lini mnozysz prawdopodobnie char'y moze to jest problemem ? sproboj rzutowac na long inta, ew. debuguj dokladniej i dodaj jakies info. -- Maciek
Muszę jeszcze przeliczyć ile zajmie wysłanie tablicy przez USART. Trzeba uniknąć sytuacji że kolejne dane zostaną przeniesione do bufora przed całkowitym wysłaniem poprzedniego. Nie uda Ci się to raczej i nie wiem po co kombinować... Muszą być DWA bufory (uwaga techniczna - przerwanie DMA w połowie transferu sprawia, że masz "prawie" dwa bufory i też...
Dzięki wielkie za bardzo dobre wytłumaczenie jak działa port I2C, oraz jaka jest idea działania takiego układu. Prawdę mówiąc temat można uznać za zamknięty bo skończyłem ten projekt w prawdzie był to projekt teoretyczny aby zaliczyć jeden z niezbędnych przedmiotów na kierunku Elektrotechnika. Poniżej w załączniku zamieszczam schemat ideowy układu,...
Wcześniejsze kwestie wyjaśnił już kol. (at)michalko12 . Mowiąc o tym, że funkcja z eeprom.h dokonuje kasowania przed zapisem powoływałem się na Twoją książkę (str.235 wytłuszczonym drukiem) oraz na https://www.nongnu.org/avr-libc/user-man... gdzie jest napisane: "All write functions force erase_and_write programming mode." Nowsze...
Może wyjaśnię, o co mi mniej więcej chodzi. Chcę stworzyć dwa bufory o pojemności 16 znaków, by móc przechowywać w nich dane dla wyświetlacza LCD. Wyobrażałem sobie, że jeśłi odwołam się do bufora w sposób np.: linia1(5) = "czas" spowoduję wpisanie do tablicy 4 liter, po jednej na każdą komórkę tablicy począwszy od komórki 5. Może są jakies inne mechanizmy?...
I już po problemie:D nie potrzebnie pisałem.. Obyło się bez buforów kołowych, po prostu dałem w przerwaniu po zapełnieniu bufora wyłączanie przetwornika a włączanie dopiero po przepisaniu tablicy do drugiego bufora.
Moja propozycja jest taka, w celu sprawdzenia połączenia, najpierw w przerwaniu odsyłaj echo do terminala, wykluczy to błędy sprzętowe. Druga sprawa jest taka, że nie powinieneś odczytywać UDR w pętli, a tylko w przerwaniu. Żebym gafy nie strzelił, ale wydaje mi się, że w momencie odczytania z UDR rejestr ten się zeruje. W zasadzie to właśnie w przerwaniu...
Witam W ramach rozgrzewki przed większym kodem, chciałem sprawdzić działania na poszczególnych elementach tablicy. Chciałem się posłużyć indeksem. W rezultacie po załadowaniu kodu: unsigned char bufor[16]="abcdefghijklmnop... zmiennych 8-bitowych // inicjalizacja LCD lcd_init(); // zapisz na LCD przykładowy tekst LCDxy(0,0);...
Przyczyna jest w tych linijkach Trzeba też pamiętać, że jeżeli zdefiniujemy tablicę n elementową i spróbujemy zapisać coś pod indeksem równym lub większym n to kompilator nie zgłosi błędu, ale skutkować to może nieprawidłowym działaniem programu.
Pamięci SRAM wolnej to powinieneś mieć więcej, na tablice zużywasz tylko 500 bajtów, a ten procesor ma 2kB, więc tylko 25%. Problem leży w czymś innym - twoja tablica bufor ma organizację 100*3 znaki. Teraz pomyśl, konwertujesz liczby 3-cyfrowe, ale potrzebujesz jeszcze miejsce na końcowy znak NULL, czyli max. 4 znaki. Stąd tablica powinna mieć organizację...
Witam Mam problem z wyświetleniem kąta pomiędzy wartościami zmierzonymi przez 2 osie akcelerometru. Poniżej fragment kodu kat=atan2(osy,osz); sprintf(bufor,"%f",kat); LcdStr( FONT_1X, bufor ); Kąt to zmienna double, bufor to tablica 10 znakowa char, osy i osz to zmienne uint8_t. Zamiast wartości, wyświetla mi się znak zapytania. Czy wie ktoś co tutaj...
Mam problem z tablicą char a dokładnie wyskakuje mi błąd: error: incompatible types in assignment i wskazuje mi na linie z buforami. Poniżej kod: char bufor1[16],bufor2[16]; void interpretacja() { for(int i=0;i<16;i++) bufor1[i]=0x00;//czyszczenie buforow for(int i=0;i<16;i++) bufor2[i]=0x00;//...
Witam Możesz spróbować zrobić też w taki sposób: Do D = Inkey() If D > 0 Then 'jeśli coś jest odczytane to wtedy to zapisz do tablicy W(n) = D Incr N 'przejdz do czytania kolejnego elementu tablicy If N = 16 Then N = 1 'wykonywanie operacji na całej tablicy itp. End If End If Loop cały czas odczytujesz znaki a jeśli bufor nie będzie...
Hej :) Kod jaki naprędce stworzyłem , to takie bardzo proste rozwiązanie, bez sprawdzania co wpisałeś czy nie ma niedozwolonych znaków, nie patrzy jaki jest zakres liczby (każdy typ ma inną wielkość) i łatwo można go wykrzaczyć , będziesz miał zadanie dodatkowe zrobić na pętli żeby można było tylko cyfry wprowadzać , i żeby np. max liczba wynosiła 30000...
Mylisz się :-) Obliczasz całą tablicę okresu przebiegu, włączasz CIRC w DMA (bufor kołowy), podajesz adres początku tablicy, ilość elementów i wio.. Każdy trigger, np z timera i próbka z pamięci leci do DAC bez ingerncji CPU. Jak dojdzie do końcowej próbki w tablicy dzięki CIRC zawija się na początek i leci kolejny okres :-)
Po to są bufory cykliczne (czy kołowe), żeby uniknąć takich problemów - do bufora sięga tylko wątek ISR i wątek pobierający dane z bufora: przy odbieraniu danych w ISR wpisujemy znak na pozycji wskazywanej przez indeks wejściowy i ustawiamy ten indeks na następną pozycję; przy pobieraniu danych z bufora zabieramy znak z pozycji wskazywanej przez indeks...
W sumie wynika z tego, obsługa przerwania w C++ nie jest banalna :/ Popatrz na to tak - gdybyś chciał w zwykłym C osiągnąć to samo, tzn. mieć dostęp do jakichś zmiennych w strukturze od "czegoś" (bufory, ustawiona prędkość, ...) to byłoby to równie niebanalne. Generalnie C++ nie jest prostym językiem. Jeśli obiekty danego interfejsu masz globalne,...
plazma bufory bufory szeregu bufory ciepła
wymiana potencjometr bezpiecznik termiczny schemat biquad wymiary
Parametr P10 w piecu Termet Silver Pro 20 kW Przesterowanie kolumn JBL PRX 800 podczas wokali