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

[atmega][bascom] Atmega 128 i rc5 na int4.Czy ma prawo działać?

adambehnke 12 Wrz 2011 23:40 3157 7
REKLAMA
  • #1 9921633
    adambehnke
    Poziom 24  
    Witam

    Męczę się nad uruchomieniem obsługi RC5 w Atmega128 na pinie E.4 (INT4).

    Konfiguracja wygląda tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod






    Procedura odbioru tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod



    Generalnie pierwsze wykrycie przerwania od diody odbiorczej podczerwieni jest wykrywane , gdyż na lcd pokazuje się : ADRES:255 ROZKAZ:127

    Niestety nie dekoduje kodu RC5. Niestety nie mam możliwości podłączenia diody odbiorczej pod dedykowane do tego Bascomowe piny INT0 lub INT1.
    Ale wydaje mi się że powinno to działać także dla INT4.
    Dodam że TIMER0 nie jest wykorzystywany w moim programie do żadnych innych celów jak RC5.
    Próbowałem także skonfigurować obsługę dla Timera2 ale także bez rezultatów.
    Proszę o jakieś sugestie bardziej doświadczonych kolegów.

    Jeszcze jedno czego nie widać na listingu kodu. Przerwanie INT4 jest ponownie włączane w pętli głównej programu.
  • REKLAMA
  • REKLAMA
  • REKLAMA
  • Pomocny post
    #4 9921780
    danthe
    Poziom 30  
    Chodzi mi o to że w bascomie żeby przerwania działały musisz włączyć globalną obsługę przerwań, i dopiero konkretne przerwanie. Do tego widzę że nie ma jak się wykonać podprogram "readir" bo masz wyłączoną globalną obsługę przerwań.

    Proponuję :

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • Pomocny post
    #5 9922450
    xury
    Specjalista automatyka domowa
    Powiem Ci, że nie wiem po co tak ma być, ale podam Ci mój kod.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Zamiast ustawiania flagi można dać odbiór kodu. Ale ja wolę to robić w pętli.
    Nie wiem tylko po co to Enable Interrupts skoro jest ustawione na początku programu, ale bez tego nie działa.
  • #6 9923578
    adambehnke
    Poziom 24  
    No i niestety nie działa. Pod INT0 i INT2 działa ale pod INT4 nie... Już mi się kończą pomysły.. Spróbuję jeszcze wyrzucić odczyt z przerwania i dać go w pętli.


    edit: Niestety nadal nie działa.

    Dodano po 1 [godziny] 21 [minuty]:

    Bardzo ciekawe zjawisko zaobserwowałem.
    Otóż dla testu skompilowałem program pod wersją 1.11.9.8 i odziwo odbiór RC5 działa poprawnie! Ale za to znaki lcdchar jakie sobie zrobiłem na LCD nie działają poprawnie(zamiast ładnych ikonek mam krzaki....
    Ale kiedy kompiluję pod wersją 2.0.7.1 to ikonki są ładne ale rc5 nie działa. Zaraz zwariuję.

    Dodano po 35 [minuty]:

    Poradziłem sobie z krzaczkami w deflcdchr. Problemem okazało się niepoprawne użycie polecenia CLR.
    W programie miałem je umieszczone przed definicją własnych znaków a powinna być po niej.
    Niby proste a przysporzyło tyle problemów.
    Niestety program działa poprawnie tylko w wersji 1.11/9.8. Nie rozumiem dlaczego ale wcześniej miałem już przypadki że w nowych wersjach RC5 działało tylko przy taktowaniu 4MHz. A tu uzywam teraz 16MHz i nie działa.
  • Pomocny post
    #7 9924421
    xury
    Specjalista automatyka domowa
    Wiesz miałem Ci wcześniej o tym napisać ale, myślałem, że tylko ja tak mam. Ostatnio robiłem sobie zegarek sterowany RC5 i skompilowany pod 2.0.5.0 też nie chciał działać, a pod 1.1.9.5 dobór RC5 działał.
REKLAMA