• 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
Szukam mikrokontrolera...
#31
@Sas xd
 
Odpowiedź
#32
Jak wejdziesz w core Arduino czy DUE, czy STM, czy ESP32 to tam są zdefiniowane funkcje digitalWrite i odpowiadający im instrukcje na rejestrach danego uC. Nie jest to raczej assembler, bardziej C/C++, ale szybkość jest porównywalna.
Kod:
extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val)
{
    if(val) {
        if(pin < 32) {
            GPIO.out_w1ts = ((uint32_t)1 << pin);
        } else if(pin < 34) {
            GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
        }
    } else {
        if(pin < 32) {
            GPIO.out_w1tc = ((uint32_t)1 << pin);
        } else if(pin < 34) {
            GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
        }
    }
}
Całe ESP32 core Arduino jest oparte o system operacyjny RTOS i prędkość działania może być zupełnie oderwana od parametrów technicznych. Na pewno jednak warto mieć jedną taką płytkę i się nią pobawić.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#33
(09-05-2020, 18:15)elvis napisał(a): A moim zdaniem takie pisanie że się nie da to taki trolling tragiczny.
Nie tylko że się da, ale ja wierzę w kolegę @ElektronPL że obsłuży ten wyświetlacz i podzieli się efektami Smile

A co do kolorów, to nigdzie nie było mowy że ma być 24-bit. W przypadku VGA problemem jest sygnał analogowy, bo zrobienie 8bitowego dac-a jest o wiele trudniejsze, stąd 3 bity koloru. Ale skoro wyświetlacz odbiera dane cyfrowe to i 24-bitowa paleta nie będzie problemem. Bo raczej na tyle kolorów i tak zabraknie pamięci.
Porównujesz projekt ESP-VGA z kolorem 4 bit i podniecasz się, ze się da mając w du... fakt, ze w przypadku autora potrzebuje przepływności 6 razy większej! Nadal jesteś przekonany, że ESP da radę?

Już wstępna analiza zagadnienia wskazuje, ze będzie poważny problem. Może i uda mu się wyświetlić statyczne obrazki, jakieś prostokąty o ile CPU nie bedzie robic nic innego a drugi rdzeń będzie spał. Jak dojdzie do do tego realne działanie to obraz będzie tracił synchronizację i zobaczy artefakty bo jak wspomniałem, ESP nie ma 2-portowej pamięci RAM. Zamiast 2-portowej może być oo 2 razy mniejszym czasie dostępu.

Odnoszę wrażenie, że nigdy nie budowałeś karty graficznej, ja tak i wiem jakie sa z tym problemy realizując to sprzętowo a co dopiero programowo.

Oczywiście można za wzór wziąć układ TIA z Atari 2600 (warto się zapoznać z jego budową) i zobaczyć jakie problemy w pisaniu programu spowodował programowy sposób generowania obrazu. Układ TIA była taniutki ale coś za coś dlatego często w grach na Atari 2600 widać niepożądane artefakty. Jak myślisz, czemu one sa i programiści nie usunęli ich z gier? Odpowiedź jest prosta - bo sie nie da!
Jarasz się AVR z VGA, spróbuj odbierać w tym czasie dane po UART z przyzwoitą prękością. Nie zauważyłeś, że rozwiązania terminala przez VGA mają ograniczona prędkość do 1200 max 9600. Jak myślisz dlaczego? Bo CPU w czasie generowania obrazu jest obciążone praktycznie w 100%. ESP obciążone będzie mnie ale to nie oznacza, że ograniczeń nie będzie.

Niestety, początkujący, nieznający zagadnienia mając mgliste pojecie o zagadnieniu, kierują się filmikami na YT nie wnikając w szczegóły przez co dają złe porady.
Da sie zrobić nadajnik radiowy FM na RPi? Da! Nadaje się do sensownych zastosowań? Nie! Dlaczego? Bo ma duże ograniczenia i można taki nadajnik lepiej i taniej zrobić w inny sposób. Można więc traktować taki nadajnik jako ciekawostkę tak jak i generowanie obrazu VGA przez AVR czy ESP.
Już widziałem nie jednego cwaniaka, który twierdził, że się da a gdy przeanalizował zagadnienie stwierdził, że jednak nie albo będą ograniczenia.
 
Odpowiedź
#34
(09-05-2020, 22:01)ElektronPL napisał(a): @Sas xd
Co jeszcze CPU może robić poza wyświetlaniem obrazu? Zadziała w roli I2C slave 400kHz? Odbierze przez UART na choćby 115200? No nie sztuka obciążyć CPU w 100% aby wykonać jedno zadanie no chyba, ze chcesz zbudować kiepska ramkę do zdjęć.
 
Odpowiedź
#35
Oczywiście że zadziała jako slave i2c, 1-wire albo UART. Esp32 ma dwa rdzenie, więc jak nawet jeden będzie 100% zajęty obsługą wyświetlacza, drugi rdzeń może spokojnie obsługiwać te proste peryferia. Problemem może być WiFi, ale esp8266 radzi sobie i na jednym rdzeniu.
 
Odpowiedź
#36
(10-05-2020, 01:50)kaczakat napisał(a): Jak wejdziesz w core Arduino czy DUE, czy STM, czy ESP32 to tam są zdefiniowane funkcje digitalWrite i odpowiadający im instrukcje na rejestrach danego uC. Nie jest to raczej assembler, bardziej C/C++, ale szybkość jest porównywalna.
Kod:
extern void IRAM_ATTR __digitalWrite(uint8_t pin, uint8_t val)
{
    if(val) {
        if(pin < 32) {
            GPIO.out_w1ts = ((uint32_t)1 << pin);
        } else if(pin < 34) {
            GPIO.out1_w1ts.val = ((uint32_t)1 << (pin - 32));
        }
    } else {
        if(pin < 32) {
            GPIO.out_w1tc = ((uint32_t)1 << pin);
        } else if(pin < 34) {
            GPIO.out1_w1tc.val = ((uint32_t)1 << (pin - 32));
        }
    }
}
Całe ESP32 core Arduino jest oparte o system operacyjny RTOS i prędkość działania może być zupełnie oderwana od parametrów technicznych. Na pewno jednak warto mieć jedną taką płytkę i się nią pobawić.
Dzięki za polecenia, właśnie tego szukałem Smile
 
Odpowiedź
#37
(10-05-2020, 09:51)SaS napisał(a):
(09-05-2020, 22:01)ElektronPL napisał(a): @Sas xd
Co jeszcze CPU może robić poza wyświetlaniem obrazu? Zadziała w roli I2C slave 400kHz? Odbierze przez UART na choćby 115200? No nie sztuka obciążyć CPU w 100% aby wykonać jedno zadanie no chyba, ze chcesz zbudować kiepska ramkę do zdjęć.
Bez problemu DUE mogło by używać peryferyjnego SRAMu bo pinów w PORCie starczy, tylko za dużo zabawy. A wgl kiedy ja powiedziałem że do moich zastosowań wystarczy DUE? Nie wystarczy stąd szukam czegoś innego.
PS: Gdyby CPU był zajęty tylko wyświetlaczem to jakim cudem się grafiki co jakiś czas zmieniają.
 
Odpowiedź
#38
A czy ESP32 jest coś na wzór DDR (pinMode) bo np. Arduino DUE tego nie wymaga.
 
Odpowiedź
#39
Jeśli chcesz sterować pinami z poziomu rejestrów to najlepiej przeczytać https://www.espressif.com/sites/default/...ual_en.pdf
albo chociaż fragment. Znajdziesz tam adresy rejestrów, możesz ich używać jak na każdej innej platformie.
Jedyne to jest nieco nietypowe na ESP32 to "GPIO Matrix", ale poczytasz to sam zobaczysz o co chodzi.
 
Odpowiedź
  


Skocz do:


Przeglądający: 2 gości