Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 lut 2026, o 09:49


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 22 lis 2015, o 23:52 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 lis 2014
Posty: 19
Pomógł: 3

Witam szanownych forumowiczów.
Jest to mój pierwszy post. Do tej pory jakoś sobie radziłem czytając problemy i rozwiązania podpowiadane przez innych, ale tym razem jest inaczej
i nie potrafię znaleźć odpowiedzi na mój problem.
Korzystając z poradników Mirka odnośnie RS232 tworzę sobie testowy kod do oświetlenia choinki ale pojawił problem

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

jak opuścić pętlę while. Kod powyżej i "sto" innych które testowałem nie działa. Uprzedzając krytykę "delaye" umieszczone w celach testowych.



Ostatnio edytowano 27 lis 2015, o 12:10 przez Lavir, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2015, o 00:17 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Witamy na forum :)

Wchodzisz do pętli z liczba o wartości jeden (ponieważ spełniony jest warunek liczba == 1),
ale zmienna liczba w pętli musi zmienić wartość, aby nastapiło wyjście.
U Ciebie program grzęźnie na zawsze w while... ;)
Tak jest w każdej pętli - musimy doprowadzić, aby warunek pętli przestał być spełniany,
wtedy pętla się kończy.
Może też być wymuszone wyjście z pętli - instrukcja break - po spełnieniu jakiegoś warunku.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2015, o 00:33 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 lis 2014
Posty: 19
Pomógł: 3

Tak. Tylko dane dostarczam przez RS232 a umieszczenie czegoś na wzór
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


nie chce mi działać. Więc jak przekazać nową wartość z bufora aby zapis.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

przestał być prawdziwy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2015, o 10:06 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Właśnie zwróć uwagę na to co napisał kolega Squeez, bo nie wiadomo, co chcesz uzyskać ;)

Korzystasz z przerwań w programie?
Z tego fragmentu nic nie wynika. Ale pewnie tak, jak używasz UARTa.
"Liczba" jest wyliczana ze zmiennej "wsk", która też się nie zmienia.
Musiałaby się zmieniać w przerwaniu, w powiązaniu z "buf".
Tutaj masz kodowanie liniowe. Kod nie wyskoczy nagle poza pętlę,
aby zmienić wartość wsk czy liczba... ;)
Rzuc proszę okiem np. do rozdziału o multipleksowaniu 7seg.
Zobacz jak jest rozwiązana modyfikacja zmiennej na timerze.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lis 2015, o 19:50 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 lis 2014
Posty: 19
Pomógł: 3

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W buforze (przez UART) zapisywane są napisy o strukturze np. "Zielony,1", "Czerwony,3".
To co chcę uzyskać, to gdy w buforze liczba która zostanie wpisana będzie różna od 1, to zakończy się pętla while.
W pętli jeszcze raz odczytuję dane z bufora (w tym samym momencie kolejny raz zapisuję dane w buforze poprzez UART) i wpisuję tam np. "Czerwony,3".

Program nigdy nie opuszcza pętli. Co zrobić żeby z niej wyjść, muszę napisać własną procedurę obsługi przerwania?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 lis 2015, o 17:02 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 15 lis 2014
Posty: 19
Pomógł: 3

Spróbuję zapytać jeszcze raz. Może teraz będzie łatwiej zrozumieć o co mi chodzi.
Zamieszczam cały maksymalnie uproszczony kod.
Jakiego warunku należy użyć aby opuścić pętlę i móc sprawdzać kolejne warunki.
Czy jest to w ogóle możliwe, czy to ślepa uliczka i trzeba szukać innej drogi?
Uprzedzając ewentualne pytania - nie mogę użyć klawisza, przycisku, dźwigni, korby i innych tego typu rzeczy aby wywołać zewnętrzne przerwanie :D
nie mogę też użyć "mocy" :lol: wszystkie dane otrzymuję przez UART.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 19 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO