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.

[ATTINY13][Bascom] Banalne -> sterowanie LED

Daniel_GSM 10 Wrz 2009 01:32 4009 2
  • #1 10 Wrz 2009 01:32
    Daniel_GSM
    Poziom 25  

    Witam,

    Nie tak dawno zacząłem swoją przygode z Bascom'em i AVR (lepiej późno niż wcale).
    Nie planuje nic konkretnego robić, traktuje to jako zabawe.
    Większość zagadek udaje mi się rozwiązać, ale dzisiaj trafiłem na coś czego nie mogę zrozumieć.
    Zwykły przerzutnik RS zapalający LED z wykorzystaniem malutkiego AVR "ATTINY13".
    Symulacje przeprowadzam w Proteus'ie a program pisze w Bascom-avr i tak oto wygląda problem:

    Schemat:

    [ATTINY13][Bascom] Banalne -> sterowanie LED

    Kod:

    [ATTINY13][Bascom] Banalne -> sterowanie LED

    Proszę kogoś żeby wytłumaczył mi DLACZEGO dioda podłączona do portu wyjściowego PB5 nie reaguje na przyciski?

    Proszę nie doszukiwać się problemów w połączeniu, zasilaniu, programie itd. bo to nie jest problem (w bascom-avr też wszystko jest dobrze skonfigurowane dla attiny13).

    Ten sam układ skonfigurowany troszke inaczej: tzn. LED podłączona do innego portu (PB2 - PB4) i odpowiednio zmieniony kod powoduje, że wszystko działa idealnie, jeden przycisk załącza LED drugi wyłącza, np dla PB2 kod wygląda tak:

    Config Portb = &B111100
    Portb = &B111111

    Do
    If Pinb.0 = 0 Then Portb.2 = 0
    If Pinb.1 = 0 Then Portb.2 = 1
    Loop
    End


    I wszystko jest OK.

    Dlaczego tak jest? Czyżby dlatego, ze port PB5 jest portem RESET?
    Nie można go wykorzystać? trzeba zmienić kod? odblokować jakoś PB5? Jak?

    Wiem, że to banalne pytanie dla znawców Bascom'a, ale ja nie mogę tego rozgryść, na google też nie znalazłem odpowiedzi :)

    0 2
  • Pomocny post
    #2 10 Wrz 2009 02:01
    kordirko
    Poziom 21  

    PB5 jest fabrycznie zaprogramowany do pracy jako RESET.
    Żeby go "odprogramować" musisz ustawić fusebit o nazwie RSTDISBL.
    Wtedy PB5 będzie pracować jako zwykły pin IO,
    ale tracisz zewnętrzny reset i - UWAGA - procka będziesz mógł
    programować tylko metodą "wysokonapięciową" (przez podanie +12V na reset).
    Jak nie masz programatora który programuje w tym trybie (np. STK500),
    to lepiej nie ruszaj tego fusebit-u - będziesz musiał albo zakupić programator
    (koszt od 40 zł + przesyłka), albo procek pójdzie do kosza
    bo taniej wyjdzie zakupić nowego ;)

    0
  • #3 10 Wrz 2009 02:30
    Daniel_GSM
    Poziom 25  

    No tak, znalazłem to w Proteusie, w którym symuluje prace tego prostego układu.
    Może komuś pomogę, jeśli pokaże gdzie to zmieniać w Proteusie, dlatego wrzucam obrazek:

    [ATTINY13][Bascom] Banalne -> sterowanie LED

    Wystarczy, że w opcji RSTDISBL Fuse zmienimy wartość z "unprogrammed" na "programmed" i już spokojnie można wykorzystywać PB5 jako port IO



    Dzięki za pomoc kordirko.


    Wysłałem też pytanie do Ciebie na PW - jeśli możesz odpowiedz tam, bo szkoda zaśmiecac niepotrzebnie forum czymś co pewnie już było wałkowane tutaj.

    1