51

Nov 14, 2006 61 Replies

dziadek Ben napisał(a):

Rodzina DSxx firmy Dallas to wyjątek potwierdzający regułę. Nie ma się co oszukiwać, stara poczciwa 51' to przeżytek i jej czas powoli przemija. Nawet najbardziej wyrafinowane klony 51' nie usuną wszystkich jej wad. A tak na marginesie to skoro 51' jest taka wspaniała to czemu wszystkie jej ulepszenia coraz bardziej upodabniają ją do rodziny AVR? Moim skromnym zdaniem nie ma sensu męczyć się z 51' skoro można to samo zrobić prościej, szybciej i taniej.

Pozdro

Jak napiszê, to mnie zjecie! Na szczê¶cie "d¿entelmeni nie rozmawiaj± o pieni±dzach".

te¿ chcia³bym wiedzieæ :(((

Czy ja wiem.. jak patrze na katalog z programami na dysku to troszke tego porobilem, wszystko na wlasne potrzeby, najbardziej rozbudowane urzadzenie to centralka telefoniczna, obecnie strugam predkosciomierz z drogomierzem spiete z LCD od nokii 3310. Fakt ze nie jest to szczyt technologii cyfrowej ale do tej pory nie mialem problemu nie do przeskoczenia.

Użytkownik Adam Dybkowski napisał:

W porzadku, wiem ze sa rzeczy nie do wykonania na MCS51 czy tez niepraktyczne do pisania w asm, ale nalezy pamietac ze jest cala masa zastosowan w ktorych ta rodzina spisze sie idealnie i nie widze powodu do dyskryminacji proca "bo stary" zwlaszcza jesli jest w ciaglym uzyciu, jest doskonale opisany i oprogramowany

lol - do lamusa trzeba by w takim razie odeslac iapx86 - korzenie architektury obecnych PC to 1978 a korzenie archtektur Intel'a to 71 -

73... Co te PC jeszcze robia ?- pamietajmy i o dziedzictwie ISA ktora pokutuje w dzisiejszych PC - na dobra sprawe nawet najnowasza Vista M$ bedzie durniec na nawet najszybszych wieloprocesorowych konfiguracjach przy obsludze FDD...( timer, pc speaker itd itd itd)

lol - w czasach konsturowania 8051 nei programowana w C - byl on taki pod wzgledem popularnosci jak dzis PL/I czy Modula. Byc moze po prostu 8051 nalezy programowac w assemblerze?

W takim razie tym bardziej nie rozumiem obrony tej architektury.

Spróbuj za pomoc± 51 skonfigurowaæ Spartana 3S200 w kilka milisekund w trybie 8-bitowym równoleg³ym. Zadanie jest bardzo proste i sprowadza siê do napisania programu przepisuj±cego blok danych z pamiêci na port IO; procesor ma sporo, bo 48MHz i 4 cykle na instrukcjê zamiast

  1. ¯yczê powodzenia. Na AVR i ARM to banalne, ale one z kolei nie maj± USB2.0...

Pozdrawiam Piotr Wyderski

Owszem, swego czasu nale¿a³o tak w³a¶nie post±piæ. Pó¼niej mo¿na by³o ju¿ tylko inwestowaæ olbrzymie ¶rodki w wynajdowanie rozwi±zañ, które pozwol± tej architekturze osi±gn±æ wydajno¶æ konkurencyjnych rozwi±zañ. Uda³o siê to zrobiæ, ale wynik w ¿adnym stopniu nie przypomina pierwowzoru. Natomiast na MCS51 dokonano "rewolucji" zmniejszaj±cej liczbê cykli na instrukcjê z 12 do 4. Wot, technika.

Zgadza siê, korzenie. MCS51 za¶ jest taki, jaki by³ w 1980.

To prawda, w czasach konstruowania 8051 tak w³a¶nie by³o. Ale -- popraw mnie, je¶li siê mylê -- mamy obecnie rok 2006.

Nawet programuj±c w asemblerze nie wyplujesz na tym procku strumienia 10MiB/s na port IO.

Pozdrawiam Piotr Wyderski

AlexY napisał(a):

Ależ nikt nie twierdzi, że na '51 nie da się czegoś zrobić. Chodzi tylko o to, że program realizujący te same operacje napisany w asemblerze AVRa będzie kilka razy szybciej działać, mniej zajmować pamięci i - co chyba najważniejsze - napiszesz go szybciej. To samo dotyczy programów w języku C. Kompilator IAR na '51 wygeneruje pogięty kod bo architektura '51 mało jest optymalna ze względu na potrzeby języka C. A ten sam kod źródłowy na AVRa zajmie dużo mniej rozkazów.

Przykładowy kawałek dla procesora AVR XORujący 2 bloki w RAMie (standardowy fragment kodu np. przy szyfrowaniu), każdy przykładowo rozmiaru 200 bajtów; przyjmijmy dodatkowo, że adresy bloków są podzielne przez 4.

wejście:

- X - wskazanie na pierwszy blok danych (r27:r26)

- Y - drugi blok danych (r29:r28)

- Z - miejsce na wynik (r31:r30)

- r16 - rozmiar bloku danych (200)

loop: ld r17, X+ ld r18, Y+ eor r17, r18 st Z+, r17 dec r16 brne loop

Pętla zajmuje 12 bajtów pamięci Flash a jej jeden obrót trwa 10 taktów zegara (ostatni przebieg 9 taktów).

Wersja dla procesora ARM:

wejście:

- r0 - wskazanie na pierwszy blok

- r1 - wskazanie na drugi blok

- r2 - wskazanie na wynik

- r3 - rozmiar bloku danych (200)

loop: ldmia! r0,{r4-r8} ldmia! r1,{r9-r13} eor r4,r4,r9 eor r5,r5,r10 eor r6,r6,r11 eor r7,r7,r12 eor r8,r8,r13 stmia! r2,{r4-r8} subs r3,r3,#20 bne loop

Powyższa wersja działa najszybciej operując w każdym obiegu na 20 oktetach danych (5 słów 32-bitowych z każdego bloku), ale zajmuje niestety aż 40 bajtów programu. Oczywiście da się tą pętlę wykonać też na dowolnym bloku danych 8-bitowych niekoniecznie wyrównanych w pamięci, ale będzie działać znacznie wolniej mimo iż zajmie mniej pamięci programu.

Napisz to samo dla '51 i zamieść na grupie - porównamy.

AlexY napisał(a):

Ależ szczególnie jeżeli chodzi o małe proste projekty to programy w asemblerze AVRa pisze się po prostu przyjemniej niż w asemblerze '51. Jak trochę popiszesz to zrozumiesz, o czym mówię.

Architektura? Có¿... Zombie '51 jeszcze zipie z innych powodów ni¿ architektura. Nie wiem jak sprawa licencji na '51, ale, o ile Intel w ogóle o ni± zabiega, to musi byæ bardzo liberalna. Czy jest jeszcze jaki¶ rdzeñ bêd±cy w ofercie tak wielu producentów? Jedynie ARM mo¿e siê tu mierzyæ, ale to niekoniecznie ta sama klasa. Czy który¶ z AVR'ów mo¿e siê pochwaliæ tak fajnymi peryferiami jak np. procesory od AD? Rdzeñ '51 jest dostêpny w wersji soft, czy AVR mo¿e siê tym pochwaliæ? ARM te¿ jest w wersji soft, ale odp³atnie, a wszelkie projekty "soft" niezale¿ne od ARM zosta³y przez t± firmê skutecznie zaatakowane.

S± '51 jednotaktowe.

Masz chyba na my¶li USB2.0 w trybie HiSpeed.

pzdr mk

Użytkownik Adam Dybkowski napisał:

Tak wiem... po prostu nie warto, komercyjnie zapewne macie racje.

Do moich dotychczasowych potrzeb najwiekszy potrzebny mi procek to byl

89C52 bo do centralki zabraklo mi bodajze pol kilo flasha i peryferii (zachcialo sie wyswietlania na HD44670 co sie na liniach dzieje)

Mam czas :) nie spieszy mi sie, nie robie tego zarobkowo (a jesli to narzucam termin: "jak bedzie to bedzie")

IMHO dla x51 jedynym slusznym jezykiem jest asembler

Zmuszac mnie do myslenia przy niedzieli? To nieludzkie ;) Ale spoko, znajde chwilke i napisze, nie wiem na kiedy, zaznaczam sobie watek. BTW narzucanie wykonania zadania danym prockiem jest niewlasciwym podejsciem, jak wspomnialem wczesniej do tej pory kazdy problem rozwiazywalem ale juz rozgladam sie za nastepca bo mam co najmniej 2 zadania przerastajace mozliwosci AT89C2051 czy tez AT89C52 ktorych to kilka sztuk jeszcze mam.

Użytkownik Piotr Wyderski napisał:

hm... Zaczalem nauke ASM od poczciwego C64 przy lekturze bajtkow, C&A i genialnej ksiazki K. Gajewskiego i B. Radziszewskiego "C64 od srodka", po porownaniu proca motoroli do intela bylem zniesmaczony 12-ma cyklami zegara na cykl maszynowy ale w tamtych czasach byl to jedyny dostepny jednoukladowiec za przyzwoite pieniadze, bylo duzo publikacji, tanie programatory, zyc nie umierac a obecnie nie mam checi uczyc sie kolejnego proca do czasu az x51 przestanie spelniac moje potrzeby

Jak wspomnialem _moje_ potrzeby nie sa az tak duze, gdybym musial zrobic to co piszesz pewnie uzylbym malej pamieci flash z zapisanymi wartosciami do CFG 3S200, generator i licznik.

Motorolka [? Mostek chyba] niby tego nie miala, ale tez zegar byl znacznie wolniejszy. W sumie efektywnie podobnie szybkie byly.

A tu sie zaczelo od sytuacji odwrotnej - kolega zna inny procek, a chce sie douczyc 51. Nie bardzo warto..

J.

U¿ytkownik "AlexY":

Przestan powtarzac mit o Motoroli tym bardziej, ze jak piszesz, programowales.

formatting link
Heliogabal

Jasne, w _tamtych_ czasach. ;-)

Wiêc siê nie ucz; je¶li znane Ci narzêdzia spe³niaj± Twoje potrzeby, to gratulujê i... zazdroszczê -- ja niestety nie mogê dobraæ chipu do swoich potrzeb. Albo mam ARM z du¿± moc± obliczeniow± i ciekawymi peryferiami (Ethernet, I2S), ale bez USB2.0 HS i z por±banym pinoutem, albo FX2 z USB2.0 i przyjemnym pinoutem, ale z nêdznymi peryferiami i dramatycznie niewydolnego obliczeniowo.

Gdyby¶ mia³ pojedyncz± konfiguracjê, to by¶ sobie poradzi³ bez licznika, bo 3S200 potrafi samodzielnie wci±gn±æ dane konfiguracyjne z zewn±trz. Niestety moje wymagania s± do¶æ specyficzne:

a) konfiguracji nie jest jedna, lecz (bardzo) wiele;

b) maj± byæ trzymane w kostce 1GiB NAND flash

-- a z nimi siê rozmawia inaczej ni¿ ze zwyk³ym flashem;

c) rekonfiguracja ma byæ b³yskawiczna i obowi±zkowo zmie¶ciæ siê w po³owie czasu od¶wie¿ania SDRAM, by dane wyprodukowane przez poprzednie "wcielenie" FPGA by³y poprawne i dostêpne dla nastêpnego.

d) ma byæ mo¿liwo¶æ skonfigurowania FPGA przez USB.

Sprawa jest do¶æ prosta, bo wymaga jedynie wczytania megabitu danych z flasha i przes³ania ich jak najszybciej do FPGA po 8-bitowej magistrali i pomachania liniami steruj±cymi. Ale te dane maj± lecieæ jak najszybciej (ogranicza flash, który ma taktowanie 25MHz), a nie z jak±¶ komiczn± prêdko¶ci± oferowan± przez rdzen FX2. Chêtnie bym tam wstawi³ ARM 9200 (bo ma m.in. Ethernet), ale on ma jedynie USB w trybie Full Speed i jako taki mnie zupe³nie nie interesuje.

Pozdrawiam Piotr Wyderski

Adam Dybkowski napisał(a):

Oj nie prędko umrze, skoro niektórzy producenci elektroniki trzymają się tego procka jak rzep psiego ogona. Niektóre przykłady mogą szokować, zgadnijcie co to:

formatting link
ułatwienia dodam, że sidzi to w najnowszej centralce ppoz jednego z wiodących (niestety) na polskim rynku producentów. Sory za niską jakość fotki - telefon. pozdrawiam Robert

Użytkownik J.F. napisał:

MC6800 (6500) z komodyny napedzana 1MHz, podobno do 2MHz podkrecalna, w efekcie wydajnosc podobna do intela tyle ze niektore rozkazy to i 7 cykli mialy, tak ze tu intel jest szybszy bo zaden rozkaz nie robi dluzej niz 4 cykle

z przesiadka z motoroli na intela nie mialem klopotu, jedynie na poczatku z peryferiami bo intel ma inna logike sygnalow sterujacych :)

hmm.. tu mysle ze zaleznie od potrzeb male wlasne projekty - tani 51 cos z perspektywa rozwoju - atmegi, atiny i inne na czasi do pracy - arm i dsp

Użytkownik Heliogabal napisał:

Mam jeszcze ze 3 (chyba jeszcze) sprawne plyty, az sprawdze nadruki bo dalbym se co-nieco obciac ze to mialo motki logo, to byly czasy internetu lupanego tak ze nie mialem zadnych pdfow i bardzo mozliwe ze sie myle caly czas posadzajac motorole o produkcje tych procow

Tu masz full story:

formatting link
na 6800 byl on wzorowany, ale dosc luzno.

J.

Piotr Wyderski napisał(a):

Poczytaj w dokumentacji twojej kostki SDRAM o trybie self refresh. Chyba większość jeżeli nie wszystkie SDRAMy muszą to mieć.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required