SW/HW SPI i Arduino

Oprogramowanie sterownika drukarki i do łączenia komputera z drukarką
Awatar użytkownika
samezrp
Postów w temacie: 3
Posty: 1022
Rejestracja: 29 paź 2016, 15:57
x 66

SW/HW SPI i Arduino

Post autor: samezrp »

Szukam kogoś, kto ma doświadczenie z Arduino i SPI.
Na forum Fabrykatora z @Garrethem próbujemy odpalić na DUE3DOM (Arduino Due) wyświetlacz MINI12864. Na SW SPI udało mi się go odpalić, teraz próbuję na HW SPI.
Wczoraj potwierdziłem podejrzenia @Garretha, że problem z wyświetlaczem wynika z tego, że jest on za wolny do HW SPI. Jemu nie udało się podejrzeć na wyjściu CS porządnego sygnału przy HW SPI, ja wczoraj podłączyłem oscyloskop i rzeczywiście wyraźnie na HW SPI sygnał jest ok 5x szybszy niż przy SW.
I teraz do rzeczy. Próbowałem różnych metod spowolnienia HW SPI, zgodnie z:
https://www.arduino.cc/en/Reference/SPISetClockDivider
Niezależnie od tego czy używałem SW czy HW SPI ustawienia jw. kompletnie nic nie zmieniały. Zero reakcji na spowolnienie. Czy jest wśór Was ktoś,, kto to kiedyś ćwiczył?
Już doszedłem do analizy bibliotek SPI i niestety nie wszystkie funkcje są zaimplementowane, nie można ustawić zegara bezpośrednio, tylko poprzez clock dividera, ale jak wcześniej napisałem to nie działa.
BTW jak to jest zawsze, w trakcie pisania tego maila wpadłem na pomysł obserwacji SCK, bo do tej pory podglądałem tylko CS, no ale po CS nie było widać zmian zegara.
Awatar użytkownika
samezrp
Postów w temacie: 3
Posty: 1022
Rejestracja: 29 paź 2016, 15:57
x 66

Re: SW/HW SPI i Arduino

Post autor: samezrp »

Kolega @dziobu pomógł, i to bardzo skutecznie. Dzięki za nocny maraton :)
Awatar użytkownika
dragonn
Zasłużony
Postów w temacie: 1
Posty: 6384
Rejestracja: 12 gru 2016, 21:50
Lokalizacja: Opole
Drukarka: LUME
x 1455

Re: SW/HW SPI i Arduino

Post autor: dragonn »

samezrp pisze:Kolega @dziobu pomógł, i to bardzo skutecznie. Dzięki za nocny maraton :)
Jak masz odpowiedź to pewnie dobrze by było ją tutaj napisać dla potomnych :P.
Awatar użytkownika
samezrp
Postów w temacie: 3
Posty: 1022
Rejestracja: 29 paź 2016, 15:57
x 66

Re: SW/HW SPI i Arduino

Post autor: samezrp »

Zdecydowanie to zrobię, ale muszę poskładać wszystko do kupy po tej nocnej walce.
I tu, i na Fabrykatorze. Genralenie problem polega na tym, że to co podejrzewał @Gareth, Arduino Due jest za szybki na HW SPI. Nie byłoby problemu, bo można ustawić SPI wolniej, ale... Okazuje się, że autor kodu biblioteki U8Glib - tu stek niecenzuralnych słów - przed odpaleniem transmisji do kontrolera robi backup ustawień SPI, ustawia po swojemu, transmituje dane i robi recover ustawień SPI. Zatem ilebyśmy się nie naustawiali SPI transmisja do LCD i tak idzie tak, jak sobie ustawił baran w bibliotece. A człowiek zaczyna wątpić w swoje umiejętności, bo co by nie zrobić widać, że clock jest za szybki a wymuszenie ustawień SPI nic nie zmienia.
To + dobranie odpowiednich ustawień (MODE 0 i clock = 4MHz) dla MINI12864 dało poprawne działanie HW SPI i daje dlaszą możliwość pożenienia MINI12864 LCD z DUE3DOM/ArduinoDue.
Awatar użytkownika
dziobu
Zasłużony
Postów w temacie: 1
Posty: 8936
Rejestracja: 28 gru 2016, 16:38
Drukarka: ZMorph 2.0(S)
x 5869
Kontakt:

Re: SW/HW SPI i Arduino

Post autor: dziobu »

dragonn pisze:Jak masz odpowiedź to pewnie dobrze by było ją tutaj napisać dla potomnych :P.
Tak na teraz, ponoć działa to.

Teraz jeszcze sprawdziłem że w sumie można bezproblemowo dodać obsługę DMA; a że było by to szybkie to można olać czekanie na koniec wysyłki (przy zegarze 4MHz wysłanie zawartości całego LCD to <2.5ms; liczę tylko blok danych). Wymagało by to tylko synchronizacji z obsługą karty no bo to nie może działać jednocześnie. No i grzebania w bibliotece u8glib, ale skoro i tak nie jest rozwijana to żadna przeszkoda.
Co prawda DMA jest masakrycznie biedne ale wątpię żeby inne biblioteki z tego korzystały także nie powinien to być problem.
Załączniki
kod2.rar
(2.66 KiB) Pobrany 133 razy
samezrp
ODPOWIEDZ

Wróć do „Firmware'y i hosty”