Hlavní navigace

Názory k článku
Mikrořadiče a jejich aplikace v jednoduchých mikropočítačích (3)

Ondřej Caletka aura:97
10. 8. 2010 8:11 Nový

Drobná chybka

celé vlákno

Řešení tohoto problému spočívá v tom, že horních 128 bajtů paměti údajů je dostupných pouze při nepřímé adresaci (tj. použití instrukcí s operandy @R0 a @R1), zatímco dolních 128 bajtů paměti údajů a 128 bajtů se SFR je dostupných při adresaci přímé.
Přesněji by mělo být uvedeno, že spodních 128 bajtů paměti je dostupných jak při přímé, tak při nepřímé adresaci.

Pavel Tišnovský aura:98
10. 8. 2010 23:47 Nový

Re: Drobná chybka

celé vlákno

Máte samozřejmě pravdu, napsal jsem to poněkud nejasně, pokud R0 nebo R1 obsahují hodnotu menší než 0×80, tak se přes ně adresuje pomocí @R0 a @R1 „spodní“ RAM.

jc
jc (neregistrovaný) 88.146.126.---
10. 8. 2010 10:18 Nový

pekne

celé vlákno

Fakt hezkej clanek. Tohle by se mi hodilo dokud sem chodil na stredni a nutili nas programovat 51cky. Sam mam mnohem radsi avrka a nesnasim picaky na kterejch sem zacinal (aspon teda tu 14bitovou radu). Ale nejradsi mam AT91SAM7S – je to prakticky ARM7TDMI s periferiama mikrokontroleru. Trosku slozitejsi na rozjeti ale kodovani v Ccku pro to fakt stoji za to. Zadny kompromisy. Navic jde kod casto lehce portovat pro lepsi SAMy, na kterejch uz i jede linux.

jc
jc (neregistrovaný) 88.146.126.---
10. 8. 2010 10:20 Nový

Re: pekne

celé vlákno

Jee uplne sem zapomel. Strasne se primlouvam za tutorial do FreeRTOS treba, u tech AVRek.

Pavel Tišnovský aura:98
10. 8. 2010 23:54 Nový

Re: pekne

celé vlákno

Jasně, chystám se na to :-)

atarist
atarist (neregistrovaný) ---.redhat.com
10. 8. 2010 10:49 Nový

Re: pekne

celé vlákno

Co je na ctrnactibitovych PICech tak strasneho? Co tak sleduju, tak v amaterskych konstrukcich se dost casto pouzivaji. Je fakt, ze ten assembler je trosku jiny nez Intelackej, ale s pomoci maker si clovek muze nasekat stare dobre podminene skoky :-) nebo presuny mezi registry (s meziuschovou ve W). A mit mikroradic v cene jednoho tranzistoru (±) taky neni k zahozeni…

pico
pico (neregistrovaný) ---.formlessnetworking.net
10. 8. 2010 17:49 Nový

Re: pekne

celé vlákno

Data z pamate programu sa vyberaju pomocov callu na retlw – v pripade netrafenia program vacsinou zhavaruje.
Absencia akehokolvek pristupu k zasobniku (okrem call, ret) – nemoznost prepinania kontextov.

Josef Pavlik aura:92

Re: pekne

celé vlákno

Pokud se ti nelibi assembler PICa, tak pro nej existuje pekny prekladac C. Hledej MikroC v google a najdes ho. Neni sice zadarmo a je jenom pro woknousy, ale je fakt dobrej. Delal jsem s nim peknych par projektu od naprosto mikro projektu jako automaticke zapinani televize po zapnuti do site (program na 10 radku) az po interface pro ovladani svetel pripojeny pres ethernet a ovladatelny/con­figurovatelny pres web interface. To mimo jine i ukazuje na neuveritelnou flexibilitu PICu.

pico
pico (neregistrovaný) 81.218.219.---
11. 8. 2010 9:48 Nový

Re: pekne

celé vlákno

Ja som nepisal ze sa mi nepaci assembler PIC. Ale ked uz sme pri prekladacoch, tak to je dalsia vec v neprospech PIC. Zatial co gcc-avr predstavuje aspon v oblasti hobby defacto standard, sdcc a najma jeho pic14 port je minove pole. Komercne prekladace byvaju zvacsa platene alebo obmedzene.
Samozrejme prekladac sa da kupit alebo cracknut a prevadzkovat vo wine, program sa ma napisat tak aby sa do stringov trafil a bez riadenia behu programu modifikaciou zasobnika sa da tiez zaobist. Niekomu to moze vadit viac, niekomu menej. Troll to nazve nářkom.

mixal11 aura:64

Re: pekne

celé vlákno

inak kedysi som na AVRku pouzival nejaky komercny prekladac C, zistil som ze nefunogvali dobre kostrukcie if else … presiel som na gcc, odvtedy bez problemov.
avr gcc je fakt dobry

jc
jc (neregistrovaný) 88.146.126.---
10. 8. 2010 23:13 Nový

Re: pekne

celé vlákno

+ to nejhorsi: BSF STATUS,RP0. Z toho uz me fakt uz bolela hlava.

I/O
I/O (neregistrovaný) 147.32.68.---
10. 8. 2010 23:30 Nový

Re: pekne

celé vlákno

Váš nářek se dá přirovnat k nářku člověka, jenž si koupil kosu, očekávaje od ní schopnosti sekačky. Jinými slovy – chyba není na straně PICů. PICy mají IMHO výhodu v tom, že se dají použít v místech, kde nahrazují pár (desítek) jednodušších logických obvodů, jejichž funkcionalitu opravdu nahradím pár stovkami instrukcí, na tišťáku mi to zabere plochu pouzdra o 8–16 vývodech, má to zanedbatelnou spotřebu a nároky na další součástky a vyjde to doslova na pár korun (ceny začínají někde na 15 korunách za kus, u AVR cca na 35). Plnohodnotný vývojový software zdarma a technická podpora 24/7 zdarma přímo u výrobce je taky velké plus. Za takových podmínek mi opravdu nemožnost hrabat se v zásobníku nepřipadá jako kardinální. Když se tu v 90. letech objevily PICy, byla to pro mě jedním slovem bomba. Dnes už s nimi sice do styku nepřicházím, ale určitě bych je nevylučoval z okruhu posuzovaných součástek při návrhu nějaké nové konstrukce.
Což mi připomíná, že si uvědomuji, že jsem v životě už měl co do činění taky s kupou různých architektur (6502, 8080, Z80, 6809, 8051, PIC, AVR, HC08, 80×86, 68k, ARM, Z180, ADSP-21) a musím konstatovat, že každá měla nějakou super vlastnost a zároveň nějakou nepříjemnou (snad kromě 6809, u níž si na nic nepříjemného nevzpomínám a dodnes je mi záhadou, proč se této technologii nedalo více prostoru – asi jediný 8bitový procesor, který pohodlně a po všech stránkách strčil do kapsy své tehdejší 16bitové současníky; pro mikrořadič na bázi 6809 by byla opravdu radost programovat). Základem ale je uvědomit si co chci přesně dělat a za jakých podmínek a z toho vycházet – to je polovina úspěchu.

Pavel Tišnovský aura:98
10. 8. 2010 23:54 Nový

Re: pekne

celé vlákno

Co jsem zjišťoval, tak se 6809 ve své době moc Motorole nehodila do krámu, protože byla vyvíjena paralelně k 68000 úplně jiným týmem, takže další vývoj tohoto mikroprocesoru nakonec stopli.
Je to škoda, s velkou pravděpodobností to skutečně byl nejlepší osmibitový mikroprocesor (dva zásobníky – Forth :-), dost ortogonální instrukční sada, „zadrátované“ násobení), dokonce prý jeden z posledních mikroprocesorů, které byly ručně navrženy a optimalizovány (žádný mikrokód).
Nakonec Motorola kromě mikroprocesorové řady 68000 začala dělat i mikrořadiče, ale například 68HC11 (asi jejich nejznámější mikrořadič) se spíš podobá původní 6800 než 6809 a celkově má trošku podivnou instrukční sadu.

Pavel Tišnovský aura:98
10. 8. 2010 23:58 Nový

Re: pekne

celé vlákno

Ještě je docela pěkně vyřešená Z8 od Zilogu.

jc
jc (neregistrovaný) 88.146.126.---
11. 8. 2010 0:25 Nový

Re: pekne

celé vlákno

Tak ja treba chci v mistnim elektru kopit mikrokontroler a programovat. Tady ten cenovej rozdil je 30kc za 12bitovej PICak (s tema nemam co k docineni jeste) nebo 40kc za attiny2313, kterej je vybavou nekde uplne jinde. A co se tyce ostatnich architektur, to je tady bud hodne drahy (z80, MCS 51) nebo to proste neni. Jediny co nakupuju z Prahy je AT91SAM7s protoze to stoji za to. A mimochodem i ten je na tom cenove lip nez spousta PICaku a AVRek :)

I/O
I/O (neregistrovaný) 147.32.68.---
11. 8. 2010 2:55 Nový

Re: pekne

celé vlákno

No jo, jenže je třeba si uvědomit, že ty součástky se primárně nevyrábějí kvůli hrstce domácích bastlířů. :-) Rozdíl 20 korun u jedné takové součástky může v businessu znamenat rozdíl mezi obchodním úspěchem a neúspěchem. Roli navíc hrají i další parametry, jež bastlíř obvykle příliš neřeší – např. příkon. Jestliže AVRtiny2313 bere nějakých 20 mW, zatímco PIC12F1823 cca 3 mW, je to nejspíš pro kutila úplně jedno. Ale jestli to má být např. součástí nějakého baterií napájeného bloku, kdy se šetří každý miliwatt, resp. nějakého rozsáhlejšího bloku, kdy se počítá každý miliwatt vyzářeného tepla, může to být opět dost rozhodující faktor. Důležitou roli může hrát i to, v jakých pouzdrech je ta která součástka k disposici, v jakém balení (kvůli osazovací mašině) apod.
Zkrátka profík na to musí koukat z trochu jiných úhlů pohledu. Věřím tomu, že Wozniak nebo třeba Jack Tramiel by ve svých počítačích taky bývali raději viděli Z80, než 6502, kterou tam nakonec dali. Jenže pak by se jim do ceny nevešely další komponenty – např. Spectrum za Z80 zaplatilo daň ve formě absence pořádných audio/video chipů. Podobná dilemata řešili i architekti Ondry a jeho plánovaných nástupců, pokud se chtěli dostat pod 3500,– Kčs místo tehdy obvyklých 14000,– Kčs za podobný přístroj. To pak máte korunku ke korunce, watt k wattu, jedno k druhému a je z toho gordický uzel. :-)

jc
jc (neregistrovaný) 88.146.126.---
11. 8. 2010 20:12 Nový

Re: pekne

celé vlákno

S tou energii se celkem nechci hadat, na to bych stejne pouzil neco uplne jinyho. Ale s tim businessem – me je to jedno :D rikam jak to funguje u tohodle ‚domaciho bastlire‘. A mimochodem Z80 i 6502 sem programoval taky, ciste proto ze tu mam C64, Didaktika M, gameboy a jeden klon Z80tky. Sice je to mozna pekny kvuli nostalgii ale ‚bohuzel‘ uz se to nejak levne koupit neda. Asi uz je to spis tak max. do nejakyho ‚revival‘ domaciho pocitace. A nepochopte me spatne, rozhodne nejsem zaujatej proti jakykoliv jiny architekture krome AVR a ARM.

Josef Pavlik aura:92

porty MCS51

celé vlákno

na techto mikrocontrollerech jsou opravdu krasne porty. To ze jsou soucasne vstupy a vystupy (s otevrenym kolektorem, slabym pullupem a tranzistorem, ktery je pritahne nahoru po zmene z L na H), to je hardwaroveho hlediska skvela vec. A to, ze se daji ovladat po bitech, to je skvela vec zase ze softwaroveho hlediska.
8052 a jeho klony jsem mel rad, posledni projekt s nimi jsem delal pred par lety.
Dostal jsem do nej scanner s OCR. Byl to klon 8052 od ST, jmenuje se uPSD3234, delaji ho i ve verzi s USB. Takovy velky projekt se uz samozrejme neda delat v assembleru, delal jsem to v SDCC – open source kompilator C, ale rekneme si to uprimne, ten kompilator neni nic moc. Alespon pred par letama byl dost zabugovany a nepreklada optimalne. Je ovsem pravda, ze 8051 neni processor urceny pro preklad C. V assembleru se s nim pracuje dobre.

jc
jc (neregistrovaný) 88.146.126.---
10. 8. 2010 23:18 Nový

Re: porty MCS51

celé vlákno

Porty se daj na otevrenej kolektor nastavit jeste minimalne na AVRkach a myslim ze i na PICakach. A za sebe musim pridat jeste ty at91sam7s, tam to jde taky nastavit. Zrovna tedka to musim vyuzivat kvuli maximacky 1dratovy sbernici.

I/O
I/O (neregistrovaný) 147.32.68.---
11. 8. 2010 0:16 Nový

Re: porty MCS51

celé vlákno

Takovy velky projekt se uz samozrejme neda delat v assembleru – v Assembleru se dělaly i tisíckrát větší projekty. ;-) Základem každého assembleristy je naučit se udržovat si přehled a vytvořit si ve svém díle systém. Řekl bych, že existuje jistá bariéra, kterou když člověk při svém potýkání se s Assemblerem překoná, dokáže pak v (makro)Assembleru naprogramovat opravdu cokoli a se srovnatelnou produktivitou, jako v kterémkoli jiném tuctovém imperativním jazyce. Je to věc, která se dá naučit, podobně jako se Javař může naučit udržovat si systém v hierarchii tříd a navrhovat je tak, že ví, že se do toho časem nezamotá. Osobně výhodu „klasických“ vyšších jazyků spatřuji především v jejich přenositelnosti. Dobře napsaný program v Assembleru je totiž určitě čitelnější, než třeba program v C, protože součástí každého dobrého assemblerského kódu je komentář v takovém rozsahu, který není obvyklý u žádného jiného jazyka (tím ovšem nemyslím komentáře typu „načti do registru X hodnotu F0“ za instrukcí typu LDX #F0; když potkám takový komentář, vždycky si vzpomenu na Vrchní, prchni – „že vám do toho kecám, ale ty stěrače, ostřikovače, to snad nemusíte hlásit, to přece vidí“).

ad slabý pullup s tranzisotrem – přiznám se, že tuto vlastnost jsem snad v životě v žádném návrhu nepoužil a ani mě zrovna nenapadá, k čemu by se to použít dalo (aniž by to byla nějaká prasárnička – možná jsem purista, ale směr toku informace by měl být v daný moment vždy jasný). Nechám se podat. :-)

jc
jc (neregistrovaný) 88.146.126.---
11. 8. 2010 0:28 Nový

Re: porty MCS51

celé vlákno

Co treba I2C, ktery to pouziva ? To je taky prasarna ?

I/O
I/O (neregistrovaný) 147.32.68.---
11. 8. 2010 2:59 Nový

Re: porty MCS51

celé vlákno

No proto jsem psal, že se nechám podat. Rád se vždycky něčemu přiučím. ;-) Na to IIC mrknu.

Jindrich Makovicka aura:94

Re: porty MCS51

celé vlákno

Obecně se tenhle trik používá při arbitráži, kdy mezi sebou rovnocenná zařízení vybírají šéfa, viz třeba
http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/general-introduction/bus-arbitration.html
Jiný příklad použití byla třeba Plug&Play podpora dodatečně dobastlená do specifikací ISA sběrnice.

Martin Malý aura:96
16. 8. 2010 18:37 Nový

Re: porty MCS51

celé vlákno

Mrkněte i na 1-Wire, to je teprv lahůdka – jeden drát, na kterém probíhá obousměrná komunikace procesoru s periferií, z obou stran otevřené kolektory a někde pull-up odpor (a když na to přijde, tak si z toho bere periferie i potřebné napájení). Viz http://hw.cz/Rozhrani/ART1215-Sbernice-1-Wire.html

Josef Pavlik aura:92

Re: porty MCS51

celé vlákno

Prenositelnost, to je presne ta vec, kvuli ktere to bylo psano v C – ten samy algoritmus byl kvuli ladeni prelozitelny i pro PC, takze kdyz jsem neco precetl a OCR na tom zhavarovalo, stahnul jsem si obrazek do PC a ladil jsem algoritmus OCR az na tomto konkretnim obrazku neudelal chybu. Pak jsem nechal prohnat tim novym OCR sadu testovacich obrazku a pokud vsechno dopadlo dobre, mohl jsem program prelozit pro chip.
S prenositelnosti assembleru 8052 mam jeste jednu historku – prijimac IR, ktery prijata a vydekodovana data poslal po RS485 do PC. V nem, jak jinak 8052. Jeden uart hardwarovy, druhy uart softwarovy. Terminaly poslaly pres IR packet, ten se pres tento prijimac poslal do PC. Pozdeji bylo ovsem potreba udelat i fixni terminal, pripojeny primo po 485. Potiz byla v tom, ze terminal mel Ziloga, IR prijimac 8052. Nezbylo nez v makrech pro assembler ziloga nadefinovat instrukce 8052 a puvodni program z prijimace prelozit temito makry pro Zilog. Podarilo se :-)

Zasílat nově přidané příspěvky e-mailem