Pages: [1] 2   Go Down
Author Topic: RESET CPU  (Read 2215 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Gostava de saber se existe alguma forma de resetar o arduino sem ser através do  watchdog

Code:
if (ligacao_net_OK == true)
     {
      wdt_reset();
     }


Estou a usar esse codigo para resetar o arduino mas não sei se é o mais eficiente para o que eu quero fazer.

Cpts

Zé tretas
Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1545
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Gostava de saber se existe alguma forma de resetar o arduino sem ser através do  watchdog
Sim apontando o programa para o vector de reset.No entanto a quem diga que nao se deve usar pois nao é garantido que de tempo a toda a RAM ser limpa correctamente(nunca testei)
Quote
if (ligacao_net_OK == true)
     {
      wdt_reset();
     }
E ele reseta com esse codigo.
O objectivo do watchdog nao e fazer resetar o arduino quando queres, mas sim caso algo nao aconteca em determindo tempo, o contador do watchdog enche porque algo no codigo demorou demais ou algo nao foi satisfeito que  zera-se esse contador.
Digamos que o cao de guarda fica alerta pronto a morder o reset se algo anomalo acontecer que cause o overflow do contador do watchdog.Logo ele tem de ser acalmado de x em x tempo para nao morder o reset smiley-mr-green
É isto que queres?
« Last Edit: February 13, 2013, 06:29:13 pm by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Gostava de saber se existe alguma forma de resetar o arduino sem ser através do  watchdog

Code:
if (ligacao_net_OK == true)
     {
      wdt_reset();
     }


Estou a usar esse codigo para resetar o arduino mas não sei se é o mais eficiente para o que eu quero fazer.

Cpts

Zé tretas

E o bootloader já aceita o watchdog? Há uns tempos atrás isso nem era possível.
Essa instrucão faz reset do wdt, não do chip. aliás, da forma que está o chip nunca fará reset. O que podes fazer é se houver um erro, crias o WDT com um valor pequeno, e colocas uma instrucão de delay logo a seguir superior ao tempo que tens.

Algo assim:


Code:
if (ligacao_net_OK == FALSE)
     {
      wdt_enable(WDTO_15MS);
      delay(1000);
     }


Isto deve fazer o reset do chip.

Quote
Gostava de saber se existe alguma forma de resetar o arduino sem ser através do  watchdog
Sim apontando o programa para o vector de reset.No entanto a quem diga que nao se deve usar pois nao é garantido(nunca testei)

Isso faz reset ou apenas reinicia o programa deixando os estados como estavam?


Vi alguns posts à pressa acerca disso e não existem grandes solucões para isto:

http://arduino.cc/forum/index.php?topic=82038.0
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=96822
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=65123
http://nongnu.org/avr-libc/user-manual/group__avr__watchdog.html

Também existem chips que fazem essa funcão... caso queiras algo profissional para isso. smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1545
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tens razão renicia o programa deixando os estados dos registos como estavao
Acabei agora de ler isto
Quote
How do I perform a software reset of the AVR?
The canonical way to perform a software reset of the AVR is to use the watchdog timer. Enable the watchdog timer to the shortest timeout setting, then go into an infinite, do-nothing loop. The watchdog will then reset the processor.
The reason why this is preferable over jumping to the reset vector, is that when the watchdog resets the AVR, the registers will be reset to their known, default settings. Whereas jumping to the reset vector will leave the registers in their previous state, which is generally not a good idea.
« Last Edit: February 13, 2013, 07:04:52 pm by HugoPT » Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Já usaste algum chip supervisor de Reset que fizesse esta funcão e não desse cabo do reset para gravacão de programas?

Eu lembro-me de utilizar um Brown-Out detector externo (isto há quase 10 anos atrás) que tornava impossível utilizar o ICSP com ele. Mas é um chip interessante de adicionar principalmente para evitar problemas quando se liga o sistema.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

BHZ, MG, Brazil
Offline Offline
Sr. Member
****
Karma: 10
Posts: 346
Android developer; Arduino enthusiast
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se você usar um RTC que possua um pino de interrupção, pode programar o RTC para resetar o Arduino. eu fiz isto com um DS1337+ e funcionou perfeitamente bem.

Basta ligar o DS1337+ no RST do Arduino, e, quando desejar, programar o DS1337+ para resetá-lo. Se desejar, isto pode acontecer de forma pré-programada (por exemplo, todos os dias à meia-noite), ou dali a alguns segundos, millisegundos, etc. Como o DS1337+ pode trabalhar com alimentação externa, independente do Arduino, o arduino resetando não irá atrapalhar seu funcionamento.

Eu fiz isto de forma apenas experimental, em uma proboboard, e funcionou.

Outros ICs de RTC podem funcionar igualmente bem.
Logged

Learn to live: Live to learn.
Showing off my work: http://arduino.cc/forum/index.php/topic,126197.0.html

Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas

Quote
Code:
if (ligacao_net_OK == FALSE)
     {
      wdt_enable(WDTO_15MS);
      delay(1000);
     }

Bubulindo  o que eu quero é mesmo é que ele resete, e quanto ao teu codigo eu tenho algo parecido no setup(), e o meu objectivo é que ele não resete o wdt e provoque um reset ao arduino, mas pelos vistos o meu problema esta na Ethernet Shield W5100 pois ela passado um tempo deixa de me enviar os dados para um servidor Web ... sem saber porque só que eu pensava que era o arduino que ficava marado mas pelos vistos é ela

Code:

void setup(void)
{
  wdt_enable(WDTO_8S);
  Serial.begin(19200);
  pinMode(etx, OUTPUT);   
  Serial.println("\n\rMicroRegul  ...\n\r");
  Ethernet.begin(mac, ip); 
  delay(5000); // tempo INIT LAN
  //  pinMode(LED, OUTPUT);

  // t.oscillate(LED, 1000, LOW);
  t.every(950, tx_rx);                         // 1 seg
  t.every(5000, Conv_Input_Sat);           // 5 seg
  t.every(60000,  send_to_bd_mysql);     //60 seg
 
}
 

Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ups...

o W5100 não tem um reset físico, pois não?

Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1545
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tem fica no pino 59 do W5100.
Na board tem um botao tambem mas estive agora a confirmar no esquema da ethernet shield e o pino 59 esta conectado ao pino de reset do arduino, ou seja para resetares o w5100 por consequencia vai reniciar o arduino.Podes é remover o IC CAT811TTBI para assim isolares o reset da ethernet e depois podes dedicar um pino no arduino para a resetar.
Espreita no esquema e vê se te pode ajudar.
Terias é de modificar a board.
http://arduino.cc/en/uploads/Main/arduino-ethernet-shield-06-schematic.pdf
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

O que eu queria mesmo era resetar a w5100, nem que para isso tenha que resetar o arduino também ... para a aplicação que tenho não é um problema

Ja agora qual é o codfigo para resetar a w5100

PS : quando carrego no botão da shield o arduino não reseta ... porque será ?

Cpts

Zé tretas
Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Se o problema é o W5100, então o WDT não te vai ajudar.

Poderá o problema estar no teu software?

http://arduino.cc/forum/index.php/topic,85342.msg677517.html#msg677517

Podes também implementar um reset do chip por software.
Estive a ver aqui e se fizeres um reset do Arduino, ele ao iniciar faz o reset do shield por software (na instrucão Ethernet.begin) e fica-se no problema apontado na thread que coloquei em cima.

Experimenta fazer o que eles falam na thread e vê se resulta melhor. smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Obrigado bubulindo ... mas eu já tinha visto esse post só que já o li e reli e fico a perceber o mesmo smiley-sad

Cpts



Zé tretas
Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok. Qual é a parte que não entendes?
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Jr. Member
**
Karma: 1
Posts: 75
3ª Idade ... in the house
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boas,

Que parte da livraria modificar ...

cpts

Zé tretas

Logged

Arduino Mega 2560
Arduino Nano
Arduino UNO Rev3
Raspberry PI Model B
EasyPIC v4

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3223
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

no ficheiro w5100.cpp ... se procurares por aquele texto dentro desse ficheiro, vais encontrar aquele pedaco de código...
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Pages: [1] 2   Go Up
Jump to: