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

PIC16lf1906 - odbiór 12 bitowych ramek

satanistik 08 Wrz 2013 07:56 2295 11
  • #1 08 Wrz 2013 07:56
    satanistik
    Poziom 27  

    Witam
    Muszę skonfigurować szeregowy interfejs tego kontrolera do odbioru danych w trybie synchronicznym slave. Wszystko wydaje się ok jednak nie mam pojęcia jak odebrać 12 bitową ramkę. Można ustawić max 9 bit po których zostanie zgłoszone przerwanie. Nie wiem jak odebrać pozostałem 3 bity. Sygnał końca ramki jest sygnalizowany zboczem sygnału CS, czy w przerwaniu można odczytać jakoś nie dopełniony bufor ? Jest tam kolejka FIFO więc chyba nie ma dostępu do samego rejestru przesuwnego?

    Ewentualnie miał by ktoś przykład na programową transmisję dla PIC w C?

    0 11
  • CControls
  • #2 08 Wrz 2013 09:40
    BlueDraco
    Specjalista - Mikrokontrolery

    Może by tak użyć dowolnego uC za 3..7 zł, który ma to co trzeba, czyli interfejs SPI o programowanej długości słowa, zamiast męczyć się z PICem, który tego nie potrafi?
    Programowo oczywiście da się to zrobić, ale pod warunkiem, że master jest wolny - do kilkudziesięciu kHz.

    0
  • CControls
  • #3 08 Wrz 2013 14:52
    satanistik
    Poziom 27  

    Można było - jednak wbudowany kontroler LCD jest tu najważniejszą zaletą. Większość AVR ma SPI jednak nie obsługują zmiennej długości słowa.

    Ogólnie muszę zastąpić kontroler LCD HT1621 który to ma 12 bitowe słowo kontrolne. Muszę jeszcze zdjąć analizatorem ramkę - jeżeli okaże się że wysyłana jest cała zawartość pamięci (128bit) , adres i 3 bity początkowe to w trybie 8 bitowym stracę tylko 1 ostatni bit. O ile nie będzie on bardzo istotny to będzie ok. Można by też przełączyć tryb z 9 na 8 po pierwszym bajcie ale nie wiem czy to się uda.

    0
  • #4 08 Wrz 2013 20:10
    BlueDraco
    Specjalista - Mikrokontrolery

    A płacą Ci za zrobienie działającego urządzenia, czy za obowiązkowe użycie 8-bitowego uC? Znajdziesz sporo Cortexów, które mają SPI i sterownik LCD.

    0
  • #5 08 Wrz 2013 20:20
    michalko12
    Specjalista - Mikrokontrolery

    Dokładnie! Na twoim miejscu nie zastanawiałbym się długo i pewnie wybór padłby na
    LPC11Dxx

    0
  • #6 09 Wrz 2013 08:27
    94075
    Użytkownik usunął konto  
  • #7 09 Wrz 2013 08:55
    BlueDraco
    Specjalista - Mikrokontrolery

    Problem nie polega na tym, jaka jest maksymalna długość słowa, a na tym, jakie są możliwe długości. Bez problemu odbierzesz ramę np. 24-bitową jako dwa słowa 12-bitowe, albo 12-bitową jako 2 słowa 6 bitowe. Sęk w tym, że w zabytkowym PICu nie da się ustawić długości słowa równej 6 bitów, więc trafiłeś jak kulą w płot.

    Jeśli masz jakąś propozycję rozwiązania tego na PIC - to ją podaj. Ja jedną podałem - programowy slave SPI - niestety b. wolny.

    0
  • #8 09 Wrz 2013 09:13
    michalko12
    Specjalista - Mikrokontrolery

    albertb napisał:
    Pewnie, po co wydać 2 razy mniej jak można wydać dwa razy więcej (ceny z linku)

    Nic nie wiesz na temat tego projektu poza tym, że jest tam uC + LCD, więc nie wypowiadaj się o kosztach, ta kwestia należy do autora wątku. On lub jego zleceniodawca decyduje o tym w jakich kosztach projekt ma się zamknąć.
    albertb napisał:
    I płytkę przeprojektować.

    Pewnie! Najpierw się projektuje płytkę, a potem sprawdza możliwości procesora.

    albertb napisał:
    Ale będzie na Cortexie. Trendy.

    Zdanie zbędne do dyskusji. Następny co ma jakieś kompleksy!
    albertb napisał:

    Ciekawe, co zrobić jak ramka będzie dłuższa niż 16 bitów. Bo do tyle ma ten Cortex.

    Weź człowieku opanuj się i nie pieprz głupot jak najarana nastolatka.
    Cały post mogłeś napisać w innym tonie, ale po co? Prawda? To nie w Twoim stylu!

    Dodano po 17 [minuty]:

    albertb napisał:
    PS. Co więcej sprzętowego SPI też nie użyjemy. Wystarczy spojrzeć do DS HT1621. Część impulsów zegarowych ramki pojawia się na wejściu RD a część na WR. I trzeba albo dodatkowy hardware, albo też programowo.

    A widzisz! Mając w uC dwa moduły SPI w trybie 4 bitowym można próbować to zrobić bez dodatkowych zewnętrznych układów.

    0
  • #9 09 Wrz 2013 09:14
    94075
    Użytkownik usunął konto  
  • #10 09 Wrz 2013 20:57
    satanistik
    Poziom 27  

    Pic 16lf1906 zostaje - muszę zrobić 50 płytek max 10zł/szt. Układ nie zakłada odczytu więc nie ma RD. Częstotliwość zegara to raz 100kHz a raz 2kHz. Układ wysyła 3 ramki 12 bit z konfiguracją , później całą zawartość wyświetlacza ciągiem i tyle. Ramki z konfiguracją można pominąć.

    0
  • #11 10 Wrz 2013 10:33
    94075
    Użytkownik usunął konto  
  • #12 10 Wrz 2013 11:30
    satanistik
    Poziom 27  

    Muszę mieć 4 wspólne dla LCD. Problemem jest nie to że muszę obsłużyć wszystkie segmenty ale te które są używane. Z pomiarów analizatorem wychodzi mi ok 67bit.

    Próbuję uruchomić przerwanie INT ale działa mi sporadycznie - procedura jest wywoływana raz na kilkanaście wciśnięć przycisku podłączonego do tego pinu. Wyłączyłem wejścia analogowe, wszystkie inne przerwania, pin skonfigurowany jako wejście. Próbowałem z pustą pętlą w main i nic. Co może być przyczyną takiego zachowania?

    Problemem było zastosowanie trybu pracy dla kontrolera LCD - przebieg typu B. W tym trybie jest zabezpieczenie przed składową stałą przez odcięcie dostępu do rejestrów danych LCD. Dostęp jest możliwy tylko w krótkim oknie czasowym po odświeżeniu ostatniego segmentu. Przerwanie było ok tylko brak synchronizacji powodował że nic nie było widać.

    0