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



Teraz jest 16 lis 2024, o 21:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 6 lut 2018, o 21:07 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Witajcie Koledzy,

mam do Was pytanko, może ktoś będzie w stanie mi pomóc.
Komunikacja USART działa w obie strony - testowałem, Putty skonfigurowany poprawnie.

Cel: proste sterowanie diody. Klawisz "1" włącza diodę, a klawisz "2" ją wyłącza (ot tak, w ramach zwykłego testu).

Mój problem:
- tuż po uruchomieniu programu (włączony Putty) naciśnięcie klawisza "1" powoduje natychmiastowe włączenie diody PB0 - i jest to właściwe
- wyłączenie diody za pomocą klawisza "2" niestety wymaga dwukrotnego jego wciśnięcia, lub przytrzymania go przez dłuższą chwilę
- ponowne włączenie diody za pomocą klawisza "1" jest możliwe tylko po jego dwukrotnym wciśnięciu, lub dłuższym przytrzymaniu

Gdzie popełniam błąd? I dlaczego tak się dzieje? Z góry dzięki za podpowiedź. Poniżej wklejam kod:

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: 6 lut 2018, o 21:13 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Aby sprawdzić warunek "wyciągasz znak" i już go nie ma dla kolejnego sprawdzenia. A gdyby zrobić tak:
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łę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2018, o 21:21 
Offline
Użytkownik

Dołączył(a): 06 lut 2018
Posty: 58
Pomógł: 0

Super, dziękuję bardzo. Oczywiście po tej korekcie wszystko działa zgodnie z założeniem.
Czyli w momencie, kiedy odczytuję zawartość rejestru UDR0, to jest ona automatycznie kasowana, tak? Dlatego konieczne jest zastosowanie zmiennej, by chwilową zawartość tego rejestru, móc do niej bardziej "trwale" przypisać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2018, o 21:38 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Tak. Za pierwszym odczytem UDR0 odczytasz jakiś znak a za drugim 0x00 co nie jest żadnym znakiem. Dodatkowo jest tam FIFO na 2 znaki dlatego sprawdza się bit RXC0, który informuje czy jest coś co warto czytać.

_________________
Dragonus Cracovus: Biomagia



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