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

[Attiny13A][C] - Delay - szybkie mruganie diod

lukasbank1993 08 Mar 2011 17:31 1748 4
REKLAMA
  • #1 9251100
    lukasbank1993
    Poziom 12  
    Witam.
    Mam problem z symulatorem semafora.

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Efektem tego jest http://www.youtube.com/watch?v=yrEVB2z3nsY
    NO i wlaśnie. Diody za szybko mrugają. Miałą być przerwa pomiedzy nimi 15 sek, a jest 200ms.
    Zwiększająć LOOPTIME na 32, to diody jeszcze szybciej się mrugają.
    Proszę o pomoc.
  • REKLAMA
  • Pomocny post
    #2 9251197
    dondu
    Moderator na urlopie...
    Zacznij od sprawdzenia fusebitów i innych ustawień dot. zegara (jeżeli są, bo nie znam tego układu), by sprawdzić, czy masz wybraną prędkość zegara jak deklarowana #define F_CPU 1000000
    Swoją drogą powinna wyglądać tak: #define F_CPU 1000000UL

    Nie bardzo rozumie jak komentarz pasuje do tej funkcji:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    ... skoro funkcja delay() wykona zaledwie 2 NOP + petlę + przypisanie zmiennej Loop:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    ... ale może się mylę.
  • REKLAMA
  • Pomocny post
    #3 9251315
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • Pomocny post
    #5 9251940
    mirekk36
    Poziom 42  
    Cytat:
    on nie korzysta z funkcji _delay_ms . Nie dziwie się, bo duzo zasobow zżera.


    Dokładnie nikt jeszcze nie pisał o _delay_ms() , a ja się dziwię, że ty się dziwisz , że rzekomo ta funkcja zżera dużo zasobów. Owszem może tak być jak się nieumiejętnie z niej korzysta w przeciwnym wypadku zżera ich mniej niż nieraz tworzone przez programistę różne inne udziwnienia!

    I właśnie tu podpowiedź do autora - jeśli już i tak korzystasz z funkcji blokujących czyli takich , które korzystają z opóźnień blokujących pracę pętli głównej to właśnie zrób to normalnie w oparciu o _delay_ms().

    Jeśli chcesz np opóźnienie 1,5s to dajesz spokojnie

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i po zawodach zamiast tworzyć jak widać jeszcze troszkę nieudolnie swoje własne wersje opóźnień.
REKLAMA