Programování uC Microchip v C

Dobrý den, rád bych se naučil základům programování mikrořadičů PIC v jazyce C. Nemám vůbec přehled o tom, co je k dispozici. Prosím o doporučení, čím začít (pro začátek pokud možno zdarma :slight_smile:. Díky. Vlasťa

Asi vsetky C prekladace pre PIC su platene, aspon ktore som videl…
Microchip
SourceBoost
MikroC

Jedine free je SDCC, ale zasa s nim(aspon s mojimi skusenostami) to nieje bohvieco, teda aspon byvalo , mozno sa to zmenilo.

Podla mojho skromneho nazoru, C a AVR

Len doplnim, AVR-GCC (v baliku WinAVR) a AVRstudio. Je bez akehokolvek obmedzenia, priamo itegrovane do zakladneho vyvojoveho prostredia a vysledny kod je porovnatelny s inymi prekladacmi. Aj najjednoduchci cip ATmega (ATmega8) ma uz dost RAM pre vyuzitie Ccka. GCC zaroven otvara cestu i k “vyssim” procesorom ako su ARM7, Cortex, x86 a co ja viem co este. Navyky s GCC sa urcite zidu pri prechode na nieco vacsie.
Ale vyber procesora a prekladaca je podla Tvojho gusta.

Díky. Nejde ani tak o moje gusto. Programování mikrořadičů učíme u nás ve škole a používáme PIC, takže přechod na jiný typ je prozatím vyloučen (a z hlediska výuky k němu ani není důvod). Díval jsem se na odkazy, které mi poslal fero_zezina a zdá se, že jak HI-TECH C PRO, tak i MikroC existují ve free (Lite) verzích. Nebo se mýlím? Je v tom nějaký problém? Vl.

Urcite nieco take najdes.
Problem vidim v tom, ze ked Ti nejaky schopny student napise nejaky pekny program, ktory by mal presiahnut o jeden bajt rozsah free verzie, budes mu musiet vyvetlovat, ze skola je chudobna, alebo plnu verziu kupit - a to mozes urobit hned.
Tie 2/4kB vysledneho kodu nie je az tak vela, ako by sa na prvy pohlad zdalo a podla mojich skusenosti straci na velmi jednoduchu pracu.
Ak by mali napriklad naprogramovat LCD 2x16 (co je v principe par riadkov kodu), obsluhu tlacitok s filtraciou zakmitov, nejake jednoduche menu s 5-10 polozkami a prislusnymi popismi, editaciu premennej po jednotlivych digitoch, zopnutie, vypnutie nejakeho rele a obsluha nejakeho analogu, jeho normovanie (nedajboze s float :slight_smile: ) na fyzikalny rozmer - no poviem vam, to sa do 2/4kB kodu v C jednoducho (pisem jednoducho, mozno nejak zlozito za pomoci asm, alebo cele v asm, ale ani to take jednoduche nebude :slight_smile: ) nezmesti.
A az takato naozaj jednoducha uloha moze priviest pripadneho zaujemcu o jednocipy k praci s nimi. Mozete mi oponovat, ze sa jedna o skolu a nie o zaujmovy kruzok. Ak je to tak, potom je to so vzdelanim velmi smutne.

Aj ked som AVR-kar, urcite suhlasim, ze je jedno na akom beznom 8-bite (x51, ATmega, PIC18F ) sa clovek v skole to Ccko uci. Dolezite je, aby mal dobre ucebne pomocky a ochotnych, vzdelanych lektorov. Pozor ale na dostupnu RAM. S procesormi, ktore maju 72B RAM/2kB Flash by som Ccko ani nespajal. Nie je tam ako naucit a demonstrovat struktury, polia, vyhody ukazatelov, zapuzdrenie premennych, switch/case ( napr. pre to vyssie spomynane menu). Ak sa ma z Ccka iba ucit, ze

uint8_t a, b = 2, c = 8;
a = b+c;

potom to Ccko velky vyznam vo vyucbe nema.Len vyvola pocit, naco je nieco take neohrabane, ked v ASM sa to iste da napisat na polovicnom mieste. Vyhoda C sa prejavi naozaj az pri programoch vacsich ako 4kB. Na to ale zvycajne tie free verzie C-cok uz nestacia.

No pokud bych mel reagovat na Vlastovu otazku a nikoliv se tu rozplyvat nad pouzitelnosti C pro tu ci onu aplikaci…

SourceBoost pouzivam na maly PICka z 12kove rady. Pouzivam compiler i s prostredim a v poslednich verzich je to prijemny nastroj. Pro zacatecniky je tam imho i dobrej manual. Pro tu dvanactkovou radu je tam limitace 2KW na flesce, coz jsem na ty kravinky s temahle miniprocesorama zatim pouzil nejvic na 50%.

Microchip compiler jsem kdysi pouzival pro 18F radu. Ted nejcasteji pro 16ti bity. Ani v jednom z tech compileru jsem nevidel zasadnejsi problem. Omezeni ve smyslu velikosti kodu tam nejsou. Pouze je po zkusebni dobe omezena sirka optimalizaci, ale blize jsem to nezkoumal. Obzvlast pro vyukove ucely to nema zadny vyznam.

To asi tak k tem compilerum. Rad bych vsak vedel, jake MCU treba pouzivaji u Vlasty na skole. U nas na VSB obcas vidim nekoho, kdo na stredni misto obligatnich 51cek v ASM delal na nejakem PICu a vetsinou jsou to 16kove rady. Pro to ukazat deckam na necem v ASM jak ten cip pracuje a pak ho prirozene nechat prejit na C to je samozrejme dobry. K tomu postaci cokoliv. Ty lidi vsak potom zustavaji ze zvyku nebo neschopnosti na tyto 8bit MCU fixovani. Problem je pak v tom, ze tyto MCU jsou dost drahy a dnes jsou k dispozici mnohem levnejsi obvody s nesrovnatelnym vykonem a na ty je potreba ty lidi nasmerovat. Co se PICu tyce mam namysli 16ti a 32ti bitove MCU a DSP, ktere jsou levnejsi nez ty PIC-16/18ky. Obdobne je to u ostatnich vyrobcu (FS, TI, NEC). Je to takovej paradox (delat s drahejma slabejma MCU), kterej me neprestava zarazet pri obcasnem prochazeni takovychto komunit. Nezlobte se tedy na me, ze to tak natahuju.
Jinak co se tyce GCC a ARM7! Musel jsem s tim nakou dobu delat. A za sebe rikam… radsi placeny a profi reseni. Kdyz mate ANSI korektni kod a po kazdym aktualizovani prostredku ho musite nejak preskladat, aby ho compiler “sezral”, tak na to uz s**u.

Zkusím odpopvědět Martinovi i Chuckovi: Samozřejmě máš pravdu (Martin). Bohužel ji máš i v tom, že většina škol je opravdu chudých a ta naše není výjimkou. Někdy je opravdu problém dostat pár tisícovek na něco, o čem lidé, kteří peníze přerozdělují, nejsou přesvědčeni, že je to to nejdůležitější, co škola zrovna potřebuje (třeba není :slight_smile:. Problém je taky v tom, že na výuku mikrořadičů mám všehovšudy 35 hodin (3. ročník čtyřletého maturitního oboru mechanik-elektronik). Za tu dobu stihnu vysvětlit opravdu jen ty nejzákladější věci a probrat pár jednoduchoučkých příkladů (rozblikat nějaké LED, pípnout repráčkem apod.). Opravdu jsem spokojen, když se mi podaří z těch cca 30 děcek zaujmou jednoho nebo dva natolik, že se o to začne sám zajímat a třeba si práci s mikrořadiči vybere jako maturitní projekt. Pár šikovných se i našlo, ale z 90% je to bída a utrpení. Ty děcka se totiž nezajímají vůbec o nic, natož pak o nějaké programování. U toho se totiž musí přemýšlet! Programujeme v assembleru, protože si myslím, že to je u uC ten základ, který by měli pochopit. To, že se pracuje na té nejnižší úrovni, se samotným “železem”. U vyšším programovacích jazyků mám pocit, že na toto se právě často zapomíná. U PC je to jedno, ale u uC ne.
Pro Chucka: Máme zakoupeno 10ks Microchip ICD2, k nim jsme si vyrobili jednoduché výukové desky (8xLED, 4xmikrotlačítka, 1xdvojitý 7-segm. displej, repráček, optočlen na ext. intererupt).). Používáme PIC16F883. Sám teď dělám jedno zařízení pro školu (časovou ústředu s DS1302, ext. dipleji přes RS232, hlasovým výstup atd.) s PIC18F452. Nejsem žádný odborník na programování, sice jsem kdysi dělal chvilku na procesorech Intel 8080 a Zilog Z80, ale to už je dávno … Navíc jsem už trošku staršího vydání a hlava už zdaleka tak nefunguje, jak by měla :slight_smile:. Takže se hlavně snažím, abych stále uměl o něco málo více než ti naši studenti :slight_smile:). Naštěstí mne to baví, takže v tom není problém. S těmi 16-bity je to asi tak: ve chvíli, kdy se začíná něco takového učit, musí se člověk pro něco rozhodnout. A tak se porozhlédne po tom, co se kde dělá, projede si internet, poptá se známých, co v tom dělají. No a zjistí, že všude jsou samé osmibity! Literatura, časopisy, schémata, různé konstrukce …Vím, že to je přesně to, co kritizuješ a máš určitě pravdu. Ale ve chvíli, kdy se musíš pro něco rozhodnout a sám toho ještě moc neumíš, rozhodneš se pro to, pro co existuje nejvíce dostupných informací a v čem dělají jiní lidé, kteří Ti popřípadě mohou poradit. . A to jsou určitě osmibity.
K jazyku C: C se u nás neučí. Chci to pro sebe, jednak z vlastního zájmu a taky proto, že očekávám, že mi to pomůže zjednodušit a zrychlit práci na složitějších projektech. Proto taky neočekávám, že by mi to škola zakoupila (ani vlastně nevím, za kolik se to dá pořídit :slight_smile:.
Omlouvám se za poněkud obsáhleší příspěvek - chtěl jsem jen vysvětlit o co mi přesně jde, protože informace, které od vás čerpám, jsou pro mne velmi důležité, protože většinou vycházejí z vašich praktických zkušeností. Takže díky za ně!! :slight_smile:. Zdraví Vlasťa Vlček, Valašské Meziříčí

Rozumim chapu. Takhle je to vsude. Jestli chces poslu Ti knizku, ktera Te nejen uvede do tech 16ti bitu ale nauci Te i zaklady C pokud se na par drobnosti podivas jinde. Knizka jde od nastavovani ledky na portu po generovani ntsc a pal signalu a vytvoreni FAT file-systemu na SD karte. Rozhodne jsem nikoho koho neznam nechtel kritizovat. Vim dobre, ze zmeny v nasem vzdelavacim sysytemu jsou temer nemozne.

Jo jinak Vlasto, kdybys chtel poslu Ti layout testovaci desky, kterou jsem si delal pro 16bity. Je tam vyvedena oddelena 485ka, prevodnik USB s CP2101, rozhrani pro LCD na dvou konektorech, PWMka, ADcka, nejaky interupty, spinanej zdroj s vystupem 10 - 40V riditelnej z MCU. Jo a je tam jeste vstup pro kvadraturni enkoder a tlacitka. Zacatek snadnej.
IMG_8882a.jpg

Byl bych Ti moc zavázán za obojí. Zvláště ta knížka by mi určitě hodně pomohla. Jestli Tě tedy mohu obtěžovat, tak ano, děkuji.
Vl.

P.S. ta deska vypadá dost dobře :slight_smile:.

Jo, ještě něco - možná pro admina …
Teď jsem se rozesmál, že jsem málem převrhl kafe na klávesnici. Všiml jsem si poznámky u jména pisatele: Chuck - nováček, Vlasta_Vlcek - profesionál!! Doufám jen, že to generuje nějaký debilní automat na základě bůhvíčeho! :slight_smile:
Vl.

prosím já bych měl taky zájem o tu knížku?

Tak to ne! Ja nechci do vezeni :laughing:
Stahnete si to sami. Shaneni podpurnejch materialu je cast schopnosti developera :wink:

avaxhome.ws/ebooks/engeneering_technology/programming_microcontrollers_c_pic_24_16_bit.html

Jo, mám to! Díky! 401 stran… už aby byla zase zima … :slight_smile:
Vl.

Neboj! Ja jsem to stahnul minuly leto. Musel jsem nejak uspat svou lepsi polovicku a cetl jsem to po nocich. Tedy uz tak znacne vysilen :laughing:
Trvalo mi to i s odzkousenim asi 4 vecery. A pak asi tyden veci, na ktery jsem musel ubastlit na odzkouseni nakej hardware. Je to fakt hrozne dobre kousatelna literatura, jinak bych to nedoporucoval. Mr. Jasio je muj clovek. :wink:

Odkial to stahujete?

mne to skonci na:

uploading.com/files/5QKOROL1/_07 … df.7z.html

s tym, ze subor bol odstraneny. To sa tyka aj inych odkazov na webe ci cez Rapidshare alebo ine.
Ma niekto funkcny link?

S Vama je to tezky tady…

rapidshare.com/files/219467732/755080410.z_p.html

Ahoj, prosím Tě, v té knize používají C30 compiler. Díval jsem se na stránkách Microchipu a tam jsou dvě verze: MPLAB C30 C compiler Evaluation verzi a Special free version for academic use. Je to zde: microchip.com/stellent/idcpl … t=SW006012
Nejsem si j ist, co z toho mám stáhnout. Poradíš mi, prosím? Díky, Vlasťa

Dole na teto strance

microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en534868

stahuj MPLAB C Compiler for dsPIC v3.12 Evaluation Version

Hodnocení je dle počtu příspěvků. Na novém webu se hodnocení bude generovat dle počtu bodů, což bude mnohem objektivnější.