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



Teraz jest 28 mar 2024, o 16:55


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: 546
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 ]
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 ]
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: 230
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: 546
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: 1020
Lokalizacja: Trójmiasto
Pomógł: 188

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: 546
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: 546
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: 230
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: 546
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: 546
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 14 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