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

[mega88pa] konfiguracja I/O

blue_17 17 Gru 2011 22:37 984 5
REKLAMA
  • #1 10272642
    blue_17
    Poziom 32  
    Witam zaczynam rozgryzać AVR-ki i napotkałem na problem korzystając z przykładów z książki Pana Mirka wykonuję ćwiczenie z mikroswith-em i diodą

    W przykładzie mam podłączoną diode do VCC a ja w swoim mikro zestawie uruchomieniowym mam podpiętą do GND i za bardzo nie wiem jak zmienić aby działało wszystko poprawnie.

    Sekcja inicjacji wygląda tak
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #2 10273013
    janbernat
    Poziom 38  
    No będzie Ci działało- tylko odwrotnie.
    Najpierw będzie świecić- a po naciśnięciu-nie.
    A żeby było tak jak w przykładzie- to masz w trzeciej linijce inicjalizacji.
    Bo tego dotyczy ten przykład- jak ustawić wejscia/wyjscia.
    No i oczywiście- opornik, a anoda diody do wyjścia procesora.
  • REKLAMA
  • Pomocny post
    #3 10273066
    mirekk36
    Poziom 42  
    No ustawiasz kierunek diody na wyjściowy

    DDRC |= LED_PIN;


    OK, i dalej jeśli chcesz wyłączyć diodę którą masz podpiętą do GDN (jak piszesz) czyli anodą do pinu portu - to jaki stan musisz wystawić na pin żeby dioda się zapaliła ? Chyba syab wysoki (1) - prawda ? ...... A żeby się zgasiła ? - przecież stan niski czyli 0.

    przypomnij sobie teraz z książki podwójne operatory do zmiany stanu na wyjściach:

    |= to przecież ustawienie bitu (czyli podanie stanu wysokiego)

    &= ~ to przecież wyzerowanie bitu (czyli podanie stanu niskiego)

    ^= a to przecież zmiana stanu wyjścia na przeciwny (do tego które było wcześniej)

    Zatem jeśli po ustawieniu kierunku jak wyżej, piszesz polecenie

    PORTC |= LED_PIN;


    to jaki stan podajesz na ten pin ???? (zagadka) ;) - zgasisz diodę czy ją zapalisz ?
  • REKLAMA
  • #4 10273195
    blue_17
    Poziom 32  
    Achaaa :D

    Dziękuję nie sądziłem również że autor osobiście zechce mi odpowiedzieć :)

    reasumując wpisując do rejestru DDR określam kierunek we/wy przy czym po resecie domyślnie wszystkie piny są wejściami :) czyli w DDR są zera.

    a kiedy chcę coś zrobić z bitem daję dopiero PORTC |=

    i wpisuję w zależności od potrzeby 1 albo 0 zależy co mam jak podłączone ja muszę wpisać 1 żeby była różnica potencjałów jak to kiedyś jeden Pan mi mówił :)

    mirekk36 napisał:


    Zatem jeśli po ustawieniu kierunku jak wyżej, piszesz polecenie

    PORTC |= LED_PIN;


    to jaki stan podajesz na ten pin ???? (zagadka) ;) - zgasisz diodę czy ją zapalisz ?


    Chyba niema wyjścia musi się zapalić :) ale sprawdzę empirycznie :)

    Swoją drogą zawsze mnie zastanawiało przed rozpoczęciem nauki C poco jest ten znak pionowej kreski na klawiaturze :)

    Dziękuję i pozdrawiam
  • REKLAMA
  • #5 10273411
    mirekk36
    Poziom 42  
    Tak, tylko dobrze by było przed takim nawet ćwiczeniem dokładnie poczytać w książce właśnie, po pierwsze o samych operatorach w języku C w tym o podwójnych operatorach. Ale także o operacjach logicznych na bitach no i o przesunięciach bitowych << >> . Po przeczytaniu tego i zrozumieniu - te zapisy powyżej przestaną być tajemnicze i nie będzie trzeba ich uczyć się na pamięć.

    Bo tak samo jak może być np

    |=

    to równie dobrze do innych celów można użyć również innych dwuskładnikowych operatorów jak np:

    +=

    /=

    *=

    itd
REKLAMA