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

ATmega8515 - brak wewnętrznych przerwań

JollyRoger 06 Lis 2005 15:48 1408 21
  • #1 06 Lis 2005 15:48
    JollyRoger
    Poziom 21  

    NIe mogę w ty procesorze uzyskac rzadego wewnętrznego przerwania (timer0, urxc itp) jedyna co chodzi dobrze to przerwania zewnętrzne (int0).
    Proszę o jakieś wskazówki (moze fuse bity są źle ustawione?).

    0 21
  • #2 06 Lis 2005 16:56
    LordBlick
    VIP Zasłużony dla elektroda

    W temacie należy wyłuszczyć problem zamiast nic nieznaczącego "pomocy" !!!
    Może jednak kawałek kodu i schematu, czy wróżek szukasz ? ;)

    0
  • #3 06 Lis 2005 17:39
    JollyRoger
    Poziom 21  

    1) Z podobnym "normalnym" tematem mój poprzedni post nie został zauważony,
    2)Jeżeli chodzi o kod to trudno podawać tu przykład chodzi o brak przerwań wewnętrznych ale skoro to takie istotne:

    Code:

    Enable interrupts
    enable urxc
    on urxc procedurka

    do:loop:end

    procedurka:
    ...
    return
    Moderowany przez Light-I:

    Wiesz, twoje podejście jest "Odkryłem rewelacyjny błąd i to na pewno nie jest moja wina". Czytałeś w ogóle http://rtfm.killfile.pl/ ? Sposób w jaki zadajesz pytanie i zgłębiłeś temat przed wyjawieniem "rewelacji" waży na ilości odpowiedzi. Zadaj pytanie z sensem, albo trzeba będzie zrobić z tym tematem porządek. Nikt nie ma obowiązku udzielać odpowiedzi. "POMOCY" w temacie - komu to ? Służby ratownicze dostępne są pod nr. telefonu 112.

    0
  • #4 06 Lis 2005 17:57
    LordBlick
    VIP Zasłużony dla elektroda

    Póki co wróżki mogą odpowiedzieć "Trafiłeś na wyjątkowy egzemplarz procesora, powieś go sobie na łóżkiem" :P Próbowałeś na innym egzemplarzu z tym samym kodem ?

    0
  • #5 06 Lis 2005 18:56
    JollyRoger
    Poziom 21  

    Jedyne na czym mogłem próbować to AT90s2313 ale to nie jest seria ATmega (ale działało).

    A co do twojego przypisu przy moim poście: jak wspominałem wyżej, zadałem to pytanie w inny sposób (jestem już dość długo na tym forum) ale nie uzyskałem na niego odpowiedzi. A tak przynajmniej ktoś sie nim zainteresował...

    0
  • #6 06 Lis 2005 19:08
    crazy_phisic
    VIP Zasłużony dla elektroda

    We wszystkich programach jak również w helpie najpierw jest deklaracja sposobu obsłużenia przerwania a potem dopiero zezwolenie na przerwanie:

    "
    On Urxc Rec_isr
    Enable Urxc
    Enable Interrupts
    "

    Pozdrawiam

    0
  • #7 06 Lis 2005 19:30
    JollyRoger
    Poziom 21  

    Niestety procesor nadal nie reaguje (próbowałem nawet skopiować orginalny kod z helpa). Pisałem już wiele programów na procesory (ale dotychczas na 8515 a nie mega8515) i poraz pierwszy mi się coś takiego zdarzyło. Czy może być to kwestia ustawień fusebitów?

    0
  • #8 06 Lis 2005 19:59
    crazy_phisic
    VIP Zasłużony dla elektroda

    Fusybity nie dotyczą obsługi przerwań, a sprawdzałeś inne przerwania np. od timera... może programik nie działa ponieważ nie wpisujesz niczego do bufora RX?

    0
  • #9 06 Lis 2005 20:04
    JollyRoger
    Poziom 21  

    Właśnie od Timerów się zaczęło - timer poprawnie był zwiększany ale jego przepełnienie nie wywoływało przerwania. I tak doszedłem do tego że żadne wewnętrzne przerwania nie działają ale np INT0 działa poprawnie. Męcze się już z tym drugi dzień a raczej nie chciałbym kumpować nowego procesora (wszystko jest na faktury i później troche głupio się z tego tłumaczyć :) )

    0
  • #10 06 Lis 2005 20:27
    crazy_phisic
    VIP Zasłużony dla elektroda

    hmm tak dokładnie przeglądam pdf i zaciekawiła mnie treść od strony 53 (pod tabela z wektorami przerwań), sprawdź ustawienia wskazanych tam rejestrów, może tutaj jest coś namieszane.

    0
  • #11 06 Lis 2005 21:45
    JollyRoger
    Poziom 21  

    W pliku m8515.dat wszystko się zgadza

    Code:
    URXC=$009   ;UART Receive Complete Interrupt Vector Address

    A gdy próbuje zrobic wstawke asm z własnym "przekierowaniem" z tego wektora to cały bascom się wiesza podczas kompilacji. Czy jest możliwe wewnętrzne mechaniczne uszkodzenie procesora?

    0
  • #12 06 Lis 2005 22:08
    GienekS
    Poziom 32  

    Jeżeli BASCOM robi listing w asemblerze to sprawdź poprawność adresów użytych wektorów.

    0
  • #13 07 Lis 2005 14:52
    JollyRoger
    Poziom 21  

    Bascom nie robi listingu. To co podałem to fragment pliku DAT dla procesora ATmega8515.

    0
  • #14 07 Lis 2005 20:04
    LordBlick
    VIP Zasłużony dla elektroda

    Na mój gust spróbuj użyć innego kompilatora, aby zweryfikować sprawność układu. Jedynie wektory INT0/INT0 w większości układów AVR są na początku, a pozostałe zdecydowanie się różnią między sobą i podanie innego układu niż właściwy ma prawo powodować takie hece. W AVRAsm używa się dyrektywy

    Code:
    .device ATmega8515
    aby przyporądkować kod komplacji określonemu układowi, podobnie powinno być w Bascom (Z tego co pamiętam, a kol. Zumek pewnie potwierdzi ;), jest zarówno odpowiednia opcja w menu, jak i dyrektywa, opisana w Helpie - Szukaj linka w FAQ, jeśli jeszcze Helpa nie masz po polsku...) ;)
    Pozdrawiam, Daniel

    0
  • #15 07 Lis 2005 20:27
    JollyRoger
    Poziom 21  

    W postach wyżej zapomniałem zaznaczyć że oczywiście użyłem dyrektywy:

    Code:
    $regfile = "m8515.dat" 
    (zawsze tego używam) dlatego wektory wydają się być skonfigurowane prawidłowo.[/quote]

    0
  • #16 07 Lis 2005 20:40
    crazy_phisic
    VIP Zasłużony dla elektroda

    Hmm jeśli masz już kod, to skompiluj go za pomocą Fastavr www.fastavr.com zobaczymy czy tan kombajn poradzi sobie z tym problemem..

    0
  • #17 07 Lis 2005 20:45
    zumek
    Poziom 39  

    JollyRoger napisał:
    W postach wyżej zapomniałem zaznaczyć że oczywiście użyłem dyrektywy:
    Code:
    $regfile = "m8515.dat" 
    (zawsze tego używam) dlatego wektory wydają się być skonfigurowane prawidłowo.

    To wrzuć na forum kod wynikowy(HEX|BIN) i oczywiście źródło kodu (najlepiej wszystkie pliki wygenerowane przez Bascom-a *.CFG,*.OBJ,*.RPT,itp) programu , który Ci nie działa.No .... chyba to nie tajemnica państwowa :?: Spakuj ZIP-em lub RAR-em.

    Piotrek

    PS
    Light-I :arrow: Zgadzam się z Tobą całkowicie ;)

    0
  • #19 10 Lis 2005 11:31
    midas78
    Poziom 19  

    Veni, Vidi tak,
    Vici nie koniecznie.

    W programie, który załączyłeś nie ma konfiguracji i uruchomienia USART'a (str. 139 dokumentacji). Trochę dalej przedstawiono odbiór na przerwaniu (jeżeli USART jest wyłączony to flaga przerwania zawsze zero).


    Spróbuj skompilować prosty kod na przerwanie od timera, ale ze wszystkim, tzn. nie tylko uruchomienie ale i konfiguracja (config Timerx = ... - nie pamiętam a nie mam Bascoma w pracy).

    Zewnętrzne przerwanie zadziałało ci bo bez konfiguracji reaguje na stan niski.

    Dodam, że nie robiłem nigdy transmisji szeregowej i to co napisałem wnioskuję z dokumentacji atmegi.

    0
  • #20 10 Lis 2005 16:05
    JollyRoger
    Poziom 21  

    Ok oto program z Timerem. Pisząc w bascomie zauważyłem coś dziwnego:
    Gdzy pisze Config timer1= timer, prescaler = xx to pojawia się okienko z wyborem prescalera, ale kompilator tego nie trawi. Z kolei gdy napisze prescale to okienko się nie pojawia ale wszystko sie kompiluje.

    0
  • #21 14 Lis 2005 14:24
    midas78
    Poziom 19  

    Eh. To już nie mam pomysłów. Jedynie to, że do timera powinno zapisywać się kiedy jest zatrzymany. Ale to chyba nie ma wpływu...

    0
  • #22 15 Lis 2005 15:57
    JollyRoger
    Poziom 21  

    A więc jednak coś w tym jest że nikt sobie nie dał z tym rady. OK narazie jakoś bez tych przerwań sobie poradziłem....Może ktoś z forumowiczów ma takiego ATmege i może wgrac mu kod wynikowy z mojego postu powyżej?

    0