Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

zmierzyć szerokość impulsu

szuwar40 27 Cze 2015 13:30 753 9
  • #1 27 Cze 2015 13:30
    szuwar40
    Poziom 7  

    Witam

    Mam nadzieję że doświadczeni fachowcy pomogą.

    Potrzebuję zmierzyć ile impulsów z Timer1 mieści się w zewnętrznym impulsie.

    Doczytałem informacje że można to zrobić poprzez przechwycenie zawartości Compare1a po podaniu tego zewnętrznego impulsu na pin. ICP1.

    Pewno są na to też inne sposoby , o których nie pisze w pomocy i w googlach.

    Nie wiem od czego zacząć oraz właściwie to potrzeba zmierzyć 2 zewnętrzne impulsy do porównania , który jest szerszy a one są bardzo blisko siebie , wręcz mogą się stykać (ale się nie nakładają) więc powinny być podane na dwa wejścia albo sprytnie przepisać pierwszą zawartość do X rejestru ale za mało mam na to wiedzy fachowej a w necie brak przykładów do podglądu jak to zrobić.

    Napisałem coś takiego , kompiluje się ale oczywiście nie działa , brak przypisania ICP1 i brak pomiaru drugiego impulsu.

    Może ktoś podpowie jak to napisać ?

    Impulsy do zmierzenia mają około 7-30us. Atmega 9 jest ustawiony na kwarc 16Mghz (łącznie z fusem CKOPT), i przy tych ustawieniach sprawdziłem że kilka impulsów Timer1 mieści się w każdym z dwóch impulsów do porównania. W zapasie mam jeszcze Atmega16

    Potrzeba fachowej pomocy jak to napisać. Help !!!!

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0 9
  • #2 27 Cze 2015 14:01
    yogi009
    Poziom 42  
  • #3 27 Cze 2015 14:10
    szuwar40
    Poziom 7  

    Świetna porada. Podpowiedz jeszcze jak umieścić na stałe osyloskop w szafie sterowniczej i wyciągnąć z niego impulsy szerszy i węższy do sterowania płyty.

    1
  • #4 27 Cze 2015 14:27
    greg789
    Poziom 16  

    chcesz zmierzyć szerokość impulsu ?
    Jakie to są impulsy dodatnie czy ujemne?
    Potrzebujesz ich czas czy tylko który jest dłuższy?
    Przy tak krótkich czasach nie bawiłbym się Timerem tylko w pętli dodawał wartość do rejestru sprawdzając stan pinu.

    0
  • #5 27 Cze 2015 14:51
    szuwar40
    Poziom 7  

    Witam

    Impulsy są dodatnie 5V. Odstęp pomiędzy paczką dwóch impulsów wynosi około 50us. , ciąg impulsów leci w kółko ale zmienia się ich szerokość. Pierwszy zawsze jest węższy. Jak pisałem wcześniej te 2 impulsy są bardzo blisko siebie , prawie sie stykają ale sie nie nakładają.Potrzeba z tych 2 wyłuskać krótszy na pinx. i szerszy na pin.y. Mam zrobione sterowanie ale nie umiem rodzielić na 2 porty te 2 impulsy.

    0
  • #6 27 Cze 2015 15:03
    373522
    Użytkownik usunął konto  
  • #7 27 Cze 2015 15:20
    szuwar40
    Poziom 7  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Dodano po 14 [minuty]:

    Witam serdecznie

    Nie zauważyłem że to kolega Niveasoft , wczorajsza pomoc o generator z Timera1 naprawdę mnie zaskoczyła , prosto i skutecznie.

    Z tym tematem kręcę się w kółko również wokół Timer1 bo do tego węższego impulsu będzie potrzeba dodać około 20% do porównania czy na pewno jest węższy od tego co idzie za nim. Wiem że pisałem wcześniej że pierwszy zawsze jest węższy ale zauważyłem że zbocza opadające nie są równo strome i dla pewności potrzebuję dodać okolo 20 procent do pierwszego impulsu.

    Widziałem to tak że wynik podzielić przez 10 , potem razy 2 i dodać zawartość rejestru z zmierzoną zawartością ale jak skojarzyłem że wyjdą mi cyfry po przecinku to mi już całkiem ręcę opadły. Doczytałem gdzieś że można zaokrąglać , ale tak bez pomocy co chwila coś doczytuję a program jest już potrzebny.

    0
  • Pomocny post
    #8 27 Cze 2015 15:56
    373522
    Użytkownik usunął konto  
  • #9 27 Cze 2015 15:57
    greg789
    Poziom 16  

    A możesz podłączyć impulsu do INT0 i INT1
    Ustawić przerwania zboczem narastającym jako przerwania takie procedurki:

    Kod: avrasm
    Zaloguj się, aby zobaczyć kod

    W głównej pętli tylko zerujesz R5 i R4 , czekasz aż będą miały wartość różną od zera i porównujesz który jest dłuższy / krótszy

    0
  • #10 27 Cze 2015 18:07
    szuwar40
    Poziom 7  

    Przepraszam , umknęło mi dopisać wcześniej że potrzebuje jeszcze dodać 20% do szerokości pierwszego impulsu. Przypomniało mi się jak zerknąłem na szkic. Więcej niespodzianek nie ma.

    Listing wygląda czytelnie tylko musze poszukać co oznaczają te cyferki po Int0_isr , bo na dzień dzisiejszy nic z tym nie zrobię tzn. w sensie samodzielnych poprawek w trakcie uruchamiania.

    Skompilował się oczywiście bez problemu twój listing , załaduję go zaraz do procka i dam znać co się dzieje.

    Dodano po 1 [godziny] 41 [minuty]:

    Hey Niveasoft

    Odpaliłem twój listing i ....

    ...rozsypała mi sie koncepcja porównania tych dwóch impulsów.

    Bedę musiał to jeszcze raz przemyśleć.

    Dzięki za pomoc.

    Temat zamkniety.

    0