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

"Wygaszanie" wyjść ATTiny2313 - BASCOM

somark 04 Wrz 2009 22:07 2778 13
  • #1 6980994
    somark
    Poziom 2  
    Witam serdecznie Forumowiczów.

    Zwracam się z prośbą o pomoc.
    Napisałem prosty programik w Bascom'e który ma załączać/sterować oświetleniem półek w ściance - po prostu miły urozmaicacz z taśmami LED.
    Niskoprądowe sterowanie z mikrowłącznikami bistabilnymi.
    Procesor - ATtiny2313
    Wszystko mi działa prawidłowo - program załącza kombinacje wyjść w zależności od kombinacji na wejściach (w przyszłości spróbuję przy pomocy AT zrobić losowy wybór i samoczynne zmiany). Bascom wygląda przyjaźnie i ma symulator. Przy jego pomocy udało się już dogadać z żywym mikrokontrolerem. Ale...
    Przeczytałem dużo postów o PWM i nie znalazłem rozwiązania :(
    Ciemność widzę.
    Chciałbym aby wyjścia sterujące końcówkami rozświetlały się natychmiast po zmianie ale aktywne do tej pory wygaszały się wolno. I to już dla mnie "za wysoko" :oops:
    Nie potrafię skorzystać ze sprzetowych wyjść PWM. Nie wiem też jak uzyskać taki efekt programowo.

    Proszę o pomoc.

    Pozdrawiam
    mark

    PS.
    Czemu nie działa u mnie "Szukaj" :cry:
    IE6 i Mozilla.
  • Pomocny post
    #2 6981052
    ZbeeGin
    Poziom 39  
    Rozświetlanie natychmiastowe: PWM1A = 0 jeśli aktywny stan zero lub PWM1A=255 jeśli konfiguracja odwrotna (aktywny stan wysoki).
    Gaszenie płynne: Pętla, Waitms/Wait, PWM1A = PWM1A - 1, Koniec pętli.

    Konfiguracja: http://zbeegin.republika.pl/bashelp/s_config_timer1.html

    Już większej filozofi nie można w tym temacie napisać...
  • #3 6981089
    somark
    Poziom 2  
    Czy dotyczy to wszystkich wyjść PortB?

    LINK - poczytam - spróbuję ;)
    Jak mi sie rozjaśni
  • #4 6981103
    ZbeeGin
    Poziom 39  
    Nie. Tylko tych opisanych jako OCxx. Jak chcesz PWM na wszystkich wyjściach PortB to trzeba go napisać samemu. Już taki gotowiec krąży po forum. Mojego zresztą autorstwa.
  • #5 6981130
    somark
    Poziom 2  
    Niestety - nie działa "szukaj" (Mozilla = przekroczono czas, IE - nie ma takiej strony). Nie odkopę w Twoich postach kodu. :|
    Napisałeś 1588 postów... :D
  • Pomocny post
    #7 6996528
    dccman
    Poziom 12  
    Witam
    "Podpinam się" pod pytanie.
    Dotyczy czterech wyjść OCxx w ATTiny2313.

    ZbeeGin napisał:
    ...Tylko tych opisanych jako OCxx.....

    Właśnie.
    OC1A i OC1B "wiszą" na Timer1.
    Bez problemu można poprosić Timer1 i oba wyjścia do pracy w PWM.
    Timer0 w BASCOM nie pozwala się ustawić w Config Timer = PWM , PWM = 8 , .... (co za tym idzie też OC0A oraz OC0B) :(

    Po Compile dostaniemy:
    Invalid parameter for CONFIG parameter or value [PWM=8]

    Ktoś to przegryzł ?
    Cztery hardware'owe wyjścia PWM.
    Czy pozostaje tylko software'owe ?
    Ja potrzebuje trzy niezależne wyjścia pracujące w zależności od logiki na wejściach.
    Podobnie jak Kolega Somark:
    Szybkie rozświetlanie do 255
    Wolniejsze wygaszanie od 255 do 0
    Dla OC1A i OC1B działa.

    Pozdrawiam
  • Pomocny post
    #8 6996719
    ZbeeGin
    Poziom 39  
    Można próbować konfigurować licznik TIMER0 jako PWM zgodnie z tym co napisałem w helpie :arrow: http://zbeegin.republika.pl/bashelp/s_config_timer0.html
    Składnia przejdzie, ale nie wiadomo czy wszystko zostanie ustawione dokładnie tak jak chcesz. Jest już późno, więc nie napiszę testu i nie sprawdzę jak to rzeczywiście wygląda "od środka" dla Tinego2313. Spróbuj, bo w kilku procesorach to sprawdzałem i ta konstrukcja generowała wtedy dobry kod.
  • Pomocny post
    #9 6996767
    dccman
    Poziom 12  
    Dzinx
    Zaraz się zabieram za Twojego help'a ;)

    Już - stestowane:

    Dodano po 31 [minuty]:

     $regfile = "attiny2313.dat"
     $crystal = 8000000
    
     Config Portb = Output
              'Portb = 0
     Config Portd = Input
              Portd = 0
    
    
    
     Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 8
    
     Start Timer1
    
     Config Timer0 = Pwm , Prescale = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconect
    
     Start Timer0
    
    Do
      Dim I As Byte
      Dim J As Byte
      Dim K As Byte
        Pwm1a = I
        Pwm1b = J
        Pwm0a = K
      If Pind.0 = 1 Then
        I = 255
        J = 255
        K = 255
      End If
      If Pind.0 = 0 Then
        I = I - 10
        J = J - 5
        K = K - 1
        Waitms 1
      End If
    Loop

    Testowy układ działania PWM na wyjściach OC0A, OC1A i OC1B.
    IN pinb.0=1 :arrow: wypełnienie 100%
    IN pinb.0=0 :arrow: zmniejszające się w pętli wypełnienie 100 :arrow: 0/100 :arrow: 0 itd...
    OC1A i OC1B - OK
    OC0A - zima...
    :cry:
  • Pomocny post
    #10 6998410
    ZbeeGin
    Poziom 39  
    A o nazwę PWM0A się BASCOM nie "rzucał"? Spróbuj wpisywać bezpośrednio do rejestru OCR0A.
    I usuń te polecenia Start gdyż są bez sensu.

    W wersji 1.11.9.5 rezultat kompilacji wydaje się być poprawny. Rejestry ustawiane są prawidłowo. W domu znajdę jakiegoś Tiny i sprawdzę.
  • #11 6999780
    dccman
    Poziom 12  
    Mam 1.11.8.1.
    Pwm0a i Pwm0b nie powoduje "palpitacji" w BASKOM'ie ;)
    Kompiluje nie zgłaszając błędów.

    Próbowałeś przetestować działanie na "żywym" organiźmie ?
    Jeżeli masz ATT2313 i możesz sprawdzić u siebie wsad skompilowany w 1.11.9.5 - daj znać. Działam na Int.Osc. - 8MHz

    W rejestrach jeszcze nie czuję się zbyt mocny... :| BASKOM też ma przede mną dużo tajemnic ;)
  • Pomocny post
    #12 7000090
    ZbeeGin
    Poziom 39  
    U mnie zarówno w symulacji, jak i w realnym układzie program działa. Jedyne róźnice to najnowszy BASCOM-AVR, ATTiny2313 taktowany 4MHz, inny czas Waitms by zauważyć co i jak się dzieje.

    Program + HEX + BIN + SIM + cała reszta w załączniku.

    A teraz premiera. Trzy dolnie segmenty wyświetlacza to trzy kanały PWM: OC1A, OC1B, OC0A. Led RGB podłączona rówolegle także do wyjść PWM.
    http://zbeegin.republika.pl/3pwm.wmv

    Niestety. Twój kompilator jest chyba zbyt leciwy by skompilować to poprawnie(j).
  • Pomocny post
    #13 7000447
    dccman
    Poziom 12  
    Cytat:
    Niestety. Twój kompilator jest chyba zbyt leciwy by skompilować to poprawnie(j).

    No to trzeba mu zrobić "kuku" ;)
    Dziękuję za przetestowanie Timer0 :!:
    Idę... porozmawiać z posiadaną wersją [B] i podjąć odpowiednie kroki.
    Dam znać czy/jak i u mnie zagra :D

    Pozdrawiam
  • #14 7027472
    somark
    Poziom 2  
    Dziękuję obu Kolegom.

    Zaczynam po mału "trybić" o co tu chodzi.
    Czas się za siebie "wziąść"

    dccman - daj znać jak postępy.

    Pozdrawiam
    mark
REKLAMA