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

atmega1284p Bascom - PCF8574AP - fałszywe odczyty przycisków po starcie

maximus22_kr 03 Sty 2013 08:27 2103 6
REKLAMA
  • #1 11733115
    maximus22_kr
    Poziom 18  
    Witam
    Mam klawiaturę, właściwie pięć przycisków na kształt joystika podpiętych do PCF8574AP. Oczywiście adres układu już ustaliłem.
    Wejścia są podciągnięte do VCC przez rezystory 10K. Badam pojawienie się GND

    W programie głównym mam pętlę w której określiłem że naciśniecie jednoczesne dwóch przycisków wchodzi do menu. Problem w tym, że po włączeniu zasilania program od razu wchodzi do menu.

    Na mojej poprzedniej płytce, gdzie wejścia były podciągnięte do przez rezystory do GND i badałem pojawienie się VCC takiego problemu nie było.

    Zastanawiam, się czy taka sytuacja nie wynika z tego, że napięcie VCC nie od razu jest pełnej wartości i układ PCF8574AP może nie "wyczuwać" tego podciągnięcia przez rezystory do VCC i wychodzi mu, że klawisze są wciśnięte.
    Nie mam na razie innego pomysłu, to na razie jedyna koncepcja po paru godzinach walki z tym układem
  • REKLAMA
  • REKLAMA
  • #3 11733583
    maximus22_kr
    Poziom 18  
    Układ PCF8574AP mam już na stałe podpięty - nie mogę zmienić adresu - program wyszukujący urządzenia I2C wskazał adres 118 i 119 ( zgodnie zresztą z obliczonym przeze mnie ). Odczyt z PCF8574AP mam w przerwaniu INT1

    Kod ( a raczej jego część dotyczącą PCF8574AP ) umieszczę wieczorem, jak wrócę z pracy.

    Czy Kolega w jakiś sposób inicjuje PC8574 ? Tzn. przed rozpoczęciem programu wysyła jakiś kod do układu, żeby ustawić np. jakie mają być funkcje wyprowadzeń ?
  • #4 11734151
    Krauser
    Poziom 26  
    Aby wyprowadzenia PCF8574 były wejściami trzeba wysłać np. 255 (ustawić 1 na wybranym wejściu). Nie jest potrzebne zewnętrzne podciąganie.
  • REKLAMA
  • #5 11734423
    maximus22_kr
    Poziom 18  
    Tak, wiem, że wysyła się 1.
    Tylko chodzi mi o to, czy trzeba to robić każdorazowo przy odczycie, czy tylko raz przed startem programu głownego.

    Ja mam taki kod umieszczony jeszcze przed Do-Loop

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #6 11734636
    Krauser
    Poziom 26  
    Wystarczy raz ustawić tam 1. Przycisk wymusi 1, ale po puszczeniu ta 1 znowu będzie. Co do problemów z działaniem to najlepiej po skonfigurowaniu tego układu do pracy dodać małe późnienie kilka ms.
    Dam może podobny przykład. W specyfikacji wielu procesorów pisze, że po zmianie konfiguracji na wejściową trzeba odczekać co najmniej NOP, aby odczytać stan wejść. Chodzi tam o to, że procesor jest diabelnie szybki i stan może nie zdążyć się ustalić. Chodzi o ładowanie pojemności, które zawsze występują.
  • REKLAMA
  • #7 11737543
    maximus22_kr
    Poziom 18  
    kod ( właściwie część dotycząca PCF8574AP )
    Piny P.0 - P.4 do switchy, podciągnięte do VCC przez rezystor 10 K, wyjście INT układu PCF8574 podciągnięte przez rezystor 10k do VCC

    Poprzedni układ był na Atmega328, ten jest na Atmega1284P

    Przy uruchomieniu jest tak, że miga pierwsza opcja menu - ustawienie minut, na przemian z tym co powinno być wyświetlane w programie głównym.


    Konfiguracja
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Konfiguracja przed programem głównym
    Kod: text
    Zaloguj się, aby zobaczyć kod


    Odczyt po wystąpieniu przerwania
    Kod: text
    Zaloguj się, aby zobaczyć kod
REKLAMA