Sari la conținut
ELFORUM - Forumul electronistilor

PIC 12F675 - Problema !


Vizitator lucik

Postări Recomandate

Salutare!

 

Sunt incepator in programarea de pic-uri...

Vreau sa fac pt prima data un program aparent banal : sa licare un led din sec in sec.

Am gasit un prog flowcode care face singur hex-ul/c/asm.

Am programator AD-PIC03...folosesc WinPic800 pt programare...ei mi-au dat un CD cu ICprog

 

Am facut in flowcode o simulare si merge perfect. ledul se aprinde o sec apoi se stinge tot o sec, etc..

Problema intervine atunci cand programez pic-ul (12F675)

Cand pun pic-ul in soclul programatorului si dau Verify imi spune :

 

ERROR -> Verifying address 0x000000

Verified : 0x3FF Read: 0x286A

 

Apoi dau erase si ard hex-ul si dau iar verify nu-mi mai da nicio eroare.

Pun pic-ul in circuit si nu face nimic led-ul....

 

Circuitul este urmatorul :

pin 1 : 4,92V pt k folosesc 7805 si un transformator de 3-12V (7805 stabilizeaza tensiunea la 4,92V)

pin 8 : masa

pin 5 : o rezistenta de 330 ohm si apoi led-ul (minusul de la led legat la pinul 8 care este legat la masa)

 

COD C:

#define MX_PIC//Definitii pentru microcontroler#define P12F675#define MX_EE#define MX_EE_TYPE1#define MX_EE_SIZE 128//Fuctii#define MX_CLK_SPEED 19660800#ifdef _BOOSTC#include <system.h>#endif#ifdef HI_TECH_C#include <pic.h>#endif//Date de configurare#ifdef _BOOSTC#pragma DATA 0x2007, 0x3fb7#endif#ifdef HI_TECH_C__CONFIG(0x3fb7);#endif//Functie Interna#include "E:\Program Files\Flowcode V4\FCD\internals.h"//Declararea Functiei Macro//Declarare Variable//Realizare Macrovoid main(){		//Initializare	ansel = 0x20;cmcon = 0x07;	//Cod de initializare intrerupere	option_reg = 0xC0;	//Punct de legatura	//Punct de legatura: [A]: AFCC_Principal_A:;	//Iesire	//Iesire: 5 -> A2	trisio = trisio & 0xfb;	if (5)		gpio = (gpio & 0xfb) | 0x04;	else		gpio = gpio & 0xfb;	//Intarziere	//Intarziere: 1 s	delay_s(1);	//Iesire	//Iesire: 0 -> A2	trisio = trisio & 0xfb;	if (0)		gpio = (gpio & 0xfb) | 0x04;	else		gpio = gpio & 0xfb;	//Intarziere	//Intarziere: 1 s	delay_s(1);	//Du-te la Punct de legatura	//Du-te la Punct de legatura: [A]: A	goto FCC_Principal_A;	mainendloop: goto mainendloop;}void MX_INTERRUPT_MACRO(void){}

Am cautat pe net si nu am gasit nicio explicatie..

E stricat pic-ul ?

Trebuie sa fac anumite setari ?

Nu e bun codul ?

Nu e corect circuitul ?

 

CARE E PROBLEMA ? :|

 

Va multumesc anticipat si sper sa reusesc sa programez si eu un pic....

 

O zi buna !

Link spre comentariu
  • Răspunsuri 13
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • puiu

    3

  • Liviu M

    2

  • adrian_pic

    1

Top autori în acest subiect

Vizitator lucik

In simulator merge.....

Codul ASM :

	include "P12F675.inc"; Heap block 0, size:27 (0x00000044 - 0x0000005E)__HEAP_BLOCK0_BANK               EQU	0x00000000__HEAP_BLOCK0_START_OFFSET       EQU	0x00000044__HEAP_BLOCK0_END_OFFSET         EQU	0x0000005E; Heap block 1, size:0 (0x00000000 - 0x00000000)__HEAP_BLOCK1_BANK               EQU	0x00000000__HEAP_BLOCK1_START_OFFSET       EQU	0x00000000__HEAP_BLOCK1_END_OFFSET         EQU	0x00000000; Heap block 2, size:0 (0x00000000 - 0x00000000)__HEAP_BLOCK2_BANK               EQU	0x00000000__HEAP_BLOCK2_START_OFFSET       EQU	0x00000000__HEAP_BLOCK2_END_OFFSET         EQU	0x00000000; Heap block 3, size:0 (0x00000000 - 0x00000000)__HEAP_BLOCK3_BANK               EQU	0x00000000__HEAP_BLOCK3_START_OFFSET       EQU	0x00000000__HEAP_BLOCK3_END_OFFSET         EQU	0x00000000gbl_status                       EQU	0x00000003 ; bytes:1gbl_16_LSR                       EQU	0x00000020 ; bytes:4gbl_float_detect_tininess        EQU	0x00000039 ; bytes:1gbl_float_rounding_mode          EQU	0x0000003A ; bytes:1gbl_float_exception_flags        EQU	0x0000003B ; bytes:1gbl_17_gbl_aSig                  EQU	0x00000024 ; bytes:4gbl_17_gbl_bSig                  EQU	0x00000028 ; bytes:4gbl_17_gbl_zSig                  EQU	0x0000002C ; bytes:4gbl_17_gbl_aExp                  EQU	0x0000003C ; bytes:1gbl_17_gbl_bExp                  EQU	0x0000003D ; bytes:1gbl_17_gbl_zExp                  EQU	0x00000037 ; bytes:2gbl_17_gbl_aSign                 EQU	0x0000003E ; bytes:1gbl_17_gbl_bSign                 EQU	0x0000003F ; bytes:1gbl_17_gbl_zSign                 EQU	0x00000040 ; bytes:1gbl_17_gbl_zSigZero              EQU	0x00000041 ; bytes:1gbl_17_gbl_ret                   EQU	0x00000030 ; bytes:4gbl_indf                         EQU	0x00000000 ; bytes:1gbl_tmr0                         EQU	0x00000001 ; bytes:1gbl_pcl                          EQU	0x00000002 ; bytes:1gbl_fsr                          EQU	0x00000004 ; bytes:1gbl_gpio                         EQU	0x00000005 ; bytes:1gbl_pclath                       EQU	0x0000000A ; bytes:1gbl_intcon                       EQU	0x0000000B ; bytes:1gbl_pir1                         EQU	0x0000000C ; bytes:1gbl_tmr1l                        EQU	0x0000000E ; bytes:1gbl_tmr1h                        EQU	0x0000000F ; bytes:1gbl_t1con                        EQU	0x00000010 ; bytes:1gbl_cmcon                        EQU	0x00000019 ; bytes:1gbl_adresh                       EQU	0x0000001E ; bytes:1gbl_adcon0                       EQU	0x0000001F ; bytes:1gbl_option_reg                   EQU	0x00000081 ; bytes:1gbl_trisio                       EQU	0x00000085 ; bytes:1gbl_pie1                         EQU	0x0000008C ; bytes:1gbl_pcon                         EQU	0x0000008E ; bytes:1gbl_osccal                       EQU	0x00000090 ; bytes:1gbl_wpu                          EQU	0x00000095 ; bytes:1gbl_ioc                          EQU	0x00000096 ; bytes:1gbl_iocb                         EQU	0x00000096 ; bytes:1gbl_vrcon                        EQU	0x00000099 ; bytes:1gbl_eedata                       EQU	0x0000009A ; bytes:1gbl_eeadr                        EQU	0x0000009B ; bytes:1gbl_eecon1                       EQU	0x0000009C ; bytes:1gbl_eecon2                       EQU	0x0000009D ; bytes:1gbl_adresl                       EQU	0x0000009E ; bytes:1gbl_ansel                        EQU	0x0000009F ; bytes:1CompTempVar2205                  EQU	0x00000042 ; bytes:1delay_ms_00000_arg_del           EQU	0x00000043 ; bytes:1delay_s_00000_arg_del            EQU	0x00000042 ; bytes:1Int1Context                      EQU	0x0000005F ; bytes:1Int1BContext                     EQU	0x00000034 ; bytes:3	ORG 0x00000000	GOTO	_startup	ORG 0x00000004	MOVWF Int1Context	SWAPF STATUS, W	BCF STATUS, RP0	MOVWF Int1BContext	SWAPF PCLATH, W	MOVWF Int1BContext+D'1'	SWAPF FSR, W	MOVWF Int1BContext+D'2'	BCF PCLATH,3	BCF PCLATH,4	GOTO	interrupt	ORG 0x00000010delay_ms_00000; { delay_ms ; function begin	MOVF delay_ms_00000_arg_del, F	BTFSS STATUS,Z	GOTO	label1	RETURNlabel1	MOVLW 0xF5label2	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	ADDLW 0xFF	BTFSS STATUS,Z	GOTO	label2	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	NOP	DECFSZ delay_ms_00000_arg_del, F	GOTO	label1	RETURN; } delay_ms function end	ORG 0x00000038delay_s_00000; { delay_s ; function beginlabel3	MOVLW 0xFA	MOVWF delay_ms_00000_arg_del	CALL delay_ms_00000	MOVLW 0xFA	MOVWF delay_ms_00000_arg_del	CALL delay_ms_00000	MOVLW 0xFA	MOVWF delay_ms_00000_arg_del	CALL delay_ms_00000	MOVLW 0xFA	MOVWF delay_ms_00000_arg_del	CALL delay_ms_00000	DECFSZ delay_s_00000_arg_del, F	GOTO	label3	RETURN; } delay_s function end	ORG 0x00000047main; { main ; function begin	MOVLW 0x20	BSF STATUS, RP0	MOVWF gbl_ansel	MOVLW 0x07	BCF STATUS, RP0	MOVWF gbl_cmcon	MOVLW 0xC0	BSF STATUS, RP0	MOVWF gbl_option_reglabel4	MOVLW 0xFB	BSF STATUS, RP0	ANDWF gbl_trisio, W	MOVWF gbl_trisio	MOVLW 0xFB	BCF STATUS, RP0	ANDWF gbl_gpio, W	MOVWF CompTempVar2205	MOVLW 0x04	IORWF CompTempVar2205, W	MOVWF gbl_gpio	MOVLW 0x01	MOVWF delay_s_00000_arg_del	CALL delay_s_00000	MOVLW 0xFB	BSF STATUS, RP0	ANDWF gbl_trisio, W	MOVWF gbl_trisio	MOVLW 0xFB	BCF STATUS, RP0	ANDWF gbl_gpio, W	MOVWF gbl_gpio	MOVLW 0x01	MOVWF delay_s_00000_arg_del	CALL delay_s_00000	GOTO	label4; } main function end	ORG 0x0000006A_startup	MOVLW 0xD5	BCF STATUS, RP0	MOVWF gbl_16_LSR	MOVLW 0xC4	MOVWF gbl_16_LSR+D'1'	MOVLW 0xBB	MOVWF gbl_16_LSR+D'2'	MOVLW 0xDC	MOVWF gbl_16_LSR+D'3'	CLRF gbl_17_gbl_aSig	CLRF gbl_17_gbl_aSig+D'1'	CLRF gbl_17_gbl_aSig+D'2'	CLRF gbl_17_gbl_aSig+D'3'	CLRF gbl_17_gbl_bSig	CLRF gbl_17_gbl_bSig+D'1'	CLRF gbl_17_gbl_bSig+D'2'	CLRF gbl_17_gbl_bSig+D'3'	CLRF gbl_17_gbl_zSig	CLRF gbl_17_gbl_zSig+D'1'	CLRF gbl_17_gbl_zSig+D'2'	CLRF gbl_17_gbl_zSig+D'3'	CLRF gbl_17_gbl_aExp	CLRF gbl_17_gbl_bExp	CLRF gbl_17_gbl_zExp	CLRF gbl_17_gbl_zExp+D'1'	CLRF gbl_17_gbl_aSign	CLRF gbl_17_gbl_bSign	CLRF gbl_17_gbl_zSign	CLRF gbl_17_gbl_zSigZero	CLRF gbl_17_gbl_ret	CLRF gbl_17_gbl_ret+D'1'	CLRF gbl_17_gbl_ret+D'2'	CLRF gbl_17_gbl_ret+D'3'	CLRF gbl_float_rounding_mode	CLRF gbl_float_exception_flags	CLRF gbl_float_detect_tininess	BCF PCLATH,3	BCF PCLATH,4	GOTO	main	ORG 0x00000091interrupt; { interrupt ; function begin	BCF STATUS, RP0	SWAPF Int1BContext+D'2', W	MOVWF FSR	SWAPF Int1BContext+D'1', W	MOVWF PCLATH	SWAPF Int1BContext, W	MOVWF STATUS	SWAPF Int1Context, F	SWAPF Int1Context, W	RETFIE; } interrupt function end	ORG 0x00002007	DW 0x3FB7	END
Link spre comentariu
Vizitator lucik

Mi-ati pus intrebari deja care nu le pricep....sunt beginer :nas: Ce e ala oscilator , ce e MCLRE...si cum aflu ce oscilator folosesc si ce MCLRE....Eu apreciez enorm ca ma ajutati dar nu stiu detalii d'astea...sunt deja nivel avansat pt mine...Dar poate invat..mi-as dori tare mult...poate un tutorial ceva....Va multumesc anticipat! Salutare!

Link spre comentariu

Daca vrei sa inveti trebuie sa o iei cu inceputul. Prima data cind vrei sa lucrezi cu un microcontroler trebuie sa citesti in totalitate PDF-ul acestuia. Fara sa parcurgi de doua ori pdf-ul nu cred ca ai sanse sa ai o imagine de ansamblu pentru ca apoi sa poti face ceva cu el. Oscilatorul ca sa zic asa benzina pentru masina. El poate fi configurat in doua moduri: intern si extern. Cin este extern inseamna ca trebuie sa pui ceva in exteriorul micrcocontroller-ului si sa il conectezi la acesta. De obicei ca oscilator extern se foloseste un quartz si doi condensatori. Scrie despre astea mai mult in PDF-ul lui ( ca sa te ajut un pic .... pagina 55 din pdf iar cu MCLRE-ul pagina 58).Ia vezi acum? Se vede luminita de la capatul tunelului? Eu zic ca trebuie sa se vada!

Link spre comentariu

Nu cunosc compilatorul folosit (desi apare un HI-TECH pe acolo nu seaman cu ce stiu eu), nu stiu exact la ce e bun define-ul:

//Fuctii#define MX_CLK_SPEED 19660800
da' daca are legatura cu ceasul pic-ului poate trebuie schimbat si aici valoarea in

//Fuctii#define MX_CLK_SPEED 4000000
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări