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

[BASCOM] SPI a instrukcja SHIFTOUT

aaadamw 02 Gru 2010 22:03 2220 7
REKLAMA
  • #1 8818612
    aaadamw
    Poziom 16  
    Witam,
    czy instrukcja SHIFTOUT ma coś wspólnego z SPI?
    używając Shiftout w jednym z parametrów podajemy pin odpowiedzialny za sygnał zegarowy. Ale jaka jest częstotliwość tego zegara? Czy da się jakoś to ustawić?
  • REKLAMA
  • #2 8819091
    mirekk36
    Poziom 42  
    Wszystko masz opisane w helpie więc skąd to pytanie ??? chyba że je bardziej sprecyzujesz. Bo na tak zadane pytanie to można tylko do helpa odesłać po podstawy działania takiego polecenia.
  • REKLAMA
  • #3 8819656
    aaadamw
    Poziom 16  
    w helpie nie znalazłem odpowiedzi na moje pytanie.
    Chciałbym się dowiedzieć czy częstotliwość wysyłania znaków za pomocą instrukcji shiftout da się ustawić np. jakims preskalerem jak w przypadku SPI.
    Czy instrukcja shiftout, a dokładnie jej zegar jest skorelowany z konfiguracją SPI. Przeglądjąc forum natknąłem się na programy w których autorzy używają shiftout i na początku konfigurują SPI.
    Ja także używam shiftout, nie konfiguruję SPI i też chodzi, jednak częstotliwść wysyłania mnie nie zadowala.
    Napisałem program który pobiera wartości napięcia z ADC i po przetworzeniu rysuje wykres na wyświetlaczu od siemensa s65 (coś w stylu mini oscyloskopiku). Wszystko działa pięknie, ale przy zegarze 16MHz, częstotliwośc rysowania wynosi max 2,5kHz. Jeżeli zwiększę częstotliwośc przerwania (ustawia flagę odpowiedzialną za pobieranie próbek), to w efekcie wykres ma jeszcze mniej próbek. Pętla główna w której pracuje program na dosłownie 40 linijek kodu(oczywiście po ustawieniu flagi w przerwaniu) w baskomie, to niemożliwe, że procek nie wyrobi się między przerwaniami (preskaler 64, licznik liczy do 105).
    Jedyne co wg. mnie spowalnia prace programu, to shiftout(w jednej pętli wysyłam trzy razy word i dwa razy byte, wiec to raczej nie jest duzo).


    na wykresie jest sinusoida o częstotliwości 50Hz i amplitudzie 12V
  • REKLAMA
  • #4 8819676
    mirekk36
    Poziom 42  
    No ok, rozumiem ale właśnie w helpie masz napisane:

    Cytat:
    The DELAY normally consists of 2 NOP instructions. When the clock is too fast you can specify a delay time(in uS).


    I to tyle na temat możliwości konfiguracji. Jeśli te 2 NOP'y to za wolno przy kwarcu 16MHz to albo użyj 20MHz albo zrób to jak się należy na sprzętowym SPI. Wtedy masz różne i przejrzyste możliwości konfiguracji.

    Dlaczego nie możesz użyć sprzętowego ?
  • #5 8819706
    aaadamw
    Poziom 16  
    Teoretycznie mogę, musiałbym trochę przerobić swoją płytkę.
    Stąd moje pytanie, czy shiftout jest zależne od konfiguracji SPI? Moge podłączyć clk i dat pod MOSI i CLK w procku oraz skonfigurować sprzętowy SPI, ale czy używająć shiftout coś to zmieni?
  • REKLAMA
  • #6 8819840
    mirekk36
    Poziom 42  
    No nic nie zmieni. Przecież shiftout jest robiony programowo więc co ma mieć wspólnego z nazwami pinów MOSI , SCK itp ???

    Nie rozumiesz jeszcze co to jest programowe SPI?? to znaczy że możesz sobie je skonfigurować na dowolnych pinach procka i nie ma żadnego związku ze sprzętowym modułem SPI.
  • #7 8823786
    aaadamw
    Poziom 16  
    Czyli z instrukcją shiftout nie da się przyspieszyć transmisji. Próbowałem ze sprzętowym SPI (spiout), ale niestety nie udało mi się uruchomić wyświetlacza.
    Przegapiłem wcześniej, że preskaler przetwornika ADC był ustawiony na auto. po przestawieniu go na 4 osiągnąłem około 5kHz. To juz jest w miarę zadowalający wynik. :)

    Oto ostatni efekt:


REKLAMA