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

ATmega32: Przerwanie INT2 nie działa poprawnie w Bascomie, jak to naprawić?

pajhiwo1 27 Sie 2007 23:41 1128 2
REKLAMA
  • #1 4222855
    pajhiwo1
    Poziom 10  
    Posty: 20
    witam,

    próbuję skomunikować 2 procesory:
    1) wystawia na złączke 1 i 0 z określonymi przeze mnie przerwami np. 1s
    2)próbuję atmegą 32 odczytać przez przerwanie wysłany stan i zapalić diodę
    Niestety z marnym skutkiem. Program pisany w Bascomie. Poniżej jego treść:

    //konfiguracja portu D z którego maja byc sczytane wartości
    Portd = 255
    Lcd_io_ind Alias Pind

    Enable Int2
    Config Int2 = Rising //probowałem również z falling i low level
    On Int2 Label1

    Main: //petla glowna programu

    If Lcd_data = &H00 Then
    Set Portc.5
    Elseif Lcd_data = &HFF Then
    Reset Portc.5
    'Waitms 1000
    End If
    Goto Main

    Label1: //miejsce obslugi przerwania
    //probowalem wylączac przerwanie na czas jego obsługi

    Lcd_data = &H00
    Ddrd = &H00
    !nop
    Lcd_data = Lcd_io_ind


    Proszę o wskazanie błędu. Probowalem juz z masa rożnych kombinacji konfiguracji portu D. NIesty przerwanie albo zostalo wykonane jeden raz (jedno migniecie diody - a oczekuje migania co np. 1s) albo nie dzialalo w ogole.
  • REKLAMA
  • #2 4223165
    Ch.M.
    Poziom 27  
    Posty: 1009
    Pomógł: 62
    Ocena: 15
    Witaj
    Nie wiem jak to jest w baskomie, ale jakbys napisał coś podobnego "Portd = 255" w asemblerze to ustawiłbyś całe nic... najpierw trzeba ustawic rejestr kierunku portu (DDR) by później zmieniać stany portu
    Pozdrawiam
  • #3 4223222
    pajhiwo1
    Poziom 10  
    Posty: 20
    prawdopodobnie ustawialem DDRD=&H00 również przed Portd=255. Sprawdzę jak wrócę z pracy. Czekam na inne propozycje ;).
REKLAMA