Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

PIC16F627 nefunguje
Jdi na stránku 1, 2, 3  Další
 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
seeter
Neregistrovaný





PříspěvekZaslal: út březen 18 2008, 16:58    Předmět: PIC16F627 nefunguje Citovat

Dobrý den, udělal jsem takovou hloupou aplikaci, kde mi bliká jedna LED dioda. Odzkoušel jsem to na emulátoru od Asixu a vše fungovalo. Poté jsem program nátáhl do procesoru a když jsem jej spustil nic se nestalo. Netušim ani ,kde bych měl hledat chybu. Tišťák se zdá být v pořádku a program taky. Ovšem v manuálu od Microchipu sem nalezl různé proměnné, které se definují, ale u nikoho jsem je nenašel v programu. Prosím o pomoc...díky...
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: út březen 18 2008, 17:11    Předmět: Citovat

Dej sem svůj program a schéma zapojení. Pak budem mít o čem diskutovat.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
Sunmay



Založen: May 09, 2006
Příspěvky: 171
Bydliště: Morava

PříspěvekZaslal: út březen 18 2008, 19:23    Předmět: Citovat

Zkusil bych změnit oscilátor z RC na XT Wink
_________________
Jak sem se dostal k elektrotechnice? No to je jednoduché, kdy sem byl malý měl sem strašně moc rád stavebnice a to mi zůstalo ... a řekněte mi, která stavebnice má víc součástek Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky Yahoo Messenger MSN Messenger
seeter
Neregistrovaný





PříspěvekZaslal: út březen 18 2008, 21:13    Předmět: Citovat

Tady sou ty soubory...


One.ASM
 Komentář:

Stáhnout
 Soubor:  One.ASM
 Velikost:  1.13 kB
 Staženo:  83 krát


schema.jpg
 Komentář:

Stáhnout
 Soubor:  schema.jpg
 Velikost:  14.12 kB
 Staženo:  66 krát

Návrat nahoru
Sunmay



Založen: May 09, 2006
Příspěvky: 171
Bydliště: Morava

PříspěvekZaslal: út březen 18 2008, 22:14    Předmět: Citovat

A nastavil si správně ty konfigureční bity (jako že chces používat krystal, že nechces používat watchdog atd.) ?
_________________
Jak sem se dostal k elektrotechnice? No to je jednoduché, kdy sem byl malý měl sem strašně moc rád stavebnice a to mi zůstalo ... a řekněte mi, která stavebnice má víc součástek Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovy WWW stránky Yahoo Messenger MSN Messenger
seeter
Neregistrovaný





PříspěvekZaslal: út březen 18 2008, 22:44    Předmět: Citovat

tak to sem teda nenastavil...a ani nevim, jak se to dělá... Sad
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: st březen 19 2008, 8:59    Předmět: Citovat

Zkus třeba následující. Direktiva __CONFIG nastavuje mimo jiné i typ oscilátoru.
kód:
 list      p=16F627             ; list directive to define processor
    #include <P16f627.inc>      ; processor specific variable definitions
    errorlevel -302
    __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC

   
;--------- CONSTANTS DEFINITIONS---------------------------------------
    #define     RAM_Start       0x20
    #define     TIME0           D'30'
    #define     TIME1           D'30'
    #define     TIME2           D'30'
;--------- VARIABLE DEFINITIONS ---------------------------------------
    CBLOCK  RAM_Start
TMP0
TMP1
TMP2
    ENDC
;----------------------------------------------------------------------
        ORG     0x000           ; Processor reset vector
reset   nop
        goto init               ; Go to beginning of program
        ORG     0x004           ; interrupt vector location
        nop
init   
        BSF STATUS,RP0
        MOVLW B'00000000'
        MOVWF TRISA
        MOVLW B'00000000'
        MOVWF TRISB
        BCF STATUS,RP0
;------------------------------
        MOVLW TIME2
        MOVWF TMP2
        MOVLW TIME1
        MOVWF TMP1
        MOVLW TIME0
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9
;------------------------------
FIRST   MOVLW B'00000100'   
        MOVWF PORTB
;
        MOVLW TIME2
        MOVWF TMP2
        MOVLW TIME1
        MOVWF TMP1
        MOVLW TIME0
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9   
;       
        MOVLW B'00000000'   
        MOVWF PORTB

;
        MOVLW TIME2
        MOVWF TMP2
        MOVLW TIME1
        MOVWF TMP1
        MOVLW TIME0
        MOVWF TMP0
        DECFSZ TMP0,F
        GOTO $-1
        DECFSZ TMP1,F
        GOTO $-5
        DECFSZ TMP2,F
        GOTO $-9
        GOTO FIRST
;
    END


Nebo ještě lépe takto:
kód:
list      p=16F627             ; list directive to define processor
    #include <P16f627.inc>      ; processor specific variable definitions
    errorlevel -302
    __CONFIG _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC

   
;--------- CONSTANTS DEFINITIONS---------------------------------------
    #define     RAM_Start       0x20
    #define     TIME0           D'30'
    #define     TIME1           D'30'
    #define     TIME2           D'30'
;--------- VARIABLE DEFINITIONS ---------------------------------------
    CBLOCK  RAM_Start
TMP0
TMP1
TMP2
    ENDC
;----------------------------------------------------------------------
        ORG     0x000           ; Processor reset vector
reset   nop
        goto init               ; Go to beginning of program
        ORG     0x004           ; interrupt vector location
        nop
init   
        BSF STATUS,RP0
        MOVLW B'00000000'
        MOVWF TRISA
        MOVLW B'00000000'
        MOVWF TRISB
        BCF STATUS,RP0
;------------------------------
        call delay
FIRST   MOVLW B'00000100'   
        MOVWF PORTB
        call delay
        MOVLW B'00000000'   
        MOVWF PORTB
        call delay
        GOTO FIRST
;------------------------------
delay
        MOVLW TIME2
        MOVWF TMP2
del2    MOVLW TIME1
        MOVWF TMP1
del1    MOVLW TIME0
        MOVWF TMP0
del0    DECFSZ TMP0,F
        GOTO del0
        DECFSZ TMP1,F
        GOTO del1
        DECFSZ TMP2,F
        GOTO del2
        return
;
    END
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
seeter
Neregistrovaný





PříspěvekZaslal: st březen 19 2008, 12:27    Předmět: Citovat

tak jsem to celé zkopíroval a prohnal emulátorem, ten to vše přijal až na _DATA_CP_OFF - není definovaná a tak jsem jí smazal... když sem to pustil na emul. tak to fungovalo...ale po natažení do procesoru to pořád nefunguje...chtěl jsem se zeptat na pár věcí: proč tam jsou na začátku programu příkazy pro přerušení a proč tam jsou přidané proměnné jako TIME0,1 a 2? co znamená errorlevel - 302 a co znamenájí ty definice v řádku a co znamená CBLOCK RAM_Start ? Embarassed
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: st březen 19 2008, 13:24    Předmět: Citovat

kód:
_DATA_CP_OFF - není definovaná
zřejmě je v tvém kompileru starší verze souboru P16f627.inc, to lze snadno napravit. V prostředí MPLAB 8.0 je to legální konstrukce.
kód:
ale po natažení do procesoru to pořád nefunguje

Jaký používáš krystal? Do 4MHz je vhodné použít _XT_OSC místo _HS_OSC v direktivě __CONFIG.
kód:
 proč tam jsou na začátku programu příkazy pro přerušení 

První NOP na adrese 0x000 je rezervace pro ICD - In Circuit Debugging, tebe se to s emulátorem netýká, můžeš to vypustit. ORG 0x004 rezervuje prostor pro přerušení a na místo budoucího vektoru jsem vložil tu druhou NOP. Žádné přerušení v programu neexistuje ale brzo to budeš potřebovat.
kód:
proč tam jsou přidané proměnné jako TIME0,1 a 2

To nejsou proměnné, nýbrž konstanty.Chtěl jsem ti prezentovat, že je naprosto zcestné používat přímo v programu číselné konstanty. Pokud bys chtěl v původním programu konstantu D'30' změnit, musel bys to dělat na třech místech. Ve složitějším programu je to jen zdrojem chyb.
kód:
errorlevel - 302
Je příkaz, který potlačí chybová hlášení o přepínání bank. U složitějších programů budeš moc rád, že ho znáš, protože tohle hlášení nic neřeší, ale hodně překáží.
kód:
CBLOCK RAM_Start

Předtím definovaná konstanta RAM_Start ukazuje na počátek použitelné RAM. Příkaz CBLOCK definuje počátek pole uživatelských promněných. Mezi CBLOK a ENDC píšeš svoje proměnné a nemusíš jim přiřazovat absolutní adresy třeba pomocí EQU, jak jsi to udělal ty.
kód:
co znamenájí ty definice v řádku 

Je to nastavení jednotlivých konfiguračních bitů procesoru. Jejich význam najdeš v datasheetu třeba pod pojmem configuration bits.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: st březen 19 2008, 13:34    Předmět: Citovat

Pokud v direktivě __CONFIG dáš na místo parametru _HS_OSC parametr _INTRC_OSC_NOCLKOUT, tak by měl být použit interní oscilátor. Připojený krystal nebude ničemu vadit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
seeter
Neregistrovaný





PříspěvekZaslal: st březen 19 2008, 13:48    Předmět: Citovat

tak to teda klobouk dolů, to jste teda dobrej... Smile díky moc za vysvětlení...ještě se na to kouknu...
Návrat nahoru
seeter
Neregistrovaný





PříspěvekZaslal: st březen 19 2008, 13:49    Předmět: Citovat

ten krystal mám 5 MHz...
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: st březen 19 2008, 14:05    Předmět: Citovat

Krystal může spolehlivě kmitat s emulátorem, ale s reálnou PIC nemusí. Chce to zkusit nejprve asi s tím interním oscilátorem. Bez inicializace pracuje na 4MHz. Použij
kód:
__CONFIG _LVP_OFF & _BODEN_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT

a uvidíš.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
seeter
Neregistrovaný





PříspěvekZaslal: st březen 19 2008, 14:08    Předmět: Citovat

tak _INTRC_OSC_NOCLKOUT to jako příkaz nebere, ale to by nebyl problém, když tam ten krystal je připojenej, ale pořád to nefunguje,...jako b to vůbec nežilo a přitom je napětí jak na plusu tak na MCLR a když tam program vypálím, tak ho i zpětně kontroluji, zda tam je... a vždy tam je... Sad
Návrat nahoru
jankop



Založen: Apr 04, 2007
Příspěvky: 679

PříspěvekZaslal: st březen 19 2008, 14:25    Předmět: Citovat

Najdi soubor P16f627.inc a zkontroluj parametr _INTRC_OSC_NOCLKOUT. Bude tam nejspíš, jen v trochu jiné podobě.
S tímto parametrem krystal nepotřebuješ. Čím vlastně programuješ? Programuješ i s konfiguračním slovem? Přečti kompletně obsah procesoru a pošli mi ho emailem.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2, 3  Další
Strana 1 z 3

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra.
Nemůžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Nemůžete připojovat soubory k příspěvkům
Můžete stahovat a prohlížet přiložené soubory

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.20 sekund