Vizitator lucik Postat Septembrie 15, 2010 Partajează Postat Septembrie 15, 2010 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
Vizitator lucik Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 nu stie nimeni ? ? :cry: Link spre comentariu
puiu Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 1. In simulator merge?2. Eu lucrez cu ASM si nu ma pricep la C. Link spre comentariu
Vizitator lucik Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 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
Liviu M Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 Ce fel de ceas folosesti? Ca din codul ala de la __CONFIG(0x3fb7) nu reusesc sa ma prind. Link spre comentariu
puiu Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 1. MPLAB da la codul de configurare 3FB7 = Oscillator: External RC Clockout, WDT : off, PUT: off, MCLRE: External, BODEN, CP si CPD: off.2. Ai oscilator extern?3. Ai comanda MCLRE? Link spre comentariu
Vizitator lucik Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 Mi-ati pus intrebari deja care nu le pricep....sunt beginer 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
adrian_pic Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 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
Vizitator lucik Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 Cred k mai bine lucrez cu arduino..dau un ban dar stiu sigur k merge.. Link spre comentariu
Vizitator lucik Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 Din ce am citit in datasheet am inteles ca are si oscilator intern de 4Mhz deci as putea sa-l folosesc pe asta ...GP4 . Deci trebuie sa leg la GP4 ? pff...greu si cu engleza asta.. Link spre comentariu
Vizitator thenoble66 Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 Schimba configuratia veche in: //Date de configurare#ifdef _BOOSTC#pragma DATA 0x2007, 0x3f84#endif#ifdef HI_TECH_C__CONFIG(0x3f84);#endif thenoble66 Link spre comentariu
Liviu M Postat Septembrie 16, 2010 Partajează Postat Septembrie 16, 2010 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 19660800da' daca are legatura cu ceasul pic-ului poate trebuie schimbat si aici valoarea in //Fuctii#define MX_CLK_SPEED 4000000 Link spre comentariu
puiu Postat Septembrie 17, 2010 Partajează Postat Septembrie 17, 2010 1. http://www.mikroe.com/ro/product/books/ ... icbook.htm 2. Ce schema folosesti? Link spre comentariu
Vizitator lucik Postat Septembrie 17, 2010 Partajează Postat Septembrie 17, 2010 Am incercat multe variante..tot nu vrea.O sa ma intrept catre arduino si stiu sigur ca merge....Multumesc mult pentru raspunsuri ! Ne mai auzim cu vesti bune! Ciao Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum