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



Teraz jest 21 maja 2026, o 22:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 3 maja 2016, o 15:44 
Offline
Użytkownik

Dołączył(a): 08 lut 2015
Posty: 132
Pomógł: 4

Witam.
Mam pewien problem związany z transmisją danych przez UART. Mam pewien czujnik, z którego ATmega32 odbiera dane z bardzo dużą częstotliwością. Załóżmy, że dane odczytywane są co 1 ms. Czy jest możliwość wysyłania danych przez UART z taką częstotliwością na bieżąco ? Myślałem o wpisywaniu danych do bufora i dopiero wysyłaniu sobie spokojnie tych danych na RS232, ale nie wiem jak to zrealizować. Czy mógłby mi ktoś pokazać jak stworzyć taki bufor, do którego wpisuje sobie dane odczytane z czujnika i jak go wysyłać przez RS, aby nic się nie pogubiło po drodze wykorzystując bibliotekę Uart Mirka ? Mam nadzieję, że zrozumiecie o co mi chodzi.

Pozdrawiam
drewpol



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 17:42 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Biblioteka Mirka ma już bufor i jego wielkość można sobie regulować.
Ewentualnie możesz ładować wszystkie pomiary do tablicy (o ile ramu starczy) i na końcu dopiero wysyłać całość po uart.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 18:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Korzystając z prędkości 115200 bps (a jest ona standardowo obsługiwaną wartością) możesz wysłać 11 znaków w czasie 1 ms. Dlatego nie powinieneś mieć problemów z szybkością transmisji i ilością danych.
Oczywiście powinieneś korzystać z bufora. Masz to dokładnie opisane przez Mirka - jak masz biblioteki, to musisz mieć BB a tam jest dokładny opis.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 18:56 
Offline
Użytkownik

Dołączył(a): 08 lut 2015
Posty: 132
Pomógł: 4

Dzięki za podpowiedzi. O buforze do wysyłania przez uart to wiem, że taki został zaimplementowany w bibliotece(ogony, głowy i te sprawy). Chodziło mi bardziej o bufor do danych, które pobieram z czujnika, ale jest to niewykonalne jak się okazało (za mało ramu). Całkowicie zapomniałem, że można zmieniać prędkość transmisji :) W jaki sposób w zależności od jej prędkości można określić ile znaków mogę wysłać w danym czasie ? "rskup", w jaki sposób wyznaczyłeś tą wartość. Może to banalne pytanie, ale nie wiem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 19:45 
Offline
Użytkownik

Dołączył(a): 24 kwi 2013
Posty: 454
Pomógł: 30

Zależy jaką masz ustawioną ramkę uarta.
Jeżeli jest jeden bit startu, jeden stopu, bez bitu parzystości + 8 bitów danych, wychodzi 10bitów.
Czyli prędkość dzielisz przez 10.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 20:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Dokładnie jak napisał ciamciak. Jak masz 115200 bps, czyli 115200 bitów na sekundę, to w ciągu sekundy możesz przesłać 115 200 bitów. Typowa ramka ma tryb 8N1, czyli 1 bit startu (zawsze), 8 bitów danych, brak bitu parzystości oraz jeden bit stopu. Czyli w sumie ramka wysyłająca 1 bajt ma 10 bitów.
Wystarczy teraz podzielić prędkość przez liczbę bitów => 115200 / 10 => 11520 bajtów / sekundę. Czyli masz 11.52 bajta / 1 ms.
Oczywiście musisz jeszcze zawsze brać pod uwagę odstęp między znakowy, który wychodzi w związku z ładowaniem przez program znaków do nadajnika (chyba że korzystasz z double buffer).

--
Pozdrawiam,
Robert


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2016, o 21:18 
Offline
Użytkownik

Dołączył(a): 08 lut 2015
Posty: 132
Pomógł: 4

Dziękuję za wyjaśnienia :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 8 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