Przyznam, że z tym tez mam problem, więc chętnie o tym poczytam. Ja początkowo też miałem obawy, że rosnąca ilość maszyn stanów spowoduje utratę panowania nad "tym wszystkim", ale po pewnym czasie nastąpiło przestawienie myślenia na "myślenie maszynami stanów" i już nie czuję zagubienia. Wszystko tu ma określony logiczny porządek i działa zgodnie z...
Dowody poprawności dla maszyn stanów robi się sieciami Petriego PN (kolorowanymi CPN, czasowymi TCPN itd.). Ale to są raczej dowody poprawności algorytmu (w tym uzależnień czasowych) a nie samej implementacji. Dowód poprawności implementacji teoretycznie da się zrobić, ale nie wyobrażam sobie tego dla większego programu. W końcu w dowodzie poprawności...
Wybaczcie za odgrzanie tematu/.../ jesli o mnie chodzi, to nic nie szkodzi :) ruch na tym forum tak maly, ze chyba nikt nie bedzie mial ci tego za zle; ja nie widze problemu optymalizacji, kod fsm 'one-hot' dla fpga jest dlatego lepszy, ze zwykle w fpga nie ma problemu z iloscia FF, a z logika kombinacyjna raczej, a przede wszystkim z polaczeniami;...
Albo zainteresuj się wzorcem projektowym o nazwie "maszyna stanów skończonych". Przyda się do zaprojektowania zarówno kodu programu, jak i protokołu sieciowego.
Zbuduj sobie maszynę stanu Najprościej za pomocą Set i Reset. Np. ---[brak wszystkich kroków]-------------------(S) krok1 ---[krok1]-----[warunek np czekasz na impuls start]-----(S) krok2 i (R) krok1 ---[krok2]-----[warunek]-----(S) krok3 i (R) krok2 ---[krok3]-----[warunek]-----(S) krok4 i (R) krok3 ---[krok4]-----[warunek]-----(R) krok4 Jest to najprostsza...
Dokładnie. Zamiast pędzić do kodowania zacznij od specyfikacji - tutaj masz dość prostą maszynę stanów. Pozdrawiam, Dr.Vee
wikipedia: automat skończony / maszyna stanów wersja najprostsza z możliwych: Zrób licznik liczący od 0 do 22, którego wartość rośnie co sekundę. W zależności od wartości tego licznika, zapal określone światło: 0 ≦ licznik ≦ 8 » czerwone 8 < licznik ≦ 2 » czerwone + żółte itd.
Maskowanie odczytu bajtu po F0 przechwytuje chyba za mało bitów 8+start+stop +parity=11 a maszyna stanów przewiduje 8. Prawdopodobnie trafia wtedy do stan=0 będąc w trakcie transmisji. Wyprowadź sobie na jakieś dodatkowe diody aktualny stan maszyny. To ułatwi Ci diagnozę problemu. Jaka jest idea sygnału licznik?
Reaguj na zmiane stanu przycisku a nie na jego stan. Zamiast delay, użyj millis() i maszyny stanów. Dzięki temu będziesz mógł innym przyciskiem awaryjnie przerwać proces w dowolnym momencie. Teraz to niemożliwe.
Ja tam zrobiłem pełną obsługę na 8bitowcu (Atmega128) pracującym przy 8MHz który budził sie tylko wtedy kiedy coś było do zrobienia. Wybudzany uartem i DTRem. Parsowanie w całości w przerwaniu, wysyłanie w programie głównym. Niebawem będe pisał biblioteke pod PIC18. Ogólnie to sporo zabawy jest przy sim900. Ma sporo funkcji i jeśli chcesz je wszystkie...
To co zrobiłeś do niczego się nie nadaje. Ciągle masz problemy, o których jużpisaliśmy - brak sprawdzania flag interfejsu TWI, brak reakcji na przerwanie. Ze względu na czas realizacji poleceń I2C nie ma sensu umieszczać ich w ISR. Jeśli już to można wykorzystać ISR od TWI i tam to zaimplementować. TWI oparte jest o maszynę stanu, implementacja też...
Poza tym, że reset dotyczy maszyny stanów w urządzeniu 1-wire, a nie całego urządzenia, to cześć bajtów ze scratch pada to są komórki pamięci EEPROM - akurat nie te od temperatury, ale np. od alarmu już tak.
.Na sumulatorze oczywiście wszystko pięknie ładnie, a na FPGA dupa. Przetestowane razem z opóźnieniami? Czy tylko idealnie... Bo coś czuje, że ta maszyna stanów prosi się o kłopoty.
Nie jest to tak ze w obrebie procesu czy procedury instrukcje wykonywane sa sekwencyjnie? Chyba o to chodzi... Po syntezie nie powinno miec to znaczenia... sekwencyjnosc instrukcji powinna miec tylko znaczenie dla symulacji.
Dlaczego chcesz stosować metody syntezy układów cyfrowych? Nie budujesz elektroniki z przerzutników i bramek, tylko piszesz program. Użyj dostępnych w Logo funkcji i wyraź algorytm za ich pomocą. Nie potrzebujesz przerzutnika D z wejściem zegarowym - program w Logo nie jest asynchroniczny! Jest wykonywany w dokładnie określonej kolejności, nie występują...
W pliku jest aplikacja która liczy czas pracy maszyny. Zwarcie pinu 6 i 7 z złączu DB9 powoduje start naliczania czasu pracy maszyny - podłączam to najcześciej to pod styk zwierny stycznika maszyny(np od silnika). Jeżeli interesuję cię coś podobnego to daj znać na priv - dogadamy się. Działa pod wszystkimi windami
To sscanf wykryje, że jest błąd. Zresztą w wielu innych przypadkach też wykryje błąd. Poza tym co będziesz robił dla 50 takich AT komend? 50 oddzielnych maszyn stanów ? Nie jeden parser to załatwi.
Opcja 1. Słowo klucz "maszyna stanów"
Witam, w trakcie pisania maszyny stanów, przy pomocy której chciałem zrealizować interfejs, którym chciałem sterować kolejnymi modułami natchnąłem się na problem, którego nie mogę przeskoczyć. Otóż chodzi o to, że gdy zwiększam liczbę stanów zaczyna ona "wariować", tzn na symulacji widzę, że przeskakuje w losowe stany, rozmawiałem z prowadzącym zajęcia,...
Zastanawiam się czy nie powinienem użyć Arduino FreeRTOS, ale nie wiem czy to jest rozwiązanie mojego problemu. Jeśli planujesz sobie odstrzelić kolana, to jest to doskonały pomysł. Próbowałem już timerów i funkcji mils, ale wydaje mi się że to nie jest właściwa droga W tym przypadku to najwłaściwsza droga. Problem należy podzielić na kilka niezależnych...
Sprawdź sobie taki program DasyLab w nim da się robić naprawde skomplikowane symulacje i jest możliwość wprowadzania równań definiujących funkcję bloków
Witam Mam taki oto problem stworzyłem sobie taki oto kod. Układ ma tylko wejście zegarowe i 3 wyjścia, zadeklarowalem sobie maszyne stanów 3 kolejno następujące po sobie od s1 do s3 i tak tak w koło z s3 przechodzi do s1 a każdemu ze stanów przypożądkowane są inne wartości na wyjściach, problem jaki napotkałem to to iż mimo że zastosowałem licznik licz...
Po prostu, z róznych przyczyn przekaźnik nie jest w stanie zewrzeć swoich styków i przełączyć maszyny ze stanu ,,start'' do stanu ,,praca''. Trzeba odkryć drogą pomiarów co się dzieje, następnie wymienić uszkodzony element. ELEKTRYCZNIE, KIEDY NASTĄPI TRWAŁA PRZERWA W OBWODZIE SOFT STARTU TEJ MASZYNY WENTYLATOR RÓWNIEŻ ZDECHNIE. Dedra b ędzie pracować...
Mam konstrukcję opartą o tego Spartana, zasilania zrealizowane też na LM317. W trakcie uruchamiania różne rzeczy się zdarzały z zasilaniamin ale FPGA nie wykazywało niestabilności. Niestety nie łączę układu po EPP. Jezeli piszesz że maszyna stanów się "blokuje" to sprawdź czy napewno opisałeś wszystkie przejścia. Można też popróbować ze zmianami sposobu...
Polecam specyfikacje Modbus do poczytania i książkę Pana Witkowskiego "Mikrokontrolery AVR programowanie w języku C - przykłady zastosowań", gdzie bardzo przystępnie pokazuje w C komunikację po RS485 z crc16 i detekcją błędów. Zakładasz w programie środowisko idealne, pomyśl co się zacznie dziać, gdy pojawią się zakłócenia... Tak jak mówił albertb nawet...
Witam! kierowniku kuli ziemskiej: Zasymulowalem twoj kod w active-hdl i licznik dzialal poprawnie, natomiast automat zatrzymywal sie w stanie PKO_3, ale to chyba z tego powodu ktory opisales, takze juz wiem jak to rozwiazac. Ja napisałem swój kod w ise webpack Xilinxa. Przy implementacji wyskoczył worning że brakuje sygnałów R i licznik na liście czułości...
Jest - nazywa się linia SS - slave select. Zwykle każda transmisja rozpoczyna się od obniżenia SS do poziomu niskiego (aktywnego). Przejście do poziomu wysokiego zwykle resetuje maszynę stanu układu SPI i kolejne transmisje rozpoczną się od nowa. Ponieważ SPI jest magistralą o zasięgu kilkunastu cm to zakłócenia są małoprawdopodobne a same ścieżki powinny...
(at)saly 3 czujniki są na każdą fazę, określa w ten sposób położenie rotora i wie którą fazę następną załączyć. Przy takim układzie nie ma nawet potrzeby stosowania MCU, można to zrealizować na maszynie stanów. Chodzi o fakt, że daje to informacje tylko po używanej fazie, ale nie znamy dokładnie położenia rotora. Przy pomiarze prądu przez uzwojenia...
Z delayami tego na pewno nie zrobisz, musisz nauczyć się zarządzać czasem - millis, timery sprzętowe, gotowe biblioteki (timerOne), millis opisane jest w kursie: https://forbot.pl/blog//kurs-arduino-pod... i raczej nie powinieneś zaczynać od jego końca. Coś takiego jak maszyna stanów, switch-case też nie zaszkodzi...
Odpowiadjąc na pytanie: Tak, to służy tylko do symulacji. nijak się z tym nie zgodzę, wg. moich informacji jest inaczej wszystkie sygnały oznaczające elementy pamięciowe mogą być w ISE inicjalizowane na 2 sposoby: poprzez dyrektywę INIT, bądź poprzez operator ":=" w momencie deklaracji. wszystkie rejestry są na stałe podłączone do linii globalnego...
Temat rzeka z zakresu metodyk wytwarzania oprogramowania. A to nie jest popularna rzecz w automatyce. Ja zawsze rozrysowywałem bardziej skomplikowane programy na papierze i dopiero brałem się do programowania. Zapoznaj się z ideą "maszyny stanów" i języka SFC (Grafcet). Ja często rysuję najpierw przebieg programu w pseudo-SFC i dopiero potem biorę się...
merkery służą do np.zapamiętania stanów przejściowych lub do uproszczenia programowania.Są to komórki pamięci pomocnicze. Na przykład: maszyna jest w pozycji wyjściowej tzn. ileś tam czujników (np.30) i wyjść (np.10) jest aktywnych.W programie musisz często sprawdzać czy maszyna jest w stanie wyjściowym (spoczynkowym, gotowa do startu).Wystarczy jeden...
poziom <= poziom; obroty <= obroty; temperatura <= temperatura; w ten sposób jawnie deklarujesz że chcesz latche twój problem jest jednak zupełnie inny, otóż próbujesz przy pomocy procesu kombinacyjnego uzyskać rejestry, a to nijak ci się nie uda. maszyna stanu służy do sterowania a nie zapamiętywania, wobec takiej koncepcji użyj jej jedynie...
if rising_edge(clk) then if rst <= '1' then cnt <= (others => '0'); elsif ce = '1' then if load = '1' then cnt <= addr; else cnt <= cnt + '1'; end if; end if; end if; w maszynie stanu w stanie ADRES if cnt = "000" then ce <= '1'; load <= '1'; else ce <= '0'; load <= '0'; end if; chodzi o coś takiego?
Korzystam również z komponentu APro. Robię to z wykorzystaniem maszyny stanów w następujący sposób: 1. Wysyłam polecenie 1 i ustawiam np. Stan1, 2. Gdy urządzenie odpowie, to w zdarzeniu OnTriggerAvail sprawdzam jaki jest ustawiony stan i w zależności od tego parsuję odpowiedź, 3. Wysyłam polecenie 2 i ustawiam np. Stan2, 4. Gdy urządzenie odpowie,...
Reset procka - SRST (System ReSeT) Reset maszyny stanów JTAGa - TRST (Tap ReSeT) Odpowiadając na pytania których nie zadałeś: 1. Proponuję ustawić prędkość JTAGa, bo domyslnie startuje na max (6MHz), a pownno to być ~8x mniej niż prędkość rdzenia (czyli zwykle kwarc / 8) - dodaj na początku (może być nawet przed "init" - komendę "jtag_khz X" 2. Komenda...
Domyślam się, że automat wrzutowy daje różną liczbę impulsów w zależności od monety - a jaki jest zakres monet i tej liczby? Jeśli może dawać np. do 7 impulsów, a czas ma być proporcjonalny do wartości monet 10gr 20gr 50gr 1zł 2zł 5zł, to będzie potrzebne jakieś dekodowanie liczby impulsów na wartość monet, i wtedy bez czegoś programowalnego (choćby...
I tak i nie :D Owszem atmega16 ma SPI, ale wymaga to użycia pinów, z których korzystam (interfejs JTAG). Odpada więc realizacja tego sprzętowo. Edit: machnąłem się, do SPI potrzebne MISO, więc nie było by problemu, ale... nota producenta DS mówi o tym, że koniecznie musi być wysyłane każdorazowo 17 bitów (lub wielokrotność tego), a hardware SPI na...
https://www.arduino.cc/en/Tutorial/State...
bo raz że "dostajemy wydajność za darmo" a dwa że poznajemy lepsze techniki zarządzania zasobami. Kontrolowanie dostępu do współdzielonych zasobów przez "krótkie" wyłączanie przerwań to moim zdaniem kiepski pomysł, ale w tym omawianym przypadku inaczej się nie da. Dodano po 3 Dodam jeszcze, że programy napisane jako maszyna stanów bardzo dobrze testuje...
Możesz to zrobić w oparciu o maszynę stanów: arduinowe Ctrl-C Ctrl-V z brakiem płynności w języku, a tu zajeżdżasz z maszyną stanów :)
Witam, tak się pewnie teraz nie robi (szkoda papieru, tak słyszałem), ale gdyby mi zależało na szybkim rozwiązaniu problemu zrobiłbym tak: Na odwrocie tej kartki, którą pokazałeś rysujesz prostokąt z napisem STAN_OFFOFF w środku. Od tego robisz strzałkę z napisem "przycisk_1_ON" i kolejny prostokąt ze stanem o stosownej nazwie. Dalej kolejna strzałka...
Nie znam układu pracy tych maszyn, ale koncepcja ogólna była by taka. Jeśli maszyna pracuje to jakieś styczniki, przekaźniki lub inne elementy zmieniają swój stan. Jeśli maszyna nie pracuje to te elementy nie zmieniają stanu. Można by dodać przekaźnik czasowy, który po odliczeniu np. 30 minut powodowałby wyłączenie maszyny. W przypadku gdy maszyna by...
No to się doucz i będziesz znał. "Super" porada, ale przerwania nie sa tu konieczne. Naucz się też używać tagów. faktycznie, użyj znaczników(tagów) SYNTAX, bo czytać sie kodu nie chce. - wywal delay - wykrywaj zmianę stanu pinu a nie reakcję na określony stan, dla Arduino jest stosowna biblioteka (Debounce) ale można zrobić i bez niej, trzeba też zlikwidować...
Skoro urządzenie nie odpowiada, to znaczy, że nie rozpoznaje polecenia, czyli polecenie z jakiegoś powodu jest nadane błędnie. Skoro masz oscyloskop to zacząłbym od dokładnego pomierzenia timingów - czasu niskiego wystawianego przez master, czasu trwania bitu 0 i 1 i odstępów między nimi. Jeśli są w granicach określonych przez dokumentację to ok i można...
zdecydowanie pomysł z warunkiem '>' nie jest dobry, coś na pewno uruchamia w twoim kodzie ten licznik, prawdopodobnie jest to maszyna stanu, stąd najlepszym wyjściem jest sygnał ce ustawiany przez ten sterownik mozna takie sprzezenie zwrotne dawac? no jak jest to układ synchroniczny to wszystko jest ok, bo jeżeli osiągnięte jest '0' przez licznik,...
Wygląda na to, że kol. (at)gaskoin wie lepiej od autora, co chce zrobić, i ode mnie, o czym mówię :D Ty mówisz o wątkach Nie mówię o wątkach, tylko o protothreadach, które służą np. do pisania koprocedur. Można je wstrzymywać i wznawiać bez pomocy systemu operacyjnego, wszystko w ramach jednego wątku. a to, co chce zrobić autor to zamienić coś takiego:...
Na co zwrócić uwagę przy zakupie? Jak ocenić stan maszyny?
(at)Tojmak987123 IMHO niepotrzebnie komplikujesz. Jaki jest cel tego, aby dublować funkcje odbioru znaków? Masz na przerwaniach wpisywać znaki do bufora i ew. sygnalizować, że mamy coś wartego zainteresowania (czyli jest linia zakończona CRLF). Interpretacja zawartości bufora może być zrealizowana za pomocą funkcji obsługi tokenów ze string.h. A całość...
Racja, przedstawiony fragment to nie jest maszyna stanów, to jedynie kawałek pokazujący przewagę programu opartego o "maszynę stanów", nad zagnieżdżonymi ifami przeplecionymi dwudziestoma delayami. Te cztery dwuliniowe funkcje to cała logika "programowalnego wyłącznika światła". Co do samej maszyny: dwa stany i trzy zdarzenia dla pierwszego przykładu...
Poziom zaawansowania programu, który chcesz napisać szacuję na "zbyt wysoki". Sklejać kawałki kodu można, jeśli są dobrze napisane. Program, który załączyłeś jest tylko zalążkiem menu. Jeśli się nie poddajesz, to proponuję najpierw zrozumieć w szczegółach, jak działa program, który wkleiłeś. Wtedy automatycznie będziesz wiedział, gdzie wkleić kod wykonawczy...
(...) Timer obsłużyć umiem i zgadzam się z twoją sugestią ale jak zrobić aby cały kod umieszczony w pętli odczytu wykonywał się po kolei a nie wszystko co 100us? Gdy umieszczę cały kod w przerwaniu nie osiągnę zamierzonego spowolnionego odczytu MCP w trakcie wykonywania innych rzeczy przez ATMegę... Rozumiem Twój problem. Aby uzyskać ciągłe i kontrolowane...
Zakładam, że jasność wyświetlacza regulujesz przez sprzętowe PWM - w takiej sytuacji niema żadnej drugiej pętli. Podobnie jak ton buzzera - jest generowany przez timer, prawda? Niemniej, jeśli rzeczywiście zachodzi konieczność "rozdzielenia" to w wielu przypadkach wystarczają po prostu przerwania. Czyli jakąś funkcję, realizującą konkretną rzecz wywołujesz...
Skoro nie znasz C to ok, ale polecam naukę - bo po pewnym czasie i mając pewną ilość bibliotek już sprawdzonych (gdzie wiesz co i jak ustawić) to też napisanie prostego programu, czy multipleksowania to kiklanaście / dziesiąt linijek i robi sie to w 20-30 minut. Dlaczego piszę - ostatnio na uczelni sporo osób zamiast uczyć się VHDL rysuje układy logiczne...
W piątej lekcji w segmencie dotyczącym maszyny stanów autor przedstawia jej implementację w języku C, którą uznaje za optymalną zgodnie z wyjaśnionymi w dalszej części artykułu kryteriami. Wideo szkoleniowe nr 39 (poniżej) ilustruje, jak zbudować wielokrotnego użytku: „procesor zdarzeń”, aby włączyć tę miarodajną strategię implementacji maszyny stanów...
Potestuje najpierw jakieś gotowe programy do wysyłania smsów i rozmów czy działa to poprawnie. Pomysł dobry ale nie bierz ich za wzór. Ich wady opisałem pobieżnie w #4, bo jak sie domyślam, użyłeś jakiegoś "przykładu" dostępnego w necie. Odnośnie docelowego programu. Czy moja pierwotna koncepcja jest prawidłowa czy może wykorzystać jakiś inny pomysł?...
Błędem jest to, że zakresy zachodzą na siebie i przekaźniki nigdy się nie wyłączają bo nigdy nie wykona się klauzula else. Jak chcesz wprowadzić histerezę to musisz bazować na obecnym stanie przekaźników. Możesz się pozbyć tablicy Air i ustalać progi w każdym z ifów. Dobrym rozwiązaniem byłaby tutaj implementacja maszyny stanów w postaci switch case....
Witam Może niech kolega określi przynajmniej jakie ma ramy budżetowe na taki projekt bo Ja robiłem już podobny projekt wizualizacji wskaźników w samochodzie na Androidowym tablecie ale żeby wykonać taki projekt trzeba by mieć więcej szczegółów i w zależności od skomplikowania więcej czasu tutaj dwa poprzednie projekty https://youtu.be/5FVZ6LKp9JY https://youtu.be/9U4Ucyhv_Us
Dlaczego? Bo taki kod nic nie robi (nie zmienia stanu "maszyny abstrakcyjnej"), więc może zostać usunięty bez zmiany znaczenia programu. Rozwiązaniem jest np. dodanie w pętli [syntax=c]__asm__ volatile ("nop");[/syntax]
Bez znajomości wskaźników, wskaźników do funkcji, efektywnej implementacji maszyny stanów raczej nie będziesz w stanie napisac nic bardziej zaawansowanego niż diodowe mrugadelko. Arduino SDK to C++, a w C++ nie powinno używać się wskaźników, a zamiast tego referencje lub klasy będące bezpiecznymi kontenerami wskaźników.
Pierwszy problem - to brak synchronizacji. Nadawane dane muszą mieć taką postać, żeby łatwo było zauważyć początek ich porcji. Może to być np. kod końca wiersza lub spacja pomiędzy liczbami. Użycie DMA do odbioru danych jest zdecydowanie złym pomysłem, przynajmniej dla początkujących. Dobrym pomysłem za to jest zrobienie wszystkiego w przerwaniu, pod...
Witam, Czy wie ktoś jak zrobić w C kawałek programu i żeby po kompilacji były z tego dwie funkcje. Mam procedurę główną w której jest maszyna stanów i procedurę funkcję z callback dla komunikacji w której też trzeba przełączać maszynę stanów. Trochę nie wygodne jest pisanie stanów w jednej i drugiej procedurze bo są długie >200linii każda. Da się zrobić...
Witam, LAD np. do końcowego składania całego programu polegającym na np. wywołaniu bloków programowych (FB) do obsługi wejść, wyjść, alarmów, cyklu, komunikacji. SCL w obecnym projekcie do odczytu oraz zapisu wejść/wyjść. Mam kartę wejść oraz wyjść 32 kanały. Odczytuję podwójne słowo i wyciągam poszczególne bity. Plus jest taki że w takach mam tylko...
Ten kondensator połączony jest z potencjałem zasilania nie wiem czy dodatnim czy ujemnym, niektóre maszyny mają uziemiony potencjał ujemny tj. 0V , istnieje taka możliwość że gdzieś masz przetarte przewody od sensorów. Sprawdź na początek wizualnie stan maszyny, Być może przyczyna leży w zawilgotniałej wtyczce przyłączeniowej zaworu sterującego, lub...
Klamocik - coś tu jest nie tak. "Silnik z uzwojonym wirnikiem" - rozumiem, że miałeś na myśli silnik synchroniczny? Owszem, wykorzystuje się w nich klatkę rozruchową, która wraz ze stojanem maszyny synchronicznej stanowi silnik asynchroniczny (indukcyjny), lecz wirnik nie osiąga prędkości synchronicznej tylko dzięki klatce rozruchowej. Osiąga prędkość...
Zasilacz laboratoryjny, czyli taki z regulacją napięcia i prądu, z pomiarem napięcia i prądu, stojący w wygodnym miejscu na stole tak, aby było łatwo regulować i obserwować mierniki. Zasilacz na szynę zamknięty w szafie to wręcz przeciwieństwo tego, co Ci potrzebne. Zasilacz na szynę jest dobry w maszynie, w której stanowi nieistotną część składową,...
Tak wraz ze zmniejszaniem się częstotliwości zmienia się stosunek reaktancji do rezystancji i przy małych częstotliwościach w przy pewnym f się ona równa i przewagę bierze rezystancja. Czyli tak jakbyś zasilał rezystor jest liniowy przebieg u/i .
(at)Freddie Chopin A jak porównasz RTOS do np. programowania w oparciu o maszynę stanów? IMHO w prostszych aplikacjach maszyna stanu może rozwiązać w elegancki sposób wiele problemów, bez konieczności dodania RTOS, czy trudnego określania zapotrzebowania na pamięć. Dla prostych aplikacji tak. Dla nie-prostych zrobienie takiej maszyny stanów jest zadaniem...
A słyszałeś o maszynie stanów i programowaniu krokowym? INIT_SEQ - to dla mnie bit wymuszający pierwszy krok sekwencji po FIRST SCAN sterownika lub po zakończeniu kroków i rozpoczęciu sekwencji od początku STOP_SEQ - to bit zatrzymujący sekwencję RESET_SEQ - to bit resetujący kroki sekwencji np w przypadku awarii Dla Twoich potrzeb wykorzystujesz bit...
Zastanawia mnie np. taka kwestia: w jaki sposób prawidłowo rozwiązuje się problem komunikacji UART z peryferyjną elektroniką? Nie mam markera końca nadawania a max. czas odpowiedzi nie jest określony dla każdej z komend. Jedyne co mi przychodzi do głowy to właśnie jakiś timeout od ostatniego odebranego znaku lub parsowanie zawartości bufora cyklicznego...
Poszukaj po haśle "maszyna stanów" albo "automat skończony". http://www.elektroda.pl/rtvforum/topic23... Ja tylko dodam, że maszyny stanów też opierają się na zmiennych "static" definiowanych de facto jako globalne z widocznością tylko w procedurze gdzie zostały zadeklarowane. Niemniej faktycznie dobrym rozwiązaniem jest obsługa stanu menu...
Format ramki wygląda na zaprojektowany specjalnie dla utrudnienia odbioru - patrz np. p.3 Twojego algorytmu. Proponuję wprowadzić znacznik początku ramki, a po nim np. bajt długości i zanegowany bajt długości - w ten sposób masz proste wykrywanie początku na podstawie 3 kolejnych bajtów. Potem mogą być dane i jakaś suma kontrolna albo CRC8 Obsługę przerwania...
Przy maszynach stanów ja często sprawdzam tylko status "sąsiedniej" maszyny stanów - jeśli jest różny od zera, znaczy się, maszyna w ruchu - nie wolno wywoływać działania, jeśli zero - wolne, można działać... Ale flag i tak nie uniknie - ....i trzeba z nimi uważać ;-)
A pytanie jest takie- czy da się to zrobić bez while()? Tylko na przerwaniach. FIFO na instrukcje, kolejkowanie kolejnych tranzykcji. Opracowujesz Sobie zgrabną strukturę: teraz operował. I masz pełną dowolność, prosta maszyna stanów FSM i sprawdzasz za pomocą if co można zrobić i zmieniasz stany. Nie ogranicza Ciebie timeout, bo takiego z reguły nie...
Witam Myslę że kodowanie Quartus sam przestawił na binarne, bo ONE-HOT bit stanowczo nie zdaje egzaminu w tak duzych maszynach stanów. Default'owo kodowanie maszyny stanu jest ustawione na AUTO, więc Quartus powinien sam zdecydować, że twoja maszyna stanów ma być kodowana jako binarna. Mozna to sprawdzić w ustawieniach. ( Syntezy i kompilacji ) http://obrazki.elektroda.net/86_12768779...
No to proponuję zrobić maszynę stanów.
przede wszystkim moze developer jest do wymiany (60 tys.). jak oszukac czujnik braku tonera? w ft4415 jest elektroniczny pomiar plamy. co jakis czas id sensor mierzy koncentracje tonera na bebnie (pomiar plamy) i za bardzo nie da sie tego oszukac. jezeli tonera jest za malo, to zaczyna migac brak. po prostu wydozowujesz bez butli do momentu, az maszyna...
dzień dobry tak jak pisałem komunikat o konieczności podania kodu zablokował możliwość wejścia jako administrator i wpisania tam kodu nie mogę przejść do stanu maszyny ani stanu pracy a mogę wpisać tylko 4 cyfry pozdrawiam Marek L
Co do delay i maszyny stanów - moim zdaniem to zupełnie co innego. Jeżeli zaimplementuje maszynę, a użyję delay na jedno wyjdzie. Nie po to implementuje się maszynę stanów aby i tak używać delay, to jakiś nonsens.
Hehe. Wiem że to dziwne ale robiłem to na szybko. Cały czas eksperymentuje a mam mało czasu wiec mam nie mały bajzel. To ja jeszcze zwrócę uwagę na to, bo w Twoich kodach z innych tematów aż się rzuca w oczy: [syntax=c]USART1->CR1 = USART_CR1_UE; USART1->BRR = 168000000/9600 ; USART1->CR1 |= USART_CR1_TE | USART_CR1_RE; // RX, TX enable[/syntax] Po...
Miałem parę sytuacji, że nieoficjalne apki dalej pokazywały po pewnym czasie pomiary, gdy oficjalna pokazywała uszkodzenie czujnika. Jest to stan terminalny tej maszyny stanu. Dość powszechna jest też wiedza, że czujnik może działać nieco dłużej niż 14 dni: cała logika końca działania jest zrobiona po stronie "front-endu" / aplikacji mobilnej. A czy...
Troche w tym racji. Ale nikomu sie nie chce pisac wlasnie maszyn stanu z 1000 case'ów ;] Ja mam hierarchiczną maszynę stanów bez żadnego case'a - po prostu uznałem, że skoro mamy 2014 rok to słowa "class" i "virtual" nie gryzą... (; P.S. Zasadniczy kod maszyny stanów jest templatem... O zgrozo! P.P.S. W necie jest artykuł o hierarchicznej maszynie...
No to może czas zrobić maszynę stanów odpowiedzialną tylko za dane urządzenie? (; Oczywiście wtedy musisz się porozumiewać z danym urządzeniem (np. SPI) tylko poprzez interfejs do maszyny stanów. 4\/3!!
To byłoby jakieś uproszczenie. Kolejne bardzo duże ułatwienie to podział programu na części odpowiadające poszczególnym cyklom pracy maszyny. Programujesz osobno stan "szybkie_nalewanie", "wolne_nalewanie" i pozostałe, i nie zastanawiasz się "... jak wlaczyc ponizszy else if za pomoca pedal i jesli pompa1, pompa2, zawor HIGH && pedal wcisniety wykona...
Masz jakąś specyfikację tego modemu? Jeśli nie RTOS, to automat, czyli po "polsku" - "state machine" (maszyna stanów - brrr...). RTOS odpada. Jak widziałbys rozwiązanie tego typu przy pomocy maszyny stanów? Jaki mechanizm wykorzystać w tym przypadku by nie zatrzymywać main? Cykliczne przerwanie timera? Jak je powiązać z przerwaniem odbierania statusów....
A czego by nie można podłączyć. Sprawdź tylko poziomy napięć i tyle. TU musisz sobie tylko postawić kilka pytań. Czym chcesz sterować tym modułem. Maszyną stanów czy soft procesorem. Jak soft procesorem to przejrzyj co możesz zaimplementować tam. Jakie rdzenie są do tego dedykowane. Z Xilinxem o tyle prosto że masz albo MicroBlaze albo PicoBlaze a z...
Doświadczony mechanik ręką bujnie i lepiej oceni stan amortyzatorów niż te maszyny na SKP.
Diagram maszyny stanów, rozpisać, zaimplementować w wybranym języku.
Jeżeli ja mogę dorzucić swoje dwa grosze. Ja obsługę tego termometru robię zazwyczaj na maszynie stanów, którą umieszczam w przerwaniu od timera. Timer zazwyczaj wywołuję co 10 ms i on mi generuje nazwijmy to tyknięcia zegarowe, dla funkcji sprawdzającej stan klawiszy i do wspomnianej maszyny stanów. W main() w nieskończonej pętli mam zrobioną maszynę...
co to jest "maszyna stanów" ??
Witam, Odnośnie pierwszego;wykaszania łuków przy skrętach w lewo. Wyrobiony sworzeń/tuleja belki przedniej,wybite tulejki osi zwrotnicy, zagięte ramię zwrotnicy, zużyte łożyska koła, zagięty drążek wzdłużny układu kierowniczego,czyli geometria układu kierowniczego. Oraz może być też nieodpowiednio wypoziomowany agregat tnący, nierównomierne ciśnienie...
Tylko poczatkowym zalozeniem bylo wykorzystanie "state maschine" zeby mozna bylo wiecej funkcji przypisac guzikowi Przykładowy kod jest również realizacją maszyny stanów i nie ma ograniczeń co do ilości funkcji. Problem z Twoim kodem polega na błędnej obsłudze wciskania klawisza. Filtr możesz dodać do funkcji int8_t button() jednak poprawy wymagają...
Przekaźnik PK-3P (kategoria AC-7a) nie nadaje się do zasilania silników trójfazowych, potrzebujesz stycznik z kategorią AC-3. Dodatkowo w instalacji uwzględnij wyłącznik awaryjny blokujący pracę maszyny niezależnie od stanu sterownika Logo.
dało by się zrobić kompilator który analizując kod widząc, że dany kod w loop da się zoptymalizować i wrzucić do przerwania Dałoby się, z tym że nie byłaby to optymalizacja tylko przerobienie nieskończonej pętli na maszynę stanów. Kompilatory takich cudów nie robią bo to zbyt duża ingerencja w program.
A po co go ciągle testować? Ustawić jedno przerwanie co np. sekundę i wtedy sprawdzać stan ADC. Własnie o tym mówię. Odpalanie przerwaniem czy pętla busy wait - zasada jest identyczna. A to nie ma buzzerów z generatorem? Gdzieś pewnie są, ale czy akurat w tym projekcie? Kilka mA w stanie standby nie powinno być problemem W takim wypadku nie ma co się...
Słowa klucz - maszyna stanów.
właśnie dlatego że nieświecą te zaróweczki masz ten pasek , trzeba beło najpierw sprawdzić stan techniczny maszyny zamiast ja całą praktycznie wymieniac , to co wymieniłes przekracza jej wartość
(at)ElektrodaBot Hej, mam jeszcze problem z obsługą 1Wire, chodzi o termometry DS18B20, gdzie po zadaniu pomiaru trzeba czekać do 750 ms do konwersji i odczytu temperatury. Jaki zaproponowałbyś kod (AVR GCC), aby nie trzeba było używać delay'a (może pooling lub maszynę stanu)? Przy okazji przedstaw optymalną (bez zmiennoprzecinkowych liczb) konwersję...
Po nazwach zmiennych strzelam, że jest to maszyna stanów do debounce przycisku.
Proponuję sprawdzić połączenia na płytce stykowej i przypisania pinów do ledów. Ja uruchomiłem na emulatorze i śmiga aż miło. Teraz dopiero zauważyłem, że piszesz również o przycisku. To już nie będzie tak proste. Trzeba: - zrobić to na maszynie stanów - mierzyć czas - zrobić debouncing przycisku
maszyna stanów programowanie kodowanie stanów przesyłka stanów
uruchomić komputer pilot szybko rozładowuje baterie lodówka whirlpool niska temperatura
dławik przypalony zawiasy ślizgowe
Brak odbioru kanałów radiowych w Vectrze - przyczyny i rozwiązania Montaż kół rozrządu w Opel Astra Z16XEP