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

Licznik impulsów z kontaktronu na 89cx051 w Bascom, ustawianie liczby klawiszami

jaroslawk 09 Sie 2005 20:39 2321 7
REKLAMA
  • #1 1720651
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Potrzebuję napisać licznik impulsów w Bascom 89cx051 o następujących parametrach:
    Wprowadzam ilość impulsów za pomocą trzech klawiszy (pierwszy klawisz ustawia pozycję nad liczba która będzie zmieniana, drugi i trzeci służą do zmiany góra-dół), po ustawieniu odpowiedniej liczby (maksymalnie 7 cyfr), wciskam czwarty klawisz (start) w tym monecie na wyjściu PX.X pojawia się ta ustawiona ilość impulsów. Szybkość impulsów ok. 10 Hz.

    Jestem początkujący poszukuje pomocy

    Pozdrawiam
    Jarek
  • REKLAMA
  • #2 1721951
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Właśnie poradziłem sobie z wprowadzaniem (ustawianiem) liczby - licznik dolicza w dół.
    Jak zrobić teraz częstotliwość impulsów 10 Hz ??

    
    Uproszczona budowa licznika
    
    Lcd "wprowadz liczbe"
    Do
    Locate 2 , 1
    Lcd A
    If P3.7 = 0 Then
    Incr A
    End If
    If P3.5 = 0 Then
    Exit Do
    End If
    Loop
    Cls
    Lcd "X="
    For I = A To 0 Step -1
    Locate 1 , 4
    Lcd I
    Set P3.0
    Waitms 300
    Reset P3.0
    Next I
    Cls
    Lcd "Koniec"
    loop
    
  • REKLAMA
  • #3 1722023
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    Jeżeli chcesz precyzyjnie odmierzać / wyznaczać częstotliwość powinieneś korzystać z przerwań Timera. Zależy też jakie mają być te impulsy, jakie wypełnienie etc.
  • REKLAMA
  • #4 1722054
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Wypełnienie 50%.
    Tutaj zrodził się mały problem jeszcze nie doszedłem w swojej nauce do timerów.
  • #5 1722077
    Mad Bekon
    Poziom 23  
    Posty: 794
    Pomógł: 31
    Ocena: 36
    Bez tego nie odmierzysz dokładnie 10Hz, co najwyżej przybliżone, ale w BASCOMIE nigdy nie wiadomo co i ile trwa...

    Później tylko w przerwaniu :
    Set PORT
    Czekasz krótki odstępik czasu
    Clear PORT
    Czekasz taki sam odstęp czasu

    Suma odstępów nie może być większa niż 0.1s z wiadomych przyczyn
  • #6 1722082
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Mógłbyś zamieścić jakiś przykład z tym timerem ??
  • #7 1722092
    krzysiu77
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 2
    Witam,
    a moze uzyjesz instrukcji SOUND
  • REKLAMA
  • #8 1725803
    jaroslawk
    Poziom 21  
    Posty: 634
    Pomógł: 30
    Ocena: 13
    Wielkie dzięki za pomoc wszystkim. Problem rozwiązałem poprzez zastosowanie dodatkowej pętli for – parametry jej dobrałem doświadczalnie.

Podsumowanie tematu

✨ Dyskusja dotyczy implementacji licznika impulsów na mikrokontrolerze 89cx051 w Bascom, z możliwością ustawiania liczby impulsów za pomocą trzech klawiszy oraz uruchamiania generacji impulsów przy częstotliwości około 10 Hz za pomocą czwartego klawisza. Autor początkowo poradził sobie z wprowadzaniem liczby i odliczaniem impulsów w dół, lecz miał problem z precyzyjnym generowaniem sygnału o częstotliwości 10 Hz i wypełnieniu 50%. Wskazano, że do dokładnego odmierzania częstotliwości należy użyć przerwań Timera, co pozwala na precyzyjne sterowanie czasem trwania impulsów i przerw między nimi. Bez wykorzystania timerów uzyskanie stabilnej częstotliwości jest trudne ze względu na nieprzewidywalne czasy wykonywania instrukcji w Bascomie. Zaproponowano generowanie impulsów w przerwaniu timera poprzez ustawianie i zerowanie portu z odpowiednimi opóźnieniami, tak aby suma czasów impulsu i przerwy wynosiła 0,1 s (10 Hz). Autor poprosił o przykładowy kod z timerem, jednak ostatecznie rozwiązał problem stosując dodatkową pętlę for z parametrami dobranymi doświadczalnie.
REKLAMA