At89S8253 jaki darmowy kompilator C?

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
kayron
Użytkownik
Posty: 2086
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

At89S8253 jaki darmowy kompilator C?

Post autor: kayron » 17 maja 2020, 13:25

W sumie pytanie jak w temacie, jaki darmowy kompilator C można dzisiaj znaleźć dla MCS-51.
Na początek chcę ruszyć AT89S8253, ale mam też DS89C430 oraz 450.
Na początek chcę to ruszyć. docelowo mini konsolka na 51', no i chcę spożytkować te układy.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 18 maja 2020, 2:42

KEIL do iluś tam jest darmowy ale pytanie, po co pchać się w przestarzałe 8051? W dzisiejszych czasach AVR są przestarzałe i drogie a 8051 to już w ogóle. Szkoda czasu na te uC. Mają ogromne ograniczenia. Owszem było kilka fajnych jak na zeszłe tysiąclecie z kilkoma kB RAM, 2 UART ale są drogie i za to co wydasz na takiego 8051 to kupisz potężnego ARM i kasy jeszcze zostanie.

Awatar użytkownika
kayron
Użytkownik
Posty: 2086
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: kayron » 18 maja 2020, 7:55

Tylko że ja nie muszę na nie nic wydawać, bo mi leżą w szufladzie :) Pomysł się narodził po przeglądzie szuflady i tego co w niej leży. Z drugiej strony projekty tego typu i tak są "retro", nie są nastawione na promocję jakiegoś układu czy platformy.
Inną fajną sprawa w przypadku 51, jest to że w takiej konsolce, wystarczy z karty SD załadować program do RAMu i odpalić. Coś co na AVR, się nie uda. AT89S8253 jest wręcz idealny do takie retro projektu, ma wystarczająco zasobów i sprzętowy SPI dla SD/LCD, a dodatkowo rdzeń MCS-51-X6 (6 zamiast 12 cykli zegara na instrukcję). DS89C4xx niestety wykastrował brak sprzętowego SPI.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 18 maja 2020, 8:35

kayron pisze:
18 maja 2020, 7:55
Tylko że ja nie muszę na nie nic wydawać, bo mi leżą w szufladzie
Mam w szufladzie setki układów TTL jeszcze produkcji CEMI i jakoś nie widzę powodu aby na siłę coś na nich zbudować.
kayron pisze:
18 maja 2020, 7:55
Inną fajną sprawa w przypadku 51, jest to że w takiej konsolce, wystarczy z karty SD załadować program do RAMu i odpalić. Coś co na AVR, się nie uda.
Ale na ARM nie ma już z tym problemu.
Nie patrz na 8051 przez pryzmat AVR czy PIC18. To stare, droie i ograniczone technologicznie układy.
kayron pisze:
18 maja 2020, 7:55
AT89S8253 jest wręcz idealny do takie retro projektu, ma wystarczająco zasobów i sprzętowy SPI dla SD/LCD
SPI do kart SD był dobry w zeszłym tysiącleciu, teraz używa się innych interfejsów komunikujących się w trybie 4-bit taktowanymi częstotliwościami jakich 8051 i AVR nie jest w stanie osiągnąć.
Jaki LCD chcesz podłączyć przez SPI do 8051?
kayron pisze:
18 maja 2020, 7:55
a dodatkowo rdzeń MCS-51-X6 (6 zamiast 12 cykli zegara na instrukcję).
I co to zmienia? I tak w porównaniu do ARM, nawet jakby 8051 był 1-taktowy, będzie wolny jak żółw co wynika z jego architektury i szerokości szyny danych. Tak jak nie powstają nowe wersje 8080 tak i praktycznie nie ma nowych 8051. Kompilatory nie są rozwijane. 8051 to jeden z najgorszy mikrokontrolerów (intel miał "talent" do tworzenia złych konstrukcji). Gorszy od 8051 jest chyba tylko Z-8.

Szkoda czasu na 8051, lepiej poznać nowe rozwiązania. Nie masz co liczyć na nowsze narzędzia. Jak kompilator będzie miał błąd musisz z nim żyć. Jak nie zadziała na najnowszej wersji systemu operacyjnego masz problem. Debuger jest piekielnie drogi teraz już nieosiągalny na szczęście 8051 to proste konstrukcje i bez debugera da się żyć.

Wojtek
Moderator
Posty: 2607
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: Wojtek » 20 maja 2020, 5:58

:arrow: es2
bo widzisz tak to jest że każdy znajduje przyjemność w czymś innym. elektronika to też dla wielu pasja, hobby, na szczęście każdy znajdzie coś dla siebie i nie ma potrzeby aby na siłę kogoś do swoich racji przekonywać.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 20 maja 2020, 8:18

Jest takie hobby jak archeologia :-)

Nie napisałeś jakiego LCD chcesz użyć. Zanim się narobisz i rozczarujesz obejrzyj to: https://www.youtube.com/playlist?list=P ... acjvhzPRdM i https://www.youtube.com/playlist?list=P ... 86bcULhy33. AVR jest wielokrotnie szybszy od 8051 a o sensownym wyświetlaniu grafiki nie ma co marzyć bez dodatkowego sprzętu, który kosztuje więcej niż dobry uC.

Wojtek
Moderator
Posty: 2607
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: Wojtek » 20 maja 2020, 9:10

es2 pisze:
20 maja 2020, 8:18
Jest takie hobby jak archeologia :-)
a pewnie jest też wiele innych hobby ale to forum akurat o elektronice jest
es2 pisze:
20 maja 2020, 8:18
Nie napisałeś jakiego LCD chcesz użyć. Zanim się narobisz i rozczarujesz obejrzyj to: https://www.youtube.com/playlist?list=P ... acjvhzPRdM i https://www.youtube.com/playlist?list=P ... 86bcULhy33. AVR jest wielokrotnie szybszy od 8051 a o sensownym wyświetlaniu grafiki nie ma co marzyć bez dodatkowego sprzętu, który kosztuje więcej niż dobry uC.
kolega kayron jest na tyle doświadczonym elektronikiem, że doskonale zdaje sobie z tego sprawę co i po co chce zrobić ;) daj już spokój, na każdym kroku tylko zniechęcasz do zabawy, a to jest po prostu zabawa i tyle :D.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 20 maja 2020, 9:48

Wojtek pisze:
20 maja 2020, 9:10
es2 pisze:
20 maja 2020, 8:18
Jest takie hobby jak archeologia :-)
a pewnie jest też wiele innych hobby ale to forum akurat o elektronice jest
8051 to wykopalisko.
Wojtek pisze:
20 maja 2020, 9:10
na każdym kroku tylko zniechęcasz do zabawy, a to jest po prostu zabawa i tyle :D.
Nie zniechęcam tylko pisze jak jest. 8051 nie ma co zaganiać do roboty z kolorowymi wyświetlaczami, nawet większe graficzne mono też będą problemem. naturalnie, można użyć FT8xx układ ok 2 razy droższy od 8051. Gdzie sens? Gdzie logika zwłaszcza, że w cenie FT8xx można kupić ARM. Poza tym, FT8xx nie obsłuży wyświetlacza ze sterownikiem.

W EdW jest cykl o wyświetlaczach, warto poczytac zanim się zabierze za podłączanie wyświetlacza do 8051 czy AVR, bo podłączyć się da z sensownym użyciem będą już problemy.

Wojtek
Moderator
Posty: 2607
Rejestracja: 04 sie 2002, 19:00
Lokalizacja: --
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: Wojtek » 20 maja 2020, 10:21

kolego es2
pytanie brzmiało "At89S8253 jaki darmowy kompilator C?"
i chwała Ci, w drugim poście na nie odpowiedziałeś i poddałeś w wątpliwość sensowność przedsięwzięcia, kolega kayron odpowiedział po co i dlaczego i na tym temat w sposób naturalny powinien być od tej strony zakończony.
No ale jak widać uparłeś się aby tłumaczyć rzeczy o jakich wiemy i koniecznie chcesz nawracać wszystkich na jedynie słuszną ścieżkę :D. Zrozum nie każdy musi robić tak jak Ty uważasz, nie każdy traktuje hobby z śmiertelna powagą, uda się to super nie uda się to też dobrze, w każdym przypadku jest doświadczenie i zabawa. To nie forum profesjonalistów ani spotkanie w celu opracowania założeń do projektu profesjonalnego. Nie bądź upierdliwy za przeproszeniem i daj się ludziom bawić ;), tobie na to szkoda czasu, a innym nie ale to ich czas.

Awatar użytkownika
kayron
Użytkownik
Posty: 2086
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: kayron » 20 maja 2020, 11:28

He..he... :lol: Spodziewałem się że, dyskusja szybko się rozleje, o temat a czemu nie ARM?
No bo ARM nie jest jeszcze retro.
Arhelogczna 51 ma te pewną zaletę, że można ją znaleźć w arhelogicznym sprzęcie. Choć np. taki SIMEX, który robi dla przemysłu, ma sporo prostych urządzeń (wskaźników), właśnie na tej 51, i to ATMEL 89S8252 często tam siedzi.
Zresztą,, decydując się na 8-bitowy MCU, godzę się z ograniczeniami także w dziedzinie grafiki, ale ja nie chcę robić konkurencji dla Nintendo SWITH. zresztą fajne gry można zrobić na 16 kolorach, czy palecie szarości, a do grania wystarcza 15-20FPSów.

Awatar użytkownika
kayron
Użytkownik
Posty: 2086
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: kayron » 21 maja 2020, 9:17

Zaspakajając pytanie kolegi docelowo ten wyświetlacz.
https://pl.aliexpress.com/item/32843115 ... 2e0eN20E5W
Obrazek

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 21 maja 2020, 14:09

160*128*2 (*2 bo kolor 16-bit). Wymagany bufor w RAM to ponad 40kB. Naturalnie może być mniejszy i łatki programowe ale przyjmijmy 16 barw. Na to potrzeba ponad 10kB RAM. Który to 8051 ma tyle RAM? No ok, 16-barw i łatki, co z prędkościa wysyłania danych do wyświetlacza?

Dla mnie wielkość ram dyskwalifikuje ten wyświetlacza ale można podejść jak w Arduino i stawiać piksel po pikselu przez co na jedne punkt potrzeba wysłać 7 bajtów zamiast 2 gdy wysyła się całe bloki ale nie mamy RAM. Tego typu wyświetlacze mają max taktowanie SPI 9..15MHz. Ile wyciągnie 8051 podczas transmisji kilkuset bajtów? AVR z pewnością jest szybszy od 8051 ale brak DMA powoduje, ze realny transfer jest mały. Trochę mniejszy (128x128) wyświetlacz działa tak https://www.youtube.com/watch?v=yhmGWwZ ... dex=3&t=0s można to przyspieszyć ale to zależy od wielu czynników i na pewno nie da się zrobić np tak https://www.youtube.com/watch?v=HsY9-6l ... ex=12&t=0s
Dlatego podłączanie 89S8253 do wyświetlacza 160x128 nie ma sensu (warto, co już pisałem, przeczytac EdW), chyba, że potraktuje się go jak e-papier (https://www.youtube.com/watch?v=CbpVmZB9SLU&t=3s), gdzie informacja jest odświerzana rzadko i nie przeszkadza fakt, że obraz jest rysowany długo.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 21 maja 2020, 14:21

kayron pisze:
20 maja 2020, 11:28
Arhelogczna 51 ma te pewną zaletę, że można ją znaleźć w arhelogicznym sprzęcie. Choć np. taki SIMEX, który robi dla przemysłu, ma sporo prostych urządzeń (wskaźników), właśnie na tej 51, i to ATMEL 89S8252 często tam siedzi.
I obsługuje kolorowe TFT?
A czy nie sa to projekty na 8051, gdzie widziałem napis "Monety należy wrzucać nie częściej niż co 5 sekund"? O tyle ciekawe, że zastosowany tam CoinAkceptor potrafił przyjmować do 10 monet na sekundę.

Bywało, że projektowałem urządzenia na 8051, które sterowały potężnymi ARM z kilkoma MB RAM i FLASH ale to był okres przejściowy, gdzie trzeba było zapewnić ciągłość produkcji. Rozwiązanie 8051+ARM dało czas na zrealizowanie projektu tylko na AVR, później AVR został wyparty przez ARM.

Awatar użytkownika
kayron
Użytkownik
Posty: 2086
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Re: At89S8253 jaki darmowy kompilator C?

Post autor: kayron » 21 maja 2020, 21:25

Cóż, pożyjemy zobaczymy. Mam wrażenie że demonizujesz część problemów do sztucznie wytworzonych przekonań, oraz ARDUINO. Bo jak nie 4K 120FPSow to co? To będzie, pseudo grafika jak na NESie. działało? Działało, i co ciekawe odniosło sukces? :). Naprawdę nie zawsze trzeba armaty, aby zabić z metra muchę. zazwyczaj wystarcza zwykła szara gazeta.
EDIT.
Pierwotnie faktycznie szukałem wyświetlacza 128x128, ale nie znalazłem takiego co ma na PCB złączę kart SD/MMC. Nie jest to wymóg co prawda, ale byłoby wygodniej.
Zobaczę co wyjdzie w praniu? Teoretycznie przy 24MHz, 51 jeszcze powinna się obrobić, jak wybiorą 12-bitowa paletę. 24MHz/4 = 6MHz na SPI (MAX), czyli
6 000 000 / 12bit = 500 000 pixeli/sek wypełniania, podzielić 20480 pixeli/ekran(160x128) daje całkiem znośne 24,41 FPSów.
W praktyce należałoby to w najgorszym przypadku podzielić przez 2 (silnik gry, rysowanie nowego ekranu w buforze itd) co da nieciekawe 12FPSów !! Tylko że dla gry taki współczynnik jest absolutnie niedopuszczalny, więc dąży się się do MAX 1,1 do 1,3 co daje ok 18-19FPsow, a to już jest akceptowalne, biorąc za absolutne MIN 15FPSów, aby dało się w coś prostszego grać. Choć ja dawno temu z takim FPSem przechodziłem GTA 3 na PC.
Natomiast ten przykład z wyświetlaczem 128x128, który na AVRku dusi się z biednym sześcianem, jest dla mnie nieszczęśliwym przypadkiem. wręcz książkowego przykładu, jak skopać najprostszą grafikę 3D, bo się nie chce optymalizować.

es2
Użytkownik
Posty: 109
Rejestracja: 13 mar 2018, 9:47

Re: At89S8253 jaki darmowy kompilator C?

Post autor: es2 » 22 maja 2020, 10:33

kayron pisze:
21 maja 2020, 21:25
Pierwotnie faktycznie szukałem wyświetlacza 128x128, ale nie znalazłem takiego co ma na PCB złączę kart SD/MMC.
Jakie transfery chcesz uzyskać? na AVR są żałosne na 8051 będą gorsze.
Ani AVR anie 8051 nie ma interfejsu dla kart SD, pozostaje SPI w trybie 1-bit. To działa kiepsko no i nie da się pracować z max jaki dopuszcza SD.
kayron pisze:
21 maja 2020, 21:25
Teoretycznie przy 24MHz, 51 jeszcze powinna się obrobić, jak wybiorą 12-bitowa paletę. 24MHz/4 = 6MHz na SPI (MAX),
teoretycznie bo praktycznie zapomniałeś, że 8051 niema DMA co oznacza, że trzeba pobrać daną (tu 8051 jest kiepski ze swoim DPTR), sprawdzić czy wysłano wszystka a to zajmuje czas w konsekwencji między przesyłanymi bajtami będą przerwy i średni transfer mniejszy o 30-70%. Pprzynajmniej tak jest w AVR, w 81 będzie jeszcze gorzej, bo dłużej wykonuje rozkany nawet jak jest 2 taktowy.
Do 8051 czy wielu AVR można dodac łatwo RAm ale tracisz GPIO i to dodatkowe koszty oraz komplikacja układu. Z dużo nizszą kasę zrobisz to lepiej na ARM bo na 8051, nie dość, że drogo to 100% mocy pójdzie na wysyłanie danych do wyświetlacza w ARM kilka %.

kayron pisze:
21 maja 2020, 21:25
6 000 000 / 12bit = 500 000 pixeli/sek wypełniania, podzielić 20480 pixeli/ekran(160x128) daje całkiem znośne 24,41 FPSów.
Jak wyślesz te 12-bit? SPI są 8-bit czasem 16-bit, no chyba, że użyjesz ARM ale to nie każdy ma tryby co 4-bit w tym 12-bit ale wyświetlacz przyjmuje dane 16 lub 24 bit.
Jak więc chcesz wysyłać 12-bit? Jeśli chodzi o tryb 4096 kolorów to tego w tych wyświetlaczach nie widziałem, są tryby 16, 18, 24-bit, 12 i 8 bit to rzadkość.

Bufor wyświetlacza gdzie zmieścisz? Już pisałem ile potrzeba na ten wyświetlacz. Dasz zewnętrzną RAM?

Bez bufora będziesz stawiał piksel po pikselu wysyłając 7 bajtów na piksel, gdy wysyłasz blok danych (zdefiniowane okno) po zdefiniowaniu okna (9-bajtów) wysyłasz po 2 bajty na piksel. Gdzieś mam a może nawet są we wcześniejszych linkach filmy, był tez temat na Forbocie, gdzie ARM kilkadziesiąt MHz wysyłała piksel po pikselu i dział to tak samo tragicznie jak na AVR. Dopiero użycie bufora w RAM rozwiązało problem, a najlepsze rozwiązanie to DMA, dzięki czemu można tworzyć kolejna klatkę w trakcie transferu poprzedniej.
W 8051, ja i w AVRmeg/tiny, nie ma DMA, oba (poza mega1284) nie mają wymaganej wielkości RAM.
kayron pisze:
21 maja 2020, 21:25
Natomiast ten przykład z wyświetlaczem 128x128, który na AVRku dusi się z biednym sześcianem, jest dla mnie nieszczęśliwym przypadkiem. wręcz książkowego przykładu, jak skopać najprostszą grafikę 3D, bo się nie chce optymalizować.
To zrób to lepiej ale tak jak jest w przykładach z animowanym tłem i duszkami. Okaże się, że optymalizację (np skasuj namalowane piksele, postaw nowe) diabli wezmą. Optymalizacja jest skuteczna gdy modyfikowane są fragmenty ekranu, np robisz oscyloskop, ale nie gdy po każdej klatce zmienia się praktyczne cała zawartość ekranu no chyba, ze użyjesz MP4 ale MP4 na 256bajtach RAM i 8051? Widział to ktoś?

Już wstępne wyliczenia wykazują, że ta robota nie ma sensu. W swoich wyliczeniach przyjąłeś szybkość transmisji zapominając, że daną trzeba pobrać z pamięci, przesónąc wskaźnik i sprawdzić czy wysłano wszystkie dane. 8051 jest wolny, dana przez SPI już dawno będzie wysłana, a CPU jeszcze będzie wykonywał rozkazy związane z przygotowaniem kolejnego bajtu do wysyłki.
Wpadłeś w pułapkę, w którą wpadają początkujący, przyjąłeś czas wykonania rozkazu 0 cykli przy szybkiej transmisji przez SPI. Jesli moje teorie (poparte praktyką) nie przekonuję CIę to weż oscyloskop czy analizator logiczny, napisz prosta pętlę pobierającą dane i wysyłające przez SPI i zobacz ile bajtów wyślesz w sekundę i zaręczam, ze nie będzie to co wyliczyłeś tylko zdecydowanie mniej, spodziewałbym się po 50% mniej.
Obsługa karty SD jeszcze bardzie Cię rozczaruje. Na AVR działa to kiepsko a w 8051 nie masz RAM na sensowny bufor. Czas wyszukiwania pliku będzie niewiarygodnie długi, transfery w związku z powolnym SPI kiepskie. Nie osiągniesz nawet tego https://www.youtube.com/watch?v=mluXsN6 ... dex=3&t=0s co już jest żałosne. Możesz spodziewać się ok 4 razy wolniejszej pracy o ile dodasz RAM, bez niego (nie wiem czy w ogóle znajdziesz FAT działający na kilkudziesięciu bajtach) będzie jeszcze gorzej.

ODPOWIEDZ