O mais estranho está acontecendo com uma placa Arduino independente que eu projetei e construí. A placa (cujos esquemas estão abaixo) possui os seguintes recursos:
- Possui um ATmega328P com um regulador de tensão de 5V e um circuito usual quando configurado como um controlador independente.
- Ele controla um placar com vários dígitos de 7 mostradores vinculados pelos conectores à direita (JP1 a JP12).
- Possui botões de cursor decodificados usando uma escada de tensão através de ANALOG_0 (A0).
- Possui um relógio em tempo real para manter o tempo quando está desligado.
- Possui um módulo receptor de RF.
- Ele possui um cabeçalho UART (JP17) para que eu possa programar a placa usando uma porta serial.
- Possui um alto-falante conectado ao pino digital 3 (D3).
Carrego esboços usando um adaptador RS232 para TTL que eu também construí (esquemas também abaixo) e um cabo serial para USB. Ao programá-lo, o quadro se comporta como um quadro Severino .
O que é estranho é que, quando eu carrego um esboço, o processo é pausado no meio e o alto-falante começa a emitir um bipe continuamente. Ele pausa com as seguintes mensagens avrdude:
avrdude: Versão 5.11, compilada em 2 de setembro de 2011 às 19:38:36 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\arduino-1.0.3\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM1
Using Programmer : arduino
Overriding Baud Rate : 115200
Quando pressiono reset no quadro, o avrdude continua emitindo suas mensagens (como abaixo), o bipe para, o upload continua e o esboço é enviado com sucesso para o quadro.
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
avrdude: Send: 0 [30] [20]
... messages and upload continue and completes successfully.
Não tenho o resto das mensagens à mão aqui, mas espero que você entenda.
Então, minhas perguntas são:
- O que está fazendo com que o processo de upload seja pausado?
- Por que a campainha sonora apita quando o processo é interrompido?
Respostas:
Bem, considerando todos os comentários feitos em sua pergunta, esse é definitivamente um assunto delicado. Você pode tentar adicionar um capacitor de desacoplamento, conforme sugerido por @jfpoilpret, embora seus esquemas pareçam bons para mim ... (talvez faça uma revisão dele no EE SE ).
Também aconselho que você copie o
avrdude
comando da saída IDE do Arduino (você o encontrará no topo) e execute-o no shell de comando com menor taxa de bits:quanto maior o
-B
valor, menor a taxa de bits. e-b
a taxa de transmissão correta para o seu carregador de inicialização (você tem certeza de que é 115200? é mais comum ver 57600).Você também ajustou os fusíveis corretamente? Você também pode querer verificar os valores dos fusíveis para ver se os relógios estão configurados corretamente:
que produzirá os valores dos fusíveis. Em seguida, para tornar os valores legíveis, coloque-os na parte inferior do formulário no site da calculadora de fusíveis , depois de escolher o
Atmega328P
MCU na lista suspensa.Verifique novamente se:
Isso ocorre porque quando o processador não possui a saída configurada, os valores nos registros estão em um estado indefinido e imprevisível. O que significa que geralmente mantém o último valor que tinha antes de uma redefinição ou estado alterado por causa de alguma estranheza eletrostática ou está produzindo uma saída PWM estranha por causa da influência de um relógio próximo.
Então, basicamente, há algo errado acontecendo quando você está enviando seu código e essa coisa errada tem um efeito indireto no áudio. Eu não me preocuparia muito com essas coisas, mas mais com a causa da pausa.
Infelizmente, não tenho uma resposta direta para você, mas, na melhor das hipóteses, alguns caminhos que você deve investigar mais. HTH
fonte
Finalmente descobri o que estava causando o problema: o sinal de redefinição do pino 4 (DTR - Data Terminal Ready) no conector DB9-Female estava aumentando até 10V antes de ir para 0V e estava acionando a programação de alta tensão no ATmega. Abaixo está uma foto de escopo mostrando a situação:
O traço amarelo é
DTR
sinal enquanto o traço verde é oRESET
sinal no ATmega.De acordo com a nota de aplicação Atmel AVR042: Considerações sobre o projeto de hardware do Atmel , deve-se adicionar um diodo ESD entre o ATmega
RESET
eVcc
impedir que o sinal de redefinição ative o modo de programação de alta tensão, da seguinte forma:Depois de adicionar um diodo de sinal tão pequeno (1N4148) como a nota do aplicativo recomendada, resolvi o problema. Veja abaixo a foto da luneta tirada após a adição do diodo.
Agora o pico de 10V se foi.
Isso foi complicado !! Mas nunca consegui encontrar o que havia de errado sem a pesquisa e as ferramentas certas. Dinheiro em um escopo é dinheiro bem gasto!
fonte
Não tenho certeza, mas o problema também pode estar relacionado ao recurso de redefinição automática da placa do conversor.
Copiei o design da placa conversora do Arduino Severino e, de acordo com o manual , a comunicação serial deve ser configurada em 19.200 bps para que o recurso de redefinição automática funcione.
Estou usando 115.200, então isso deve ser um problema.
fonte