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 w 2025? 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 13 kwi 2025, o 23:40


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
    Autor Wiadomość
    PostNapisane: 25 sty 2014, o 12:40 
    Offline
    Użytkownik

    Dołączył(a): 20 gru 2013
    Posty: 60
    Pomógł: 0

    Zgodnie z:
    http://mirekk36.blogspot.com/2012/01/avr-porty-wewy-dir-podstawy.html
    mam problem zrozumieć pewne sprawy.
    Czy mógłby mi ktoś zakodować prosty program który:
    Gdy na jeden pin zostanie podane napięcie 5v to na innym pinie zapali się dioda.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 13:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 gru 2012
    Posty: 147
    Lokalizacja: Zadupie/Wrocław
    Pomógł: 6

    A masz może Niebieskiego Mirka? Bo dokładnie taki program jest opisany w trzecim albo czwartym rozdziale warsztatów ;)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 13:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lip 2013
    Posty: 420
    Lokalizacja: Kraków
    Pomógł: 17

    Masz tu troszkę zmodyfikowany kod z bluebooka:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Gdy naciśniesz klawisz podłączony do pinu PC6 to zapali się dioda podłączona do PC7


    Autor postu otrzymał pochwałę

    _________________
    GreenBook i BlueBook



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 15:35 
    Offline
    Użytkownik

    Dołączył(a): 20 gru 2013
    Posty: 60
    Pomógł: 0

    Tak, z klawiszem do GND wiem jak to zrobić, ale jak gdy chcę sterować jakimś urządzeniem co puszcza 5V albo klawiszem podłączonym do Vcc?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 16:09 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Jeśli program ma reagować na klawisz podłączony do VCC to mógłby wyglądać tak:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Dla pewności należało by podciągnąć linie klawisza do GND rezystorem np. 10k.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 16:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 gru 2012
    Posty: 147
    Lokalizacja: Zadupie/Wrocław
    Pomógł: 6

    No to wtedy należy przeprowadzić nieco inne praktyki, bowiem:
    - w linijce 25. kodu podanego przez programka pin key_pin podciągnięty zostaje wewnętrznym rezystorem do VCC - należy się tego pozbyć
    - w warunku w linii 30 należy pozbyć się negacji, tj. zastosować konstrukcję if(PINC & KEY_PIN)
    - no i w ostatnim kroku zastosować zewnętrzny pulldown (czyli połączenie poprzez rezystor, np. 10k pinu mikrokontrolera do masy układu) - z przyczyny takiej samej, dla której stosuje się pullup, a wyszczególnionej w artykule

    Jeśli nie wyłączysz wewnętrznego pullupu, to przy pozbyciu się negacji program będzie cały czas wykrywał, że przycisk został wciśnięty. Natomiast niezastosowanie pulldownu może spowodować różne artefakty w rodzaju niechcianego przełączania po zbliżeniu palca i podobnych historii.
    Tak pokrótce :)

    EDIT: No to nie zauważyłem postu jacka, wstyd ;)


    Autor postu otrzymał pochwałę

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 16:24 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    krokodyl1220 napisał(a):
    No to nie zauważyłem postu jacka, wstyd ;)

    Żaden wstyd bo fajnie i rzeczowo wytłumaczyłeś :-)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 16:52 
    Offline
    Użytkownik

    Dołączył(a): 20 gru 2013
    Posty: 60
    Pomógł: 0

    No i po pochwale, to się nazywa pomoc :) Dziękuje :)
    Już to zrozumiałem, zamiast podłączać wewnętrznym rezystorem do Vcc można zewnętrznym do GND i wejście nie będzie nam pływać- na to nie wpadłem :) Bo już warunek If to nie problem :)

    a co oznacza na wolne tłumaczenie PINC & KEY_PIN? I dlaczego w If zamiast PIN nie można użyć PORTx?
    Czy PIN mówi nam co jest fizycznie na pinie z zewnątrz, a PORT to co DA uC na pin od siebie z wewnątrz?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 17:11 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 gru 2012
    Posty: 729
    Lokalizacja: Białystok
    Pomógł: 12

    PINx nalezy do rejestru wejsciowego i to nim sprawdzamy stan panujacy na danym pinie.
    PORTx nalezy do rejestru wyjsciowego i to nim ustawiamy stany na danym pinie


    Autor postu otrzymał pochwałę

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 17:20 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 26 gru 2012
    Posty: 147
    Lokalizacja: Zadupie/Wrocław
    Pomógł: 6

    in2dex napisał(a):
    a co oznacza na wolne tłumaczenie PINC & KEY_PIN?

    A może być na szybkie tłumaczenie? :D (wybacz kiepski żarcik ;) )

    A więc wygląda to tak, że rejestr PINC jest rejestrem wejściowym, tj. zawiera informacje o tym, co do uC "wchodzi" ;) Jedynka oznacza, że mamy stan wysoki na którymś z pinów, przy czym numer bitu z rejestru oznacza numer pinu wejściowego. Operacja oznacza iloczyn logiczny numeru pinu z rejestrem wejściowym. Można to wytłumaczyć w ten sposób, że program sprawdza, jaką wartość ma pin rejestru PINC określony przez KEY_PIN. W praktyce działa to nieco inaczej, choć efekt jest taki sam.

    http://edu.i-lo.tarnow.pl/inf/alg/006_bin/0013.php

    in2dex napisał(a):
    I dlaczego w If zamiast PIN nie można użyć PORTx?
    Czy PIN mówi nam co jest fizycznie na pinie z zewnątrz, a PORT to co DA uC na pin od siebie z wewnątrz?

    Otóż to :)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 20:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Ja jeszcze dodam, że rejestr PIN można odczytywać nie tylko wtedy gdy jakaś końcówka pracuje jako wejście ale jako wyjście.
    Np. na jakiś pin wystawiamy stan wysoki i zapalamy diodę. I teraz żeby sprawdzić czy na tym pinie jest stan wysoki lepiej jest odczytać stan rejestru PIN niż PORT.
    Poniżej mały przykład
    zamiast
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    lepiej zrobić tak
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 21:02 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 gru 2012
    Posty: 729
    Lokalizacja: Białystok
    Pomógł: 12

    Cytuj:
    I teraz żeby sprawdzić czy na tym pinie jest stan wysoki lepiej jest odczytać stan rejestru PIN niż PORT.

    Nie zebym byl jakis wredny, ale moglbys powiedziec czemu lepiej uzyc PIN? Nigdy sie nad tym nie zastanawialem, dlatego pytam ;)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 21:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 29 sty 2012
    Posty: 777
    Lokalizacja: Karpicko k. Wolsztyna
    Pomógł: 197

    Gdzieś kiedyś wyczytałem (może w Oślej Łączce w Edw, nie pamiętam dokładnie), że jeśli np. uszkodzi nam się tranzystor wyjściowy w procku a my będziemy chcieli wystawić stan wysoki na wyjściu to ten stan może tam się nie pojawić. Odczyt rejestru PORT będzie wskazywał, że stan wysoki jest na końcówce ale odczyt rejestru PIN wskaże, że jednak stanu wysokiego nie ma.
    Dlatego jeśli chce się odczytać faktyczny stan końcówki pracującej jako wyjście to lepiej użyć rejestru PIN.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 21:22 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 gru 2012
    Posty: 729
    Lokalizacja: Białystok
    Pomógł: 12

    Ciekawa sprawa. Dzieki ;)

    _________________
    sig off ;(



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 21:31 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 mar 2013
    Posty: 739
    Lokalizacja: Poznań
    Pomógł: 84

    Dla mnie jest to dużo bardziej czytelne kiedy próbuje analizować
    kogoś kod
    Jeśli odczytuje PIN - wiem o co autorowi chodzi bo jest to rejestr wejściowy.
    Jak pierwszy raz się spotkałem z czytaniem PORT-u nie mogłem załapać
    o co chodziło autorowi bo do PORTx się coś zapisuje - a tu niespodzianka :) (sądziłem że to błąd)

    Możliwe że są ważniejsze powody takiego rozwiązania ale ja znam tylko taki

    edit :
    I znowu mój refleks szachisty :D



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2014, o 22:50 
    Offline
    Użytkownik

    Dołączył(a): 20 wrz 2013
    Posty: 647
    Zbananowany użytkownik

    Pomógł: 101

    Tylko trzeba pamiętać, że między ustawieniem PORTx a odczytem ustawionego stanu na PINx występuje pewne opóźnienie (powiedzmy 1 instrukcji)

    _________________
    +++++[>++++<-]>[>++++++<-]>.---------.+++.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lut 2014, o 15:11 
    Offline
    Użytkownik

    Dołączył(a): 20 gru 2013
    Posty: 60
    Pomógł: 0

    No walczę z tym programem no i nie do końca rozumiem wszystko. Wgrywa się do klocka i jakoś działa.
    No ale na logikę to tylko jeden warunek if powinien wystarczyć i tak próbowałem ale wtedy to nie działa jak należy...
    Po co stosuje się opóźnienie w tym wypadku i dlaczego nie działa bez tego opóźnienia??
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Kody wklejamy przy pomocy syntax=c - Różowy J.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 lut 2014, o 15:26 
    Offline
    Moderator
    Avatar użytkownika

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

    in2dex napisał(a):
    No ale na logikę to tylko jeden warunek if powinien wystarczyć i tak próbowałem ale wtedy to nie działa jak należy...
    Po co stosuje się opóźnienie w tym wypadku i dlaczego nie działa bez tego opóźnienia??


    A przecież w książce masz to opisane .... zajrzyj jeszcze do rozdziału o funkcji SuperDebounce i tam zobacz opisy ...

    ------------------------ [ Dodano po: 1 minucie ]

    poza tym poczytaj to:

    http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html


    Autor postu otrzymał pochwałę

    _________________
    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  
    PostNapisane: 4 lut 2014, o 15:33 
    Offline
    Użytkownik

    Dołączył(a): 24 sty 2012
    Posty: 1469
    Pomógł: 56

    Kody umieszczaj w znacznikach SYNTAX C wtedy są czytelniejsze i łatwiejsze do analizy

    ------------------------ [ Dodano po: 2 minutach ]

    A dlaczego nie działa jak należy?
    Może poczytaj i pooglądaj to:
    http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html

    _________________
    Jestem początkujący i moje porady mogą być błędne



    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: 19 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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