forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
Power-on reset

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip
 
Ted
Anonymní





PříspěvekZaslal: 20 únor 2020, 9:10    Předmět: Power-on reset Citovat

Zdravím,
obracím se s prosbou ohledně Power-on resetu. Mám MCU PIC18f46K22, na breadboardu mam zapojen jednoduchý obvod, kterým chci otestovat GPIO tohoto MCU - LED a větráček. Zatím se jedná o port A, dva piny mám proudově posíleny unipoláry. Na poli mam stabilizátor LM317, ze kterého mi leze napětí 4.6V, které spínám pomocí těch dvou pinů s tranzistory a tím ovládám svit LED a otáčky větráčku. Samotné MCU napájím pomocí Pickitu3 4.6V a LM317 napájím 24V. O co jde, když chci nahrát jednoduchý testovací prográmek v assembleru do MCU, tak MPLAB X sice udělá build, nahraje ho do MCU, ale MCU nereaguje. Při proměření napětí na pinech PORTU A se chová v podstatě tak, jak je popsáno v datasheetu u Power-on resetu. Poradil by mi někdo, jak se zbavit toho resetu při připojení napájení? Zkoušel jsem zapojení obvodu pro Power-on reset dle datasheetu, ale stav se nezměnil. Rád bych věděl, jak se tomuhle stavu vyhnout, popřípadě jak ho eliminovat na dps při návrhu.
P.s. Blokovací kondenzátory u napájení OZ a MCU používám běžně.

[code]
#include "p18f46k22.inc"

; CONFIG1H
CONFIG FOSC = INTIO67 ; Oscillator Selection bits (Internal oscillator block)
CONFIG PLLCFG = OFF ; 4X PLL Enable (Oscillator used directly)
CONFIG PRICLKEN = ON ; Primary clock enable bit (Primary clock is always enabled)
CONFIG FCMEN = OFF ; Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
CONFIG IESO = OFF ; Internal/External Oscillator Switchover bit (Oscillator Switchover mode disabled)

; CONFIG2L
CONFIG PWRTEN = OFF ; Power-up Timer Enable bit (Power up timer disabled)
CONFIG BOREN = OFF ; Brown-out Reset Enable bits (Brown-out Reset disabled in hardware and software)
CONFIG BORV = 190 ; Brown Out Reset Voltage bits (VBOR set to 1.90 V nominal)

; CONFIG2H
CONFIG WDTEN = OFF ; Watchdog Timer Enable bits (Watch dog timer is always disabled. SWDTEN has no effect.)
CONFIG WDTPS = 32768 ; Watchdog Timer Postscale Select bits (1:32768)

; CONFIG3H
CONFIG CCP2MX = PORTC1 ; CCP2 MUX bit (CCP2 input/output is multiplexed with RC1)
CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<5:0> pins are configured as digital I/O on Reset)
CONFIG CCP3MX = PORTB5 ; P3A/CCP3 Mux bit (P3A/CCP3 input/output is multiplexed with RB5)
CONFIG HFOFST = OFF ; HFINTOSC Fast Start-up (HFINTOSC output and ready status are delayed by the oscillator stable status)
CONFIG T3CMX = PORTC0 ; Timer3 Clock input mux bit (T3CKI is on RC0)
CONFIG P2BMX = PORTD2 ; ECCP2 B output mux bit (P2B is on RD2)
CONFIG MCLRE = EXTMCLR ; MCLR Pin Enable bit (MCLR pin enabled, RE3 input pin disabled)

; CONFIG4L
CONFIG STVREN = OFF ; Stack Full/Underflow Reset Enable bit (Stack full/underflow will not cause Reset)
CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply ICSP disabled)
CONFIG XINST = OFF ; Extended Instruction Set Enable bit (Instruction set extension and Indexed Addressing mode disabled (Legacy mode))

; CONFIG5L
CONFIG CP0 = OFF ; Code Protection Block 0 (Block 0 (000800-003FFFh) not code-protected)
CONFIG CP1 = OFF ; Code Protection Block 1 (Block 1 (004000-007FFFh) not code-protected)
CONFIG CP2 = OFF ; Code Protection Block 2 (Block 2 (008000-00BFFFh) not code-protected)
CONFIG CP3 = OFF ; Code Protection Block 3 (Block 3 (00C000-00FFFFh) not code-protected)

; CONFIG5H
CONFIG CPB = OFF ; Boot Block Code Protection bit (Boot block (000000-0007FFh) not code-protected)
CONFIG CPD = OFF ; Data EEPROM Code Protection bit (Data EEPROM not code-protected)

; CONFIG6L
CONFIG WRT0 = OFF ; Write Protection Block 0 (Block 0 (000800-003FFFh) not write-protected)
CONFIG WRT1 = OFF ; Write Protection Block 1 (Block 1 (004000-007FFFh) not write-protected)
CONFIG WRT2 = OFF ; Write Protection Block 2 (Block 2 (008000-00BFFFh) not write-protected)
CONFIG WRT3 = OFF ; Write Protection Block 3 (Block 3 (00C000-00FFFFh) not write-protected)

; CONFIG6H
CONFIG WRTC = OFF ; Configuration Register Write Protection bit (Configuration registers (300000-3000FFh) not write-protected)
CONFIG WRTB = OFF ; Boot Block Write Protection bit (Boot Block (000000-0007FFh) not write-protected)
CONFIG WRTD = OFF ; Data EEPROM Write Protection bit (Data EEPROM not write-protected)

; CONFIG7L
CONFIG EBTR0 = OFF ; Table Read Protection Block 0 (Block 0 (000800-003FFFh) not protected from table reads executed in other blocks)
CONFIG EBTR1 = OFF ; Table Read Protection Block 1 (Block 1 (004000-007FFFh) not protected from table reads executed in other blocks)
CONFIG EBTR2 = OFF ; Table Read Protection Block 2 (Block 2 (008000-00BFFFh) not protected from table reads executed in other blocks)
CONFIG EBTR3 = OFF ; Table Read Protection Block 3 (Block 3 (00C000-00FFFFh) not protected from table reads executed in other blocks)

; CONFIG7H
CONFIG EBTRB = OFF ; Boot Block Table Read Protection bit (Boot Block (000000-0007FFh) not protected from table reads executed in other blocks)



RES_VECT CODE 0x0000 ; processor reset vector
GOTO START ; go to beginning of program

; TODO ADD INTERRUPTS HERE IF USED

MAIN_PROG CODE ; let linker place main program

START


movlw 0x3B
movwf OSCCON
movlw 0x87
movwf OSCCON2
movlw 0xC0
movwf PMD0
movlw 0xFF
movwf PMD1
movlw 0x1F
movwf RCON
movlw 0xC
movwf STATUS

movlb 0xF

clrf PORTA
movlw 0x00 ; all pins are digital
movwf ANSELA
movlw 0xF8
movwf TRISA ;RA(0-2) -> output, RA(5-3) -> input

;GOTO $ ; loop forever

END
[/code]
Návrat nahoru
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 328
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 20 únor 2020, 14:10    Předmět: Citovat

Ahoj, ten program ale nic nedělá.
Pouze zvláštně nastaví trisa a to je vše.
Výstupní pony se ovládají přes LATx a čtení se provádí přes PORTx

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Anonymní






PříspěvekZaslal: 20 únor 2020, 15:28    Předmět: Citovat

Billy Bob Bean napsal:
Ahoj, ten program ale nic nedělá.
Pouze zvláštně nastaví trisa a to je vše.
Výstupní pony se ovládají přes LATx a čtení se provádí přes PORTx

Takto jsem to vzal z datasheetu. Potřeboval jsem pouze rozsvítit LED, to znamená, nastavit PORTA na digitální výstup a v tom je problém, že PORTA se chová, při nastavení ANSELA na digitální výstup, jako analogový vstup a Ra4 jako digitální výstup
Návrat nahoru
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 328
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 21 únor 2020, 9:41    Předmět: Citovat

Musíš ten datasheet přečíst, ne z něho "něco" vzít.
• TRIS register (data direction register)
• PORT register (reads the levels on the pins of the
device)
• LAT register (output latch)
• ANSEL register (analog input control)

V C do ASM se už pouštět nebudu:
kód:

PORTA = 0;        // Neni potreba, ale delam to
ANSELA = 0;      // Vse digitalni
TRISA = 0xF8;   // Nastavit vstupy/vystupy
LATA = 0x03;     // Nastavit vystup RA0/1 do 1


Doporučuju stáhnout XC8 ze stránek Microchipu a začít se učit v tom. V ASM z toho budeš akorát nešťastnej.

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Teodor
Nováček
Nováček


Založen: 20.2.2020
Příspěvky: 1

PříspěvekZaslal: 21 únor 2020, 12:07    Předmět: Citovat

Billy Bob Bean napsal:
Musíš ten datasheet přečíst, ne z něho "něco" vzít.
• TRIS register (data direction register)
• PORT register (reads the levels on the pins of the
device)
• LAT register (output latch)
• ANSEL register (analog input control)

V C do ASM se už pouštět nebudu:
kód:

PORTA = 0;        // Neni potreba, ale delam to
ANSELA = 0;      // Vse digitalni
TRISA = 0xF8;   // Nastavit vstupy/vystupy
LATA = 0x03;     // Nastavit vystup RA0/1 do 1


Doporučuju stáhnout XC8 ze stránek Microchipu a začít se učit v tom. V ASM z toho budeš akorát nešťastnej.


Díky!
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Mahoney
Profesionál
Profesionál


Založen: 26.12.2013
Příspěvky: 152

PříspěvekZaslal: 26 únor 2020, 23:02    Předmět: Citovat

Neviděl bych to tak tragicky s tím ASM, spíš právě naopak, řada PIC18F je na ASM o dost lepší než obvykle používané PIC16F. V ASM jsem dělal docela dlouho, a nebyl jsem sám, třeba honza3 tady z fóra v něm má napsaný projekty na desetitisíce řádků a věřím tomu, že se v tom neztratil. Ono to chce vědět co člověk dělá (ale to i v C, poctivě ČÍST ten datasheet i manuál ke kompilátoru je opravdu nezbytnost), dodržovat nějaký zvyklosti a jakousi "štábní kulturu", utvořit si systém a pak to jde - čímž jsem se chtěl dostat třeba k tomu, že v tom kódu nemá jedinej komentář. Chyba, která později stojí mnoho času.

Tím samozřejmě nijak nerozporuji nesporné výhody a rapidně rychlejší vývoj v C (a taky "kouzla" objevování cizích chyb v odfláknutých novějších verzích kompilátorů, že Very Happy ), ale to objeví až se dostane k matematice, vícebajtovým proměnným, konverzím číselných soustav, prací s texty či grafikou pro displeje a podobně, u rozsvěcení ledky to nepozná.

Ten POR si právěže zapni, a MCU napájej z aplikace, ne z programátoru. Ono to není dobrý napájet z programátoru ani normálně, natož s Pickit3, kterej je na tohle fakt hodně slabej.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Billy Bob Bean
Profesionál
Profesionál


Založen: 21.9.2009
Příspěvky: 328
Bydliště: OLOMOUC - BRNO

PříspěvekZaslal: 27 únor 2020, 9:40    Předmět: Citovat

Jasně, taky jsem v ASM dělal dost dlouho a na C jsem přešel až s nutností přejít na dsPIC33 a PIC24.
V něčem má ASM svoje kouzlo, ale začátky v tom byly těžké.
Shodou okolností předělávám po borcovi program v ASM co běhá na PIC18 do C, protože je ten projekt už neudržitelnej a oprava jedné chyby znamená vytvoření asi tak 15 nových. Má to cca 47 000 řádků v ASM.

Jak píše Mahoney, rozhodně napájet MCU z aplikace, z programátoru fakt ne, je to další obrovský zdroj problémů.

_________________
Stavím UPSky
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> Microchip Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můž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.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2020 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)