resetar o pic via software e zerar ram

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

resetar o pic via software e zerar ram

Mensagempor cristian » 07 Fev 2011 14:13

acho q ja perguntei .....

mas como resetar o pic via software , sem ser pelo WDT

e

vi um codigo no mikroc apagando toda memoria ram ao lligar , mas nao achei onde foi , alguem ai sabe ?
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor ÁgioFelipe » 09 Fev 2011 09:38

Você pode fazer um circuito onde alguma saída do PIC coloque através de um transistor o MCLR em nivel lógico 0.
ÁgioFelipe
Word
 
Mensagens: 626
Registrado em: 27 Out 2006 20:04

Mensagempor andre_luis » 09 Fev 2011 09:50

Também pensei nisso. Existem até CIs dedicados á isso.
Mas seria bacana se tivesse como fazer via firmware.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: resetar o pic via software e zerar ram

Mensagempor barboza » 09 Fev 2011 09:53

cristian escreveu:acho q ja perguntei .....

mas como resetar o pic via software , sem ser pelo WDT

e

vi um codigo no mikroc apagando toda memoria ram ao lligar , mas nao achei onde foi , alguem ai sabe ?


Isso é default no arquivo startup.s no Keil.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor vtrx » 09 Fev 2011 10:31

Não serve para voce?
@ clrf PCLATH
@ Goto 0
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor andre_luis » 09 Fev 2011 12:39

Isso não resseta as variáveis da RAM, correto ?

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor ze » 09 Fev 2011 13:06

o óbvio ululante: pro pic que tem esta instrução algo como asm("reset") ou #asm reset #endasm ou etc. veja o help do seu compilador
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor andre_luis » 09 Fev 2011 14:59

Aparentemente não há essa no set de instrução do PIC, e qualquer outra coisa, seria por diretiva de compilador, que na prática, equivale a uma sequencia de instruçoes que realizaria esse apagamento das variáveis sequencialmente.

Emfim, não há uma resposta positiva pro cristian.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor vtrx » 09 Fev 2011 17:39

Isso não resseta as variáveis da RAM, correto ?

Veja ,dependendo de como foi programado o SoftWare dele,iniciando do enderço zero e zerando o PCLATH ,a Ram vai ser subscrita novamente(temos que analisar as funções dele).
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor EvandrPic » 09 Fev 2011 19:19

O que causaria o reset? Algum evento detectado ou gerado pelo programa gravado nesse microcontrolador?

Nesse caso você não poderia deixar um pino do PIC responsável por comandar o próprio reset? Quando o teu programa decidir pelo reset, ele levaria esse pino pra nivel alto, ou baixo, dependendo da lógica implementado e com isso, saturaria a base de um transistor que comandaria o reset.

Quanto ao apagamento da RAM ao iniciar o programa do PIC, nos códigos do livro da Mosaico Engenharia (Conectando o PIC), tem na inicialização do microcontrolador, uma parte do código responsável por fazer isso. Toda vez que o PIC é ligado ou resetado, é "zerada" a RAM.
Copiei do livro a parte do código que me refiro, talvez ajude.

Código: Selecionar todos
;***************************************************************
;*                    INICIALIZAÇÃO DA RAM                     *
;***************************************************************
; ESTA ROTINA IRÁ LIMPAR TODA A RAM DO BANCO 0, INDO DE 0X20 A 0X7F.
; EM SEGUIDA, AS VARIÁVEIS DE RAM DO PROGRAMA SÃO INICIALIZADAS.

   MOVLW  0X20
   MOVWF  FSR                         ; APONTA O ENDEREÇAMENTO INIDIRETO PARA                                 
                                      ; A PRIMEIRA POSIÇÃO DA RAM
   LIMPA_RAM
        CLRF    INDF                  ; LIMPA A POSIÇÃO
        INCF    FSR,F                 ; INCREMENTA O PONTEIRO PARA A PROXIMA POISÇÃO
        MOVF    FSR,W
        XORLW   0X80                  ; COMPARA PONTEIRO COM A ÚLTIMA POSIÇÃO + 1
        BTFSS   STATUS,Z              ; JÁ LIMPOU TODAS AS POSIÇÕES?
        GOTO    LIMPA_RAM             ; NÃO - LIMPA A PRÓXIMA POSIÇÃO
                                      ; SIM

EvandrPic
Dword
 
Mensagens: 2116
Registrado em: 31 Mar 2010 15:05

Mensagempor andre_luis » 09 Fev 2011 19:51

Agora sim...
Esse tipo de rotinas ficam em determinados compiladores em arquivos de Startup(.asm), que além disso, também pré-configuram alguns módulos.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor fabim » 10 Fev 2011 06:40

caras, os 18F tem o comando reset!!! Todos sem excessão !!!
Sobre limpar ram, que doideira de pergunta eim?
Ram é endereçada, basta criar um ponteiro.

void apaga_ram(void){

char *ponteiro_apaga,contador;

ponteiro_apaga = (char ) 0xEndereço_inicial_bank0;
for(contador=0;contador<banco0;contador++)
*ponteiro_apaga++ = 0;


ponteiro_apaga = (char ) 0xEndereço_inicial_bank1;
for(contador=0;contador<banco1;contador++)
*ponteiro_apaga++ = 0;

/*os bancos 2 e 3 tem pouquissimos bytes em qualquer pic, e podem ser descartados*/

}
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor andre_luis » 10 Fev 2011 07:53

Não se estiver falando do 16F.
De qualquer modo, dá na mesma realizar esse apagamento em C ou ASM.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor ze » 10 Fev 2011 08:50

como não se sabe qual pic é e só por curiosidade, aquela rotina asm serve pra TODOS os pics? desde o 10F ao DSPIC?
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32

Mensagempor cristian » 10 Fev 2011 15:24

o pic é um18f4550


o pic fica monitorando se um pino foi ligado ai reseta....



ma so pior é a cada alimentaçao do pic as variaveis fica loucas , e as vezes atrapalha o funionamento , entao tenho q resetar o pic
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Google [Bot] e 1 visitante

cron

x