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



Teraz jest 11 paź 2025, o 06:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 4 sie 2014, o 13:10 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

Witam.

Chciałbym zmierzyć długość trwania stanu wysokiego na pinie XMEGI.

Jak najlepiej podejść do tego tematu ? Słyszałem, że XMEGA potrafi robić to sprzętowo ale nie znalazłem informacji na ten temat.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 14:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

W atmedze stan logiczny trwa mniej więcej tyle co czas trwania taktu zegarowego plus nachylenie zboczy. Przecież zmiana stanu pinu odbywa się w jednym cyklu. Jest to operacja zapisu do rejestru - jeden cykl w sensie ASM.
Nie wiem czy o to chodziło koledze t__d. Z ciekawości ostatnio oglądałem jak to wygląda i stan trwał około 40ns + plus około 20 ns na zbocze (zależnie od pozycji trigera). Pin był obciążony prądem około 5mA. Zasilanie +5V
Sądzę, że w Xmegach będzie podobnie, może zbocza będą inaczej wyglądać przez niższe VCC. Ale Xmegę można chyba pędzić z PLL do 64 MHz, więc jeden cykl będzie trwał dużo krócej.

Jeśli w po wystawieniu stanu procesor coś jeszcze robi to ten stan trwa dłużej, ale najczęściej jest to zamierzone. Zresztą to można policzyć oglądając plik z kodem ASM i znając taktowanie.
Mirek zresztą to bardzo ładnie opisuje w początkowych poradnikach o MagicLEDach, gdzie te czasy trwania są kluczowe i oczywiście jak można nimi manipulować na poziomie czasów dużo poniżej 1us.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

dambo napisał(a):
podawanego przez jakieś inne urządzenie na pin xmegi i wykonywanie jego pomiaru

Hehehe no możliwe. Faktycznie tak to też można interpretować.

Jeśli tak to pewnie można użyć ICP lub odpowiednika bo w Xach to się jakoś inaczej nazywa. Zresztą tam można to pod dowolny pin podpiąć, albo pod prawie dowolny.

------------------------ [ Dodano po: 1 minucie ]

Kolega PawelGaj zajmuje się X'ami. Ostatnio nawet kurs bardzo fajny rozpoczął na forum



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 15:00 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

dambo napisał(a):
@sq8dsr mi się wydaje, że tu chodzi o mierzenie czasu stanu wysokiego podawanego przez jakieś inne urządzenie na pin xmegi i wykonywanie jego pomiaru, chociaż to już musi autor tematu wyjaśnić


Dokładnie chodzi o mierzenie czasu stanu wysokiego podawanego przez inne urządzenie.

Czyli rozumiem, że zrobić tak: wykrywam w przerwaniu zbocze narastające i uruchamiam w tym przerwaniu timer, następnie wykrywam zbocze opadajace i wyłączam timer. W czasie, gdy timer działa to zlicza mi czas.

Myślałem, że może można jakoś spowodować bezpośrednio uruchomienie timera gdy na pinie pojawi się zbocze narastające i wyłączenie timera przy zboczu opadającym.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 15:24 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

t__d napisał(a):
Myślałem, że może można jakoś spowodować bezpośrednio uruchomienie timera gdy na pinie pojawi się zbocze narastające i wyłączenie timera przy zboczu opadającym.


To właśnie ICP tak działa. Najpierw ustawiasz przerwanie na zbocze narastające, później w przerwaniu zmieniasz na opadające. Licznik timera jest kopiowany do rejestru ICR. Tak jest w atmegach. A w Xach są timery mocno zmodyfikowane, wszystkie to mają, tylko jakoś inaczej się to robi, zapewne przez mechanizm eventów.
Kolega Paweł_Gaj o tym chyba ostatnio pisał, tylko nie wiem czy doszedł to obsługi timerów w ten sposób.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 16:51 
Offline
Użytkownik

Dołączył(a): 17 mar 2013
Posty: 143
Lokalizacja: Bydgoszcz
Pomógł: 2

Znalazłem taką informację, że timer XMEGI ma tryb pomiaru szerokości impulsu. I tak jak pisał sq8dsr wykorzystuje sie eventy.

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


Zmienna PW zawiera czas w uS pod warunkiem, że taktowanie uC to 2MHz Dlatego ustawiłem TC_CLKSEL_DIV2_gc.

Teraz mogę używać HC - SR04. Wystarczy, że PW podzielę przez 58 i mam wynik w cm.
Dziękuję wszystkim za pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sie 2014, o 22:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

O tutaj nawet od razu można reagować na dwa zbocza. Fajnie.



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