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

Generator 0-10kHz Atmega8 Bascom

19 Sty 2012 16:53 2302 2
  • Poziom 13  
    Witam!

    Potrzebuję wykonać na Atmedze generator przebiegu prostokątnego w zakresie częstotliwości 0-10kHz do współpracy ze sterownikiem silnika krokowego. Nie jestem najlepszy w obsłudze timerów więc stąd prośba o pomoc. Chciałbym aby wybrana częstotliwość mogła być zadawana przy pomocy przycisków "góra", "dół" oraz potencjometra.

    Udało mi się stworzyć taki kawałek kodu lecz ustawianie przy pomocy przycisków nie działa zbyt dobrze, a i sama częstotliwość nie jest zbyt stabilna. Jeśli ma ktoś z was innym pomysł na wykonanie generatora sterowanego z uC chętnie wysłucham sugestii. Z góry dziękuje!

    Code:

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Lcd = 16 * 2

    Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portc.5 , E = Portd.3 , Rs = Portd.2

    Cursor Off
    Config Timer1 = Timer , Prescale = 256 , Compare A = Toggle , Clear Timer = 1

    Config Pind.0 = Input                                       'porty jako wejściowe  ' pstryki
    Config Pind.1 = Input
    Compare1a = 87
    Cls
    Lcd "proba"
    Cls

    Do
    If Pind.0 = 0 Then Decr Pwm1a
    If Pind.1 = 0 Then Incr Compare1a
    Locate 1 , 1
    Lcd Compare1a ; "      "
    Waitms 2

    Loop
    End










  • Poziom 19  
    Aby wykonać taki generator na Atmedze możesz posłużyć się sprzętowym PWM'em.
    Prawdopodobnie obsługa przycisków nie działa Ci prawidłowo ponieważ na linii występują zakłócenia, a także drgania styków.

    Nie wiem jak wygląda schemat, ale dobrą praktyką jest podciągniecie linii do plusa wewnętrznie lub zewnętrznie w przypadku, gdy oczekujesz stanu niskiego.

    W Bascom'ie jest dostępna funkcja do obsługi przycisków Debounce. Działą ona w ten sposób, że testuje wejście kilkukrotnie w odstępach czasowych, aby wyeliminować owe drgania styków i przypadkowe szumy na wejściu.
  • Poziom 36  
    lenny35 napisał:
    Witam!

    Potrzebuję wykonać na Atmedze generator przebiegu prostokątnego w zakresie częstotliwości 0-10kHz do współpracy ze sterownikiem silnika krokowego. Nie jestem najlepszy w obsłudze timerów więc stąd prośba o pomoc. Chciałbym aby wybrana częstotliwość mogła być zadawana przy pomocy przycisków "góra", "dół" oraz potencjometra.

    Udało mi się stworzyć taki kawałek kodu lecz ...

    Code:

    ..............
    Do
    If Pind.0 = 0 Then Decr Pwm1a
    If Pind.1 = 0 Then Incr Compare1a
    .............



    Czy masz w jakikolwiek sposób podciągane piny wejściowe?
    Jeżeli nie ma zewnętrznego podciągania to ta część kodu w 'Do... loop' jest sprzeczna.
    Druga sprawa to nie masz kontroli nad incrementacją lub decrementacją zmiennej "PWm1a" . U ciebie będzie ona zależna od czasu przytrzymania przcisku. Sposób wyświetlenia tej wartości nie daje pełnego, realnego w czasie, "sprzężenia zwrotnego" do ręcznego kontrolowania tej zmienej.
    W takim układzie jak tu, nie martwiłbym sie o debouncing.
    \
    W jakim zakresie mają sie te wartości zmieniać?
    Czy nie wydaje ci się, że praktyczniej byłoby wyswietlić juz wykalkulowaną częstotliwość wyjściową zamiast 'gołej' wartości Pwm1a?

    e marcus