Offline
Jr. Member
Karma: 1
Posts: 65
3ª Idade ... in the house
|
 |
« on: February 13, 2013, 05:43:26 pm » |
Boas, Gostava de saber se existe alguma forma de resetar o arduino sem ser através do watchdog 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
|
|
|
|
|
Portugal
Offline
God Member
Karma: 9
Posts: 751
Tomorrow I will know a BIT more than yesterday
|
 |
« Reply #1 on: February 13, 2013, 06:25:17 pm » |
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) 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  É 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
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #2 on: February 13, 2013, 06:33:30 pm » |
Boas, Gostava de saber se existe alguma forma de resetar o arduino sem ser através do watchdog 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: if (ligacao_net_OK == FALSE) { wdt_enable(WDTO_15MS); delay(1000); }
Isto deve fazer o reset do chip. 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.0http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=96822http://www.avrfreaks.net/index.php?name=PNphpBB2&file=printview&t=65123http://nongnu.org/avr-libc/user-manual/group__avr__watchdog.htmlTambém existem chips que fazem essa funcão... caso queiras algo profissional para isso.
|
|
|
|
|
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
God Member
Karma: 9
Posts: 751
Tomorrow I will know a BIT more than yesterday
|
 |
« Reply #3 on: February 13, 2013, 07:01:59 pm » |
Tens razão renicia o programa deixando os estados dos registos como estavao Acabei agora de ler isto 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
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #4 on: February 13, 2013, 07:11:42 pm » |
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
Sr. Member
Karma: 8
Posts: 302
Android developer; Arduino enthusiast
|
 |
« Reply #5 on: February 14, 2013, 12:43:37 pm » |
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
|
|
|
|
|
Offline
Jr. Member
Karma: 1
Posts: 65
3ª Idade ... in the house
|
 |
« Reply #6 on: February 14, 2013, 01:48:05 pm » |
Boas 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 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
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #7 on: February 14, 2013, 04:19:06 pm » |
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
God Member
Karma: 9
Posts: 751
Tomorrow I will know a BIT more than yesterday
|
 |
« Reply #8 on: February 14, 2013, 05:14:48 pm » |
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
Jr. Member
Karma: 1
Posts: 65
3ª Idade ... in the house
|
 |
« Reply #9 on: February 14, 2013, 06:24:11 pm » |
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
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #10 on: February 14, 2013, 08:28:05 pm » |
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#msg677517Podes 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. 
|
|
|
|
|
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
Jr. Member
Karma: 1
Posts: 65
3ª Idade ... in the house
|
 |
« Reply #11 on: February 15, 2013, 12:52:02 pm » |
Boas, Obrigado bubulindo ... mas eu já tinha visto esse post só que já o li e reli e fico a perceber o mesmo  Cpts Zé tretas
|
|
|
|
|
Logged
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #12 on: February 15, 2013, 04:39:54 pm » |
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
Jr. Member
Karma: 1
Posts: 65
3ª Idade ... in the house
|
 |
« Reply #13 on: February 16, 2013, 04:45:14 am » |
Boas,
Que parte da livraria modificar ...
cpts
Zé tretas
|
|
|
|
|
Logged
|
|
|
|
|
'round the world...
Offline
Edison Member
Karma: 20
Posts: 2308
|
 |
« Reply #14 on: February 16, 2013, 04:53:00 am » |
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).
|
|
|
|
|