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

[TMS320C6720][C/Code Composer Studio 3.3]Przerwanie zewnętrzne

maciej_333 05 Sty 2014 21:01 3117 9
  • #1 13141735
    maciej_333
    Poziom 38  
    Potrzebne mi jest w moim systemie przerwanie zewnętrzne. TMS320C67XX nie mają takich linii. Jednak dokumentacja mówi, że można wykorzystać linię AMUTE i za pomocą impulsu dostawać przerwania od dMax (taki DMA).

    Problem polega na tym, że czasem to działa, a czasem nie. Najlepsze jest to, że obecnie nie działa to przerwanie wcale. Poustawiałem wszystko zgodnie z dokumentacją. Poniżej kod:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Ponadto ustawiony jest ISTP, linia INT13 CPU jest zezwolona w IER i są załączone przerwania w CSR. Inne przerwania - np. od SPI, czy RTI pracują normalnie. Zrezygnowałem z CSL (taki API), bo to nie miało sensu. Kod powstawał gigantyczny i raczej rzadko działał. Podaje impulsy z generatora funkcji. Czas trwania to 100µs, okres 3ms, amplituda 3,3V.

    Przeczytałem już dokumentację od MCASP, datasheet, dMax i jeszcze osobny dokument na interesujący mnie temat (spraaj3). Zaglądałem nawet do erraty - sprz232f. Nic mi to nie dało. Sprawdzałem też ze sto razy adresy, bity itd. W załączniku znajduje się cały projekt dla CC Studio.

    Ma ktoś jakiś pomysł ?
  • #2 13146174
    maciej_333
    Poziom 38  
    Czy naprawdę nikt nie ma niczego do powiedzenia na ten temat ? Najlepsza była odpowiedź kogoś z TI:
    Cytat:
    Hi Maciej,

    Welcome to the TI E2E forum. I hope you will find many good answers here and in the TI.com documents and in the TI Wiki Pages. Be sure to search those for helpful information and to browse for the questions others may have asked on similar topics.

    By any chance you looked into this document which details "Configuring External Interrupts on TMS320C672x Devices"?

    http://www.ti.com/lit/an/spraaj3/spraaj3.pdf

    http://www.ti.com/general/docs/litabsmultiplefilelist.tsp?literatureNumber=spraaj3

    and the dmax user guide, http://www.ti.com/lit/ug/spru795d/spru795d.pdf

    Other info:

    There is a WIKI page with this Topic http://processors.wiki.ti.com/index.php/External_interrupt

    Regards,

    Z google umiem korzystać...

    Ponadto zauważyłem ciekawą rzecz. Jeżeli zmieniam ręcznie poziom logiczny na mojej linii, to w SPIPC2 (stany linii ustawionych jako GPIO w SPI) jest zmiana. Jednak w PDIN (stany linii ustawionych jako GPIO w MCASP) już nie. Ciekawe o co tu chodzi ?
  • #3 13147719
    Electro_FOX
    Poziom 12  
    Jak ustawiłeś CFGPIN0, a konkretnie PINCAP2 bo nie mogę się dopatrzeć w kodzie? (godzina późna, oczy zmęczone). Pamiętaj:
    The I/O pin selected by the CFGMCASP0/1/2 registers must be configured as a
    general-purpose input pin within the associated peripheral...


    Czy zmiana CFGMCASP0 na 1 wniosła jakieś zmiany?

    TMS'y są piekielnie szybkie, i czasami piekielnie uparte w konfiguracji. Na spokojnie przejrzę jutro Twój fragment kodu. Pozdrawiam.
  • #4 13150521
    maciej_333
    Poziom 38  
    Electro_FOX napisał:
    TMS'y są piekielnie szybkie, i czasami piekielnie uparte w konfiguracji.

    Szybkie może i są, jednak CC Studio raczej nie pozwala na wykorzystanie możliwości C67XX. Dosyć spory kod tworzy ten kompilator. Co do konfiguracji, to jakoś to zrobiłem. Rozgryzłem wiele problemów na podstawie dokumentacji TI, ale teraz już kończą mi się pomysły.

    Electro_FOX napisał:
    Jak ustawiłeś CFGPIN0, a konkretnie PINCAP2 bo nie mogę się dopatrzeć w kodzie? (godzina późna, oczy zmęczone). Pamiętaj:
    The I/O pin selected by the CFGMCASP0/1/2 registers must be configured as a
    general-purpose input pin within the associated peripheral...

    To załatwia niby PFUNC w MCASP i SPIPC0 w SPI. Mam to ustawione prawidłowo. Związku z PINCAP2 jakoś nie widzę. CFGPIN0 i CFGPIN1 mają niby przechwytywać stany linii w trakcie resetu. Ma to mieć zastosowanie dla drugiego, programowego bootloadera.

    Electro_FOX napisał:
    Czy zmiana CFGMCASP0 na 1 wniosła jakieś zmiany?

    Próbowałem też dołączyć sygnał do linii AXR0[7]/SPI1_CLK. Właśnie wtedy powinno się przestawić CFGMCASP0 na 1. Nic to nie dało.

    PDIN odczytywałem tylko JTAG'iem. Ten rejestr jest o dziwo R/W, może tylko odczyt w kodzie go prawidłowo odczytuje ?

    Chyba trzeba sobie darować to przerwanie... Najciekawsze jest właśnie to, że czasem to jednak działało. Wtedy jakby pomagało wstawienie breakpointu przed konfigurację tego przerwania.

    W załączniku jest nawet cały projekt.
  • Pomocny post
    #5 13151859
    Electro_FOX
    Poziom 12  
    maciej_333 napisał:
    Szybkie może i są, jednak CC Studio raczej nie pozwala na wykorzystanie możliwości C67XX. Dosyć spory kod tworzy ten kompilator.


    Dlatego przeważnie programy na TMS'y pisze się w assemblerze, masz wtedy pełną kontrolę nad procesorem. Z racji, iż program jest malutki proponuję napisać go w assemblerze (poleceń jest mało). Nie znalazłem błędu jeżeli chodzi o program i ustawione rejestry.
  • #6 13154731
    maciej_333
    Poziom 38  
    Dziękuję za analizę kodu. W sumie mam C6720, a on jest niby do jakichś 200-250MHz zależnie od wersji. Ja rozpędziłem go jednak do 300MHz. Może to jest problem ?

    Pisać kodów w asemblerze raczej nie chcę. Mam maleńkie wstawki do zapisu rejestrów nie mapowanych w pamięci, jak ISTP, CSR itd. To jednak była konieczność by odpuścić sobie to CSL. Odpuściłem sobie też klasy i programowanie wysokiego poziomu. Pisanie programu w asemblerze potrwa masę czasu. Myślę nad kolejnymi wstawkami. Tu zamierzam rozwiązywać np. układy równań liniowych i mnożyć macierze.

    Jak to przerwanie mi nie ruszy, to będzie bardzo słabo. Można kombinować coś podobnego z linią EM_WAIT, ale on jest potrzebna przy EMIF.

    Tutaj jest mój temat na forum TI.
  • #7 13424554
    kokpit11
    Poziom 12  
    Czym kolego maciej_333 programujesz uP firmy TexasInstruments (TMS320)? szukam jakiegoś fajnego programatorka oraz debuggera. Programatory Texasa są poza moim zasięgiem cenowym. Ma ktoś może na forum do sprzedania programator pod TMS320F28xxx do 100zl? Jeśli tak to proszę o odpowiedz.
  • #9 13425513
    kokpit11
    Poziom 12  
    A jakie możliwości ma XDS510PP? To jest emulator, debugger i programator w jednym? Może chcesz sprzedac tego XDS510PP?
  • #10 13425524
    maciej_333
    Poziom 38  
    kokpit11 napisał:
    A jakie możliwości ma XDS510PP? To jest emulator, debugger i programator w jednym? Może chcesz sprzedac tego XDS510PP?

    Możliwości ma duże i jest z nim dokładnie tak, jak piszesz. Tyle, że PP jest na port LPT. Wykorzystuję go do umieszczania programu w pamięci RAM procesora. Pewnie pamięć flash jakiegoś mikrokontrolera dałoby się tym zaprogramować. Nie mogę tego sprzedać, bo to nie jest mój programator. XDS100 kosztuje chyba coś koło 80-100$.
REKLAMA