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

atmega128 + mn7010 TWI w Bascomie

sebazaz 22 Maj 2009 16:23 1059 4
REKLAMA
  • #1 6561263
    sebazaz
    Poziom 14  
    Witam.
    Czy udało się komuś uruchomić atmega128 + mn7010 TWI w Bascomie?
    Według opisu Config tcp należy podać numer przerwania INT0/INT1, ale w medze128 obydwa przerwania pokrywają się z liniami I2C.
    Próbowałem z INT4 ale bezskutecznie.
    Sam moduł mn7010 jest na pewno dobry, bo działa po TWI na medze32.
    Proszę o jakąś podpowiedź lub kawałek programu.
  • REKLAMA
  • Pomocny post
    #2 6561774
    ZbeeGin
    Poziom 39  
    Nie mam modułu, ale napisałem pusty program z CONFIG TCPIP i powinno wszystko działać nawet z INT4, gdyż:
    - jest wypełniony poprawny wektor przerwania:
    +0000000A:   940C00F7    JMP       0x000000F7 

    - CONFIG TCPIP włącza to źródło przerwania jak gdyby nigdy nic:
    5:        Config Tcpip = Int4 , Mac = 0.0.0.0.0.1 , Ip = 10.0.0.6 , Submask = 255.255.255.0 , Gateway = 10.0.0.1 , Localport = 8080 , Tx = $55 , Rx = $55 , Noinit = 0 , Twi = 192 , Clock = 100000
    +00000062:   B789        IN        R24,EIMSK       
    +00000063:   6180        ORI       R24,0x10       ; czyli INT4 (bit4)
    +00000064:   BF89        OUT       EIMSK,R24
  • REKLAMA
  • #3 6562380
    sebazaz
    Poziom 14  
    Dzięki za zainteresowanie.
    Niestety będę mógł to sprawdzić dopiero w poniedziałek.
    To jest część dość rozbudowanego układu (w medze 128 brakuje portów).
    Za MN7010 wziąłem się na końcu i może coś się gryzie.
    Spróbuję chyba wywalić wszystko i zacząć od samego TCP/IP.
    Nie bardzo wiem, co oznaczją linie:
    
    +00000062:   B789        IN        R24,EIMSK        
    +00000063:   6180        ORI       R24,0x10       ; czyli INT4 (bit4) 
    +00000064:   BF89        OUT       EIMSK,R24
    

    Pozdrawiam.
  • REKLAMA
  • Pomocny post
    #4 6563602
    ZbeeGin
    Poziom 39  
    Łopatologicznie: Najpierw ładowana jest stara zawartość rejestru odpowiedzialnego za włączanie lub blokowanie przerwań (korzysta z tego np. polecenie ENABLE). Potem włączane jest przyjmowanie przerwań z linii INT4, tak jakbyś wykonał ENABLE INT4. A na końcu nowa zawartość rejestru zostaje zapisana w pamięci procesora.

    I od tej pory przerwania z INT4 są zgłaszane, choć do czasu wykonania globalnego polecenia ENABLE INTERRUPTS nie będą wykonywane.
  • #5 6571893
    sebazaz
    Poziom 14  
    Zagadka rozwiązana, układ działa.
    Winna była niewidoczna przerwa w ścieżce SDA przy procesorze.
    Dziękuję koledze ZbeeGin za pomoc i ze swojej strony uważam temat za zamknięty.
REKLAMA