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

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

12 Wrz 2011 23:40 2962 7
  • Poziom 24  
    Witam

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

    Konfiguracja wygląda tak:

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod






    Procedura odbioru tak:

    Kod: basic4gl
    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.
  • Pomocny post
    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: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    Specjalista automatyka domowa
    Powiem Ci, że nie wiem po co tak ma być, ale podam Ci mój kod.

    Kod: basic4gl
    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.
  • 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
    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ł.