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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 20 maja 2025, o 21:13


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