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



Teraz jest 16 lut 2025, o 01:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 29 gru 2014, o 20:19 
Offline
Użytkownik

Dołączył(a): 23 mar 2014
Posty: 38
Pomógł: 0

Witam wszystkich ;)

Mam taki mały problemik. Program ma za zadania odczytu ramki danych przesyłanej przez interfejs RS232 i wyświetlanie przesłanych cyfr na wyświetlaczu siedmiosegmentowym. Po braku transmisji (wyłączenie nadajnika) wyświetlacze led mają się wyłączać jednak nie mam pomysłu jak to uczynić. Domyślam się, że potrzeba warunku sprawdzającego czy leci transmisja i potem przypisanie do tablicy odpowiednich znaków odpowiadających za wygaszenie LED.

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


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


Kombinowałem z flagą odbioru danych ale kompletnie mi to nie wychodzi, jakby były jakieś trafne sugestie, z góry dzięki ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2014, o 21:33 
Offline
Użytkownik
Avatar użytkownika

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

Na początek trochę bym kod źródłowy zmniejszył, usuwając funkcję (wywołania wraz z ich definicjami):

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

Zastępując je:

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


Co do samego problemu to proponuję dodać "timeout" na jakimś timerze, którego zliczona wartość będzie resetowana w momencie odbioru dowolnej danej. Jeżeli licznik doliczy do ustalonego Tmax, wtedy wyświetlanie jest wyłączane, a moment odbioru bajtu z powrotem włącza wyświetlacz.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2015, o 21:07 
Offline
Użytkownik

Dołączył(a): 23 mar 2014
Posty: 38
Pomógł: 0

Jako, że ciągle jestem początkujący w programowaniu uC po ciężkich bojach myślowych i kombinowaniu udało się osiągnąć cel (chyba) ;) Program ma na celu wyświetlanie odebranej ramki danych na wyświetlaczu 7segmentowym. W życiu będzie wykorzystanych 6 segementów jednak do testów na płytce stykowej mam jedynie 4 dlatego jest nieco obkrojony kod ;)

W przerwaniu odczytywana jest cała ramka i zapisywana do tablicy, poczym sprawdzane jest czy charakterystyczne znaki na danych miejscach zostały odebrane co świadczy o poprawnej ramce, dalej funkcja wycisna z ramki odpowiednie znaki i wpisuje je do tablicy waga. Gdy jest zero po krótkim czasie przechodzi w stan czuwania i się wygasza, taka sama sytuacja jest gdy nie ma transmisji


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


Jeżeli macie jakieś sugestie co do uproszczenia kodu prosze o info ;) Jedyne co jest denerwujące to to, że podczas trwania przerwania Timera1, ktore odywa się co ok. 4sekundy wyświetlacz zamruga. Można to jakoś wyeliminować czy to już taki urok multipleksowania?



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

Dołączył(a): 23 mar 2014
Posty: 38
Pomógł: 0

Kod jak najbardziej zrozumiały i podziękowanie za uproszenie go ;) Uroki początków, robi się dużo na około.

Mam jednak pytanko:

1.Czemu w podfunkcji dałeś w nawias VOID a nie mógł zostać pusty?
2.Dlaczego jest *licznik_2 w nawiasie po uint8_t? a potem w timerze2 gdzie jest definiowana ta zmienna jest odnośnik do podfunkcji &licznik_2?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Może i to pytania o błahostkę ale jedyne czego tu nie czaje za bardzo ;)



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