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? 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 23 lip 2025, o 06:32


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
    Autor Wiadomość
    PostNapisane: 11 paź 2019, o 09:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Witam.

    Walczę od dłuższego czasu z pewnym projektem analizy przebiegów i dzięki pomocy kolegów próbowałem różnych rozwiązań i nawet trochę się udało mi coś tam się nauczyć.
    Wielokrotnie pisałem o problemie pomiaru zmieniających się impulsów , które to jednak okazały się trochę za krótkie aby przy pomocy Attmegi 32 i przerwania ICP odczytać.
    Udał się experyment na nowych urządzeniach przy pomocy przerwania ICP:

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


    Jak wspomniałem pomagali koledzy ale się coś udało z tego zrobić.
    Ale jednak okazało się że niektóre impulsy okazały się zbyt krótkie aby dokładnie odczytać ramkę problem zaczynał się poniżej 5us bo nie zdążyło w/w przerwanie tego zaobrazować.

    Ale po dokładym poznaniu problemu może nie ma potrzeby czytać tych krótkich impulsów pokaże jak pokazywał przebieg oscyloskop gdzie została wciśnięta (naruszona) jena tzw lini:

    Obrazek

    wykres niebieski pokazuje jak działa dokładnie urządzenie , narastanie stanu z niskiego na wysoki i jego czasowy moment decyduje o porównania i pomiaru.

    I dochodzę wreszcie do mojego pytania jak stworzyć przy pomocy programu taki właśnie niebieski przebieg ja nazywam go CLK - ponieważ dokładnie moment jego narastania pokazuje jak odczytać.
    Pragnę przypomnieć że przerwania INT 0 I INT 1 mam zajęte w/w przerwanie ICP jest potrzebne ponieważ muszę wiedzieć jaka jest ramka , ale można chyba go zmodyfikować bo nie muszę analizować wszystkich impulsów.
    I teraz tak impuls CLK można by podłączyć do wejścia pinu mikrokontrolera i wdanym momencie porostu porównywać stan pinu czy jest 0 czy 1.

    Tylko jak przy pomocy timerów mogę to spróbować zrobić ?

    ------------------------ [ Dodano po: 31 minutach ]

    AKSELINEK napisał(a):
    Witam.

    Walczę od dłuższego czasu z pewnym projektem analizy przebiegów i dzięki pomocy kolegów próbowałem różnych rozwiązań i nawet trochę się udało mi coś tam się nauczyć.
    Wielokrotnie pisałem o problemie pomiaru zmieniających się impulsów , które to jednak okazały się trochę za krótkie aby przy pomocy Attmegi 32 i przerwania ICP odczytać.
    Udał się experyment na nowych urządzeniach przy pomocy przerwania ICP:

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


    Jak wspomniałem pomagali koledzy ale się coś udało z tego zrobić.
    Ale jednak okazało się że niektóre impulsy okazały się zbyt krótkie aby dokładnie odczytać ramkę problem zaczynał się poniżej 5us bo nie zdążyło w/w przerwanie tego zaobrazować.

    Ale po dokładym poznaniu problemu może nie ma potrzeby czytać tych krótkich impulsów pokaże jak pokazywał przebieg oscyloskop gdzie została wciśnięta (naruszona) jena tzw lini:

    Obrazek

    wykres niebieski pokazuje jak działa dokładnie urządzenie , narastanie stanu z niskiego na wysoki i jego czasowy moment decyduje o porównania i pomiaru.

    I dochodzę wreszcie do mojego pytania jak stworzyć przy pomocy programu taki właśnie niebieski przebieg ja nazywam go CLK - ponieważ dokładnie moment jego narastania pokazuje jak odczytać.
    Pragnę przypomnieć że przerwania INT 0 I INT 1 mam zajęte w/w przerwanie ICP jest potrzebne ponieważ muszę wiedzieć jaka jest ramka , ale można chyba go zmodyfikować bo nie muszę analizować wszystkich impulsów.
    I teraz tak impuls CLK można by podłączyć do wejścia pinu mikrokontrolera i wdanym momencie porostu porównywać stan pinu czy jest 0 czy 1.

    Tylko jak przy pomocy timerów mogę to spróbować zrobić ten impuls nazwany CLK ?


    ------------------------ [ Dodano po: 36 minutach ]

    .

    ------------------------ [ Dodano po: 37 minutach ]

    sory nie wiem jak przypadkowy cytat usunąć



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 paź 2019, o 10:15 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    Pierwsza uwaga
    W poprzednim wątku napisałem że masz do dyspozycji jeszcze INT2
    Czemu z niego nie skorzystasz?

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 paź 2019, o 15:14 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Tak faktycznie masz rację na pewno z tego skzystam .Tylko mam pytanie czy w czasie przerwania ICP moge wyzwolic inne przerwanie np wspomniane INT2?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 paź 2019, o 14:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2014
    Posty: 1040
    Lokalizacja: Trójmiasto
    Pomógł: 190

    Czytając to co piszesz mam wrażenie, ze nie do końca wiesz jak taki uC działa. AVR to procki jednowątkowe więc w danym momencie mogą się zajmować jedną rzeczą. Oczywiście da się ich czas poszatkować tak by zajmowały się wieloma zadaniami "jednocześnie" ale coś kosztem czegoś. uC taktowany kwarcem 16MHz większość rozkazów wykonuje w ciągu 0,0625us, więc pomiar impulsu 5us nie powinien stanowić problemu, no jeszcze pytanie z jaką dokładnością potrzebny ten pomiar, ale zgrubnie te 5us procek zmierzy. Jest jednak ale, jeśli ty masz tam jeszcze poupychane inne przerwania to nie ma siły by ten pomiar się udał. Bo jeśli wystąpi impuls a w tym czasie jest wykonywane inne przerwanie no to sory, ale może być tak że zanim przerwanie od impulsu zostanie wywołane to sam impuls "przeminął już z wiatrem".
    AKSELINEK napisał(a):
    Tylko mam pytanie czy w czasie przerwania ICP moge wyzwolic inne przerwanie np wspomniane INT2?
    Oczywiście jest to możliwe do zrealizowania ale jest to już "level very hard" i bez dokładnej znajomości tematu lepiej do niego wogule nie podchodzić. Wyobraź sobie że zezwalasz na wystąpienie przerwania w przerwaniu, i teraz w czasie trwania przerwania zostaje wywołane następne, i w czasie wykonywania tego następnego przychodzi wyzwolenie kolejnego itd. Zaczyna się kaskadowe wywoływanie przerwań - totalny armagedon.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 paź 2019, o 15:29 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Bardzo dziękuje za zainteresowanie tematem , ale ja na pewno wiem że nie zmierzę impulsu krótszego niż 5us, ale poznałem bardziej układ elektroniczny w/w urządzenia i nie mam potrzeby mierzyć wszystkich
    impulsów w ramce a jedynie sprawdzać te stany w chwili gdy impuls niebieski CLK zmienia stan z niskiego na wysoki - no może jeszcze dokładniej to trochę póżniej .
    Myślę czy jakbym wygenerował przy pomocy AVR na jakimś wyjściu ten impuls CLK a potem przy pomocy porównania pinów w tych odpowiednich czasach stwierdzał jaki jest stan .
    Momentów narastania impulsów jest tylko 13 i każdy coś określa , jedynie problemem może być dokładne wygenerowanie takiego impulsu tzn.
    Przychodzi pierwszy impuls ramki i mogę np. przy pomocy wolnego przerwania INT 2 uruchomić odpowiedni timer i jakoś tak go określić aby wyzwolił taki przebieg CLK.
    Ale kolega pisał że nie można w jednym momencie mieć dwóch przerwań, więc czy możliwa jest taka sytuacja że najpierw przerwanie INT 2 uruchamia krótką procedurę przerwania i wyzwolenia
    impulsu clk a potem już dla każdego impulsu ramki leciało by tylko przerwanie ICP I nieważne są te krótkie impulsy a jedynie te co decydują o naruszeniu lini jak na rysunku.
    Problemem jest tylko to czy za pomocą jednego przerwania mogę wygenerować taki impuls CLK a równolegle wykonywać pomiary ICP w wspomniane .
    Jedynie co 13 impulsów sprawdzał bym i porównywałbym na bardzo krótką chwile stan Pinów a czas ipulsu tego co powoduje zmianę jest dosyć długi.
    Pragnę tylko jeszcze dodać że przerwanie ICP mogę jeszcze trochę zmodyfikować ponieważ może nie muszę mierzyć wszystkich impulsów w ramkach a jedynie te które określają nr. ramki.
    Jak bym znał tylko numer ramki to całe przerwanie ICP jest mi zbędne.
    Przepraszam za chaos w rozmyślaniach i wielokrotne powtarzanie się ale chciałem dokładniej wypowiedzieć się co chcę zrobić



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 paź 2019, o 13:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Mylę że nie dużo mi brakuje do zakończenia tematu , ale muszę przy pomocy Timera wygenerować impuls CLK .
    Początek generowania impulsu CLK stanowi pomiar:

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

    Jest to początek każdej ramki i teraz muszę uruchomić impuls CLK dlatego prubuje uruchomić timer

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


    Niestety na PA1 nic mi nie generuje :(
    czy muszę jeszcze coś ustawić przed pętlą główną???



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 paź 2019, o 19:57 
    Offline
    Użytkownik

    Dołączył(a): 29 paź 2017
    Posty: 232
    Pomógł: 26

    Czy nie powinieneś włączyć tryb CTC?
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Oczywiście masz włączoną globalną obsługę przerwań
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
    ?

    _________________
    Jestem na GG 31324
    Nowy soft, nowa nadzieja.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 paź 2019, o 20:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Ustawiłem jak radziłeś przed pętlą główną :

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


    I dalej kicha :(

    może coś z tym preskalerem jest nie tak:

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


    oczywiście sei jest włączone.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 paź 2019, o 22:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 23 paź 2017
    Posty: 586
    Pomógł: 0

    Dobra coś ruszyło .



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

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