Questão:
Arduino Mega não flashable com XBee PRO S2B
swege
2014-03-17 18:04:08 UTC
view on stackexchange narkive permalink

Eu tenho um Arduino Mega 2560 com um libelium XBee Shield. Se eu tiver um XBee S2 montado nele e definir os dois jumpers para a configuração USB ou removê-los, posso atualizar um programa em meu Arduino.

No entanto, quando estou montando um dos meus XBee PRO S2B (tenho três deles disponíveis e todos se comportam da mesma forma) no Arduino, não importa como eu configurei os jumpers, não é possível piscar nada nele. Sempre vejo avrdude: stk500v2_getsync (): tempo limite de comunicação com o programador no IDE do Arduino.

O XBee PRO S2B é incompatível com o Arduino ou qual pode ser o problema? Eu também tentei adicionar uma fonte de alimentação externa adicionalmente ao USB, mas também não ajudou.

Atualizar

Depois de mais algumas experiências, eu descobri novos detalhes. Tentei desconectar cada pino da blindagem individualmente. Enquanto fazia isso, descobri que desconectar o pino reset do arduino torna possível atualizá-lo - dê uma olhada no esquema do escudo XBee, é o pino 5 do ICSP conector; Foto: photo of it

Usei um multímetro e descobri que a porta do XBee PRO S2B CTS / DIO7 está alta, enquanto a do XBee S2 está baixa, e reiniciando constantemente o arduino. Montei o XBee PRO S2B no Sparkfun XBee Explorer USB e abri uma porta serial com PuTTY. Em contraste com o S2, o PRO S2B oferece um menu com várias opções:

  Modo B-BypassF-Update AppT-TimeoutV-BL VersionA-App VersionR-Reset>  

Sparkfun XBee Explorer USB, CTS port

Assim que eu digitar B, o CTS a porta fica baixa e evitaria que o arduino fosse reiniciado. Além disso, este modo é necessário para detectar o módulo via XCTU. Porém, com um arduino não modificado, eu não teria a chance de enviar esta carta, já que o XBee está constantemente o reiniciando. O que é este menu, pode ser desativado de alguma forma?

Pode parecer óbvio, mas você comparou as configurações de registro do XBee S2 e S2B? Por exemplo, através do X-CTU. Velocidade, paridade, etc.
Veja a atualização; uma vez que esta porta DIO7 parece ser um problema, dei uma olhada na configuração especialmente nesta configuração; em ambos, o S2 e o PRO S2B diz `DIO7 Configuration: CTS flow control [1]`. Eu suspeito que todas essas configurações são irrelevantes enquanto espera nessa "coisa do bootloader"?
Não é uma resposta completa - mas IO / 7 parece ser o controle de fluxo CTS. Recomendo enfaticamente que você baixe e use o software X-CTU (da Digi Intl.) Para programá-los. A linha de comando ATD7 mostrará a configuração atual, ATD7 = 0 será desabilitada (mas use X-CTU). Por que isso é importante? Os escudos XBee usam CTS / RTS para sinalizar uma reinicialização para o Arduino (escudo) - e então o bootloader irá iniciar e aceitar o fluxo de dados para piscar.
Usei o X-CTU para alterar essa configuração. Se eu desabilitar DIO7 [0], ele mostra o mesmo comportamento - desde que esteja neste menu de inicialização, é alto. Quando entro no modo de desvio, ele fica baixo. Se eu definir DIO7 para 5 (saída digital, alto), ele continua alto mesmo depois de escolher o modo de bypass. Portanto, parece que todas as configurações só entram em vigor depois de entrar no modo de desvio: /
Compare todas as configurações do S2 funcional com o S2B não operacional através do X-CTU.
Um responda:
Madivad
2014-03-20 06:42:15 UTC
view on stackexchange narkive permalink

Não tenho um PRO para jogar, mas acabei de olhar a folha de dados e parece que DEVERIA expirar após 60 segundos

Se não a transação serial é iniciada dentro de um período de tempo limite de 60 segundos, o bootloader atinge o tempo limite e retorna ao menu. Se o upload for interrompido com um ciclo de energia ou evento de reinicialização, o EM250 detectará uma imagem de aplicativo inválida e entrará no modo bootloader. (página 139)

Além disso, parece que é necessário um conjunto particular de condições para chegar ao bootloader, obviamente essas condições estão sendo atendidas:

Os módulos XBee usam uma versão modificada do gerenciador de inicialização Ember. Esta versão do bootloader suporta um mecanismo de entrada personalizado que usa os pinos do módulo DIN (pino 3), DTR / SLEEP_RQ (pino 9) e RTS (pino 16). Para invocar o bootloader, faça o seguinte:

  1. Defina DTR / SLEEP_RQ baixo (TTL 0V) e RTS alto.
  2. Envie uma interrupção serial para o pino DIN e desligue e ligue ou reinicie o módulo.
  3. Quando o módulo é ligado, DTR / SLEEP_RQ e DIN devem estar baixos (TTL 0V) e RTS deve ser alto.
  4. Termine a interrupção serial e envie um retorno de carro a 115200bps para o módulo.
  5. Se for bem-sucedido, o módulo enviará o menu do carregador de inicialização Ember pelo pino DOUT a 115200bps.
  6. Os comandos podem ser enviados ao carregador de inicialização a 115200bps.

Nota: O controle de fluxo de hardware deve ser desabilitado ao entrar e se comunicar com o carregador de inicialização EM250.

Talvez verifique os pinos 3 , 9 e 16 na inicialização e veja se você pode modificar seu comportamento.

Há muito tempo fechei o documento, mas acredito que a segunda citação em bloco veio da página 138


Estas perguntas e respostas foram traduzidas automaticamente do idioma inglês.O conteúdo original está disponível em stackexchange, que agradecemos pela licença cc by-sa 3.0 sob a qual é distribuído.
Loading...