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

[Bascom] Odbiór RC5 w przerwaniu INT0 nie działa w nowej wersji kompilatora

MrKsawery 25 Cze 2012 22:04 2544 6
  • #1 11041848
    MrKsawery
    Poziom 13  
    Witam.
    Mam problem z obsługa RC5 w przerwaniu INT0 a mianowicie napisałem program i skompilowałem. Zdziwiłem się, bo nie działał tzn. widać, że przerwanie jest wywoływane, ale zawsze odczytuje 255 i 127. Sprawdziłem program wyglądał na poprawny, więc zacząłem szukać innej przyczyny - pobrałem starszą wersję i skompilowałem w niej ten sam program i okazało się, że działa jak należy, więc wina leży w kompilatorze. Podejrzewam, że w nowej wersji zaszły jakieś zmiany tylko nie wiem, jakie. Czy ktoś z Was miał taki problem?
    Pozdrawiam
  • Pomocny post
    #2 11043334
    Krauser
    Poziom 26  
    Może też być tak, że w kodzie programu nie ma wszystkiego np. taktowania. To co w kodzie ma pierwszeństwo przed ustawieniami kompilatora, a opcje kompilacji mogą się różnić.
  • Pomocny post
    #4 11044605
    robiw
    Poziom 26  
    Generalnie, W Bascomie obsługa RC5 pozostawia wiele do życzenia dlatego też Mark w najnowszej wersji ma wprowadzić obsługę RC5 na przerwaniu ICP ("prawdziwie" w tle) według poniższego kodu, który udostępniam i polecam:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    robiw
  • #5 11045125
    Krauser
    Poziom 26  
    robiw napisał:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Fajnie zrobiony dostęp do bitów. Od kiedy to jest w Bascomie ? Czy w takim razie teraz zamiast Portb.0 powinienem dawać Portb.portb0 ?
  • #6 11045447
    robiw
    Poziom 26  
    Krauser napisał:
    Fajnie zrobiony dostęp do bitów. Od kiedy to jest w Bascomie ?


    Prawie od zawsze!

    Krauser napisał:
    Czy w takim razie teraz zamiast Portb.0 powinienem dawać Portb.portb0 ?


    Wszystko powie Ci plik *.DAT Twojego procka. Np. dla ATtimy2313:

    
    [CONST]
    ;***** BIT DEFINITIONS
    PORTB0	= 0	; Port B Data Register bit 0
    PB0	= 0	; For compatibility
    PORTB1	= 1	; Port B Data Register bit 1
    PB1	= 1	; For compatibility
    PORTB2	= 2	; Port B Data Register bit 2
    PB2	= 2	; For compatibility
    PORTB3	= 3	; Port B Data Register bit 3
    PB3	= 3	; For compatibility
    PORTB4	= 4	; Port B Data Register bit 4
    PB4	= 4	; For compatibility
    PORTB5	= 5	; Port B Data Register bit 5
    PB5	= 5	; For compatibility
    PORTB6	= 6	; Port B Data Register bit 6
    PB6	= 6	; For compatibility
    PORTB7	= 7	; Port B Data Register bit 7
    PB7	= 7	; For compatibility
    DDB0	= 0	; Port B Data Direction Register bit 0
    DDB1	= 1	; Port B Data Direction Register bit 1
    DDB2	= 2	; Port B Data Direction Register bit 2
    DDB3	= 3	; Port B Data Direction Register bit 3
    DDB4	= 4	; Port B Data Direction Register bit 4
    DDB5	= 5	; Port B Data Direction Register bit 5
    DDB6	= 6	; Port B Data Direction Register bit 6
    DDB7	= 7	; Port B Data Direction Register bit 7
    PINB0	= 0	; Port B Input Pins bit 0
    PINB1	= 1	; Port B Input Pins bit 1
    PINB2	= 2	; Port B Input Pins bit 2
    PINB3	= 3	; Port B Input Pins bit 3
    PINB4	= 4	; Port B Input Pins bit 4
    PINB5	= 5	; Port B Input Pins bit 5
    PINB6	= 6	; Port B Input Pins bit 6
    PINB7	= 7	; Port B Input Pins bit 7
    OCIE0A	= 0	; Timer/Counter0 Output Compare Match A Interrupt Enable
    TOIE0	= 1	; Timer/Counter0 Overflow Interrupt Enable
    OCIE0B	= 2	; Timer/Counter0 Output Compare Match B Interrupt Enable
    


    ... itd, itp... trzeba tylko czytać ;-)... robiw
REKLAMA