logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak zmierzyć wypełnienie impulsu w Bascomie? Szukam przykładowego kodu

Brodowski 28 Lip 2007 13:52 2764 8
REKLAMA
  • #1 4122540
    Brodowski
    Poziom 11  
    Posty: 71
    Ocena: 2
    Czy ktoś ma pomsył/przykład programu do pomiaru wypełnienia impulsu?
  • REKLAMA
  • REKLAMA
  • #3 4123275
    Brodowski
    Poziom 11  
    Posty: 71
    Ocena: 2
    Mam już program napisany w Bascomie obliczający czestotliwość a z częstotliwości okres jednak nie bardzo mam pomysł jak moge wychwycić koniec impulsu(zbocze opadające)...Reszta to pikuś następnie obliczam procent wypełniania impulsu do całego okresu...ma ktoś pomysł jak zrealizować czas trwania impulsu w Bascomie?
    Dodam tylko że impulsy zliczam poprzez wejście T0(timera) At89c2051 czy aby "zauważyć" koniec impulsu musze zmienić zliczanie z pinu T0 na INT1 czy wystarczy sama deklaracja
     if P3.4"(pin timera0)" = 0
    then stop Timer1
  • #4 4124482
    Brodowski
    Poziom 11  
    Posty: 71
    Ocena: 2
    I może troche głupie pytanie ale myśle nad tym już troche czasu i nic nie moge wymyślić a dokładniej jak procerura
    Do 
    'set up a 1 sec accurate DO NOTHING loop 
    Enable Interrupts 
    'wait 1 as per BASCOM-51 is not accurate 
    
    For Delayword = 1 To 45440 
    Next Delayword 
    
    Disable Interrupts 
    
    dla mikrokontrolera AT89C2051 z kwarcem 24MHz odlicza dokładnie 1 sekunde?Znalazłem ten przykład w innym programie jedank za nic nie moge go pojąć...
  • #5 13204871
    Juni[]r
    Poziom 16  
    Posty: 459
    Ocena: 24
    Potrzebuje zmierzyć samo wypełnienie impulsów nie wiem jak za to się zabrać. Potrzebuje badać sygnał idący na serwo modelarskie. By wiedzieć na 3 diodach jakie jest jego położenie. Proszę o jaką kolwiek pomoc. Oczywiście nie chodzi mi tu o zrób za mnie... ale nie wiem od czego zacząć. Rozumowanie moje jest takie przychodzi impuls odpala się timer. Liczy aż do momentu zaniku sygnału na wejściu a drugi timer liczy dalej aż do pojawienia się kolejnego impulsu te 2 czasy z prostego wyliczenia dadzą nam wypełnienie. Tylko jak to napisać.
  • REKLAMA
  • #6 13209343
    Konto nie istnieje
    Poziom 1  
  • #7 13211186
    Juni[]r
    Poziom 16  
    Posty: 459
    Ocena: 24
    Idę w jakimś kierunku czy zacząć od nowa ?

    $regfile = "attiny13.dat"
    $crystal = 10000000
    $baud = 19200
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    
    Config Timer0 = Counter , Edge = Rising
    
    Dim A As Byte
    
    
    Enable Timer0
    
    While Pinb.0 = 0 : Wend
        Timer0 = 0
    
      Start Timer1
    
    While Pinb.0 = 1 : Wend
        Timer0 = A
      Stop Timer1
    
    If A < 100 Then
      Set Portb.2
    If A = 100 Then
      Set Portb.3
    If A > 100 Then
      Set Portb.4
    
    EndIf
    
    
    End
  • REKLAMA
  • #8 13215349
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Dyskusja dotyczy pomiaru wypełnienia impulsu PWM w Bascomie, szczególnie dla sygnałów sterujących serwomechanizmami modelarskimi. Proponowane rozwiązania obejmują wykorzystanie timerów mikrokontrolera do pomiaru czasu trwania impulsu oraz całego okresu sygnału. Przykładowy kod wykorzystuje instrukcje "While...Wend" do wykrywania zboczy narastających i opadających na wejściu cyfrowym (np. PIND.0), co pozwala na uruchomienie i zatrzymanie timera mierzącego czas trwania impulsu. Znając taktowanie i preskaler timera, można obliczyć czas trwania impulsu i na jego podstawie wyznaczyć wypełnienie. Dyskutowano także o ograniczeniach mikrokontrolera ATtiny13, który nie jest optymalny do dokładnych pomiarów przy częstotliwości 10 MHz, oraz o konieczności odpowiedniej konfiguracji timerów i źródeł impulsów. Podano link do aplikacji AVR135 Atmel dotyczącej pomiaru wypełnienia PWM za pomocą Timer Capture. Wskazano, że do pomiaru wystarczy jeden timer, a pomiar można realizować przez zliczanie impulsów w czasie trwania sygnału wysokiego i całego okresu.
Wygenerowane przez model językowy.
REKLAMA