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.

Attiny 2313 lampka RGB, Program bascom.

grzechu2424 15 Lut 2014 17:19 1959 14
  • #1 15 Lut 2014 17:19
    grzechu2424
    Poziom 9  

    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":

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod

    0 14
  • #2 15 Lut 2014 21:59
    splawik00
    Poziom 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?

    0
  • #3 16 Lut 2014 07:58
    grzechu2424
    Poziom 9  

    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 ?

    0
  • #4 16 Lut 2014 11:59
    splawik00
    Poziom 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

    0
  • #5 16 Lut 2014 14:42
    grzechu2424
    Poziom 9  

    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.

    0
  • Pomocny post
    #6 16 Lut 2014 16:41
    dondu
    Moderator Mikrokontrolery Projektowanie

    grzechu2424 napisał:
    ... 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.

    0
  • Pomocny post
    #7 17 Lut 2014 00:03
    splawik00
    Poziom 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.

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


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

    0
  • #8 17 Lut 2014 15:49
    grzechu2424
    Poziom 9  

    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 ?

    0
  • #10 17 Lut 2014 16:29
    grzechu2424
    Poziom 9  

    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:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    zamienia się na
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    w kolorze czerwonym natomiast
    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
    zostają tak jak są i są w kolorze niebieskim

    0
  • #12 17 Lut 2014 19:14
    grzechu2424
    Poziom 9  

    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 ?

    0
  • #14 18 Lut 2014 14:46
    grzechu2424
    Poziom 9  

    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ć.

    0