• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
JAK to się robi ...
#11
Komunikacja prze I2C nie jest demonem prędkości. Sprawdź czy działa na 100kHz i ewentualnie spróbuj ustawić na 400kHz. Zawsze to będzie parę ms szybciej.
Czas ładownia danych do oleda może sprawdzić korzystając z funkcji micros(), odczytujesz wartość przed, po, różnica na serial.
Tu na forum wrzuciłem również bibliotekę z przykładem gdy właśnie nie jest buforowany cały ekran, wgranie jednej z 8 linii trwa oczywiście odpowiednio krócej.
Jak widzisz w ramach tego co daje Arduino można już przyspieszyć x32 , a I2C może też chodzić w UNO ok i na 800kHz, trudniej odbierać wtedy dane i nie każdy slave to ogarnie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#12
(04-05-2019, 15:38)kaczakat napisał(a): Komunikacja prze I2C nie jest demonem prędkości.
Wysłanie 1kB po I2C, nawet przy 100kHz to ok 92ms. Czas transmisji nie będzie problemem gdy użyje się przerwań. Wtedy obciążenie CPU to co najwyżej kilka procent. RAM'u na bufor wystarczy.

(04-05-2019, 15:38)kaczakat napisał(a): Sprawdź czy działa na 100kHz i ewentualnie spróbuj ustawić na 400kHz.
Standardowo biblioteki obsługujące LCD, na czas transmisji do wyświetlacza, ustawiają 400kHz. Po transmisji przywracają poprzednio ustawianą prędkość.

(04-05-2019, 15:38)kaczakat napisał(a): I2C może też chodzić w UNO ok i na 800kHz, trudniej odbierać wtedy dane i nie każdy slave to ogarnie.

Te 800kHz to sobie darujmy na AVR, bo to porada w stylu "AVR można zasilić z 7V i nic się nie stanie). Ponadto, w dokumentacji SSD1306 wyraźnie napisano, min czas cyklu sygnału SCL to 2,5us. Dawno skończyłem szkołę i może się mylę, ale mnie wychodzi 400kHz.


Przez takie "porady" przekraczania dwukrotnie dopuszczalnych parametrów, projekty na Arduino działają u autora, na stole. Próba powielenia takiego "projektu" bardzo często kończy się niepowodzeniem!
W tym przypadku proponowane jest dwukrotne przekroczenie dopuszczalnej prędkości dla AVR (w projekcie widać, że używany jest sprzętowy I2C) jak i LCD. Może do kompletu zaproponować zasilanie  uC napięciem 10V i taktowanie zegarem 32MHz?


Jakość Arduino jest taka sama jak jakość (właściwie jej brak) jego użytkowników.
 
Odpowiedź
#13
Panie ES2, proszę nie zachowywać się jak Pana ulubieni moderatorzy, na czerwono? no ja Pana proszę... Big Grin . 800kHz nie jest oczywiście zalecaną prędkością w AVR i nie w każdych warunkach zadziała. Arduino, jak Pan sam nagminnie wypomina: nie nadaje się do komercyjnych projektów, więc po co komuś zabraniać eksperymentować dla swoich potrzeb - tyłek nie zaboli, najwyżej nie zadziała.
Ja testowałem i działa Big Grin - ot urok Arduino i tego forum...
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#14
(04-05-2019, 23:09)kaczakat napisał(a): Ja testowałem i działa Big Grin
To, że u jednego zadziała nie oznacza, że u innej osoby będzie ok. Problem jest o tyle istotny, że zależnie od egzemplarza układu, napięcia zasilania i wielu innych czynników, może działać, może nie działać albo pojawią się błędy, które mogą być częste lub rzadkie.

Posiadając sprzęt i wiedzę nie ma problemu stwierdzić ile można w danej sytuacji "wycisnąć" z układów ale początkujący nie ma wiedzy i najczęściej nie ma sprzętu a jak ma nie wie jak się nim posługiwać.

To, że ja potrafię jeździ na monocyklu czy chodzić po linie nie oznacza, że początkujący to potrafi!!!
Dlatego początkującym nie należy dawać porad przekraczania dopuszczalnych parametrów, do czego potrzeba wiedzy i sprzętu.



PS1
Z AVR można wycisnąć pomiędzy 1 a 2MHz ale programowo.

PS2
Nie użyłem koloru czerwonego! Czerwony to #FF0000, kolor, którego użyłem to #FF3333
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości