Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek 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ć?

adambehnke 12 Wrz 2011 23:40 2752 7
  • #1 12 Wrz 2011 23:40
    adambehnke
    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
    #2 13 Wrz 2011 00:23
    danthe
    Poziom 29  

    Może powinieneś włączyć przerwania - enable interrupts .

  • #3 13 Wrz 2011 00:41
    adambehnke
    Poziom 24  

    Włączam zaraz po wyłączeniu INT4 (SEI)

  • Pomocny post
    #4 13 Wrz 2011 01:29
    danthe
    Poziom 29  

    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
    #5 13 Wrz 2011 11:52
    xury
    Poziom 38  

    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.

  • #6 13 Wrz 2011 19:51
    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 13 Wrz 2011 21:26
    xury
    Poziom 38  

    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ł.

  • #8 12 Lis 2011 17:24
    adambehnke
    Poziom 24  

    Wszystko wskazuje na to że nowe wersje Bascoma wspierają coraz to nowsze procesory i funkcje ale chyba zapomniano o starszych chipach.
    Reasumując ...Bascom idzie na dno.

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME