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

ATtiny2313 - Jak ustawić Lock i Fuse Bits dla sterownika RGB?

pavel0910 06 Sty 2013 15:30 2829 12
  • #1 11750119
    pavel0910
    Poziom 15  
    Witam.
    Chciałbym wykonać ten układ sterowania diodą RGB.
    http://mirley.firlej.org/mini_lampka_rgb_2

    Nie bardzo rozumiem, co mam zrobić po kolei. Całość będę lutował na płytce uniwersalnej, według schematu.

    Na początku chciałbym zaprogramować sam układ ATtiny2313. Tutaj też znalazłem opis jak to zrobić.
    http://mirley.firlej.org/jak_zaprogramowac_pierwszy_avr

    Zgodnie z opisem robię tak:
    1. Podłączam programator do PC i do ATtiny2313 według schematu.
    2. Podłączam +5V do programatora.
    3. W Bascomie tworzę nowy plik i wybieram "Program Chip".
    4. Sprawdzam, czy komputer rozpoznaje mikrokontroler przez "Identify Chip".
    5. Teraz przechodzę do zakładki "Lock and Fuse Bits" i ustawiam tak jak jest to opisane w projekcie lampki RGB.
    6. Przechodzę do zakładki "Flash Rom" i z menu Buffer->Load from File i wybieram plik *.bin lub *.hex.
    7. Klikam "Auto Program Chip" i czekam, aż mikrokontroler się zaprogramuje.

    Tylko teraz problem. Co dokładnie i jak mam zmienić w zakładce "Lock and Fuse Bits"? Tylko te 2 rzeczy, które są na obrazku w projekcie? Mogę to zrobić w programie Bascom? Nie wiem, ponieważ nie mam jeszcze mikrokontrolera.

    Czy ten opis programowania jest dobry? Dobrze to rozumiem? Jeśli tak i uda mi się już zaprogramować ATtiny2313, odłączam go od programatora i wsadzam w układ lampki RGB. To wszystko? Lampka powinna działać?

    Jeszcze pytanie. Jaki kwarc zastosować w programatorze i jaki w lampce? Bo na stronie jest trochę nieścisłości.

    Proszę o pomoc.
    Pozdrawiam.
  • #2 11751257
    feriar
    Poziom 12  
    pavel0910 napisał:
    5. Teraz przechodzę do zakładki "Lock and Fuse Bits" i ustawiam tak jak jest to opisane w projekcie lampki RGB.

    jak wybierzesz ustawienia fuse'ów to sprawdź je 3x i kliknij raz "Write FS". Tak musisz tylko te dwie rzeczy zmienić. W programie masz zastosowany 16MHz kwarc.
    Na twoim miejscu bym dolutował tam gniazdo do programowania. i programował odrazu w układzie lampki.
  • #4 11751324
    feriar
    Poziom 12  
    Skoro autor uznał, że ta lampka RGB potrzebuje zew. kwarca to chyba wie co czyni. Ja tylko wskazałem jaki powinien być.
  • #6 11751951
    BlueDraco
    Specjalista - Mikrokontrolery
    Jeśli autor uznał, że do samego sterowania diodą jest potrzebny zewnętrzny kwarc, to chyba nie wie, co czyni. Jest jeszcze parę innych przesłanek potwierdzających tę teze, np.:
    - brak kondensatorów ceramicznych blokujących zasilanie procesora (również przy stabilizatorze
    - przekroczony dopuszczalny prąd czerwonych diod.
  • #7 11752460
    Konto nie istnieje
    Poziom 1  
  • #8 11752499
    BlueDraco
    Specjalista - Mikrokontrolery
    To strasznie musiał spaprać oprogramowanie. Po pierwsze - zastosowanie zabawki pt. BASCOM w kodzie krytycznym czasowo, po drugie - źle napisana obsługa przerwania zapalającego i gaszącego diody.

    Nie miałem problemu z przejściami na diodzie RGB sterowanej z ATtiny13, przy 256 poziomach na 150 Hz, czyli częstotliwości przerwań 38400 Hz przy zegarze 9.6 MHz. Tutaj mamy 16 MHz i przerwania z częstotliwością 8 kHz, czyli 1.6 x szybszy procesor i 3.6 x wolniejsze przerwania.

    A, właśnie - czyli częstotliwość migania diod to 80 Hz - następny błąd w projekcie. Paskudnie to wygląda - wibruje w oczach kiedy ruszamy głową lub nie skupiamy wzroku centralnie na lampce.
  • #9 11753370
    pavel0910
    Poziom 15  
    Dziękuję za odpowiedzi. Jednak nie chodziło mu tutaj konkretnie o wskazanie błędów w konstrukcji, ponieważ nawet taki efekt mam nadzieje mnie zadowoli. Pierwszy raz użyję mikrokontrolera. Temat założyłem po to, aby po prostu dowiedzieć się czy jeśli wszystko zrobię tak jak napisałem w pierwszym poście to całość będzie działać tak jak opisuje to autor projektu.

    Co do tych fuse bitów to mam je zmienić tak jak w punkcie 5, czyli po "Identify Chip"?
  • #10 11753715
    BlueDraco
    Specjalista - Mikrokontrolery
    Ok, sam odpowiedz sobie na pytanie, czy na pierwszy, próbny projekt dla początkującego nadaje się coś, co ma złe założenia, błędny schemat i zły kod programu.

    Z porównania kodu mojego starego migadełka w C i tego w Bascom (o dużo mniejszej funkcjonalności niż moje), wnioskuję, że Bascom musi wprowadzać koszmarny narzut czasu w porównaniu z C - u mnie przerwania były zgłaszane co 250 cykli procesora, a procedura ich obsługi miała ponad 100 linii w C (oczywiście z rozejściami warunkowymi, więc w każdym przerwaniu wykonywało się sporo mniej). Tutaj dużo prostsza obsługa przerwania wg. autora projektu nie wyrabia się w 1200 cyklach procesora. Wygląda na to, że w Bascomie nie da się oprogramować nawet przyzwoitego migadełka LED (chyba, że autor się mylił i zrobił błąd gdzie indziej).
  • #11 11754167
    szulat
    Poziom 23  
    BlueDraco napisał:
    wnioskuję, że Bascom musi wprowadzać koszmarny narzut czasu w porównaniu z C

    oj chyba tak... aż sprawdziłem z ciekawości i tak wygląda asm tego przerwania:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    więc troche dużo się dzieje jak na tak prosty kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    można się przyczepić najwyżej do użycia dwubajtowej zmiennej Dzielnik mimo ze max wartość to tylko 250 ale i tak głównym spowalniaczem jest kompilator
  • #12 11754317
    Witek76
    Poziom 24  
    szulat napisał:

    oj chyba tak... aż sprawdziłem z ciekawości i tak wygląda asm tego przerwania:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Czym to deasemblowałes?
  • #13 11754358
    szulat
    Poziom 23  
    Witek76 napisał:
    Czym to deasemblowałes?

    avr-objdump -b binary -m avr -D MINILAMPKARGB2.BIN
    czyli standardowe narzędzie ze świata gcc
REKLAMA