Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 29 lip 2025, o 09:18


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
    Autor Wiadomość
    PostNapisane: 27 cze 2013, o 17:01 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 cze 2013
    Posty: 60
    Pomógł: 0

    Witam.
    Mam pewien problem, banalny co prawda, ale jednak jak dla mnie dość kłopotliwy. Mianowicie chodzi o zapis:
    Kod:
    #define KEY_PIN1 (1<<PC6)
    #define KEY_PIN2 (1<<PC5)
    #define KEY_PIN3 (1<<PC2)

    !(PINC & klawisz)


    Oczywiście pominąłem większość kodu, gdyż nie rozumiem jak niby stan poszczególnych pinów portu C jest sprawdzanych? Rozumiem to tak:
    Zamiast KEY_PIN1 "kompilator widzi" PORTC = 0b01000000
    Zamiast KEY_PIN2 "kompilator widzi" PORTC = 0b00100000
    Zamiast KEY_PIN3 "kompilator widzi" PORTC = 0b00000100

    Zapis sprawdzania stanu klawiszy wygląda według mnie następująco:
    PINC (początkowo) = 0b00000000
    klawisz - w zależności od wciśniętego micro-switch'a.

    ! - negacja
    !(00000000 & ...) właśnie, co tutaj?!

    Troszkę się pogubiłem, dlatego proszę o pomoc! :(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 cze 2013, o 18:00 
    Offline
    Moderator
    Avatar użytkownika

    Dołączył(a): 03 paź 2011
    Posty: 27416
    Lokalizacja: Szczecin
    Pomógł: 1043

    Cytuj:
    Zamiast KEY_PIN1 "kompilator widzi" PORTC = 0b01000000
    Zamiast KEY_PIN2 "kompilator widzi" PORTC = 0b00100000
    Zamiast KEY_PIN3 "kompilator widzi" PORTC = 0b00000100


    a to co za pomysł ? ;) .... skąd ten PORTC ?

    masz tą książkę?

    http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

    bo widzę że masz kłopoty poważne z operacjami bitowymi jeszcze

    procek widzi to tak:

    !(PINC & klawisz) ------> !(PINC & 0b01000000)

    czyli jeśli PC6 nie jest wciśnięty to wartość wyrażenia w nawiasie jest co ? TRUE zgadza się ? więc gdyby nie wykrzyknik negujący logiczną wartość TRUE na FALSE to IF by się wykonał gdy klawisz nie jest wciśnięty - zgadza się ? a przecież nie o to nam chodzi ma się wykonać gdy jest wciśnięty prawda czyli załóżmy że PC6 jest równy 0

    !(PINC & 0b00000000)

    teraz wartość wyrażenia w nawiasie będzie FALSE - zgadza się ? ;) .... a po zanegowaniu wykrzyknikiem TRUE no i teraz warunek IF się wykona - ma się wykonać ;)

    _________________
    zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 gości


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO