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.

Bascom Załączanie PWM przyciskiem

tryton10 13 Kwi 2014 09:35 1038 6
  • #1 13 Kwi 2014 09:35
    tryton10
    Poziom 9  

    Witam forumowiczów jestem początkującym jeśli chodzi o programowanie w Bascomie. Od paru dni nie mogę poradzić sobie z PWM. Chciałbym aby po przytrzymaniu przycisku np Pind.7 PWM wysterował się następująco:

    PWM1a = 800
    Wait 1
    PWM1a = 500
    po puszczeniu przycisku na Pind.7 PWM1a = 0
    Config Timer1 = Pwm , Pwm = 10 , Prescale = 64 , Compare A Pwm = Clear Down

    Obecnie robię próby pwma i przy tych wartościach wszystko jest ok, po za wysterowaniem tego za pomocą przycisku który by to aktywował. Robiłem próby na pętlach ale mi się cuda działy. Czy mogę liczyć na mała pomoc lub wskazania mi odpowiedniego kierunku?

    0 6
  • #2 13 Kwi 2014 11:36
    SylwekK
    Poziom 29  

    Trochę niejasno piszesz. Po wciśnięciu przycisku ma się wykonać te trzy linie i co dalej?? Czy póki trzymasz cały czas ma bć jeszcze PWM1a=500 aż do momentu puszczenia przycisku ? Jeśli tak to wystarczy na końcu tego co podałeś badać puszczenie guzika i po jego puszczeniu kolejna linia to wyzerowanie PWM.

    0
  • #3 13 Kwi 2014 16:58
    yokoon
    Poziom 28  

    Witam.
    Np. tak, zmiana wypełnienia:
    najpierw piny podciągasz do stanu 1

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0
  • #4 13 Kwi 2014 21:17
    tryton10
    Poziom 9  

    wejście jest sterowane minusem. Po napisaniu coś takiego, układ działa ale po za tym że nie czeka 1 s i nie przechodzi do Pwm1b = 100.
    Bardzo bym chciał by po trzymaniu przycisku PWM wysterował się na wartość 800 a po upływie 1 s wysterował się np. na 100. Ten stan pwm = 100 będzie trwał tak długo kiedy będzie wciśnięty przycisk Pind.7. Ale kiedy będzie zwolniony przycisk Pind.7 to PWM = 0.
    Z góry dziękuje za odpowiedzi a ja w tym czasie kombinuje dalej

    Do
    If Pind.7 = 0 Then

    Pwm1b = 800
    Wait 1
    Pwm1b = 100
    End If

    If Pind.7 = 1 Then
    Pwm1b = 0
    End If
    Loop
    End

    0
  • Pomocny post
    #5 13 Kwi 2014 22:18
    emarcus
    Poziom 35  

    tryton10 napisał:
    wejście jest sterowane minusem. Po napisaniu coś takiego, układ działa ale po za tym że nie czeka 1 s i nie przechodzi do Pwm1b = 100.


    Z pewnością przechodzi do Pwm1a = 100, (dlaczego Pwm1b ?) tylko ty mu nie dajesz szansy (czasu) abyś to mógł zobaczyć.
    Poza tym, nie masz kontroli nad czasem ponad 1 sec. pętla dalej jest przewijana w nieskoczoność.
    Spróbuj takiej konstrukcji:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    e marcus

    0
  • #6 14 Kwi 2014 17:46
    ZbeeGin
    Poziom 38  

    Tylko w jakim celu kurczowo trzymacie się tego Wait 1. Potem dojdą inne elementy programu i ta instrukcja będzie tylko przeszkadzać.

    0
  • #7 14 Kwi 2014 18:55
    tryton10
    Poziom 9  

    Dzięki emarcus dokładnie o to mi chodziło. Właśnie wypróbowałem kod który podałeś i dodałem tylko eliminacje drgania styku bo czasami po puszczeniu przycisku załączał się PWM. Dziękuje również wszystkim za zainteresowanie tematem. Jak wspominałem wcześniej zaczynam dopiero przygodę z avr i niektóre rzeczy ciężko mi przychodzą. jesli macie jakiś ulubionych autorów książek Bascoma avr to rzucać na prv.

    0