Jak začít programovat procesor PIC

29. 10. 2000

   Dnes je v prodeji mnoho procesorů PIC, které se od sebe liší velikosti pamětí programu a dat, počtem a druhem použitých periférií, rychlostí a typem pouzdra. Společným rysem je použitá technologie typu CMOS a RISCové jádro procesoru. V následujícím popisu jsou uvedeny všechny potřebné nástroje a programy k programování PICů.

Pro první kroky s procesorem PIC potřebujeme: PIC16F84

  • počítač PC
  • textový editor
  • překladač - assembler
  • simulátor procesoru
  • procesor PIC
  • programátor procesorů PIC
  • zkušební desku pro ladění programu
  • chut do programování

Jaký typ procesoru vybrat ?

   Starší typy procesorů, které se ještě dnes používají mají pamět typu EPROM. Vyrábí se ve dvou provedeních. První provedení se nahraje jen jednou tzv. OTP a stojí cca 100,- Kč. Pro ladění programu je nevhodný. Hodí se pro sériovou výrobu několika desítek kusů. Než odladíte program tak jich budete mít celou hromadu nahraných procesorů se špatným programem. Druhý provedení je verze s okénkem JW a dá se mazat ÚV světlem. Doba mazání je cca 30 minut. Pro práci je dobré mít dva kusy procesoru. Než jeden smažu, můžu na druhém ladit program. Cena je poněkud vyšší cca 400,- Kč. POZOR! u verze s okénkem není povoleno při programování aktivovat ochraný bit! Po této aktivaci nejde procesor smazat!

   Tyto typy procesorů postupně vytlačuje procesor s pamětí EEPROM typu FLASH, která se nemusí mazat ÚV světlem. Odpadne nám investice do ÚV mazačky pamětí. Procesor se jednoduše smaže v ovládacím programu pro programátor, a nahraje novým programem. Některé procesory jako PIC16F84 se můžou rovnou nahrát novým programem bez předchozího mazání. Další pamět v procesoru je pro uložení nastavených dat i při vypnutém napájení. Tuto pamět nemají všechny procesory. Z celé řady procesorů se nejlépe hodí pro začátek PIC16F84. Jeho pořizovací hodnota je cca 160,- Kč. Tento procesor nemá v sobě A/D (anolog/digitál) převodník ani další periférie, které nabízí řada PIC16F627, 628 nebo PIC16F873, 874, 876 a 877. Tyto procesory se liší vybavením v perifériích, velikostí pamětí pro program i data, maximální frekvencí, velikostí pouzdra a počtem vývodů. Pořizovací cena je od cca 100,- až 300,- Kč.

Jaký programátor procesorů ?

   Možností, jaký programátor postavit nebo koupit je mnoho. Koupený programátor je řešení rychlé, ale pro mnohé začínající drahé. Na internetu si můžeme vybrat z velké nabídky, ale jen pár je opravdu univerzálních. Programátory můžeme rozdělit podle připojení k počítači na dvě základní skupiny. První se připojuje na paralelní port počítače označován také PRN a napájení pro programátor je přivedeno ze sítového zdroje. Druhá skupina se připojuje na sériový port počítače označován COM a napájení pro programátor je přivedeno bud ze sériového portu počítače nebo ze sítového zdroje. Napájení ze sítového zdroje je vhodnější pro přesně definované napětové úrovně při programování procesoru.

   Jednoduchý a spolehlivý programátor má Bojan Dobaj. Na programátor můžeme použít ovládací program pro DOS nebo WIN od různých autorů (rubrika programátory). V následujícím popisu se seznámíme s programátorem od Bojana Dobaje P16light a popíšeme si základní nastavení.

   Program rozzipujeme do adresáře P16PRO a spustíme. Zjistíme jaký obvod v programátoru máme osazený. Použít je možné obvod 74LS06 nebo 74LS07. Pokud jsme použili obvod 74LS06 a programátor je připojen na LPT1 není potřeba nic nastavovat a můžeme přejít k programování. V opačném případě nastavíme program podle následujících bodů.

1. nastavit připojení k LPT1 nebo LPT2 ( Settings / Other )
2. nastavit programátor podle osazeného obvodu ( Settings / Hardware ).

Na obrázku je nastavení programátoru pro obvod 74LS07.

nastavení P16PRO

Postup nahrání PIC16F84.
1. spustit program P16PRO.
2. vybrat typ procesoru (Settings / Device )
3. načíst HEX soubor do P16PRO ( File / Open program )
4. vložit PIC16F84 do programovací patice
5. spustit mazání ( PIC musí být prázdný )
6. spustit programování

první programátor P16PRO programátor P16PRO

čára

Počítač PC

   Počítač používáme pro psaní programu, překlad assemlerem a programování PICů. Pokud máme programátor na paralelní rozhraní, počítač by měl mít dva LPT porty. Jeden pro tiskárnu na výpisy programů a druhý pro programování. Přepojování kabelů nás dlouho bavit nebude. Rychlost počítače závisí na ovládacím programu programátoru (DOS nebo Windows) a operačním systému počítače (DOS nebo Windows 95/98). Pro DOSovský ovládací program a DOS na počítači bude stačit PC 384/DX40 pro ovládací program ve WINDOWS alespoň PC 486DX4/100Mhz.

Výběr literatury

   Základní popis procesorů, popis instrukcí a příklady psaní programů je prezentováno na internetu. Pokud se chceme něco naučit, tak získané informace si doma budeme tisknout, pro rychlejší orientaci a možnost psaní poznámek. Já zastávám názor, že lépe se učí z papíru a ne koukáním do obrazovky monitoru (PAPÍR je PAPÍR).
   Proto je vhodné si koupit knihu. Do začátku mohu doporučit knihu Mikrořadiče PIC16CXX , kde je od základu popsán procesor PIC16C5X, PIC16C71 a PIC16C84 jak pracuje včetně popisu instrukčního souboru. To nám ale nebude stačit. Potřebujeme základní popis jak napsat program. Popis psaní programů s ukázkami je v knize Programování mikrokontrolerů PIC16CXX. Další dobrá kniha je Učebnice programování PIC , kde je přehled instrukcí procesoru a základní popis jak psát program na příkladu. Každá z těchto knih vás seznámí se základem programování.

Psání programu textovým editorem

   Jako první začneme psát program. Na psaní krátkých programů stačí editor Norton Comander, M602 nebo poznámkový blok. Pro programy delší než cca 50Kb, můžeme použít editor např. Programmer`s File Editor (PFE). V souboru píšeme poznámky k jednotlivým podprogramům a příkazům, pro lepší orientaci a případné další opravy programu. Soubor pojmenujeme s koncovkou asm (např. test_84.asm) a uložíme.

Překlad napsaného programu assemblerem

   Napsaný program přeložíme do výsledného tvaru pro programátor. Spustíme překladač Mpasm.exe (pro DOS) nebo Mpasmwin.exe (pro WIN). Načteme soubor test_84.asm. Výsledkem překladu je soubor v HEX tvaru test_84.hex, pokud nebudou žádné chyby při překladu. Pokud se vyskytli chyby, opravíme je textovým editorem a znovu přeložíme.

Naprogramování procesoru

   Spustíme programovací program, načteme soubor test_84.hex a nastavíme typ a pojistky procesoru. (pokud typ a pojistky procesoru nastavíme v programu *.asm, nastaví se automaticky při načtení souboru.) Zpustíme zápis a čekáme na dokončení zápisu.

Zkušební deska pro ladění programů

   Po nahrání programu přistoupíme k ověření činnosti ve zkušební desce. Zkušební deska nám umožní rychlé vyzkoušení a opravení chyb. Zkušební deska vznikala postupně, podle požadavků na jednotlivé zapojení. Je zapojena na univerzální desce CU-TA035 (nebo CU-TA018, CU-TA019) za cca 95,- která je v prodeji v GM elektronic. Není zde uvedena rozpiska součástek pro stavbu, protože deska vznikala ze šuplíkových zásob. LED displej je 4násobný zapojený v multiplexu M514RD, odpory jsou pouµity miniatůrní 0,25W, LED diody o průmeru 3mm.

zkušební deska

Popis zkušební desky

Napájení - střídavé napájecí napětí cca 9V je přivedeno přes souosý konektor průměr 2,1 na můstkový usměrnovač. Napětí je vyfiltrováno a připojeno na stabilizátor 7805 s chladičem. Stabilizované napětí +5V je signalizováno zelenou LED diodou a připojeno na patici procesoru 16F84 a k dalším obvodům. Oscilátor se dá přepnout buď na krystal nebo na RC oscilátor (jumper S1 a S2). Všechny připojené obvody (LCD displej, LED displej, piezoměnič) je možné odpojit jumprovou lištou nebo pokud nejsou stisknutá tlačítka tak neovlivnují procesor ani výstupní svorky.
LED displej - použit je 4-násobný displej v multiplexu se společnou anodou. Napájení anod je vyvedeno z portu RA0 - RA3 přes jumpry S4 - S7 a odpory na spínací tranzistory BC327-40. Segmenty displeje propojíme paralelně a připojíme přes odpory a jumprovou lištu J1 na port RB0 - RB7. Pokud použijeme dekodér převodu BCD na 7-segmentový displej (např. D147, D346, 4056, 4511, 4513 nebo 4543) tak ušetříme 4 datové dráty, ale nemůžeme zobrazit libovolné segmenty displeje.
LCD displej - zapojen na liště J2 2x8 špiček. Komunikace je použita 4-bitová pro menší počet datových drátů a 2 řídící signály. Odporový trimr nastavý kontrast LCD displeje.
Klávesnice - zapojená v matici na port RB. Při použití se v programu nastavý port RB0 - RB3 jako výstupní a port RB4 - RB7 vstup. Hotová klávesnice se dá objednat u firmy CONRAD (cca 200,- Kč) v provedení 3x4 tlačítek v matici. Pro zjištování výstupního stavu portu RB, je zapojeno přes odpory, 8 žlutých LED diod. Při použítí portu RB jako vstupní je zapojeno 8 tlačítek paralelně na LEDky. Tlačítka je potřeba ošetřit odpory na +5V pokud nebudeme zapínat v PICu vnitřní pull-up odpory.

Celé zapojení zkušební desky je na schématu. Po kliknutí plná velikost.

schéma

Zkušební program

; Poznamka se pise za strednik !!!

	LIST P=16F84
	INCLUDE "P16F84.INC"
	__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC

#DEFINE	TLAC	PORTA,0
#DEFINE	LED	PORTA,1

	BSF	STATUS,RP0
	MOVLW	B'00000001'
	MOVWF	TRISA
	BCF	STATUS,RP0
;       ------------------------
	BCF	LED		; zhasni LED
;-------------------------------
START	BTFSS	TLAC
	GOTO	$-1		; skoc o radek nahoru
	BSF	LED		; rozsvit LED
	BTFSC	TLAC
	GOTO	$-1		; skoc o radek nahoru
;       ------------------------
	BTFSS	TLAC
	GOTO	$-1		; skoc o radek nahoru
	BCF	LED		; zhasni LED
	BTFSC	TLAC
	GOTO	$-1		; skoc o radek nahoru
;       ------------------------
	GOTO	START		; skoc na START
;-------------------------------
	END			; konec programu