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

Gaszenie diody w TMS320F2812 ( CCStudio )

Kocek27 22 Cze 2007 09:37 3737 22
  • #1 4008664
    Kocek27
    Poziom 11  
    witam

    mam do wtorku do zrealizowania następujące zadanie:
    W kicie TMS320F2812 mam dwie diody: jedna to power, a drugą można ustawiać softwarowo. Tą drugą chce zgasić. Do programowania ma tylko CCStudio (dołączone na cd).

    Jak próbuje ładować standardowy program z tutoriala na chip to wywala mi jakiś błąd, ale na końcu wyświetla się, że załadowano poprawnie. Do zgaszanie diody próbuję użyć wstawki z asmemblera ( asm("..." ); ), ale to nijak nie chce działać.

    Czy wie ktoś może jak to zrobić z poziomu C? Byłbym wdzięczny za odpowiedni fragment kodu, a najlepiej cały plik C.

    Sorry, za banalność tego postu, ale procesor i CCStudio niedawno zobaczyłem pierwszy raz. Ewentualnie jakiś link z ludzkim opisem (może być po angielsku).
  • Pomocny post
    #3 4034276
    krzych21
    Poziom 12  
    Najpierw zdefiniuj port jako port ogolnego przeznaczenia, sluza do tego rejestry GPxMUX. Nastepnie w rejestrze GPxDIR zdefiniuj jako wyjscie, a zmiany portu dokonasz w rejestrze GPxDIR

    A powinno to wygladac tak
    EALLOW; //zezwolenie na zapis do rejestrow chronionych
    GpioMuxRegs.GPFMUX.bit.XF_GPIOF14=0; //ustawienie portu
    F (pin14) jako we/wy GpioMuxRegs.GPFDIR.bit.GPIOF14=1; //jako wyjscie
    GpioDataRegs.GPFTOGGLE.bit.GPIOF14=1; // zmiana stanu
  • #4 4044236
    Kocek27
    Poziom 11  
    fajny opis, dzięki,
    tylko jaką bibliotekę trzeba załączyć żeby się to skompilowało, bo mi po prostu nie rozpoznaje tych nazw.

    Dodano po 2 [godziny] 59 [minuty]:

    domyślam się, że chodzi o bibliotekę:
    #include <DSP281x_Device.h>
    tylko wtedy mi nie znajduje źródeł do tego pliku .h.
    wspaniale byłoby jakby ktoś podesłał cały projekt, który mógłbym modyfikować.
    pozdrawiam
  • #5 4051390
    Kocek27
    Poziom 11  
    ok, mam już kompilujący się kod, wstawiłem fragment kodu i z powyższego posta. Podmieniłem nawet plik .cmd, żeby bez problemu program wgrywał się na chip. I niby wszystko jest ok, ale dioda ciągle się pali, czy trzeba go jakoś zresetować, bo nie ma na płytce żadnego przycisku do resetu.
    Czy może trzeba to coś na zworkach pozmieniać.
  • #6 4053420
    krzych21
    Poziom 12  
    Przede wszystkim sprawdz do ktorego portu i pinu masz podpieta diode. Ze stronu TI sciagnij sobie dokumentacje tam jest dosc dobrze wszystko opisane. Tez na poczatku mialem problemy z zapaleniem diody.
  • #7 4071688
    Kocek27
    Poziom 11  
    witam ponownie
    dzięki wszystkim za pomoc przy programowaniu procka, udało mi się ostatecznie uruchomić ten procesor po przestawieniu zworek na bootowanie z pamięci stałej i dioda sobie mruga.
    Mam jeszcze jedno pytanie: gdzie znaleźć opis bibliotek:
    "DSP281x_Device.h"
    "DSP281x_Examples.h"
    chodzi mi na przykład o obsługę portów i timerów
  • #8 4072346
    krzych21
    Poziom 12  
    zarejestruj sie na stronie texasa tam wszystko znajdziesz biblioteki, mapy pamieci i dokumentacje. Dokumentacja zajmuje "pare stron" ale wszystko jest tam opisane opisane
  • #9 4074737
    Kocek27
    Poziom 11  
    jedno pytanie, jak się ma GPIO (np. GpioDataRegs.GPDCLEAR.bit.GPIOD0 = 0) do rzeczywistych numerów (np. port 2),
    bo to gpio jest "numerowane" literami (A, B, C...), a port są numerowane liczbami i podzielone (np. port 2 na XD, XA i jeszcze jakieś różne inne rzeczy

    szukałem opisu bibliotek na stronie ti i nic takiego nie znalazłem :-(

    pozdrawiam
  • #10 4116199
    Kocek27
    Poziom 11  
    witam ponownie
    udało mi się uruchomić diodę, a także generator pwm
    Mam teraz jedno pytanie czy ktoś może uruchomił konwerter analogowo-cyfrowy. Ustawiłem sobie w programie żeby zaświecił diodę jak napięcie na konwerterze będzie większe niż jakaś wartość.
    "AdcRegs.ADCRESULT1 > wartość"
    I dzieją się rzeczy dziwne jak podłączam sam plus do jakiejś nóżki to dioda się zapala (z w zasadzie szybko mruga). Potrafi też się zapalić od dotknięcia palcem. Jak podłączam masę to już nie wykrywa napięcia, nie wiem o co chodzi?
    Jak ktoś ma jakieś doświadczenia z konwerterem to chętnie bym o nich poczytał.
    pozdrawiam
  • #11 4119308
    coberr
    Poziom 20  
    byc moze to banalne ale podłącz wejscie ADC przez potencjometr jakis miedzy GND a +3,3V

    moze wejscie jest na tyle czule ze zbiera kazdy śmieć :)
  • #12 4135176
    Kocek27
    Poziom 11  
    Wszystko jest połączone przez potencjometr, wejście właśnie zbiera każdy śmieć, ale nie zbiera stałego napięcia (np. 1.4v). W opisie nóżek kontrolera mam jeszcze ADCREFM, ADCREFP i VREFLO.
    Wie ktoś może do czego te nóżki mogą służyć?
    Może jak tam czegoś nie podam to nic z tego mierzenia.
    Jak ktoś ma jakiekolwiek sugestie to nich da znać.

    Dodano po 1 [godziny] 58 [minuty]:

    Akurat jak napisałem posta to udało mi się rozwiązać problem, okazało się, że masę od napięcia trzeba podłączyć do VREFLO, a nie to masy całej płytki
  • #13 4153475
    ziobroo
    Poziom 12  
    Ja też właśnie przymierzam się do wykorzystania przetwornika A/C w tym procesorze. I jestem ciekawy czy nie popełniłem błędu przy projektowaniu wejścia do przetwornika. Rozumiem, że VREFLO jest połączone z ADCLO(nóżka 175 na procku). Ja w moim projekcie mam tę nóżkę połączoną z AGND, dalej wiadomo AGND jest połączona z GND i wejście przetwornika mam dołączone pomiędzy GND na płytce oraz ADCINA0 na procku. Czy jest to ok??



    PS. Tak przy okazji ADC. Gdzie mogę znaleźć przykłady dobrych programów wykorzystujących próbkowanie na dużych częstotliwościach z tym prockiem(rzędu 10MSPS).
    Chodzi o możliwość spróbkowania jak największej ilości danych. Podobno może się pojawić problem wynikający z tego, że przetwornik generuje 12-bitowe dane(zgodnie ze swoją rozdzielczością), a procesor operuje na słowach 16-bitowych, więc konieczne jest uzupełnianie tych pozostałych bitów programowo. Dobrze rozumuję? Poszukuję przykładowych rozwiązań.
  • #14 4163364
    Kocek27
    Poziom 11  
    uruchomiłem przetwornik adc testowo zadając mu napięcie z potencjometru wieloobrotowego i można zauważyć, że napięcie mierzone tak dokładnie skacze więc strasznie trudno wykorzystać te wszystkie 12 bitów bo co najmniej 2 ostatnie to szumy.
    Co do konwersji na liczbę 16 bitową:
    liczba16 = pomiar << 4;
    tyle wystarczy, żeby mieć pomiar w postaci 16 bitowej
    co do samych połączeń na nóżkach procesora to nie mam pojęcia, bo korzystam tylko z wyprowadzeń na płytce, a ich schemat jest w jednej z instrukcji na stronie TI (przykładowe programy też tam są)

    pozdrawiam
  • #15 4211783
    ziobroo
    Poziom 12  
    Próbuję zapalić diodę na mojej płytce własnej roboty.
    Niestety ta dioda jeszcze mi nie zgasła ani razu.
    Odpaliłem jakiś program przykładowy z licznikiem.
    Po czym mogę w ogóle poznać, że program się wgrał??
    Klikam file/load i potem pasek się szybko przesuwa i koniec. Jakby wszystko przebiegło bez problemów. No ale nie wiem w końcu jak to sprawdzić. W tutorialu jednym jest napisane, że mogę w watch window śledzić stan zmiennych, ale nie wiem jak je wrzucać na razie do tego okna.

    Czy te 3 linijki odnośnie zapalenia/zgaszenia diody GPIOF14 wystarczy wkleić do pliku źródłowego z tym licznikiem?? I powinno działać??
    Sory za banalne pytania. Nie mam dużego doświadczenia w programowaniu.

    Dodam, że skonfigurowałem SDFlash i wszystko ładnie działało erase/program/verify. Zworki miałem wtedy ustawione na bootowanie z Flash, a teraz zmieniłem na H0SARAM.


    No i mam kwarc 20 MHz. Ustawiłem CPU freq na 100 MHz w kodzie, a przelicznik 10/2 przy pomocy opcji GEL/Set PLL Ratio w CCS. Nie wiem czy dobrze. W SDFlash wszystko w kodzie ustawiałem i działało.
  • #16 4295294
    Kocek27
    Poziom 11  
    file/load ładuje program do ramu i mi ta opcja nie zawsze działa, lepiej ładować do romu w menu tools pierwsza opcja. Do tego musisz też podmienić plik *.cmd (na F2812.cmd).
    Ja mam całego kita i tam trzeba przestawić zworkę (którąś obok ledów), musisz sprawdzić w instrukcji. Poznasz na pewno, że się ładuje bo trwa to wszystko ponad minutę (czyszczenie najdłużej, potem zapis i sprawdzanie).

    to tyle co mi na myśl przychodzi.
    Jak by były jeszcze jakieś problemy to pisz postaram się odpowiedzieć.
  • #17 4328175
    b.tarnowski
    Poziom 10  
    Witam, od niedawna w ramach dyplomu też walcze z płytką eZdsp i procesorem TMS320F2812. Narazie wszystko ok obsłużyłem wyświetlacz LED 4cyfrowy za pomocą przerwań z Timera0 i PWM z GP Timera1 modułu EVA, teraz przechodze do sterowania kompletem sześciu PWM'ów modułu EVA. docelowo mam uruchomić falownik i podpięte do nigo maszyny. Będe czasem tu zaglądał napewno też napotkam problemy.
  • #18 4631389
    sieger
    Poziom 24  
    Dla początkujących z eZdsp: po wgraniu pliku .out ze skompilowanym programem, trzeba nacisnąć ikonkę "Run", z symbolem biegacza (albo w menu odpowiednią pozycję).

    Mając JTAG można też wykonywać program krokowo, na dwa sposoby. Można iść po krokach instrukcji programu w C, albo po krokach assemblera, odpowiednie rozkazy wyświetlą się wtedy pod każdą linijką kodu C.

    Ja używam eZdsp F2812 i CCS 2.2, zestaw od spectrum digital, rev C
  • #19 4803746
    Kocek27
    Poziom 11  
    Mam pytanie gdzie na płytce TMS230F2812 (oryginalny kit) są wyjścia binarne (i/o). Mam pdfa ze strony texasa i z niego wynika, że są na porcie P4, P7 lub P8 (tam gdzie PWMy), ale nijak nie mogę dojść które to są konkretnie piny. Czy to jest port P7 od 1 do 8?
    pozdrawiam
  • Pomocny post
    #20 5607274
    pawos7
    Poziom 11  
    GPIO to General Purpose Input Output System.
    Na jednej końcówce procesora mogą być dwie funkcje:
    wejście/wyjście lub funkcja specjalna.
    Spójrz na załącznik.
    Przełączanie odbywa się np. w funkcji Init_GPIO_regs, którą poniżej cytuję

    /* Init_GPIO_Regs(): konfiguracja GPIO zgodna z aplikacja
    j.w ustaw przed EALLOW a po wylącz - EDIS */
    void Init_GPIO_Regs(void)
    {
    /* Konfiguracja Portu A jako GPIO wyjscia */
    GpioMuxRegs.GPAMUX.all=0x0000; /* PORT A pełni fukcje GPIO */
    GpioMuxRegs.GPADIR.all=0xFFFF; /* PORT A jako wyjscie */
    /* Konfiguracja Portu F jako GPIO wejscia */
    // GpioMuxRegs.GPFMUX.all=0x0000; /* PORT F jako GPIO */
    // GpioMuxRegs.GPFDIR.all=0x0000; /* PORT F jako wejscie */
    }/* koniec Init_GPIO_Regs() */

    nara
    pawos
  • #21 5617138
    Kocek27
    Poziom 11  
    dzieki za pomoc, chociaz w sumie ponad pol roku temu sam rozwiezalem ten problem, ale dzieki w kazdym razie za usytematyzowanie wiedzy
  • #22 9610403
    lego86
    Poziom 2  
    Witam,
    jestem nowy na tym forum i dopiero raczkuję z DSP więc proszę o wyrozumiałość :)
    mam zestaw uruchomieniowy eZDSP TMS320F28335 i do GPIO25 podłączyłem sobie jedno z wejść bramki NOR (drugie wejście jest 0) i do tego diodę LED, która powinna świecić wywoływana stanem niskim na GPIO25. napisałem sobie procedury:

    GpioCtrlRegs.GPAMUX2.all = 0x0000;
    GpioCtrlRegs.GPAMUX2.bit.GPIO25 = 1;
    GpioDataRegs.GPATOGGLE.bit.GPIO25 = 0;

    i dioda nie gaśnie :( nie wiem w czym jest problem :( proszę o pomoc
  • #23 9752769
    lego86
    Poziom 2  
    juz poradzilem sobiez tym problemem :) nalezalo dopisać dodatkową linie
    GpioCtrlRegs.GPAPUD.all = 0x0000;

    Pozdrawiam
REKLAMA