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



Teraz jest 13 sty 2026, o 18:20


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 18 sie 2015, o 19:13 
Offline
Nowy

Dołączył(a): 17 lis 2014
Posty: 2
Pomógł: 0

Cześć.

Poniżej znajduje się klasyczna funkcja służąca do obsługi UART'(odbieranie bajtu):

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


Funkcja ta jest funkcją nieblokującą, czyli np.

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


Mi zależy na efekcie zablokowania, tj. funkcja UART_ReceiveByte(void) będzie czekać na nowe dane.
Po nadejściu danej można przejść do dalszej części programu(a w czasie oczekiwania przykładowo będę
resetował układ watchdog).

Czy da się w jakiś prosty i elegancki sposób uzyskać powyższy efekt?
(czytaj:
1. Bez sprawdzania czy poprzedni znak był taki sam jak aktualny(zmiana znaku).
2. Bez przedzielania znaków pewnym określonym separatorem
3. Bez łączenia obu powyższych sposobów(chociaż powinny być skuteczne)
)

Pozdr,
Xionix



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 sie 2015, o 21:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Nie wiem, czy o coś takiego Ci chodzi, ale zobacz sam:

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  
PostNapisane: 19 sie 2015, o 16:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Xionix napisał(a):
Cześć.

Poniżej znajduje się klasyczna funkcja służąca do obsługi UART'(odbieranie bajtu):

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


Funkcja ta jest funkcją nieblokującą, czyli np.

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


"UART_ReceiveByte" jest napisana błędnie i stąd brak "blokowania".
Negacja logiczna rejestru powoduje momentalne przerwanie działania pętli, a wyrażenie w nawiasie jest całkiem ignorowane...
Funkcja powinna wyglądać następująco:

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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2015, o 17:39 
Offline
Nowy

Dołączył(a): 17 lis 2014
Posty: 2
Pomógł: 0

Teraz działa zdecydowanie lepiej :)
Dzięki za pomoc.



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: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO