Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Attiny 2313 lampka RGB, Program bascom.

grzechu2424 15 Feb 2014 17:19 2277 14
  • #1
    grzechu2424
    Level 10  
    Witam serdecznie jako że jestem zielony w temacie programowania Mikro kontrolerów prosze was o pomoc w przerobieniu programu lub jakichś podpowiedziach jak sie za to zabrac.

    Chciał bym by lampka świeciła w płynnie zmieniających się, losowo ustalonych kolorach od razu po włączeniu zasilania.

    wiem który fragment odpowiada z to ale nie rozumiem w ogóle wszystkich tych dodatkowych niezbędnych rzeczy do funkcjonowania "Animacj".


    Kod z strony "mirley firlej":

    Code: vbnet
    Log in, to see the code
  • #2
    splawik00
    Level 23  
    Ogólnie kod taki długi i zagmatwany bo autor użył PWMów programowych.
    A skoro to tylko lampka RGB to można użyć PWMów sprzętowych, których jest 4 więc jeszcze jeden zostanie.
    Jak będę miał chwilkę jutro to napiszę koledze program obsługujący RGB w losowych barwach uwzględniając korekcję gamma dla LEDów.
    Jak szybko mają się zmieniać barwy? Szybko? Wolno?
  • #3
    grzechu2424
    Level 10  
    Dziękuje za zainteresowanie splawik00.

    Chciał bym by Animacja zmieniała się wolno. I jeśli można to bardzo prosił bym o jakieś objaśnienia kodu bo chciał bym to zrozumieć :)

    I jeszcze mam jedno pytanie.
    Czy i ewentualnie jakie znaczenie ma różnica w taktowaniu kwarcu bo w projekcie miał być 16MHz lecz nigdzie takiego nie mogłem znaleźć więc zastosowałem 16.384-18 MHz ma to jakieś większe znaczenie ?
  • #4
    splawik00
    Level 23  
    Autor tak napisał program, że procek się już nie wyrabiał i dlatego tak duży kwarc.
    Nie ma to większego znaczenia, czy będzie to 16.384Mhz, czy 18Mhz.
    Ja napiszę program na wewnętrzny oscylator w procku 8MHz, po co stosować kwarc do tego :D
  • #5
    grzechu2424
    Level 10  
    Z własnych obserwacji i tego co pisał autor w.w. programu oraz projektu przy niższych częstotliwościach jest wyraźne migotanie diod LED choć nie wiem jaka jest różnica między programowy pwm a "sprzętowym" pwm.
  • Helpful post
    #6
    dondu
    Moderator on vacation ...
    grzechu2424 wrote:
    ... choć nie wiem jaka jest różnica między programowy pwm a "sprzętowym" pwm.

    Taka jak obsługa oddziału banku przez jedną osobę (kierownika) w stosunku do obsługi przez kierownika i kilku pracowników.

    W pierwszym przypadku może się uda, ale na wiele więcej kierownik czasu mieć nie będzie lub nawet nie wyrobi się z pracą. W drugim przypadku na pewno będzie wszystko poprawnie, a kierownik będzie miał jeszcze czas na szukanie klientów.

    Kierownik to CPU, pracownicy to timery z PWM.
  • Helpful post
    #7
    splawik00
    Level 23  
    Po ciężkich zmaganiach z metodą losową dla kolorów postanowiłem porzucić ten pomysł i zastosować przewidywalny sposób który będzie się powtarzał co jakiś czas.
    Może i nie jest to rozwiązanie pierwsza klasa, ale działa.
    Nie stosowałem jednak korekcji gamma, bo przy rozdzielczości PWM 8 bitów i zastosowaniu płynnego rozjaśniania było widać przeskoki (mruganie) pomiędzy wartościami.
    Zamieszczam kod który jest na tyle łatwy, że nie wymaga myślę większego komentarza oraz filmik który pokazuje jak to działa.
    Nie mam pod ręką Attiny2313 więc kod jedynie sprawdziłem na Atmega8, ale kod jest już zmieniony na Attiny2313.
    Tempo zmiany kolorów reguluje się poprzez zmianę wartości "waitms" w każdej pętli.

    Code: vbnet
    Log in, to see the code


    Na filmie efekt nie jest tak dobry jak w rzeczywistości :D



  • #8
    grzechu2424
    Level 10  
    Dziękuje za program

    Lecz napotkałem kolejny problem do którego to rozwiązania nie znalazłem, mianowicie tyczy się on funkcji "Wait" w symulatorze program zatrzymuje się na tej funkcji a podczas wgrywania wyświetla się błąd w zależności od uC ( próbowałem na dwóch ) na jednym jest difference at 0000c a na drugim 00091 błędy się zawsze powtarzają te sama i teraz nie wiem czy mam coś źle skonfigurowanego czy zainwestować w nowy układ ?
  • #10
    grzechu2424
    Level 10  
    Tak, w symulatorze w baskomie program zatrzymuje się na funkcji Wait i układ po zaprogramowaniu nie działa po prawnie (świecąsie tylko dwa kolory i tyle )
    i z niewiadomych mi przyczyn program sam poprawia "tekst" i np:
    Code: vbnet
    Log in, to see the code
    zamienia się na
    Code: vbnet
    Log in, to see the code
    w kolorze czerwonym natomiast
    Code: vbnet
    Log in, to see the code
    zostają tak jak są i są w kolorze niebieskim
  • #12
    grzechu2424
    Level 10  
    Tak kompiluje się nie ma żadnych błędów. lecz sam bascom tak jak by nie widzi Pwm1 (a i b) u mnie wyświetla je na niebiesko czyli jako słowa kluczowe a Pwm0 taka czerwień (a i b ) jako Hw Register tak samo jak np PORTB itp.

    Może ktoś poleca jakiśinny sprawdzony kompilator ?
  • #14
    grzechu2424
    Level 10  
    Po zmianie na Ocr1(a i b) kod programu wyglądał prawidłowo lecz na tych wyjściach nic się nie dzieje (dioda nie świeci) jeszcze pomyśle i poszukam odpowiedzi, no chyba ze ktoś będzie znać rozwiązanie :) za niedługo też spróbuje jakiegoś innego kompilatora użyć.