Dobrze abyś napisał w jakim środowisku działasz, ale ogólnie są funkcje przepisujące i wypełniające bloki pamięci, oraz funkcje tzw adresowania względnego, gdzie wskazujesz początek zakresu pamięci i jakiś wskaźnik (dodatkowy rejestr), będący przesunięciem od tego miejsca. Jak zrobiłeś generator, to używasz od niego styków |p| tym zwiększasz licznik/wskaźnik...
Jeżeli używasz starszego programu do odczytu taryfikacji, nie Bilingmana, to jest tam w menu opcja "stanowisko główne", jej zaznaczenie powinno skutkować zerowaniem bufora. Jeśli używasz Bilingmana, to ... nie pamiętam czy program powinien zerować bufor, niestety człowiek raz na miesiąc coś tam zczyta z jednej NCT (tu było by widać efekt) i jakoś nie...
To dalej nie jest dobry kod. Co, wg Ciebie, sprawdza poniższy warunek? Zamiast zerować bufor, zapewne wystaczy poprawnie sprawdzać długość. Zwracając message przez wartość kopiujesz ją jeszcze raz.
Nie w centralce tej kod jest przypisany fabrycznie i nie ma możliwości jego zmiany (w prosty sposób). Przy łączeniu się z centralką za pomocą programu np. DI 12 pobierana jest aktualna konfiguracja centralki z pewnymi ograniczeniami takimi jak np. zerowanie bufora, zerowanie liczników, brak możliwości modyfikacji itd. Po wybraniu "kluczyka" należy wpisać...
W zmiennej sl masz wartość odczytanych bajtów (sl jako trzeci argument funkcji pf_read) zatem co robi zapis bufor[s1+1] = 0; ?? No zeruje element bufora następny za tym, w którym został zapisany ostatni bajt. Czasem tam lubią zostawać jakieś śmieci i przy wyświetlaniu potem takiego "cudoka" wyświetla.
No więc robisz to tak: 1. Danymi wejściowymi dla procedury FFT jest bufor próbek o długości równej ilości punktów FFT (czyli jeśli FFT jest np. 512-punktowa, to bufor wejściowy musi mieć 512 próbek dźwięku). 2. Danymi wejściowymi są liczby rzeczywiste, więc zerujesz bufor części urojonej (jeśli takowy w ogóle jest). 3. Wyjście procedury FFT to 2 bufory...
Strasznie się zapętliłeś z adresowaniem. MOV A,4 oznacza prześlij do akumulatora zawartość komórki o adresie 4 (czyli to samo co MOV A,R4) natomiast MOV A,#4 oznacza wpisz do akumulatora wartość 4 Proponuję zacząć używać symulatora (np. AVSIM'a) Moja propozycja kodu: MOV R1,#4 ;LICZBA ELEMENTÓW MOV R2,#0 ;ZEROWANIE BUFORA SUMY PETLA: MOV DPTR, #Tablica...
U mnie również zdarzają się zerowe odczyty czasami dlatego wyrzuciłem z kodu zerowanie buforów //memset(battery.buf, 0, sizeof(battery.buf)); //memset(load.buf, 0, sizeof(load.buf)); //memset(panel.buf, 0, sizeof(panel.buf)); //memset(status.buf, 0, sizeof(status.buf)); //memset(rtu.buf,...
obierasz dane do bufora 3 elementowego po odebraniu enter sprawdza czy 1element !=1 2 element =1. po sprawdzeniu zerujesz bufor
z programu - najpierw wersja wyższa niż 2.9 , klucz 06 zerowanie bufora i liczników oraz centrali z telefonu - jak zalecłałeś i też kicha.
No ale jaki jest w ogóle sens tego kodu? 1. Najpierw czekasz na zmienną którą ustawiasz w tej samej funkcji i ponoć nie masz przerwań (choć w komentarzach coś niby o nich piszesz), to po co czekać? (nie mówiąc już o tym, że się nigdy nie doczekasz poza pierwszym razem [może], gdyż nigdzie tej zmiennej nie zerujesz przy braku problemów) 2. Potem kopiujesz...
Pokombinowałem trochę w tym przerwaniu. Nie jest idealnie, ale jakoś działa. Po za tym wprowadziłem zerowanie bufora w przypadku, gdy nie dojdzie 5 znaków w określonym czasie. Licznik startuje w momencie odebrania pierwszego znaku.
A skąd wziąłeś krasnoludka, który pilnuje, żeby GPS rozpoczął transmisję wiersza po zaprogramowaniu DMA i drugiego, który pilnuje, żeby wszystkie wiersze miały po 99 znaków? Ja też chcę takie dwa krasnoludki! Pardon, zapomniałem o trzecim krasnoludku - tym od zerowana bufora danych przed transmisją.
Zobacz jaka wartość zwraca scanf. zezeli w tym przypadku 2 i ciagle 2 to znaczy ze nie zeruje bufora - zetkąłem sie z tym problemem na ktorejś wersji biblioteki standardowej na AVR-ach. Nie za bardzo znalazłem rozwiązanie i napisałem po prostu funkcję czytająca znaki do bufora a następnie jest wołany sscanf.
Zrób odbiór na przerwaniu, a w pętli głównej tylko sprawdzaj jakąś zmienną, ustawianą w przerwaniu, czy coś przyszło, jeśli nie, to goń procka do innej roboty... ;) Acha, jak już wszystko będzie odczytane to tą zmienną sobie zerujesz... Ogólnie to można zrobić bufor, a ta zmienna będzie licznikiem nieprzetworzonych bajtów.
Slican CCA2720EU kłopot z zerowaniem buforu Po zaczytaniu danych z centrali do programu taryfikatora, nie zeruje się bufor z danymi w centrali Posty trzeba czytać uważnie. Problemem w tej sytuacji nie jest centrala a użytkownik, który nie przeczytał instrukcji obsługi. Takich przykładów gdzie użytkownik nie radzi sobie z PanaSłonikiem są setki. Wynikają...
Dlaczego wstawiłeś pół alfabetu jako zmienne? :O :) Timer2 powinieneś włączyć po odebraniu pierwszego bajtu, a wyłączyć i zresetować po odebraniu ramki lub zresetowaniu bufora. Chyba, że ma działać cały czas, wtedy zerować Ramkatimeout odbierając pierwszy bajt. Zerujesz bufor, ale nie zerujesz In_pos . Wyłącz przerwanie Urxc , gdy to robisz. Bezpieczniej...
Jak chcesz wysłać jako bajt to musisz napisać: #XXX gdzie XXX to liczba. I to było zasadnicze pytanie jak wysyłasz tą liczbę ;). bo jak wpisujesz po prostu 145 to wysyłasz 3 bajty. Czy nie lepiej by było wysyłać: dane <CR> ? znakiem końca linii informujesz procka że ma zerować licznik znaków i przeanalizować dotychczas odebrane dane. i przykładowo:...
Potrzebujesz przynajmniej zmiennych takich jak: bufor[x] gdzie x to max przewidywana liczba znaków w ramce odbieranej + zapas licznik_znaków flaga_odebranej_ramki flaga_bledu .W przerwaniu od Uart czytasz odebrany znak .W zależności od wartości licznik_znaków i odebranego znaku albo rozpoczynasz ramke jak był 0 a znak był adresem, albo wstawiasz znak...
Ja zrobiłbym bufor. Każdy kolejny bajt leci do bufora a po przepełnieniu jest przeładowywana pamięć lub inne działanie. Trzeba też zrobić jakąś weryfikację. Najlepiej dodatkowo dwa rozpoznawane bajty-zeruj bufor i przepisz dane. W ten sposób można powolutku ładować dane i przeładować jedną komendą. Dodatkowe pytanie-czy można zmieniać pojedyncze parametry...
Jeżeli chcesz zaoszczędzić miejsca, to sam sobie przeczysz, chyba mało znasz język C. To pięknie, że nam udowodniłeś, iż da się coś zrobić podwójnie okrężną drogą, ale nie nazywaj tego optymalizacją. Niepotrzebne jest wstępne zerowanie buforów, niepotrzebne przepisywanie adresów tablic buforujących pod wskaźniki, niepotrzebne korzystanie z funkcji strcpy!...
mikrokontroler master to nic innego jak terminal z oprogramowaniem napisanym przeze mnie w qb64. Mikrokontrolery podłączone do niego są poprzez port rs232 tj. linia rxd terminala jest dołączona do linii txd atmeg a linia txd terminala jest spieta z linia rxd admeg. Komunikacja pomiedzy nimi odbywa sie w formacie ascii tzn terminal wysyła adres atmegi...
Witam, Chciałbym sprawdzić czy w jakimś obszarze pamięci znajdują się same zera. Generalnie mój problem rozwiązuje np. funkcja memcmp() ale muszę porównać z innym obszarem wyzerowanej pamięci. Mogę też napisać własną funkcyjkę i też działa. Ale tak szukam w avr-libc-user-manual.pdf i nie mogę znaleźć jakiejś może już wbudowanej funkcji, która porówna...
Myślę, że jedynym sposobem jest odbieranie danych z USARTa za pomocą przerwań. W programie należałoby ustawić jakieś opóźnienie i sprawdzać cyklicznie, czy nadszedł nowy znak. Jeśli w określonym czasie (zależnym od częstotliwości "powtarzania" klawiatury) nie nadejdzie nowy znak to diodę wyłączyć, jeśli nadejdzie i jest to 'w' to zapalić. Więc w funkcji...
Masz tam od zatrzęsienia operacji na znakach i ciągach... Kolego nie dramatyzuj ;) spacer: Odbieraj znaki w przerwaniu, po odebraniu w jednym ifie sprawdzaj czy NIE jest to znak CR dalej w tym ifie sprawdzaj czy NIE jest to LF. Jeżeli znak nie jest jednym z nich to znaczy że jesteś w tym ifie i zapisuj znak do bufora: bufor[i++]. Dalej w przerwaniu...
Teraz bedzie najciekawsze .... byc moze w buforze to tak wyglada ...(zapewen tak jest jak napisales) Obecnie wsyzsto dziala cacy nawet bez zerowania bufora .... zmienilem tylko bit CKOPT zeby generator dziala od "badny do bandy" bo uzywam kwarcu 11,0592 i wszystko zaczelo stabilnie dzialac .... Obecnie zmienilem tak ze odczytuje bufor: Print "AT+CSQ"...
Mam do zrobienia program, który będzie zliczać czas trwania programu. Zmienna sekund ma być prezentowana w postaci binarnej za pomocą diod świecących podłączonych do portu P2. Mam użyć systemu przerwań i odpowiedni licznik-timer w wybranym trybie wiedząc, że mikrokontroler jest taktowany zegarem 11.0592MHz, a zatem jeden cykl maszynowy trwa około 1,08507...
na dzień na każdą zmiane jest 1536 bajtów. Zapisuje tam czasy stanięć i ruszeń maszyny czyli zapisuje jednorazowo 3 bajty. Tak pierwszy bank jest do celów specyjalnych i mam tam wolne komórki To może coś a'la rejestr(bufor) kołowy i odpada kasowanie komórek. Komplikuje się troszkę obliczanie adresów i banków ,bo musimy sprawdzać czy nam się pamięć...
jak mi się wydaje No to nie wiesz po zmianie czego program zaczął działać poprawnie? ;) Mam teraz pytanie. Ze względu, że dostaje kilka ramek jak zapisać do zmiennej: $GPGGA ? Chcę zrobić odczyt od łańcucha $GPGGA aż do 14 znalezionego przecinka po $GPGGA? Do stosowania strtok() taki bufor może okazać się za mały. W prawdzie jest to jakieś rozwiązanie,...
Jesli ramka ma max 20 bajtow to zadeklarowac pole o tej dlugosci, w przerwaniu odbierac kolejne bajty i je zapisywac. Dodatkowo jeden bajt jako flaga, ze cala ramka zostala odebrana (w przerwaniu trzeba porownac odebrana informacje o dlugosci ramki z iloscia faktycznie odebranych bajtow). Ta flaga w programie glownym mowi o tym, ze jest gotowy pakiet...
Weryfikację końca ramki lepiej robić w przerwaniu. ISR(USART_RXC_vect) { buf_odbioru[poz_znaku_odbioru]=U... Czas_UARTA = 50; if(buf_odbioru[poz_znaku_odbioru... && buf_odbioru[poz_znaku_odbioru-1]... ) { flagi_UARTA.dane_przyszly=1; } if(poz_znaku_odbioru<ROZM_BUFORA_...
Witam Może ktoś z forumowiczów miał podobny problem i jest w stanie pomóc. Tak w ramach rozwijania projekciku doszedłem do bardzo dziwnego zagadnienia. Otóż UART TX przez DMA opanowałem bardzo sprawnie i szybko ale pojawił się problem UART RX. Mianowicie odbiór przez UART działa tylko raz, zaraz po restarcie kontrolera. Potem ustawia się bit ORE (Overrun)...
Dzięki wielkie! W końcu coś zadziałało, po tak długim czasie! Nie rozumiem tylko dlaczego zerujesz ostatni element bufora?: [syntax=c]__buff[BUFFLEN -1 ] = 0;[/syntax] Nie da się tego zrobić bez bufora? Niestety z RAM jestem na bakier i każda zmienna na wagę złota. Najwyżej podzielę komunikaty na krótsze o wiele. I tak jest już dobrze, w końcu coś ruszyło!
Wielkość bufora, to minimum wielkość pakietu +1. Zaproponowałem 256 bajtów, ponieważ wtedy odpada konieczność pilnowania wartości 8-bitowego wskaźnika. Nie musisz go zerować, bo sam się zeruje. Możesz mieć bufor na 9 bajtów, ale będziesz musiał ciągle sprawdzać i zerować wartość wskaźników, a przy okazji pojawią się drobne uciążliwości w wyznaczaniu...
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.
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...
zgadza się - AVR przy resecie przyjmują stan wysokiej impedancji. Jeśli chcesz stan niski, możesz zastosować rezystory w konfiguracji pull-down (mało skuteczne) lub dodatkowe bufory portów, które podczas zerowania będą przyjmowały stan niski (wystarczy zwykły bufor lub rejestr, którego wejście zerujące jest podłączone do RST mikrokontrolera)
U mnie działa taka kolejność - tak przetestowałem dla zabawy: 1. Sprawdzaj czy bufor jest pusty 2. Zeruj TXC - pisząc jedynkę. 3. Pisz dane 4. czekaj na TXC
Zrób sobie zmienną globalną, która będzie indeksować łąńcuch bufora. W przerwaniu odczytujesz znak, wrzucasz do bufora pod baj o danym indeksie, zwiększasz indeks. Kiedy już przyjdzie znak końca łańcucha zerujesz indeks, a daną masz w buforze. Możesz ją jeszcze przepisać do innej zmiennej, by jej nie stracić, gdy zacznie się odbiór następnego łańcucha...
dzięki wielkie Dodano po 7 Zanim jeszcze zacznę robić synchronizację oraz te wszystkie zabezpieczenie dotyczące jednoczesnego otwierania/zapisywania danych, zrobiłem taki serwerek: #include <string> #include <fstream> #include <sstream> #include <iostream> #include <windows.h> #include <winsock2.h> using namespace...
W przypadku Ardunio ja to robiłem na przerywaniu w trybie CHANGE by wykrywał dwa zbocza co daje wynik w 0,5s z mała pomyłka 1Hz.. w setup attachInterrupt(digitalPinToInterrupt(pi... Obrotomierz, CHANGE); ISR Obrotomierz void Obrotomierz() { impulsy_Obr++; } A później na timerze albo w funkcji mills żeby co 500ms przypisał do innego 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...
Wydaje mi się, że zerpo wcale nie musi sprawdzać kierunku obrotu... Koła robota będą na przekładni ślimakowej, więc to raczej sztywne połączenie i nie pozwoli na obrócenie wału silnika przez moment na kole (zależy to co prawda od modułu ślimaka, ale zwykle jest sztywne, przynajmniej LEGO na pewno), więc kierunek obrotów koła będzie się zgadzał z aktualnym...
Ja odczytuje dane z protokołu NMEA w następujący sposób char GPS_buf[574]; char tmp_buf[80] = {0}; struct { uint8_t GPS_down; }flag; struct { char gga_buf[80]; char vtg_buf[80]; }down; uint8_t schr_pos_in_line(uint8_t num_pos, char *mem) // funkcja wyciągająca dane z określonej pozycji...
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...
Do zapisania cyfry 10-99 jako string potrzebujesz bufora conajmniej 3-bajtowego.
Tak, wiem, ze jest opcja =progress, ale formatujac pen drive'y zauważyłem, że dd jest bardzo wolne - zaczyna od 30 MB/s a na końcu spada transfer do 4 MB/s To kwestia cache, linux uźywa całej wolnej pamięci jako bufora operacji dyskowych. Zapis najpierw idzie do pamięci, a dopiero po jej zapełnieniu pokazuje prawdziwą szybkość transferu dyskowego....
Witam! Staram sie komunikowac z modemem GSM. Chce opracowac metode rozłanczania osoby dzwoniącej niezaleznie od chwili w której dzwoni. Zalozenie jest takie iż w sposób ciągły: - wysyłam "AT" i sprawdzam czy jest "OK" - w miedzyczasie sprawdzam czy nie pojawilo sie RING, jezeli pojawilo wydaje komende "ATH0" *opcja echo jest off Wszystko działa tylko...
To zależy jak wysyłasz znaki, niektóre funkcje, np. sprintf same dodają null na końcu, zależy to także od zapisu literału. Oprócz niepotrzebnego odczytu UDR musisz też inaczej rozwiązać powiązanie bufora zapełnianego w przerwaniu z odczytem w głównej funkcji programu. Bo teraz jeśli porównanie wypada pomyślnie to zerujesz x mimo, że bufor może zawierać...
Witam Szkoda wejść, na jednym obsłużysz bez kłopotu, ppm ma taką cechę że koniec jednego impulsu jest początkiem drugiego, generalnie transmisja ppm leci szpilkami zaznaczającymi początek kolejnych impulsów, wiec najprościej byłoby się wpiąć w odbiornik przed dekoderem i ten sygnał dać na przerwanie, jeśli nie chcesz ingerować w odbiornik to różniczkujesz...
Wg. Horowizta i Hilla jednak, jeśli licznik ma zatrzask na wyjściu, to zawsze jest to zatrzask przezroczysty, aby można było używać licznika tak, jakby zatrzasku nie było. W dokumentacji tej konkretnej kostki jest wyraźnie napisane że bufor przepisuje na zboczu rosnącym (nie stanie). Czyli nie jest możliwe ustawienie go w LS590 jako przeźroczysty....
Zmienną timerprog ustawiaj w UART_receive() - dzięki temu masz odpowiedni timeout przed każdym odebranym znakiem. Poza tym, w twoim kodzie wygląda t tak, że TimerProg się zeruje, więc UART_Receive natychmiast wraca z przypadkową wartością UDR, którą wpisujesz do tablicy, stąd pewnie czasami masz głupoty. Ustawianie TimerProg powinno rozwiązać problem,...
Co do programu przedstawionego w załączniku. Strasznie marnujesz czas procesora, powinienes w przerwaniu wykonac kilka instrukcji a ty wykonujesz wszystko. Uboczną stroną jest jescze to ze musisz zapisywac wykorzystywane rejestry na stosie i "uziemiasz sobie licznk 0" Proponowałbym taki sposób: czujnik dołaczasz do wejscia into lub int1 ustawiasz na...
Przed pobieraniem zaznacz: Narzędzia=>Zerowanie wyświetlacza. Nazwa trochę dziwna ale to pozostałość po starszych modelach
Programatorem odczytujemy dane z układu na uszkodzonej elektronice i zapisujemy je w układzie na nowej elektronice. Zawsze podłączając się jakiegoś układu czymkolwiek, co jest w jakikolwiek sposób zasilane ryzykuje się uszkodzenie (choćby ze względu na pomyłkę przy podłączaniu). Jeśli się poprawnie wykona podłączenia i nie pomyli operacji odczytu z...
Czy mógłby mi ktoś pomóc zrozumieć kilka linijek kodu. Napisałem , a raczej skleiłem przy pomocy przykładów z forum komunikacje z miernikiem po RS-ie , wszystko niby działa ale nie rozumiem pewnych fragmentów kodu i mnie to denerwuje bo robie coś na oślep . Może ktoś dopisał by swój komentarz taką łopatologie To jest fragment kodu: Private Sub Przyodczyt_Click()...
Twoja funkcja void dodaj_bufor(char znak) dziala w ten sposob: "Jesli licznik jest mniejszy od 17 to dodaj znak do bufora i zwieksz licznik. W przeciwnym razie podmien znak na przedostatniej, 17-tej, pozycji". Dodatkowo, na Twoj bufor ( char bufor ) powinno byc zarezerwowane 18 bajtow pamieci. Jesli takie jest zalozenie, to funkcja dodaj_bufor(char)...
Witajcie, moją przygodę z STM32 zacząłem stosunkowo niedawno, praktycznie od samego początku staram się stworzyć "protokół" do bezawaryjnej komunikacji po USARcie, który wykorzystany będzie do transmisji danych z małego robota typu LineFollower. Nie mam większej wiedzy, ani doświadczenia z tej dziedziny. Stworzyłem trochę kodu na podstawie własnych...
Najważniejsze to chociaż troszkę samemu najpierw pokombinować i ew później dopytać co i jak ;) ale po co ten Inkey? toż jak już zajdzie zdarzenie Bytematch - to znaczy, że w twoim buforze jest już co najmniej jedeń łańcuch tekstowy, którzy przyleciał z Rs232 i zakończony znakiem ENTER (13) .... w związku z tym wystarczy dać polecenie Input linia i już...
1ms spokojnie przerwanie zewnętrzne Ci zliczy (piny 2, 3) https://www.arduino.cc/reference/en/lang... dalej myślę, że musisz odliczać czas np. licznik 1 i przerwanie powiedzmy co 1 sekundę (konfigurujesz przez rejestry TIMER1), tam sobie liczysz sekundy i za każdym razem (może być w loop() ) przeliczasz...
Przepraszam - jasne, że us :-) Problem nie leży w samym wydłużeniu czasu - tylko, że SPI przestaje działać - zatrzymuje się dalsze wysyłanie danych. Procesor to PIC32 taktowany 80MHz, SPI taktowane 20MHz w tym momencie. Kod obu przerwań - prosze: SPI - to jest tylko fragment w którym się akurat zatrzymało - wyżej jest tylko odczyt bufora SPI do zmiennej,...
1. (PC) Wyślij ramkę z rozkazem z do odpowiedniego uP. 2. (uP) Zeruj rejestr PER timera za każdym odebranym bajtem. 3. (uP) Po odebraniu ostatniego bajtu - czyli po przerwaniu od przepełnienia timer'a, który ustawiłem na 50ms - analizuj odebraną ramkę. 4. (uP) Jeśli ramka jest poprawna to postaw flagę zezwalającą na wysyłkę danych do PC. Przyznam że...
Witajcie, mam Asusa RT N10U, jest to fajny sprzęcik, ma opcje USB, którą wykorzystuje jako PrintSerwer do HP CP1215. Asusa wykorzystuję jako repeatera (ale to mało ważne), Asus widzi drukarkę, w PC podaję IP routera, protokół LPR, drukarka drukuje to co ma, lecz w ilości ciągłych nieograniczonych kopii, czyli puszczę jedna kopie drukuje ich nieskończenie...
...przechodzi przez dzielnik napięcia i jest podawany na wzmacniacz zbudowany na układzie CA3140AE, którego parametr Gain-Bandwidth Product według karty katalogowej wynosi 4.5 MHz. A że dodali kondensator zewnętrznej kompensacji to w praktyce jeszcze mniej. I moje pytanie brzmi: jak to jest, że w oscyloskopie o paśmie 2x50 MHz zastosowano wzmacniacz...
Witam, nie powiem, że to będzie najlepszy sposób, ale myślę że będzie prosty. W przerwaniu odbierasz bajt pierwszy komunikatu MIDI, zerujesz zmienną uint32_t i zaczynasz budować ją od nowa. Po odebraniu wszystkiego porównujesz, i kopiujesz do bufora.
Bufor cykliczny w najprostszym przypadku możesz rozwiązać w ten sposób: 1) tworzysz tabelę o długości rozmiary bufora (sam tworzę nieco większe niż długość ramki, czasami nawet kilka ramek mieszczę w jednym buforze) 2) zapisując odebraną daną (czyli liczbę) zapisujesz ją pod adres buffor[indeks] po czym od razu po zapisaniu nowej wartości inkrementujesz...
sposób kolegi _marek okazał się bardzo dobry i wykozystałem go w moim programie. ale niestety jak to zwykle bywa pojawił się kolejny problem. mianowicie int akcja (char dana, int wait) { printf ("akcja"); char bufor[10]; bufor[1]=dana; //zpisywanie do prtow if (write(plik,bufor,2) !=2) {...
- jeżeli bufor jest dostatecznie duży to zwiększam indeks i2 A gdzie jest zerowana oraz ustawiana początkowa wartość 'i2'? Zakładam, że w jakkiś sposób kontrolujesz zakres indeksu dla bufora 'buf2'. wysyłam komendę z smartfona np ON wystawia mi się stan 1 na GPIO ale na powiedzmy 5 minut a następnie stan GPIO zmienia się na 0, ale w czasie kiedy trwa...
Wielkie dzięki! Mam jeszcze pytanie odnośnie klawiatury, jak można podejrzeć w systemie/jądrze co się dzieje po naciśnięciu dowolnego klawisza np. litery "k" w buforze/sterowniku klawiatury? Z góry dziękuję. Pozdrawiam.
Witam Wykonałem układ, który komunikuje się z PC przez moduł BTM-222. Komunikacja USART, asynchroniczna 38.400 kbps, 1 bit parzysztości, 1 bit stopu. Jeśli zadeklaruję na stałe, że wielkość bufora wynosi np. 30, i wysyłam z PC 30 znaków, to komunikacja działa bez zarzutu. Problem w tym, że chciałbym, aby program działał, przy różnej ilości odbieranych...
Witam Mam połączoną pamięć Flash AT45db161b z uP Atmega128. W poniższym programie dokonuje zapisu liczby 0x44 do Flash'a, jednak gdy potem odczytuję pamięć to zz=0xFF Czy coś może być nie tak w adresowaniu ? (od razu mówię, że jestem początkującym programistą uP i połączenie Flash'a z uP jest raczej ok) #include <avr/io.h> #define PORT_SPI PORTB...
Spróbuj tego programu napisanego na szybko. Jeśli coś nie będzie działało to pisz. Dodałem kilka komentarzy. Przy sprawdzaniu czy znak nie jest "tekstem" jest taka linijka: ctype.h . [syntax=cpp]#include <iostream> #include <fstream> #include <stdio.h> #include <ctype.h> using namespace std; int main() { ifstream zrodlo("xxx.txt");...
po jednokrotnym nadpisaniu dysku - nadpisane dane zostają bezpowrotnie zniszczone, ale roznymi plikami metoda kopiuj wklej nie daje efektu dokładnego nadpisania. Może być tak, że w ostatnich klastrach zajmowanych przez pliki zostaną nienadpisane sektory (slack area) i tak samo zostaną (mogą zostać - w zależności od systemu plików) różne informacje...
Tak wygląda mój sposób na odczyt PCF-a: [syntax=c] //odczyt 6 bajtów do bufora od adresu 0x01 z pamięci RAM naszego RTC I2C_read_buf( PCF8583_ADDR, 0x01, 6, bufor ); //4 sekundy = bcd2dec( bufor[ss] ); minuty = bcd2dec( bufor[mm] ); godziny = bcd2dec( bufor[hh] ); dzien=( bufor[dz] ); miesiac=( bufor[msc] ); //zerujemy 6 ostatnich bitów w których pamiętany...
Dokumentacja, dokumentacja, dokumentacja!!! Po wykonaniu sekwencji Shift/Load (chwilowy stan niski na SS) na wyjściu SS należy włączyć tryb SPI Master ponieważ nawet programowe sterowanie SS (ustawienie SS jako wyjścia) po przejściu w stan niski dezaktywuje tryb MOSI. Ciekawostką jest jednak fakt, że jeśli SS nie jest sprzężony z zewnętrznym układem...
po wyrzuceniu zbędnych rzeczy z tej procedury wyslij i przeanalizowaniu tego ;) wynika, że absolutnie obojętnie gdzie nie wstawisz ldi R20, 97 - czy przed pętlą czy w pętli to nie powinno mieć najmniejszego znaczenia dziwi mnie, że napisałeś: Gdy wrzuce ta procedure do petli a ldi r20, 97 zostawie za petla wtedy równiez działa dobrze co to ma oznaczać?...
Mam problem z przesyłaniem danych między atemga a pc przez port rs232. Chce wysłać pakiet danych najczęściej składający się z 5 par liczb oddzielonych spacjami (np. 02 01 12 21 11). Próbowałem z różnymi prędkościami i nigdy nie uda się wysłać danych żeby nie zgubił przynajmniej jednego znaku. Wysyłanie danych robię w ten sposób: [syntax=c] dane[i]=0;...
Zrobiłem kolejne programiki testujące (już nawet zaczołem to pisać w C ale te same wyniki). Więc tak: uK napewno dobrze nadaje bo jak w pascalu odczytuje bufor za pierwszym razem to jest tam dana nadawana z mikrokontrolera. Ale flaga odbioru wcale nie była ustawiona. Zapis do portu jakiejś wartości powoduje wyzerowanie LSR. Po odczekaniu chwili odczytuje...
Witam, Programuję sobie procesorek AT89C2051 i magistralę 1-Wire. O ile z odczytem danych z magistrali nie było problemów, o tyle z wysłaniem tego przez RS-232 jest problem. Czy ktoś z użytkowników ma jakieś gotowe procedury zapisu i odczytu do porty RS232? W BASCOM wszystko działa, ale chcę to zrobić w C. Na razie doszedłem do: //funkcja obsługująca...
W buforze wszystkie dane z RSa są z enterem i końcem linii. może nie być początku informacji ale zakończenie zawsze jest Tę kwestię możesz pominąć jest marginalna i nie powinna mieć kluczowego znaczenia dla poprawności odczytu danych jeśli 13 nie wystąpi to po 4096 zerowanie: Dim znak As Integer Dim ciąg As String Dim licznik As Integer licznik = 0...
Witam! Jak powinna zachowywać się flaga RXC w tym uC? Według specyfikacji powinna wyzerować się, gdy nowe dane zostaną odczytane z rejestru UDR. W tym momencie głupieje :). Program: int main(void) {//sei(); UBRRL=0x33; // BaudRate UCSRB =0x18; // RXEN TXEN //UCSRB |=0x80; while(1) { if (RXC) { znak = UDR; znak++; while(!UDRE); UDR=znak; } } } Powyższy...
Witam Kolegów, Od jakiegoś czasu próbuję uruchomić prosty odtwarzacz MP3 oparty o dekoder STA013 oraz kartę SD. Dekoder ten skonfigurowany został tak by na swoim wyprowadzeniu DATA_REQ wystawiał stan niski, gdy jego bufor wewnętrzny jest w stanie przyjmować dane. AVR odczytuje dane z karty SD do potrójnego bufora (z uwagi na brak DMA) i w procedurze...
Ale w programie BillingMAN jest błąd. Samo ściągnięcie rozmów nie kasuje licznika. Trzeba w opcji "Narzędzia" zaznaczyć "Zerowanie wyświetlacza" Niestety opcja ta wyłącza sie po zakończeniu transmisji. Trzeba o tym pamiętać przy nastepnym ściąganiu
Do jnkOle - możesz mi powiedzieć czym różni się Twoja procedura odczytu RSa od mojej, która wygląda tak: http://pl.wikipedia.org/wiki/Bufor_cykli... Krótko mówiąc - rx0_index w końcu zrówna się z rx0_buffer_size, i co dalej ? Procedura odbioru przesuwająca całą tablice o jeden element w lewo będzie troszeczkę nieefektywna, A u mnie poprzez proste...
Jeśli masz wolny timer, to wykorzystaj go jako softwareowego watchdoga - w obsłudze przerwania overflow zeruj pin enable dla konwertera, przed wpisem do UDR zeruj timer + ustawiaj enable. Ew. możesz coś kombinować z trybem CTC i pinem OCx, żeby nie polegać na przerwaniu dla wyłączenia bufora. Pozdrawiam, Dr.Vee
sek w tym ze nie do konca wiem gdzie leży problem bo zaprojektowany sterownik działa dobrze ze starszym sterownikiem a po podłączeniu sterownika GLP zaczynają sie problemy i dlatego pytam czy sterownik moze wysyłać co kilka paczek "pusta paczke" cos w stylu resetu bufora czy jest to ewidentne uszkodzeniu sterownika GLP kable sa na 100% dobre
witam pisze pewien programik pod bascomem i potrzebuje zaimplementować w asemblerze bufor FIFO dla przychodzących danych. Napisałem pewną procedurkę, lecz nie wiem czemu często coś się w nim zamiesza. sprawdzałem go troche w debugerze ale nic nie mogę wyczaić. Oto kod procedurki zapisującej i odczytującej z bufora: Save_to_fifo: 'Const Wielkosc_bufora...
Moze było na stałe zasilanie 24V w buforze z zasilaczem sieciowym do tego akumulatora. A kiedy były jakieś przeglądy zasilania dot. stołu operacyjnego? Mógł się jakiś przewód urwać i ktoś z obsługi -lub pacjent "pracował" za "zerowanie" stołu...
Nie pocieszę Cię ! Ten problem to najprawdopodobniej "ubity" bufor! Poprostu robi się zwarcie! A co do zasilacza, to jest to przetwornica posiadająca zabezpieczenie i dlatego się zeruje! Zasilacz możesz sprawdzić poprzez obciążenie nominalne, ale po przyłożeniu omomierza do gniazda drukarki najprawdopodobniej stwierdzisz zwarcie! Wtedy :cry: !
wilk125: wkleiłem Twój kod, dopisałem 3 linijki ale w terminalu dostaje same zera. potrzebuje zmierzyć czas, bo nie mogę poradzić sobie z odbiorem RC5. pilot philips 100% RC5, bo w bascomie getrc5() dzialała znakomicie: char zmienna=0; int wartosc; //ISR(EXT_INT0_vect) //SIGNAL(SIG_INTERRUPT0) ISR(INT0_vect) { if (zmienna==1)...
Wpisałem coś takiego: [syntax=c]NVIC_EnableIRQ(DMA1_Channel1_I... Odblokowanie przerwania od kanału 1 DMA1 bo w konfiguracji DMA kanał 1 miałem: [syntax=c]DMA1_Channel1->CCR = (DMA_CCR1_PL_0 | DMA_CCR1_PL_1 | DMA_CCR1_MSIZE_0 | DMA_CCR1_PSIZE_0 | DMA_CCR1_MINC | DMA_CCR1_TCIE | DMA_CCR1_EN);[/syntax] TCIE włączenie przerwania od zakończenia...
Chciałbym się tylko upewnić, czy pamięć od adresu FB00 do FBFF mogę wykorzystywać we własnych programach jako tymczasowy bufor danych ? Jest to fragment pamięci wizyjnej, nie wyświetlana na ekranie, a poprzedzająca zdublowane adresy znaków i atrybutów. W dotychczasowych programach używam tych 255 bajtów jako magazyn zmiennych odciążających rejestry...
Nie czaję ;) Dodano po 10 A próbowałeś wszystko wrzucić do przerwania od Timera0? #pragma vector=TIMER0_A1_VECTOR __interrupt void Timer0_A1(void) { switch(TA0IV) { case 0x0A : // TA0OVF przepełnienie Timer0_state++; if (Timer0_state >= 12) { Timer0_state = 0; if(play_sample == 1) { one_byte...
Na twoim miejscu zrobiłbym to tak (przypominam o rtc i stabilizowanym temperaturowo kwarcu): timer1 liczy czas i przepełnia się co 1s timer2 liczy impulsy i przepełnia się co np 15 timer3 liczy czas w kółko (np inkrementuj go co 1ms) i nie daje przerwania Przerwania od t1 i t2 obliczają prędkość z ds/dt, gdzie dla jednego timera zmienną jest droga,...
trzeba przeprowadzić tak zwaną inicjalizację w C wygląda ona tak void rtl_init (void) { rtl_config_ports(); // konfiguracja linii komunikacyjnych rtl_reset(); // reset RTL8019A rtl_write(RSTPORT, 0x00); // wpisz wartość 0 do komurki Reset Port dlms(30); // czekaj 30 milisekundy rtl_write(CR, 0x41);...
$crystal = 8000000 $regfile = "M16def.dat" $hwstack = 128 Tu zmieniasz wg wlasnych parametrow '- deklaracja zmiennych dla usart ---------------------------------------- Dim Index As Byte 'kolejny znak w buforze odbioru Dim Odebrano As Bit 'flaga ustawiona po odebraniu znaku Dim Buf(10) As Byte 'bufor wejsciowy - 10bajtow '- konfiguracja...
OK, zaraz sprawdze. Co dziwne - pierwsza proba programowania przeszla pomyslnie (ROM 3606), dopiero kolejne - 3019 i 3401 zaczely sypac bledami, ze uszkodzone jest pole konfiguracji pod koniec weryfikacji. EDIT: to samo, tez sypie bledem: ERROR: CONFIG 0x000001 Buf_val: 0x00 IC_val: 0x02 Czyli kostka rypnieta ? Co prawda przy wczytywaniu pliku ROMu...
Konfiguracja UARTa: [syntax=c] #define UART_BAUD 76800 //9600 // tu definiujemy interesującą nas prędkość #define __UBRR F_CPU/16/UART_BAUD-1 // obliczamy UBRR dla U2X=0 void USART_Init( uint16_t baud ) { /* Ustawienie prędkości */ UBRRH = (uint8_t)(baud>>8); UBRRL = (uint8_t)baud; /* Załączenie nadajnika I odbiornika */ UCSRB = (1<<RXEN)|(1<<TXEN)|(1<&l...
Istnieje problem zaniżania pojemności kart SD. Tematów na ten temat jest sporo w działach zajmujących się PC tabletami telefonami, ale tutaj nie znalazłem Napotkałem taki problem i w gruncie rzeczy jestem blisko wyjaśnienia problemu. Wygląda na to że wszystko rozchodzi się o prawidłowy odczyt i prawidłowe przetworzenie "rejestru" CSD ma on 16 bajtów...
Źle bufor masz zorganizowany, źle wystawiasz dane z tego bufora do PWM. Nie napiszę tego w C bo nie będę dawał gotowca,ale mogę napisać jak logicznie to powinno być, resztę sam musisz zrobić. W przerwaniu timera masz tylko ładować do PWMa bajt z bufora wskazywany przez wskaźnik, nic więcej nie robisz w przerwaniu, a juz na pewno nie przeładowanie bufora...
kasowanie bufora dobór bufora ładowanie bufora
windows wybudzeniu gorąca szlifierka 25pt4423 dławik
chińskie radio android bateria robota sprzatajacego
Bezpieczniki w kuchenkach indukcyjnych Amica: lokalizacja i funkcje Przekaźnik dmuchawy: funkcje, problemy, diagnostyka