Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Problem z przerwaniem zewnętrznym w ATmega8515

maju23 18 Lip 2005 01:06 1016 4
  • #1 18 Lip 2005 01:06
    maju23
    Poziom 2  

    Witam Wszystkich

    Posiadam podłączoną pod przerwania zewnętrzne INT0 klawiaturkę matrycową 4x4. Całość zrealizowana jest za pomocą diod BAT43, które podłączone są pomiędzy wiersze, a INT0. Od strony INT0 podpięte do +5V, a wiersze są jeszcze podwieszone na rezystorach 3k. Przerwanie ma reagować na opadające zbocze. W nocie katalogowej wyczytałem, że w takim wypadku pin musi być ustawiony jako wejściowy ale może również działać na ustawieniu jako wyjściowy. U mnie natomiast jeśli ustawię pin INT0 jako wejściowy mikroprocesor kompletnie nie reaguje na naciskanie przycisków. Co więcej jeśli pin INT0 ustawię w stanie niskim program jakby zawieszał się w tym miejscu, gdzie został ten pin ustawiony, reagując tylko na przyciśnięcie klawiszy jednak nie robiąc nic więcej. Zamieszczam plik z pełnym programem, który napisałem do obsługi klawiatury na, tym że przerwaniu. W programie tym pin INT0 (PD 2) jest ustawiany na 0 dopiero po inicjalizacji procesora i wyświetlacza oraz wstępnym wyświetleniu początkowych komend, jednak gdybym zrobił to w funkcji inicjalizacji procesora to nawet nie zostałby zainicjowany wyświetlacz, tak samo jak w poniższym programie nie zostaje wyświetlony umieszczony w pętli while napis BYE BYE.

    Jeśli ktoś kiedyś spotkał się z podobnym problemem prosiłbym o napisanie jak można z tego wybrnąć, a może ktoś znajdzie jakieś błędy w moim kodzie. Będę wdzięczny za każdą pomoc.

    0 4
  • #2 18 Lip 2005 02:06
    Paweł Es.
    Pomocny dla użytkowników

    Narysuj schemat ideowy podłączeń tej klawiatury do procesora (tylko dokładny).

    0
  • #3 18 Lip 2005 11:14
    maju23
    Poziom 2  

    W dołączonym pliku zamieszczam schemat połączenia klawiatury z mirkoprocesorem. Przepraszam za jakość schematu (plik txt) jednak nie mam aktualnie nic do rysowania schematów, a tak było dla mnie najszybciej.

    0
  • #4 18 Lip 2005 12:30
    Paweł Es.
    Pomocny dla użytkowników

    Od strony anod diod i wejścia INT0 powinien być też rezystor 3.3k do 5 V a ze schematu wynika, że jest stała 1 o wydajności źródła zasilania 8O .

    W stanie spoczynkowym klawiatury wyjścia PC0-PC3 muszą mieć wystawione 0 a by wciśnięcie wymusiło 0 na wejściu INT0.

    0
  • #5 18 Lip 2005 12:49
    maju23
    Poziom 2  

    Przepraszam bardzo za moją nieuwagę i pominięcie rezystora od strony anod diod. Ten rezystor jak najbardziej tam jest i poprawiłem schemat umieszczając go tam. Skanując klawiaturę ustawiam 0 na poszczególne kolumny. Problem jest w tym, że przerwanie reaguje na przycisnięcie przycisku ale program jakby się zawieszał. Jestem aktualnie przekonany, że jest to wina programu, ponieważ spróbowałem właśnie zrobić to na przerwaniu od przepełnienia timera i jest dokładnie taka sama sytuacja. Jak uruchamiam przerwania w funkcji inicjalizacji procesora nie są wyświetlane komendy "Witamy !!!" oraz "Podaj Haslo:" świecą się tylko wszystkie piksle wyświetlacza. Jednak gdy wcisnę jakiś przycis przerwanie działa i wyświetla się to co ma się wyświetlić, jednak nie działa nic z programu co jest poza funkcja przerwania. Nie mam pojęcia o co może w tym chodzić.

    0
  Szukaj w 5mln produktów