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 16 lip 2025, o 12:30


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 4 cze 2016, o 09:57 
    Offline
    Nowy

    Dołączył(a): 16 mar 2016
    Posty: 8
    Pomógł: 0

    Cześć,

    Przed przystąpieniem do prób skomunikowania mikrokontrolera z zegarem RTC (PCF8583F) poprzez magistralę IIC, chciałem sprawdzić przerwanie zewnętrzne generowane na podstawie sygnałów z pinu INT RTC.

    Według specyfikacji zegara :

    Obrazek

    Powinien on generować przerwania cykliczne co 1 sekundę, pod warunkiem iż bit alarmu wcześniej nie został skonfigurowany.
    Tak też jest ustawiony rejestr kontrolny po resecie :

    Obrazek

    Przerwanie zewnętrzne dla Atmegi664P jest skonfigurowane prawidłowo. W przypadku wystąpienia przerwania INT0 powinna zapalić się dioda, podłączona do PORTU A, PA0.
    Przy zwarciu PD2 do dowolnego pinu VCC na płytce reakcja zachodzi. Przy podłączeniu PD2 do wyprowadzenia INT zegara nic się nie dzieję.

    Poniżej wycinek z kodu testowego :
    Konfiguracja przerwania.

    Kod:
    void ext_init()
    {
       EICRA |= (1<<ISC01);
       EIMSK |= (1<<INT0);
       EIFR |= (1<<INTF0);
       
    }

    // External Interrupt Request 0
    ISR(INT0_vect)
    {
       LED_TOGGLE;
    }


    Dodatkowo w funkcji main port PD2 jest ustawiony jako wyjście, aby je podciągnąć.

    Czy może być tak że zegar fabrycznie ma ustawiony inaczej rejestr kontrolny i dla tego przerwanie nie przychodzi ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 cze 2016, o 10:07 
    Offline
    Moderator
    Avatar użytkownika

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

    Po pierwsze to podłącz sobie zwykłą diodę LED oczywiście przez rezystor do wyjścia INT układu PCF8583 (katodą) a anodę przez rezystor do VCC i zobacz czy będzie sobie mrugać co sekundę - to najprostszy możliwy test tego scalaka (wszędzie o tym piszę i to pokazuję)

    Jeśli chodzi o kod to nie wiadomo czy dałeś sei(); bo całego kodu inicjalizacyjnego nie pokazujesz nie wiedzieć czemu a tam mogłeś zrobić babole szczególnie gdy piszesz to:

    d3tox napisał(a):
    Dodatkowo w funkcji main port PD2 jest ustawiony jako wyjście, aby je podciągnąć.

    Ustawiony jako wyjście aby podciągnąć ? to w końcu jak ? .. ustawiasz go jako wejście czy wyjście ? ;)

    podpowiedź - MUSI BYĆ ustawiony jako WEJŚCIE

    a wystawienie jedynki na odpowiedni bit w rejestrze PORTx powoduje jego podciągnięcie

    zajrzyj sobie tutaj:
    http://mirekk36.blogspot.com/2012/01/av ... stawy.html

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

    d3tox napisał(a):
    y może być tak że zegar fabrycznie ma ustawiony inaczej rejestr kontrolny i dla tego przerwanie nie przychodzi ?


    Pomyśl sobie - po co takie rzeczy z kosmosu wymyślać, że zegar ma inaczej ustawiony rejestr jakiś tam niż to napisane jest w PDF jeśli ty nawet diody LED nie podłączałeś aby go sprawdzić ?

    coś źle robisz w kodzie po prostu

    _________________
    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 cze 2016, o 12:01 
    Offline
    Nowy

    Dołączył(a): 16 mar 2016
    Posty: 8
    Pomógł: 0

    Sei(); - było zadeklarowane.

    mirekk36 napisał(a):
    podpowiedź - MUSI BYĆ ustawiony jako WEJŚCIE


    Dziękuje za podpowiedź :). Działa.



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO