int nazwa[10]; int X; printf("Którą zmienną chcesz zwiększyć o 1?"); scanf("%d", &X); nazwa[X]++;
Czy zmienna kierunek jest globalna i volatile? Już po pierwszym przerwaniu powinna przyjąć wartość 1 lub 2, a nie być cały czas 0. Czy zaobserwowałeś zwiększanie wartości zmiennej enkoderA ?
Należy: - zadeklarować zmienną globalną np. LICZNIK i nadać jej wartość zera, - włączyć przerwania od przepełnienia Timer0, - w funkcji przerwania należy zwiększać wartość zmiennej LICZNIK o jeden Aby poznać liczbę impulsów wystarczy pomnożyć LICZNIK*256 i dodać do niego aktualną wartość rejestru licznika timera, czyli jak sądzę counter0 (nie znam BASCOM).
Taki kod od biedy napiszesz nawet z użyciem chatGPT. W skrócie: - PWM generujesz przy użyciu timera, wyjście z timera podajesz na driver LEDów (tą część kodu wygenerujesz np. na stronie Microchipa, na której jest klikalny generator kodu). - reakcja na przycisk - poszukaj na elektrodzie np. super debounce, ale to też dobrze generuje chatGPT. Kolejne...
A wewnętrzny pull-up włączony? Bo objaw jest typowy dla programu, w którym włączone jest przerwanie zewnętrzne, a wejście wisi w powietrzu, choć program jest prosty i nie ma w nim obsługi przerwań... Ustaw w pętli niech samo zwiększa wartość zmiennej i obserwuj czy dalej są zakłócenia.
Witam. ... Freddy - twój plik też testowałem i wszystko ładnie wyświetla (litery) natomianst nie wiem jak za pomocą tego programu wyświetlić jakąś zmienną typu byte. Tak jak wcześniej pisałem wskakiwanie do podprogramu powoduje zbyt wolne zwiększanie wartości zmiennej którą zmieniam z przycisku. Czy można ten cały podprogram przenieś do głównego programu...
Co do średniej: ; } srednia=suma/i; nie musisz wpisywać +1, bo zwiększasz tą zmienną o 1 dwie linijki wcześniej. W tym wypadku zwiększasz j faktycznie o 1, ale wyświetlasz wartość zwiększoną o 2.
Funkcje korzystające z tej funkcji robią np: - short - zwiększa wartość zmiennej, - REPEAT - szybko zwiększa wartość zmiennej, - long - wychodzi z regulacji zmiennej... Więc nie mogę najpierw dostać long (bo przytrzymałem przycisk) a potem REPEAT...bo to REPEAT już niczego nie zmieni, wyjdziemy z regulacji zmiennej .. r
Bardzo nieładnie jest to napisane - naucz się używać w kodzie programu klawisza Tab i dodatkowych spacji przy pętlach/warunkach itp. Wydaje mi się że problem tkwi w tym iż w drugiej pętli for zwiększasz wartość zmiennej b, a wczytujesz do tablicy w której podstawiasz zmienną a - więc dla każdego z 10 przypadków zapisujesz w tym samym miejscu. Co do...
Jeśli stale to wykasuj z opcji: [syntax=c] case Nic:{ lcd.print(" "); break; } [/syntax] czyszczenie ekranu spacjami. Tu ewentualnie powinien być zliczany timeout, czyli jakaś zmienna co np. 1ms i jak przez 10s (z delay rozumiem, że to jest Twoje stale): [syntax=c] case Nic:{ static uint16_t timeout1=0; //zmienna static będzie żyła od tego miejsca aż...
Jedźmy dalej incr pomiar powoduje zwiększenie zmiennej Pomiar o 1. To był przykładowy podprogram, który za każdym razem kiedy był wywołany instrukcją gosub zwiększał wartość zmiennej - nic prostszego na próbę nie da się wymyśleć. Myślałem bardziej, że za pomocą tego programu sprawdzisz czy to wszystko działa i jak będzie działało to napiszemy coś bardziej...
Zwiększanie wartości zmiennej w zasadzie wygląda wszędzie podobnie: zmienna = zmienna + <o ole zmienić>; Z dokładnością do składni języka wygląda to tak samo. W C wprowadzono pewne uproszczenie i powyższe można zapisać: zmienna += <o ile zmienić>; Ponieważ często <o ile zmienić> ma wartość 1 więc wprowadzono jeszcze operator ++ ale...
Witam, Jestem początkującym w dziedzinie programowania PLC. Chciałbym zrealizować program który przy kliknięciu przycisku (+) zwiększa mi wcześniej zadaną wartość np o 100, no i w drugą stronę - przy kliknięciu (-) zmniejszenie o 100 aktualnej wartości. Jakich bloków powinienem użyć? W jakim języku proponujecie tworzenie takich programów: FBD czy np...
Witam. Wrzuć wszystkie znaki napisu do tablicy. Jeśli tekst, który ma się wyświetlić jest przechowywany w zmiennej typu string , to tworzenie tablicy nie jest tu konieczne, gdyż z tego co wiem do zmiennej typu string można się odwoływać jak do tablicy typu char (jeśli się mylę, to proszę mnie poprawić). Poniżej załączam przykładowy kod tego, jak to...
Byłaby szansa na jakiś kawałek kodu asm ze zwiększaniem wartości zmiennej w przerwaniu :-) ? Zmienna ustawia potem stan wyjść.
W obsłudze przerwania zupełnie niepotrzebnie dałeś opóźnienie _delay_ms(500) A jeśli chodzi o zwiększanie wartości zmiennej led_display to przed instrukcją break; zwiększasz wartość zmiennej przez instrukcję led_display++; (ta instrukcja to inkramentacja czyli zwiekszanie zmiennej o 1). Dopiero gdy jesteś w ostatniej instrukcji case np case 3 to do...
Według mnie błędem jest inkrementacja w przerwaniu. Lepiej ustawić sobie w nim tylko flagę że wystąpiło. Teraz w pętli głównej jeśli flaga wystąpiła to zwiększamy wartość zmiennej stan o 1. Następnie w main zerujemy flagę. Napisz czy pomogło. Pozdrawiam
Witam, Zbudowałem kiedyś sobie prędkościomierz cyfrowy do auta. Działa on tak, że w przerwaniu zwiększam wartość licznika i co 1s przeliczam ilość zebranych impulsów na prędkość i wyświetlam na wyświetlaczu. Teraz chcę sobie zrobić tak, że w przerwaniu będę z każdym impulsem zwiększał wartość zmiennej, a jak nazbiera się ich powiedzmy 15 to zmierzę...
Witam, na tym etapie poszedłbym na łatwiznę, przeczytał instrukcję obsługi. Nie znam bibliotek których używasz, ale na szybko wychodzi coś takiego: [syntax=c] display.clearDisplay(); display.setCursor(0, y); display.print("linia: 01\nlinia: 02\nlinia: 03\nlinia: 04\nlinia: 05\nbardzo dluga linia: 06\nlinia: 07\nlinia: 08\n"); display.display(); [/syntax]...
Jeśli chcesz aby np. dwie diody mrugały z różną częstotliwością to w najprostszy sposób możesz to zrobić tak: na początku pętli głównej dajesz małe opóźnienie powiedzmy 5ms. Potem w każdym obiegu pętli (co 5ms) zwiększasz wartość dwóch zmiennych np. Licz1 i Licz2. Kiedy Licz1 osiągnie wartość 50 wtedy zerujesz ją i zmieniasz stan pinu do którego dołączona...
Za każdym razem jak uruchamiasz tę funkcję zmienna x jest na początku ustawiana na wartość 0. Przenieś deklarację zmiennej x poza funkcję (ma to być zmienna globalna).
Odniosłeś się do rzeczy o których wspomniałem przy okazji, a najważniejsze zignorowałeś. program nie wchodzi już do pętli i nie zwiększa wartości zmiennej a. Dlaczego? żaden z warunków nigdy nie będzie spełniony, bo użyłeś operatora iloczynu bitowego zamiast logicznego (właściwie nie żaden, tylko dwa ostatnie - pierwszy jest w porządku)
Zrób na dwa szybkie klaśnięcia od razu bo Ci się coś przewróci w nocy (kij od miotły nawet ) i jesteś bez światła. To samo pies... pies nie szczeka tak szybko jak podwójne klaśnięcie. U mnie logika jest taka że od wykrycia pierwszego klaśniecia włącza Timeout i zwiększa wartość zmiennej. Timer odejmuje od tej zmiennej co ~500ms. Jak zdążysz klasnąć...
Witam Problem w tym, że jeśli zwiększam wartość zmiennej to jest w porządku, jeśli dojdzie do górnego zakresu, ale jeśli zmniejszam i dojdzie do dolnego zakresu to przeskakuje na wartość 255. Daj więc ten sam warunek co przy incrementacji: "................... Elseif Dol = 0 Or Enk_prawo = 0 Then Decr M If M > 59 Then M = 59 ...................." to...
Dziękuję za odpowiedź. Maksymalna i minimalna już rozumiem. Natomiast średnia powiedzmy zapisuje co równą godzinę do tablicy o rozmiarze 24 i te wyniki porównuje z minimalną i maksymalną? potem je podzielę to wyjdzie mi średnia? Tak będzie dobrze? Pozdrawiam. Myślę, że najłatwiej będzie następująco. Deklarujesz tablicę o rozmiarze 24. Na początku (podczas...
Faktycznie, zapis jest mało gramatyczny. Tak w ogóle - co to jest to m ? bo nie ma we wzorze... :| Może to powinno brzmieć "dla m dużo większe od 1 oraz losowego t z przedziału -4 do 6"... Bo jeśli przyjąć "m losowych wartości" to nie wyobrażam sobie jak niby wykonać 3 pomiary dla m losowych wartości - to by się sprzeczało ze wzorem. Tak przy okazji...
Moim zdaniem koncepcja powinna być taka: 1. Obsługa przetwornika analog-cyfra. Na początek dobrze żebyś umiał dobrze zmierzyć liczbę impulsów. Nie wiem dokładnie jaka jest specyfika Twojego sygnału, jaką amplitudę mają owe szumy, skąd się biorą i czy nie warto by ich po prostu potraktować filtrem dolnoprzepustowym, a jeśli mają odpowiednio niską amplitudę...
kol. mihalo...raczej w to co piszesz nie wierzę?!. Sam sporo używam FATEK'a - timerów i liczników multum, a jednak skończone ilości T=256 (kilka grup z rozdzieleniem na podstawy czasu) no i C= też skromne 256 szt...;) nie musisz używać tylko tych domyślnych timerów, możesz dodatkowo używać IEC każdy z osobną instancją DB, albo inny sposób wykorzystać...
Rozwiązanie Twojego problemu jest banalne. Na początek proponuję wykorzystać zmienną, która jest zwiększana przy każdym wciśnięciu przycisku i w zależności od wartości tej zmiennej (tu wystarczy od 0 do 3, przy wartości 4 zmienna jest znowu zerowana) ustawiasz jedynkę na odpowiednim porcie jednocześnie uruchamiając zliczanie. Kiedy licznik dojdzie do...
Witam. Pętla while wykonuje się póki warunek jest spełniony. Aby odczytywać dane od początkowego adresu musisz w każdym przebiegu pętli zwiększać wartość zmiennej z adresem, i w warunku sprawdzać czy nie osiągnął wartości końcowej &H008C (Adres_xr_odczyt <> &H008C), a dodatkowo sprawdzić czy B1 jest równy 0. Nie sprawdzałem tego i dawno...
Ale w dalszej części programu nie ma nic specjalnego tylko instrukcje np. Do If S2 = 0 Then Incr Godzina1 End If If Godzina1 > 23 Then Godzina1 = 0 If S3 = 0 Then Incr Minuta1 : Sekunda = 0 End If If Minuta1 > 59 Then Minuta1 = 0 If S4 = 0 Then Incr Dzientygodnia1 End If .................. A problemem jest S4, przy wejściu w menu zegara cały...
Do pokazania stanu komunikacji ze sterownikiem można użyć Text list lub Graphic list i podpiąć do jakiejś zmiennej w PLC. Przy braku połączenia, listy wybierają zaznaczoną wartość domyślną. Np. co sekundę do zwiększasz wartość zmiennej o 1. Jeśli wartość się zmienia, to znaczy, że komunikacja istnieje. A jak to odczytać po stronie panelu, trzeba napisać...
Może trochę prymitywnie ale sprawdzałbym każdy bit po kolei, jeżeli bit = true do zwiększam wartość zmiennej o 1. I tak dwanaście bitów, na końcu wartość zmiennej odzwierciedla ilość ustawionych bitów. Po odczycie zmiennej wpisuje do niej "zero". I tak w każdym cyklu mam ilość ustawionych bitów. W STEP7 w stl wygląda to tak (dla jednego bitu): A I 0.0...
do zmiennej suma zostaje wpisana wartość tej zmiennej plus wartość w zmiennej a, czyli zwiększamy wartość sumy o a Kod C++ - A powiedz mi tylko po co to jest dodane? Jakie to ma zadanie?
Możesz zrobić to na dwa sposoby. 1. Wykorzystać przerwania. 2. Wykorzystać główną pętlę programu. W 1 przypadku ustawiasz któryś z timerów na powiedzmy 100 000 przerwań na sekundę. Za każda obsługa przerwania zwiększasz wartość zmiennej (licznik) o jeden i porównujesz z ustawioną wartością PWM (jakaś zmienna). Kiedy ustawiona zmienna jest mniejsza od...
Pomyśl jak programista (o podprogramach) - wystarczy Ci 4000 powtórzeń pętli x 2: - najpierw liczby typu "MMCDXLVII", czyli wg Twojej notacji "tysiące" - potem to samo dla liczb typu "mmcdxlvii", czyli "jedności". A potem to już tylko jedno mnożenie i jedno dodawanie :D. Ciekawe skąd wziąłeś taką konwencję zapisu liczb rzymskich? A tak poważnie, to...
(at)korteksik Można inaczej. W przerwaniu od RTC co 1 sekundę zwiększasz wartość zmiennej wskazującej czas lokalny. I tylko tyle na tym etapie. Koszt operacji jest znikomy. Jeżeli odbierasz czas z zewnątrz, to porównujesz z wartością zmiennej przechowującej czas lokalny. - Jeżeli wartości są różne, to robisz konwersję danych, aktualizujesz rejestry...
Nawet nie musisz używać Timera. Wystarczy, że w pętli głównej będziesz zwiększał jakąś zmienną (typu "long"). Jeżeli przekroczy jakąś wartość to wyłączasz silniki i wstrzymujesz zwiększanie zmiennej. Za każdym razem gdy otrzymasz z odbiornika wspomniany ciąg kontrolny to zerujesz wartość zmiennej.
Wywołanie LCD jest tylko w ramach sprawdzenia co się dzieje. W programie przerwanie będzie tylko zwiększać wartość jednej zmiennej. Żona zwróciła mi uwagę na rejestr TIMSK, którego wartość mam zdefiniowaną dwukrotnie. Zsumowałem wartości dla timerów 0 i 2 i zaczęło działać. Niniejszym zamykam wątek.
Rozumiem że coś w przerwaniu zrobić chcesz, ale ciekawe jak to sprawdzasz (tę dokładność) Może najpierw zwiększasz w kodzie zmienna a potem dopiero każesz ustawiac jakiś pin którym to mierzysz? Może na odwrót, najpierw pin a potem zwiekszanie zmiennej bo zwiększanie może się czasowo różnić w zależności od wartości.
Myślałem nad takim rozwiązaniem tego: Pojawia się impuls na wejściu z fotorezystora i włącza się timer. W ciągu np. 3 sekund impulsy są zliczane (poprzez zwiększanie wartości zmiennej wewnątrz pętli sprawdzającej stan portu), po czym timer zostaje zatrzymany. Na podstawie ilości otrzymanych impulsów w ciągu 3 sekund oraz ilości otworów na tarczy można...
Mój kolejny problem w moim programie. Mianowicie za pomocą timera losuję określoną liczbę literek i za każdym razem zwiększam wartość zmiennej losowania. W momencie gdy ta zmienna osiągnie wartość licznika(czyli ilości losowań) timer powinien się zatrzymać. Niestety co jakiś czas wyskakuje mi błąd taki jak w załączniku. Co w moim kodzie jest nie tak?...
Najprościej sprawdzając stan pinów do których podpięte są przyciski. Wprowadzasz zmienną wskazującą jaką wartość (godz. , min. itd) zmieniasz. Po wykryciu wciśniętego switch'a inkrementujesz (zwiększasz) wartość tej zmiennej i np jeśli Zmienna=1 to skaczesz do podprogramu zmiany wartości minut, jeśli Zmienna=2 to do zmiany godzin, itd. Jak Zmienna przekroczy...
Pierwszą rzeczą, jaka mi się pozytywnie rzuciła w oczy, to brak konieczności stosowania debouncingu dla przycisku, co widać w ciele funkcji increment_from_interrupt_PA0 (main.c) oraz funkcji EXTI0_IRQHandler (ISR.c). W procedurze obsługi przerwania od przycisku EXTI0_IRQHandler następuje odblokowanie semafora, pozwalając na wykonanie funkcji increment_from_interrupt_PA0....
Najprościej - naciśnięcie przycisku uruchamia pętlę, w której zwiększana jest wartość zmiennej i wykonywane jest opóźnienie np. 100ms. Program opuszcza pętlę gdy puszczamy przycisk. Od wartości zmiennej naliczonej w pętli uzależniamy dalsze działanie. P. S. Warto uzależnić także wyjście z pętli przy osiągnięciu przez zmienną określonej wartości żeby...
Będzie ciężko to zrobić :( Najprostsza możliwość, to włączanie i wyłączanie timer-a, przyciśnięciem tego samego Buttona. Rozumiem To zadam pytanie inaczej Chcę wysyłać zmienną o wartości od 0 od 255 + $13 "Enter" jako string na COM port i wypisywać wartość odebraną na "Panel1" chcę by jeden Button jak trzymamy , zwiększał wartość zmiennej co 250ms...
Przepraszam moi drodzy, chodzi mi o delay w Ardurino :) Arduino :-) Nie ten dział kolego! Informacje o delay znajdziesz Chciałbym sterować kątem załączania tyrystora. Po przez przyciśnięcie przycisku chciałbym zwiększać wartość zmiennej x która będzie podawana do funkcji dealy która z kolei będzie opóźniać kat załączania bramki tyrystora. Może masz...
1. Przypisujesz wartość zmiennej i 2. Sprawdzasz, czy nie przekroczyła końca pętli 3. Robisz co trzeba 4. zwiększasz i 5. wracasz do 2. Tak działa FOR.
Witam zastosowanie timera w konfiguracji licznika w takim wypadku się nie sprawdzi. Naciśnięcie i puszczenie niesie za sobą efekt uboczny czyli drgania styków. Przez to twój licznik przy jednym naciśnięciu przycisku zalicza kilka impulsów. Taka konfiguracja timera jest przystosowana do stabilnych (czyt. nie drgających sygnałów) . Zamiast zaprzęgać do...
Witam! Uczę się programowania w BASCOM i mam problem z procedurami. Chciałem sobie napisać procedurę tak jak w kodzie, który podałem niżej aby zwiększać wartość zmiennej A. Program działa, zmienna się zwiększa ale wyświetlacz jakoś dziwnie mruga. Gdy procedurę wyjmę z pętli to jest dobrze z wyświetlaczem, ale za to zmienną A zlicza tylko od zera do...
Odliczy dokładnie: 1/1M = 0,000001 co 1024 tyknięcie zegara impuls czyli z racji że 100ms to 0.1s więc: 0.1/0.001024 = 97.65625 impulsów Więc w rzeczywistości odliczy 99.328ms. Więc możesz w przerwaniu dać funkcję która co 97 przerwanie zwiększa zmienną o 1. Potem wystarczy porównać jaką wartość ma ta zmienna np. w switch() i gotowe.
zapis writeeeprom zmienna , adres odczyt readeeprom zmienna , adres Musisz pamiętać ile bajtów zajmuje zmienna którą zapisujesz i o taką wartość zwiększyć adres przy zapisie / odczycie następnej zmiennej Jeśli zmienne typu Byte , adres zwiększasz o 1 Jeśli zmienne typu Word , adres zwiększasz o 2 Jeśli zmienne typu Integer , adres zwiększasz o 2 Jeśli...
Dummy_timer nie robi niczego mądrego. Funkcja zwraca zmienną static unsigned int ticks, a wywołana z parametrem TIMER_UPDATE zwiększa jej wartość o 1, wyświetla kropkę w konsoli i czeka 1ms. Do testów jest ok, docelowo można użyć timera.
Witam, Zadeklaruj tablicę gdzie będziesz przechowywał wartość (znaki) do wysłania. Najlepiej abyś utworzył blok programowy. W każdym cyklu zwiększaj o jeden wartość zmiennej pomocniczej która będzie indeksowała po elementach tablicy. Pamiętaj żeby nie przekroczyć zakresu tablicy i masz problem rozwiązany. Pozdrawiam,
Witam Mam pytanie dotyczące obsługi encodera... Próbuje napisać programik którego działanie ma wyglądać następująco Obracam encoderem w prawo lub w lewo na wyświetlaczu na pierwszej pozycji zmieniają się kolejno cyfry od 0 do 9 lub odwrotnie w pętli. Przy zmianie kierunku pierwsza cyfra na wyświetlaczu zostaje "zamrożona" a zmianie podlega druga cyfra,...
W najbardziej prymitywny sposób możesz to zrobić tak jak napisałeś, ale rozdzielając odstępami czasu pomiędzy kolejnymi sekwencjami: Portd=&B10000000 waitms 200 Portd=&B11000000 waitms 200 Portd=&B11100000 waitms 200 Portd=&B11110000 waitms 200 Portd=&B11111000 waitms 200 Portd=&B11111100 waitms 200 Portd=&B11111110 waitms 200 Portd=&B11111111 waitms...
To prawda, że obsługa przerwania wydłuża czas instrukcji Wait. Tyle, że tutaj instrukcja stosowana w pętli głównej ma spowalniać zwiększanie lub zmniejszanie zmiennej następujące w konsekwencji nacisnięcia przycisku. Kontrola zwiększania lub zmniejszania wartości zmiennej jest jak rozumiem wzrokowa, więc i wydłużenie instrukcji Wait (niewielkie jak...
Bardzo dziękuje za podpowiedź, choć nie rozwiązała ona problemu. Póki co porzuciłem ten projekt na rzecz trudnierjszego rozwiązania, bo dążę do opanowania obsługi przerwań w Bascom. A teraz w kilku słowach o tym, co chcę osiągnąć. 4 switche podłączone do portu mają powodować wyświetlanie stanów logicznych na 4 cyfrowym LED tzn. naciskam klawisz1 - zmieniam...
http://obrazki.elektroda.pl/1661316800_1... Witam ponownie Tym razem chciałbym zaprezentować projekt lżejszego kalibru - zegarek wskazówkowy i termometr zbudowany na AT91SAM7S64. Wykonałem ten projekt, bo chciałem trochę pouczyć się programowej obsługi wyświetlacza graficznego z Nokii 3310, programowej obsługi enkodera inkrementalnego...
Wystarczy, że opiszesz co robi pętla while Inkrementuję wartość rejestru OCR0A(...) Nawet po zmianie, zwiększasz zmienną test a nie wartość rejestru OCR0A, Zmienną test, której wartość nigdzie nie używasz.
Robisz sobie dwie zmienne: blokada i aktywność. Blokada jako prosta wartość 0 lub 1: jeśli blokada jest założona i wykryjesz, że oba przyciski są naciśnięte, to ustawiasz blokadę na 0 (i aktywność na 0, dodatkowo można dać opóźnienie, aby nie uwzględniać naciśniętych przycisków dalej). Jeśli blokada jest zdjęta, to robisz wszystkie testy, dodatkowo...
Witam próbuję napisać program sterujący siłownikiem hydraulicznym (wysuwanie i wsuwanie), jednak nie wiem jak zatrzymać odliczanie bloczka "INC". Włącznik "Tloczenie" uruchamia odliczanie w bloczku INC. Bloczek ten znajduje się wewnątrz Bloku Cyclic interrupt [OB30], odświezanym co 50ms. Gdy "Tloczenie" jest aktywny, zwiększa się wartość zmiennej "Wysuniecie"....
witam, Nie wiem czy o tym samym myślimy, ale ja miałem taki problem, że wartości zmieniały się skokowo i chociaż kierunek zmian napięcia wejściowego był stały to wartość cyfrowa raz się zmniejszała, a raz zwiększała. Po napisaniu kodu programu jak w instrukcji wszystko było ok.
Dzień dobry, zbudowałem sobie prosty układ sterujący pracą pasków ledowych, mamy jako mikrokontroler ATTiny na digisparku, jeden MOSFET i czujnik ultradźwiękowy. Najpierw użyłem kodu który po prostu włącza ledy jeśli ktoś znajduje się w odległości mniejszej niż... jednak chciałem rozbudować działanie układu o stopniowe rozjaśnianie/ściemnianie w taki...
Każdy coś dopowie, ale nikt nie zauważy, że kod jest jako wektor przerwania. Przecież jak tam będzie pętla nieskończona, to się kod zawiesi na nieustannym sprawdzaniu po jednym tyknięciu. Wartość rejestru TAR jest odczytywana tylko raz (nie wiem od czego jest ten rejestr, ale wpływa na wartość zmiennej "var", która później się nie zmienia przez co praktycznie...
Witam. To zależy z jaką częstotliwością przychodzą impulsy. Jeżeli przychodzą dośc wolno to można impulsy podać na wejście przerwania a w obsłudze zwiększać wartość jakiejś tam zmiennej o jeden. Jeśli są one dość szybkie to można np. skonfigurować licznik żeby zliczał je i co 10 dawał przrwanie, a w przerwaniu zwiększać zmienna o 10. W tej metodzie...
...niestety nie znam asemblera. Nie musisz znać. Jak przeczytasz uważnie i zrozumiesz zasadę, to sam napiszesz procedurę obsługi przerwania w C. Dla częstotliwości PWM rzędu kilkunastu kiloherców i zegara CPU 8MHz przerwanie występuje co ponad 500 taktów, więc nawet procedura napisana w C nie będzie za długa (myślę, że nie powinna przekroczyć 100 taktów)....
Gdzie timer realizuje zliczanie ? Timer zlicza automatycznie zwiększając wartość rejestru TCCR0. W tym przypadku TCCR0 jest zwiększany od zera do 255. Gdy nastąpi przepełnienie czyli przejście z 255 na 0 następuje wywołanie procedury przerwania. Widać też lekkie miganie wyświetlaczy... Najwyraźniej częstotliwość 'przełączania' poszczególnych wyświetlaczy...
Witam Jakie napięcie jaka wartość napięcie stałe zmienne podaj wartośći
Pomysł na figlarza powstał już jakiś czas temu. Dlaczego jeden klawisz? Pilot miał być maksymalnie uproszczony, miał służyć do robienia żartów przy piwku u kumpli. No i się sprawdził :D Oczywiście można by pokombinować nad większą liczbą klawiszy. Jak rozumiem "pilot" zapisuje czasy między kolejnymi zboczami? Jeśli tak, to jaki jest maksymalny czas...
kkrryyss1 --> już w drugim założonym temacie mówisz, że koledzy cię nie rozumieją bo ci nie chodzi o multipleksowanie tylko o dwa niezależne liczniki na dwóch wyświetlaczach LED. To ile razy trzeba koledzie jeszcze powiedzieć, że właśnie na 2 wyświetlaczach multipleksowanych można zrobić 2 niezależne liczniki liczące od 0 do 9 - to nie jest problem...
Cześć. Uruchamiam obsługę karty SD z użyciem biblioteki bazującej na pettit FAT. Nie mogę znaleźć sposobu na poprawne obsłużenie zapisu na kartę SD z użyciem funkcji pf_write i pf_seek. W dokumentacji znalazłem informację że pf_seek dla zapisu powinien wskazywać za każdym razem na nowy(kolejny) sektor. Sektor ma 512B dlatego w tej chwili robię to na...
Witam. Na wstępie już pisze, że jestem laikiem jeżeli chodzi o programowanie mikrokontrolerów i umiejętności pisania w bascomie, także przepraszam jeżeli kogoś bardzo dotknie moja niewiedza i błędy. Chciałbym z wykorzystaniem Atmegi8 i dwóch zestawów fotokomórek (nadajnik,odbiornik) stworzyć układ włączający przekaźnik w zależności ile razy fotokomórki...
To jest mój pierwszy program w Bascomie a nie w ogóle. I moim zdaniem jest to coś prostego właśnie. Ale nie oto chodzi. Przetwornik ADC ma zmierzyć na początku jeden raz napięcie akumulatora ( pierwszy pomiar odrzucam bo może być niewłaściwy). Po stwierdzeniu, że napięcie jest poniżej wartości ustalonej dioda ma mignąć 3 razy żeby poinformować użytkownika...
Najprostsze rozwiązanie. Tworzysz w pamięci programu tablicę funkcji sinus (na 8 bitach). Tworzysz trzy wskażniki do danych w tablicy, przesunięte o 1/3 rozmiaru tablicy. Ze zmienną częstotliwością (zmienianą np. przerwaniem od timera) odczytujesz wartości z tablicy i wystawiasz na trzy porty. Zwiększasz wskaźniki. I to chyba cały algorytm
Witam. Posiadam mikrokontroler STM32F429. Jest on wyposażony w liczniki z funkcją PWM i układy DMA. Chciałbym opracować program, który płynnie zwiększa wartość wypełnienia sygnału PWM, po czym ponownie zmniejsza, wg. schematu: krok 1) 0% ----płynne zwiększanie----> 100% krok 2) 100% ------ płynne zmniejszanie -------> 0% Cały cykl powinien się powtarzać:...
Czy jest możliwe takie napisanie podprocedury w bascomie aby zwracała wartość zmiennej?? Pokażę na przykładzie o co mi chodzi, chcę powiedzmy napisać sobie uniwersalną procedurę, która będzie zwiększała wartość jakiejś zmiennej, pod warunkiem, że ta nie osiągnęła jeszcze górnej, wyznaczonej granicy... np.: Dim Dana As Byte , Granica_g As Byte , Zmienna...
Dlaczego zmierzone wartości są różne dla napięcia, a identyczne dla natężenia? Nie powinno być na odwrót? Koleżanka musi powtórzyć drugie prawo Kirchhoffa. Źródło napięcia podaje, jak sama nazwa wskazuje, napięcie. Więc przykładając do tego źródła rezystor, przepłynie w obwodzie prąd o ustalonej przez napięcie i rezystancję wartości, zgodnie z prawem...
W pętli brak podnoszenia wartości Time, w do while wpisz Time+=1, timer nie podniesie wartości tej zmiennej gdy jest pętla, raczej zrezygnował bym wogole z tej pętli i w metodzie timer_tick, sprawdzał warunkiem czy Time <50, If Time <50 then Zrób coś Else Nie rób nic End if Czyli jeśli mam zmienną globalną X którą sprawdzam w pętli i jest timer...
Witam, Od dłuższego czasu siedzę nad sterownikiem opartym o uC ATmega32. Urządzenie posiada 3 wyjścia sterowane przekaźnikiem, a ja chciałbym aby użytkownik z poziomu menu mógł ustawić niezależnie 3 czasy on/off dla każdego z przekaźników. Do tego celu, aby zaoszczędzić linijki kodu chciałem stworzyć funkcję "szablon" do samego ustawiania czasu: [syntax=csharp]...
for (i=1 ; i<=NWW; i++) { if (i%(NWW/li_A)== 0) PORTC |=0x02; if (i%(NWW/li_B)== 0) PORTC |=0x08; if (i%(NWW/li_C)== 0) PORTC |=0x20; if (i%(NWW/li_D)== 0) PORTC |=0x80; // zerowanie pinów ABCD PORTC &=0x55; // opóźnienie _delay_ms(czas_kr/NWW); } Wszystko...
ad 1:Podaj F rezonatora np. 8mhz config timer1 = timer,prescale 256 'konfiguracja timera load timer1 , 31250 'załadowanie timera 1s on timer1 odliczanie 'określenie która procedura ma byc wykonana co 1s enable interrupts 'właczenie przerwań enable timer1 'właczenie timera1 dim twoja_zmienna as long ' twoja pętla do "jakis tam twój program" loop odliczanie:...
Podam Ci algorytm liczenia: 1. otwierasz plik 2. sprawdzasz, czy nie osiągnięto jego końca. Jeśli tak - skaczesz do 7. 3. Pobierasz znak z pliku 4. Porównujesz go z założonymi przypisując odpowiednią wartość i zapamiętując w zmiennej 5. Zwiększasz sumę o wartość. Ponadto możesz zwiększyć także wartość w tablicy wystąpień (najlepiej przypisać poszczególnym...
Prosił bym o wskazówkę jak można używać liczb do sterowania krokami sekwencji. Chcę uzyskać funkcjonalność ala automatu który wykonywał by poszczególne kroki sekwencyjnie. Numer sekwencji chcę przechowywać jako liczbę/zmienną o jakiejś nazwie. Kiedy zmienna == 1 wykonuję konkretny krok zwiększam jej wartość i wykonuję krok 2. Nie potrafię jednak do...
Incr zwiększa tylko o jeden więc musisz do jakiejś zmiennej dodawać 10 lub zrobić dodatkową zmienną do której wpiszesz 10 a potem dodasz ją do zmiennej której wartość chcesz zwiększyć.
No zmienna licznik - przepisujesz jej wartość do podanej zmiennej. I pewnie zwiększasz. A jako, że licznik jest statyczny, to jest wspólny dla wszystkich obiektów klasy.
Witam Na razie zrobiłem to tak: ( wywaliłem obsługę rozjaśniania/ściemniania bo coś się timery "gryzły" - zamiast Twojej Long1 jest Wl1 ), na razie uprościłem kod do jednego wyjścia '********************* Konfiguracja $regfile = "m32def.dat" $crystal = 16000000 Config Timer0 = Timer , Prescale = 64 Config Portc = &B11111100 'Pc.0, Pc1 jako...
Problem jest w programie, nie wiem czy koniecznie w kompilatorze. Dziś rano jeszcze to robiłem, dopisałem sei() oczywiście ale to nic nie zmieniało. Pętla while oczekuje na zakończenie transmisji, więc jeśli samo przerwanie jest nią wywołane, tak więc kiedyś ono się zakończy, po za tym sprawdzałem komunikacje i działa. Co do tego co gdzie ma być wpisane...
No tak, bo nie sprawdzasz jaka jest aktualna wartość zmiennej Pwm1a. Zastosuj się do rady Zumka
Witam . Zadanie jest trywialne . Potrzebujesz 3 zmiennych i dwóch przerwań zewnętrznych plus przerwanie do wyświetlacza. Po starcie procka ustawiasz wartość jednej z zmiennych która będzie równa ilości przerwań wyświetlacza w czasie 10 sekund . Podczas aktywacji przerwania od T1 aktywujesz przerwania od INT0 i INT1 . INT0 zwiększa jedną zmienną a INT1...
Mam procedurę która w zależności od naciśnietego klawisza zwiększa lub zmniejsza wartość zmiennej [syntax=c] //--------------------------------------... char PLUS_MINUS (char buf,char max, char min) { if (key==1)key=0, buf++; if (key==2)key=0, buf--; if(buf>max)buf=max; if(buf<min)buf=min; return buf; }[/syntax] Problem polega na tym że nie...
W tym wypadku: zmienna++; oznacza dokładnie to samo co: zmienna=zmienna+1; Czyli najprościej mówiąc, inkrementuje Ci zmienną "zmienna", zwiększa jej wartość o 1 ;)
No teraz to mi się zgadza, z taktowaniem timera, który w tym przypadku zwiększa swoją wartość co 1us. Dzięki za podpowiedź.
Piszę program do czujnika zliczającego stan licznika gazu i wysyłającego dane na serwer w losowych odstępach czasu. Problemem jest fragment kodu: Każda procedura wysyłająca wywoływana jest 3 razy. Za pierwszym razem przesyłane są poprawne dane, a za dwoma kolejnymi śmieci (pogrubione linijki). Transmisja na pewno jest ok, bo sumy CRC16 się zgadzają....
Witam. Zadeklarowałem zmienną przy użyciu signed int. Zwiększam ta zmienną cyklicznie co 50 a zatem kolejne wartości są następujące: 0,1,2....32750, -32736, - 32686,... Wartości tej zmiennej porównuję do zawartości 16-bitowego rejestru, który cyklicznie zlicza od 0 do FFFF. Dlaczego każde porównanie jest prawdziwe? Dlaczego program działa poprawnie...
Nie potrzebujesz kolejnego licznika. Już masz jeden skonfigurowany do pracy cyklicznej i to w zasadzie już Ci mniej więcej wystarczy. Masz w tym momencie przerwanie co 1/18750sekundy czyli co jakieś 53,33(3)us. Jeśli chcesz zrobić opóźnienie w pętli głównej o na przykład 500ms to wystarczy, że poczekasz 500000/53,333=9375 takich przerwań. W tym celu...
Możesz skorzystać z sesji lub ciasteczka do przechowania wartości albo przekazać wartość przez mechanizm GET lub POST.
Witam. Przecież ten program nie będzie działał wg założeń. Nawet jak umieścisz to w pętli. Zrób tak: do obsługi przycisku użyj polecenia Debounce [syntax=basic4gl]Debounce Pinb.3 , 0 , Przycisk , Sub [/syntax] W podprogramie obsługi przycisku zwiększaj wartość jakiejś zmiennej [syntax=basic4gl]Przycisk: Incr Jakas_zmienna If Jakas_zmienna = 4 Then Jakas_zmienna...
I tu jest problem? Nie ma problemu :) Musisz mieć widoczne w całej klasie zmienne z aktualnym rozmiarem i zmienną typu bool z kierunkiem (np. true oznacza zwiększanie, a false - zmniejszanie). W timerze, w zależności od wartości zmiennej, albo zmniejszasz bieżący rozmiar o jakiś krok, albo go zwiększasz: [syntax=csharp]if (kierunek) biezacyRozmiar...
Trudno osobie która wykorzystuje same gotowe funkcje tłumaczyć od podstaw timery. Bo innego sensownego sposobu zamiany "delay();" w tym momencie nie widzę. Jeśl nikoś14 chciałby się zaznajomić z tym zagadnieniem: http://diycenter.acid19.linuxpl.com/read... http://maxembedded.com/2011/07/14/avr-ti... Przy kolejnym wciśnięciu...
zwiększanie zmiennej zmiana wartości zmiennej wyświetlanie wartości zmiennej
odkurzacz uszkodzony szyberdach elektryczny mixer pioneer
telewizor elektron telewizor elektron
Symbol parasolki w sterowniku Buderus Logano G115 Ustawienie trybu zimowego w piecu Buderus Logano G115