Witam Procedura gotowa, działa na przerwaniu i wyrabia się w 40 cykli zegara (około), ale nie odkładam rejestrów licznika na stos, jeżeli licznik będzie w SRAM to trzeba dodać zachowanie na stosie rejestrów Y. Na razie popatrz na asembler i napisz co z tego rozumiesz, acha, algorytm jest inny niż twój. INT0INT1: push r16 ;odłożenie rejestrów i SREG...
https://obrazki.elektroda.pl/1101914900_... Berry to lekki język skryptowy przeznaczony dla systemów wbudowanych. Posiada dynamicznie typowany, jednoprzebiegowy kompilator i interpreter o rozmiarze głównej implementacji mniejszym niż 40 KiB, który może działać na stercie mniejszej niż 4 KiB. Dzięki najnowszej Opcja 1 : możesz po prostu...
http://obrazki.elektroda.pl/6499721900_1... Lutowanie elementów do montażu powierzchniowego może być często sporym wyzwaniem, szczególnie że niektóre elementy mają wyprowadzenia co 0,4 mm lub mniej, tak jak w przypadku obudów TQFP a liczba pinów sięgać może setek. W takich przypadkach dedykowany do lutowania mikroskop jest bardzo przydatnym...
Podrzucę swoje dość mocno rozbudowane w możliwości urządzenie na bazie ESP-01. Kod napisany w C (ARDUINO) . Zdalne sterowanie przekaźnikiem: Kod pozwala na zdalne włączanie i wyłączanie po zdefiniowanym czasie przekaźnika za pomocą połączenia Telnet. Dzięki temu możesz zdalnie kontrolować urządzenie Router / modem . Automatyczna aktualizacja DNS: Jeśli...
Przede wszystkim, zamiast:[syntax=c] case 2051: if (results.value == 2051 && output0State == "off") [/syntax]powinno być:[syntax=c] case 2051: if (output0State == "off") [/syntax]Dodatkowe sprawdzanie stanu zmiennej 'results.value' jest niepotrzebne, skoro: [syntax=c]switch (results.value)[/syntax]już to robi. W switch..case zwykle umieszcza się również...
Jest to po prostu: forsowanie zmiennej Dobrym podejściem jest sprawdzanie w pętli loop() stanu zmiennej bool i w zależności od jej stanu wywoływać funkcję poza loop(). Natomiast w danej funkcji forsować zmienną odpowiadającą za wywołanie funkcji. Tak, aby wykonała się tylko raz. [syntax=c] bool fnc01; loop() { if(fnc01) { turnOn(); } } void turnOn()...
Witam! Potrzebuję w moim programie kolejno wyciągać bit ze zmiennej i sprawdzać jego stan logiczny. Ponieważ sam nie bardzo wiem jak to zrobić proszę o pomoc. Miało by to wyglądać jakoś tak: for (k = 0; k < 8; k++) { // Teraz sprawdzanie logicznego stanu bitu w zmiennej , jeżeli prawda (HIGH) to PORTB.1 = 1; else; PORTB.1 = 0;...
volatile jest konieczne jeśli zmienna może zmienić swój stan niezależnie od głównego ciągu instrukcji, a taka zmiana jest niemożliwa do prześledzenia przez kompilator. Przykłądem jest np. sprawdzanie stanu zmiennej w jednym miejscu, kiedy ta zmienna może niezależnie (np. w przerwaniu) ulec zmianie. Bez tej wiedzy kompilator może zoptymalizować i wyrzucić...
Niestety projekt mam do oddania "na wczoraj" więc nie będę się w to bawił. Ale na pewno porada przyda się na przyszłość. Mam pytanie z innej beczki: Do interakcji z urządzeniem będę wykorzystywał 5 przycisków. Czy dobrym pomysłem jest sprawdzanie ich stanu w przerwaniu generowanym np co 25ms?
Może przerwania wcale nie są generowane co 1s i inkrementacja zmiennej czas_przyciskania_plus odbywa się tak szybko, że szybko jest ona większa od 2? Twój warunek może być maksymalnie spełniony przez 1s w przypadku ciągłego wciśnięcia przycisku. Nie zamieściłeś całego kodu ale może zastąp warunek czas_przyciskania_plus==2 warunkiem czas_przyciskania_plus>=2....
Witam. Mam problem z przerwaniem, które samo się alarmuje bez powodu. Przerwanie to obsługuje encoder, podłączony jest do pinu D4, jako wciśnięcie knoba (kręcenie na pinach D3 i D5). Biblioteka Encoder. Wszystko działało dobrze do momentu, kiedy dołączyłem działanie wifi w trybie STA. Po wywaleniu tego kodu problem nie ustąpił, dopatrzyłem się, że esp...
witam postanowiłem kolejny raz przećwiczyć PWM i nawiązując do tematu o to napisany prze zemnie kod na świecenie diodą sterowaną za pomocą dwóch klawiszy; sprawdzałem działa, po resecie dioda świeci na 50% wypełnienia a następnie można je regulować dodając lub odejmując; ewentualnie osoby które lepiej są zapoznane w temacie niech się wypowiedzą co wypadało...
- ostatnie wywołanie w skanie nadpisuje każdą inną akcję na danej zmiennej - szczególnie zmiennych fizycznych Q I dlatego dobrą praktyką jest zapisywać zmienną tylko w 1 miejscu w programie. Zawsze można użyć zmiennych pomocniczych. - użycie jej wewnątrz skoku lub w funkcji (FC, OB) wywoływanej acyklicznie nie gwarantuje skasowania ustawionej zmiennej....
Udało się praktycznie rozwiązać problem, tzn. przetwornik jest czytany (w trybie free run uruchomilem wiec sprawdzanie stanu flagi jest niepotrzebne). Na wyświetlaczu jest wyświetlana aktualna wartość zczytana z przetwornika, natomiat chcialem się dowiedzieć jaki typ zmiennej "wynik" obsłuży mi taką operacje: wynik=(pomiar/255)*2.54; Pozdrawiam
Nie należy wprowadzać _delay() do przerwania! To jest jak z papierosami- łatwo zacząć a potem bardzo trudno się odzwyczaić. Proponuję przerobić program na taki bez przerwań na początek. Wprowadź polling- czyli po polsku- odpytywanie stanu klawiatury. To się robi tak- pętla główna kręci się w kółko i trwa to jakieś mikrosekundy. W tej pętli sprawdzasz...
Witam! Natknąłem się w swojej przygodzie z programowaniem na następujący problem. Otóż jedną z funkcji wykonywanych przez procek ma być sterowanie fazowe obrotami dmuchawy. Udało się uzyskać za pomocą przerwań i timera zmienne opóźnienie w odpowiedzi na detekcję zera. Jako że wystarczy kilka stopni regulacji, zrobiłem to tak, że wartości bardziej znaczącego...
opoznienie ma byc pomiedzy sprawdzaniem stanu a nie sprawdzanie podczas opoznienia (prawde powiedziawszy niewiem co chciales przez to powiedziec). Robisz jedna glowna petle wykonywana np 10 razy. W jej wnetrzu masz procedure sprawdzania stanu przycisku a po niej druga petle czy to zwykly for czy while na liczniku do wprowadzenia opoznienia przed kolejnym...
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...
To są rozwiązania dla tematu. Ale pomysł na bootloader to jednak kiepski ;-( Tak jak mirekk36 uważam, że rozwiązanie jest nieprzemyślane. Albert Niby dlaczego? To jeden z normalnych sposobów pisania bootloadera z sygnalizacją stanu wsadu. Można to zrobić inaczej, np. CRC dla aplikacji i sprawdzanie przez bootloader przed uruchomieniem aplikacji czy...
Witam Mam tak, jak w kodzie poniżej obsługiwane przyciski i pilot NEC. [syntax=vbnet] '********************* obsługa pilota '******** ustawianie stanu bitu If Command = 104 And Blokuj_pilot = 1 Then ' klawisz 1 Blokuj_pilot = 0 Licznik_blokuj_pilot = 0 Klawisz_1 = 1 Command = 0 Licznik_zeruj_led = 0 ' zerowanie licznika powrotu do wyswietlania godzin...
Po co ciągle konfigurować tego ESP? Mojego skonfigurowałem raz. Teraz jak podłaczę do niego terminal to po włączeniu/resecie sam loguje sie do mojego routera. Sam pisze, że WIFI CONNECTED i WIFI GOT IP Czyli dokąd nie zmieni się sieci WiFi to nie trzeba konfigurować, ewentualnie po otrzymaniu WIFI GOT IP można zapytać jeszcze o IP - "AT+CIFSR", no...
Rozwiązałem oba problemy. 1. Wskazywanie temperatury maksymalnej powyżej 35 stopni. Odpowiedzialne za to było resetowanie zmiennej Tmin i Tmax. Zamiast: [syntax=basic4gl]Tmin = T Tmax = T[/syntax] musiałem inaczej "wyzerować zmienne". W sumie nie wiem dlaczego tak, rozwiązanie znalazłem gdzieś w sieci bez wyraźnego wytłumaczenia. Wcześniej gdy ten sam...
Witam. Jestem początkującym programistą :oops:, proszę o wyrozumiałość. Pytanie dotyczy Arduino. Program wygląda w założeniu w ten sposób. 1. Wyświetlanie czasu na LCD przez 5 sekund. 2. Wyświetlanie daty na LCD przez 5 sekund. 3 Odczytanie wartości z potencjometru i wyświetlenie go na LCD przez 5 sekund. Podczas pracy tego programu chcę sterować diodą...
Witam ponownie, Nie pokazałem całego kodu nie ze względu na to że ktoś mi go może ukraść jak to napisał kolega ale właśnie z racji tego że jest on napisany przez amatora. Jest to mój pierwszy projekt z mikro kontrolerem oraz językiem C. Wcześniej trochę bawiłem się z PHP oraz HTML i nić po za tym. Dlatego nie chciałem abyście po mnie pojechali... Wracając...
Witam, problem tkwi w wyświetleniu temperatury na LCD. Czujnik działa w trybie 12 bitowym. Szczytuje pierwsze 12 bitów z pamięci scratchpada, sprawdzam czy temperatura jest + czy -, a następnie dokonuje konwersji temperatury na string. Na wyświetlaczu pokazują się jednak dziwne rzeczy. Użycie funkcji typu sprintf odpada (zajmuje za dużo miejsca). Konwersja...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
I działa to tylko dlatego że bufor został przesunięty???? Tak. Jeżeli zastosujesz taki kod: $regfile = "M32Def.dat" $crystal = 16000000 $hwstack = 128 $swstack = 64 $framesize = 64 '---------------------------------------... Dim Timer1_licznik As Byte Dim Buffer(256) As Byte At 1024 Dim Write_position...
Witam Szanownych Kolegów. Chciałbym zaprezentować moją konstrukcję stroboskopu opartego o mikroprocesor ATmega16 i układ detekcji zera sinusoidy sieciowej. Mikroprocesor steruje impulsem wyzwalającym powstającym od trafo wysokonapięciowego. Docelowo powinien realizować obsługę przycisków sterujących częstotliwością i jasnością świecenia ksenonowej lampy...
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
No nie to żebym od razu się domagał:) po prostu myślałem, że się ktoś zainteresuje i jak nie będzie widział tutaj potrzebnych informacji to powie mi jakich (a nie od razu zmiesza z błotem:) bo ja nie wiem co jest potrzebne żeby zdiagnozować ten błąd. Po kolei. Do tego nie robisz wcięć, przez co program jest nieczytelny. Szukałem jak wygląda na tym forum...
Witam, zlozylem sobie ten uklad, edytowalem program tak aby wpisac swoje numery tel. i nie moge uruchomic tego ukladu, narazie bazuje na pierwszej wersji programu od Xury'iego i jego schemacie, moze ktos mi powiedziec czy ten program powinien wystartowac? Rem Projekt powiadomienia o alarmie by Xury '$sim 'dla symulacji $regfile = "m8def.dat"...
Witam. Mam następujący problem z niedziałającym TWI. Mam kod na atmegę w C. /* Czujnik ultradzwiekowy sterowany z magistrali i2c C= 2010 Grzegorz Eliszewski grzegorz(at)eliszewski.pl esio.eu */ #define F_CPU 12000000UL // czestotliwosc kwarcu 12MHz #include <avr/io.h> #include <util/delay.h> // obsluga opoznien #include <compat/twi.h>...
(at)squelch No i to całkiem prawidłowa reakcja. Jeśli z jakichś powodów program ma zauważyć, że użytkownik najpierw przekręcił w lewo a potem zrobił taką samą liczbę obrotów w prawo to albo częściej musisz sprawdzać stan zmiennej enc_delta, albo dodać sobie bufor pierścieniowy w którym będziesz przechowywał informacje o kolejnych dzianiach użytkownika....
Analizując pobieżnie Twój program - manipulowanie przerwaniami wygląda OK. Niestety coś w kodzie nie trybi ponieważ dioda informująca o dokonanym pomiarze się nie zapala. Wniosek nieuprawniony, ponieważ w pokazanym wyżej programie nie migasz diodą w przerwaniu, ani w części kodu sprawdzającej stan zmiennej end_echo_flag, a jedynie: - zieloną, gdy pomiar...
Moim zdaniem masz żłe napisaną obsługe przerwania. Procesor jak wejdzie w przerwanie to w niej wisim i wisi. Mogą być problemy ze stosem. Ja bym to napisał tak ze timerem bym wykonywał akcje a w przerwaniu ustawiał flage wciśniętych klawiszy. Otrzymujesz przerwanie i zapisujesz do zmiennej stan klawiatury. W przerwaniu z Timera sprawdzasz jaki stan...
Witam, Kiedyś miałem bardzo podobny objaw i okazało się, że jedna zmienna nie była zainicjalizowana, w związku z czym przyjmowała losowe wartości, ktore zmieniały się w zależności od położenia zmiennej w pamięci mikrokontrolera - na skutek dopisywania dalszych częsci programu to miejsce zmieniało się. I raz program działał dobrze, a raz szedł w maliny...
Sprawdzasz stan końcówek w pętli głównej i za każdym razem porównujesz stan ze stanem poprzednim. Jeśli zgodny i wysoki inkrementujesz zmienną np Czas. Jeśli przeciwny zerujesz zmienną Czas. Sprawdzasz wartość zmiennej czas i jeśli zmienna osiągnie zadaną wartość uC wystawia na swoim pinie wyjściowym określony stan. Jak widać ustalenie błędu musi nastąpić...
bo dane na porcie szeregowym pojawiają się dopiero po zakończeniu ruchu( domyslam się, że to przez funkcję delay) i to w "bliżej nieokreślonym" języku. Tak jakbym pomylił się w określeniu prędkości w Serial. begin . Drugą częścią komplikacji jest to, że nie ma mam pojęcia ( gdy uda mi się rozgryźć enkoder ) jak opisać ograniczenie obrotu. To co jest...
Podlaczasz sygnal do pinu obslugujacego przerwanie zewnetrzne. W przerwaniu tym startujesz licznik i po 1.5ms w przerwaniu licznika sprawdzasz stan.
a co jest nie tak z pętlą while(1) bo nie mogę się dopatrzeć To, że jest pusta. Stan zmiennej flaga sprawdzasz tylko raz na początku programu, po czym zapętlasz go w pustej pętli. Poza tym sprawdzanie if(flaga=1) jest błędem, zapewne miało być if(flaga==1) - przeczytaj ostrzeżenia kompilatora generowane w czasie kompilacji.
Dlaczego sprawdzasz stan zmiennej Err? Powinieneś sprawdzać zmienną Numer_kl czyli Do Numer_kl = Getatkbd() If Numer_kl = 0 Then Cls Lcd "err=0" Else Cls Lcd "err=1" End If Loop
Temat opisywany tryliony razy. jak wchodzi w jakiś stan to zapamiętujesz czas wejścia w jakiejś zmiennej. Następnie sprawdzasz czy czas aktualny minus ten zapamietany jest mniejszy od timeoutu.
Nie możesz podpinać tej samej zmiennej na górze i na dole. Górna zmienna jest sprawdzana (P na zbocze narastające, N na opadające), a dolna to pomocnicza do przechowywania poprzedniego stanu. Naprawdę polecam ustawić kursor na wybranej funkcji i wciśnięcie F1 :)
Witam, A może kopia (pomysłu) klawiatury PC. W timerze odczytujesz np. 10 razy na sekundę klawisze i umieszczasz je w buforze. Główna pętla sprawdzasz stan zmiennej która przechowuje informację o tym ile znaków jest zapisanych w buforze.
Witam, Na module wyjść są umieszczone diody LED. Nic nie trzeba podpinać i symulować. Wszystko ładnie widać a symulować to można wygnały wejściowe ewentualnie poprzez podłączenie włączników, przycisków itp. W TIA można on-line sprawdzać stan zmiennych oraz wjść/wyjść. Nic nie trzeba dokładać. Pozdrawiam,
Może odpal jakiś Timer żeby generował przerwanie bardzo często. Powiedzmy co 10us. I w przerwaniu sprawdzaj czy pin ma stan 0 czy 1. Jak 1 to inkrementujesz jakaś zmienną. Jak zmieni się na 0 to zwracasz wynik i zerujesz tą zmienną. Oczywiście w tym samym przerwaniu sprawdzaj tak samo drugi pin. Niestety wymaga to kodu obsługi przerwania w assemblerze...
Jeśli masz wiele warunków dla stanu tego portu lepiej przepisać do zmiennej i zmasować starsze bity i dopiero sprawdzać stan zmiennej. Wielkość kodu? Tylko kilka dodatkowych bajtów. chcesz 4 młodsze bity? przykład zmienna = pinb and 0x0F Select zmienna Case 0: ' dla wartości 0 Case 1: ' dla wartości 1 Case 2: ' dla wartości 2 Case 3:...
Witam, wszystko zalezy od tego jakiej biblioteki uzywasz do odczytu nacisniecia/dotyku przycisku na ekranie, potem juz bedzie prosto, taki teoretyczny przyklad: Dodałem SYNTAX - starj się o tym pamiętać.
Normalne.... Dajesz maksymalne obciążenie procesora poprzez ciągłe sprawdzanie. Ten wątek COŚ robi! Ciągle sprawdza stan zmiennej! sprawdz: CMP ax,Terminated JNZ sprawdz Wszystkie wolne zasoby zostaną przydzielone temu wątkowi, gdyż dokonywał on sprawdzenia. Jeśli chcesz uśpić wątek, to możesz to zrobić odpowiednią komendą (następnie wybudzić z...
Wydaje mi się źe coś jest nie tak ze sprawdzaniem stanu przycisku- nie bardzo mogę to zrozumieć. Klasycznie to robi się tak: if(przycisk==0) delay() if(przycisk==0)//dalej 0 przycisk=1 //naprawdę wciśnięty Można też inkremantować jakąś zmienną aby sprawdzić to 3 czy więcej razy. A lepszym sposobem jest do liczenia opóźnień wykorzystać Timer. I tak masz...
sprawdzanie zmiennej odczyt stanu zmiennej sprawdzanie stanu serwera
płyta whirpool telewizor samsung ue46f6400 subwoofer dibeisi
ricoh wezwij serwis makita dmr115
Volkswagen T4 2.4D 1995 – lokalizacja przekaźnika rozrusznika, elektromagnes, CE2 Żarówka W16W do światła cofania Toyota Corolla TS 2021/2022 2.0 184KM – zamienniki LED, specyfikacja