# PIC mikrokontrolleri >  16F627-04/p jautājums

## raicha

Sveiki.

Man sekojoš jautājums:

Kā iesācējs iegādājos šo programmētāju http://www.elfa.lv/artnr/K8048/pic-prog ... ment-board ir programmiņa gatava bet vēlme ir tāda , ka gribu lai man tas pic16F627 strādātu bez programmatora. varbūt kads var uzmest shēmiņu kā dabūt to gatavu?

----------


## jeecha

Aatrumaa nogriezhot no konkreetaas plates visu lieko (plates sheema ir atrodama http://www.vellemanusa.com/downloads...k8048_rev4.pdf) paliek apmeeram:


R1-R6 - ierobezho LED straavu;
D1 - aizsargaa pret nepareizu baroshanas piesleegshanu;
IC2 - 5V regulators, sheema pateerees apmeeram 50mA ar visiem LED iedegtiem taakaa der arii mazjaudiigie regulatori no 7805 seerijas;
Q1 - kristaals, bet Q1+C2+C3 var aizstaat ar 4Mhz keramisko rezonatoru ar iebuuveetiem kondensatoriem (3 kaajinjas, Argusaa taadi ir);
R12 var arii izmest, savienojot chipa MCLR kaaju pa taisno ar VCC.

Chipu var pa taisno nelodeet bet ielodeet paneli taapat kaa uz development board. Un lai paarprogrammeetu izraut vinju aaraa un iespraust ieksh development board. Otra iespeeja izvilkt PGC, PGD, MCLR, VDD un GND uz konektoru ko piespraust pie development board ICSP konektora un paarprogrammeet chipu nepaarsprauzhot. Vieniigi tad nevar nekaadaa gadiijumaa mest aaraa R12 (driizaak var pat nedaudz palielinaat vinja pretestiibu, teiksim 4.7Komi) vai arii vinja vietaa ielikt shotkija diodi - katods pie MCLR, anods pie VCC. Tas taadeelj ka programmeeshanas laikaa uz MCLR tiek padots 12V spriegums un bez R12 vai shotkija diodes vinja vietaa buutu iisais starp VCC un MCLR un ljoti iespeejams kautkas kautkur nosviltu  :: 

P.S. Diivaini - forumam vairs nestraadaa failu upload fiicha?

----------


## sharps

Gadiijumaa shitam chipam nav taa ka ir iebuuveetais RC gjenerators, kaa arii MCLR var multiplexeet? ja taa tad tik konfiguraacijas baitaa ierakstiit ka shie var darboties kaa RA un atkriit aareejais sheemojums shiim kaajaam.

PS
Jaa tur ir 4MHz internal RC kjeede. tad tik konfiguraacijas baitaa jaaieraksta ka straadaa no INTRC. http://ww1.microchip.com/downloads/e...Doc/40300C.pdf

----------


## raicha

Paldies par shēmiņu. To izejas led man nevajag un pagaidām slēdzus ar nē tātad to nemu ārā un principā paliek pavisam primitīva shēmiņa. 

Man te vēlviens jautājums: varbūt kāds zin kas šis ir par softu http://www.box.net/shared/yeranusoq6
un vēl kas interesē vai RB6 un RB7 arī var izmantot kā izejas?  un ieejas arī RA4 un RA5?

----------


## jeecha

RB6 un RB7 var izmantot gan kaa ieejas gan kaa izejas.

RA4 var izmantot kaa ieeju un kaa "open drain" izeju (straavu var tikai njemt nevis dot). RA5 var izmantot tikai kaa ieeju un tikai ja konfiguraacijas bitos iestata ka vinsh netiek lietots kaa MCLR.

Ja lieto ieksheejo RC oscilatoru (attieciigi uzstaada konfiguraacijas bitos INTRC oscilatoru), tad kaa ieejas un izejas var lietot arii RA6 un RA7.

----------


## raicha

Atkal jau jautājums. Jau raxtīju ka šajā joma pilnīgs iesācejs esmu. Vai pastāv arī iespēja ka RB0-RB5 dod ārā - nevis +?

atgriežoties pie shēmas kur pic saslēgts bez programmatora- ja neizmantoju RA0-RA3 kā slēdžus tad taisot shēmu tie 10Kom rezistori jāatstāj? vai sanāk tā ka pie tiem pinout vispar nav nekas vajadzīgs?

----------


## next

pastaav

nevajag

----------


## raicha

kā tad paliek ar to softu-simulatoru. nezin neviens kas tā irpar programmu manis minētajā linkā? jeb varbūt kāds var ieteikt kādu citu softu ar kuru var simulēt gala rezultātu?

----------


## raicha

Sakiet vai šī 16F876 pica vietā varu izmantot 16F627?
Un ja varu tad kā programeet lai varu izmantot visus rb0-rb7 jo tad būtu vajadzība ar vienu kontrolieri kontroleet 2 gab ULN2003

----------


## next

Ja resursu pietiek tad var.
Kaa programeet? - nu kaa parasti, ko sacereesi tas arii buus.

----------


## raicha

Redz ar to programēšanu ir kā ir. cenšos te netā atrast kādus pamatus. pagaidām vienīgais ko protu ir spēlēties ar LED pārrakstos demo failu.  ::  bet ar kaut ko tak ir jāsāk, tādēļ jau man te ir tik daudz jums noteikti smieklīgu jautājumu. Piemēram gribas arī saprast kā uzraksīt programu tā lai kontrolieris neko nedara bet darīt sāk tikai tad kad nospiežu kādu no sw1-sw4 pogām.

----------


## next

Nu piedod, taadas lietas jaaizdomaa pasham.
Kad buusi ko uzrakstiijis un redzeesi ka nestraadaa (taa tas vienmeer saakumaa) tad var te naakt un jautaajumus uzdot.

----------


## raicha

Programiņu uzraxtīju visu salodēju un rezultātā strādā bet problēma tāda ka stepers griežas dikti lēnu  
MOVLW	B'00000001'	
MOVWF	PORTB
CALL	DELAY_ROUTINE
MOVLW	B'00000010'
Šeit delay_routine ir vieta kur ietur pauzi,bet tak pauses ilgumam kaut kur jābut iestatītam vai ne?
cik pētiju augstāk demo failā un mēģināju mainīt kaut kādus lielumus bet rezultātā tas pauzes ilgums nemainījās.
Redzēju citā valodā raxtītu piemēru un tur pie pauzes bija lielums kas atbild par pauzes ilgumu bet to valodu iekopējot notepad failā man viņu nekompilēja uz HEX failu

----------


## jeecha

Varbuut iemet visu kodu... kautkur kodaa noteikti tas DELAY_ROUTINE ir realizeets un tur droshvien ir cikls noteiktu skaitu iteraaciju dara neko lai ieguutu pauzi.

----------


## raicha

kods ir šāds

;**************************************************************************
;*           VELLEMAN   High-Q KIT  K8048/VM111 SAMPLE SOFTWARE           *
;**************************************************************************
;*           DEMO1: Simple Running light for testing LD1...LD5            *
;*	     DEMO1: Program for testing K8048/VM111 with PIC16F627!       *
;**************************************************************************
;*          (C) VELLEMAN Components,2003  All rights reserved             *
;**************************************************************************
;*          Hardw. Rev: P8048'1          Softw. Rev:  1.20                *
;*          OSC.......: XT 4MHz Max.     POWER.....:  12V DC              *
;**************************************************************************

W                            EQU     H'0000'
F                            EQU     H'0001'

;----- Register Files------------------------------------------------------

INDF                         EQU     H'0000'
TMR0                         EQU     H'0001'
PCL                          EQU     H'0002'
STATUS                       EQU     H'0003'
FSR                          EQU     H'0004'
PORTA                        EQU     H'0005'
PORTB                        EQU     H'0006'

INTCON                       EQU     H'000B'
OPTION_REG                   EQU     H'0081'
TRISA                        EQU     H'0085'
TRISB                        EQU     H'0086'
CMCON                        EQU     H'001F'

;----- STATUS Bits --------------------------------------------------------
IRP                          EQU     H'0007'
RP1                          EQU     H'0006'
RP0                          EQU     H'0005'
NOT_TO                       EQU     H'0004'
NOT_PD                       EQU     H'0003'
Z                            EQU     H'0002'
DC                           EQU     H'0001'
C                            EQU     H'0000'

;==========================================================================
;
;       RAM Definition
;
;==========================================================================

    __MAXRAM H'01FF'
    __BADRAM H'07'-H'09', H'0D', H'13'-H'14', H'1B'-H'1E'
    __BADRAM H'87'-H'89', H'8D', H'8F'-H'91', H'93'-H'97', H'9E'
    __BADRAM H'105', H'107'-H'109', H'10C'-H'11F', H'150'-H'16F'
    __BADRAM H'185', H'187'-H'189', H'18C'-H'1EF'

;==========================================================================
;
;       Configuration Bits
;
;==========================================================================

_BODEN_ON                    EQU     H'3FFF'
_BODEN_OFF                   EQU     H'3FBF'
_CP_ALL                      EQU     H'03FF'
_CP_75                       EQU     H'17FF'
_CP_50                       EQU     H'2BFF'
_CP_OFF                      EQU     H'3FFF'
_DATA_CP_ON                  EQU     H'3EFF'
_DATA_CP_OFF                 EQU     H'3FFF'
_PWRTE_OFF                   EQU     H'3FFF'
_PWRTE_ON                    EQU     H'3FF7'
_WDT_ON                      EQU     H'3FFF'
_WDT_OFF                     EQU     H'3FFB'
_LVP_ON                      EQU     H'3FFF'
_LVP_OFF                     EQU     H'3F7F'
_MCLRE_ON                    EQU     H'3FFF'
_MCLRE_OFF                   EQU     H'3FDF'
_ER_OSC_CLKOUT               EQU     H'3FFF'
_ER_OSC_NOCLKOUT             EQU     H'3FFE'
_INTRC_OSC_CLKOUT            EQU     H'3FFD'
_INTRC_OSC_NOCLKOUT          EQU     H'3FFC'
_EXTCLK_OSC                  EQU     H'3FEF'
_LP_OSC                      EQU     H'3FEC'
_XT_OSC                      EQU     H'3FED'
_HS_OSC                      EQU     H'3FEE'

	__CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC

;==========================================================================
;       Variable Definition
;==========================================================================
TIMER1		EQU	H'20'		;Used in delay routine
TIMER2		EQU	H'21'		; "	"	"	
PATERN		EQU	H'22'		;Pattern data for effect's

		ORG	0		;Reset vector address
		GOTO	RESET		;goto RESET routine when boot.


;		*********************************************
;		*  Example of a delay routine               *
;		*********************************************

DELAY_ROUTINE   MOVLW   D'255'         ;54 Generate approx 10mS delay at 4Mhz CLK
                MOVWF   TIMER2
DEL_LOOP1       MOVLW   D'255'	       ;10	
                MOVWF   TIMER1
DEL_LOOP2       DECFSZ  TIMER1,F
                GOTO    DEL_LOOP2
                DECFSZ  TIMER2,F
                GOTO    DEL_LOOP1
		RETLW   0


;	       **********************************
;              **  RESET :  main boot routine  **
;              **********************************

RESET		MOVLW	B'00000111'	;Disable Comparator module's
		MOVWF	CMCON
		;
		BSF	STATUS,RP0	;Switch to register bank 1
					;Disable pull-ups
					;INT on rising edge
					;TMR0 to CLKOUT
					;TMR0 Incr low2high trans.
					;Prescaler assign to Timer0
					;Prescaler rate is 1:256
		MOVLW	B'11010111'	;Set PIC options (See datasheet).
		MOVWF	OPTION_REG	;Write the OPTION register.
		;
		CLRF	INTCON		;Disable interrupts
		MOVLW	B'11000000'
		MOVWF	TRISB		;RB7 & RB6 are inputs.
					;RB5...RB0 are outputs.
		MOVLW	B'11111111'	;all RA ports are inputs
		MOVWF	TRISA
		BCF	STATUS,RP0	;Switch Back to reg. Bank 0
		CLRF	PORTB		
		;

EFFECT_1	MOVLW	B'00000001'	
		MOVWF	PORTB
		CALL	DELAY_ROUTINE
		MOVLW	B'00000010'	
		MOVWF	PORTB
		CALL	DELAY_ROUTINE
		MOVLW	B'00000100'	
		MOVWF	PORTB
		CALL	DELAY_ROUTINE
		MOVLW	B'00001000'	
		MOVWF	PORTB
		CALL	DELAY_ROUTINE
		GOTO	EFFECT_1
		END

----------


## raicha

pauzes ilgumu atradu 
DELAY_ROUTINE   MOVLW   D'80'         ;54 Generate approx 10mS delay at 4Mhz CLK
                MOVWF   TIMER2
DEL_LOOP1       MOVLW   D'80'	       ;60

D`80` jo mazaaks skaitlis jo īsāka pauze
Bet  ::  sava stulbuma pēc pieļāvu lielu kļūdu un nosvilināju PIC16F627 jo pieliku pie RA2 +12V  nu labi no kļūdām mācos. Ir man tagad PIC16F84A ar orginālo velleman programmatoru programmēju to pašu kodu ko uz PIC16F627 pie finiša izmet error,bet ieslēdzot programmatoru uz Run manis raxtītais kods strādā bet kad ielieku mikreni savā lodētajā platē tad nenotiek nekas. barošana viss normāli bet rezultāta nav. Iemesls varētu būt ka nosvilināju arī keramisko rezonātoru vai problēma ir tajā kad programmēšanas beigās izmet to error?  uz manas paštaisītas plates tālāk signāli iet uz ULN2003

----------


## jeecha

Shie chipi ir liidziigi bet ne pilniigi vienaadi, vareetu buut kaadas atshkjiriibas konfiguraacijas bitos. Kautgan ja tu apgalvo ka chips programmeeshanas platee darbojas, bet tavaa platee (kura pirms tam darbojaas ar PIC16F627) nee - tas ir diivaini. Tu tieshaam esi paarliecinaat ka Velleman platee viss darbojas?

Kaadu tieshi sheemu tu savai platei galu galaa sataisiiji?
Un ar ko tu savu asamblera kodu kompilee? Ja tas ir MPLAB+MPASM tad tev droshvien vajadzeetu ieksh MPLAB nomainiit kuram chipam tu kompilee un salikt visus konfiguraacijas bitus atbilstoshi.

Par kljuudu programmeeshanas laikaa - naakotnee atceries siikaak paskaidrot vai ielikt kaadu screenshot ar to kaada tieshi kljuuda tev izleca. Jo peec teksta "izlec kljuuda" iisti nevar saprast kas tad tur iisti tev notiek...

----------


## raicha

Nu ar 16F627 chipu problemas nebija tapeec domaaju ka programmators darbojas vienīgi nekad neesmu redzējis ka read write diode būtu iedegusies.
Progas izmantoju tās kas ir iekšs velleman MPASM v5.01 un Progpic2
Uz savas plates Pic tiek pieslēgts ka bildē forumā sākumā tikai bez slēdžiem un 10K rezistoriem
errors ir šāds: Un mana shēma ko uz savas plates lieku gala čipam ir:

----------


## sharps

aciimredzot kaut kas nav ar konfiguraacijas vaardu. 84A un 627 tie atshkjiras. es to pierakstu apmeeram shaadaa veidaa, jo ir vieglaak saprotams. lai nerakstiitu visu to penteri, kas tava kodaa apraksta regjistrus, tad vajag ierakstiit rindinju #include "P16..." ar tava PICa nosaukumu.



```

LIST P=16F628
#include "P16F628.inc" 
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
```

 atshifreejumi konfiguraacijas vaardam ir te ftp://83.99.200.234/MCU/PIC/31027a.pdf

----------


## raicha

Mazliet offtopic no šīs tēmas, bet interesē. Čalis no anglijas atveda šo te http://www.spykeeworld.com/spykee/UK/index.html vadāms vinš ar softu no win un vadāmība iet caur wifi. Vai ko tamlīdzīgu ir iespēja dabūt gatavu ar pic proramēšanu? respektīvi ka PIC saņem komandas no wifi. Pats šobrīd taisu primitīvu robtiņu kas parvietojas pašgaitā un saduroties ar šķērsli maina virzienu attiecīgi pa labi vai pa kreisi. Ja ir iespēja kontrolēt ar wifi tad varbūt nākotnē kad kaut ko vairāk sapratīšu no pic varētu tadu pamēģināt. Jautāju tādēļ lai zinu iepriekš cik lielu taisīt mehānisko daļu.

----------


## jeecha

Driizaak tad jau kaadu Bluetooth vai ZigBee moduli piespraust. Vai arii ja gribas leeti - kaadu 433/858/915Mhz ASK/FSK transiiveri abos galos.

----------

