Go Down

Topic: serial não funciona (Read 2018 times) previous topic - next topic

mbosvc

Mar 15, 2013, 09:11 pm Last Edit: Mar 16, 2013, 07:53 am by mbosvc Reason: 1
Boa tarde.
Sou novo e começando alguns pequenos projetos.
Estava tentando ler na pino 2(analógico) um potenciômetro ligado ao 5v mostrando o valor na serial e acender 1 led com botão.
Inicialmente funcionou mas depois não acendeu o led tx e não funcionou mais o serial monitor, quando eu fui fazer o upload ele nao aceitou a serial que estava configurado,coloquei outra mas me é informado que o serial nao responde.
O arduino ainda funciona só que os leds tx rx pararam.
Vou colocar o sketch para ver se errei em algo.
Code: [Select]


int posicao=0,valor=0;
void setup(){
 Serial.begin(9600);
 Serial.flush();
 pinMode(6,OUTPUT);
 pinMode(7,INPUT);
 pinMode(2,INPUT);  
}

void loop(){
 valor=analogRead(2);
 Serial.print("Valor do potenciometro: ");
 Serial.println(valor);
 if(digitalRead(7)==HIGH && posicao==0){
   digitalWrite(6,HIGH);
   posicao=1;
 }
 if (digitalRead(7)==LOW && posicao==1){
   posicao=2;
 }else if (digitalRead(7)==LOW && posicao==3){
   posicao=0;
 }    
 if(digitalRead(7)==HIGH && posicao==2){
   digitalWrite(6,LOW);
   posicao=3;
 }  
}


mbosvc

Então pessoal fiz aquele teste de loop back onde ligamos reset no gnd e rx no tx e nada o led do serial não acende e fica esse erro:
avrdude: stk500_getsync(): not in sync: resp=0x00

quando tento upload. Alguém sabe algum outro teste para verificar a funcionalidade da serial. Será que parou de funcionar a serial?

Mortis

Fala ai mbosvc,

o erro "stk500_getsync(): not in sync: resp=0x00" esta relacionado ao fato de a IDE não conseguir conectar com o arduino para escrever o código, existem algumas possibilidade. Primeiro, qual é o teu arduino?

Eu acabo de fazer um arduino na protoboard (sou novato também rs) e esse erro ocorria ao usar um "USB to Serial", pois é necessário segurar o reset do ATmega328p até que exato momento do upload, soltando no momento certo ele grava normal.

Então tenta fazer isso, liga a USB, segura o reset, clica no upload da IDE e quando acabar de compilar o código e for iniciar o upload você solta o reset.

mbosvc

Fala amigão. Então não entendi muito a lógica  de iniciar upload com o botão de reset depois soltar mas funcionou. :)
Me explica algo, por que agora eu faço o upload normalmente sem apertar o reset e antes estava travado e precisei fazer isso p destravar?
meu arduino =  uno.

Mortis

Eu imagino (é dedução, pois não si o correto funcionamento) que tudo começa com a IDE solicitando ao bootloader o início da gravação do sketch, se a comunicação serial esta intensa (Serial.println) no loop, essa solicitação não acontece ou se perde, o bootloader não consegue responder para a IDE e a IDE que não consegui sincronizar (alguém dirá se o que eu disse esta certo rs).

O serial monitor aberto ou a porta travada no Windows também pode provocar o erro de comunicação (stk500_getsync(): not in sync: resp=0x00)

Você esta fazendo o upload do mesmo sketch (com o mesmo serial.println no loop)?

HugoPT

Quote
Eu acabo de fazer um arduino na protoboard (sou novato também rs) e esse erro ocorria ao usar um "USB to Serial", pois é necessário segurar o reset do ATmega328p até que exato momento do upload, soltando no momento certo ele grava normal.

Isto só e necessario se o teu USB to Serial nao tiver o pino DTR ligado ao reset com um condensador entre eles(Entre o pino DTR e o Pino de Reset)
Quando a linha de DTR estiver alta o condensador nao carrega pois tem tensao positiva de ambos os lados, do lado do DTR e do lado do Reset por ele normalmente esta Alto.
Assim que a linha DTR desce o condensador começa de carregar fazendo assim o pino de reset baixar e provocar um reset.
É este o misterio de reset para o microcontrolador arrancar com o bootloader e assim receber o programa da IDE do arduino.Nota que sempre que o microcontrolador arranca o led 13 pisca aleatoriamente, ele pisca porque é o bootloader a ser executado, se nao receber o skeetch o bootloader termina e a execuçao do nosso codigo começa e por ai a diante
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

HugoPT

Quote
Você esta fazendo o upload do mesmo sketch (com o mesmo serial.println no loop)?

Nao creio que o motivo dele seja esse.
Podes ter na loop a escrever na porta com o Serial.print que se enviares um skeetch ele irá reniciar na mesma!
Se nao o fizer é anomalo.
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

Mortis

HugoPT,

Obrigado pelas orientações e correções :D, minhas deduções errôneas estavam baseadas na observação, já vi essa situação anômala diversas vezes e a única explicação que "imaginei" era falha de comunicação (TX/RX).

mbosvc

Ele funcionou algumas vezes hoje, mas agora ficou na mesma situação com o serial sem acender mesmo resetando quando upload, mas agora ele dá um erro diferente
avrdude: stk500_recv(): programmer is not responding

mbosvc

Percebi que o problema é a escolha do serial no sistema operacional, aqui no montain lion tem 12 seriais disponíveis e estão sempre mudando e tem os nomes parecidos....

mmoscz


HugoPT,

Obrigado pelas orientações e correções :D, minhas deduções errôneas estavam baseadas na observação, já vi essa situação anômala diversas vezes e a única explicação que "imaginei" era falha de comunicação (TX/RX).

Eu tive um problema parecido quando tentei usar watchdog no num atmega na protoboard
http://arduino.cc/forum/index.php/topic,154120.0.html
4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

Mortis


Percebi que o problema é a escolha do serial no sistema operacional, aqui no montain lion tem 12 seriais disponíveis e estão sempre mudando e tem os nomes parecidos....


Eu uso o Windows e as vezes tenho esse problema de sincronização (com o Mega2560), desconecto e conecto a USB e ou seguro o reset. Já não sei mais o porque isso acontece, pode ser a IDE ou o Windows, sei não rs

Mortis



HugoPT,

Obrigado pelas orientações e correções :D, minhas deduções errôneas estavam baseadas na observação, já vi essa situação anômala diversas vezes e a única explicação que "imaginei" era falha de comunicação (TX/RX).

Eu tive um problema parecido quando tentei usar watchdog no num atmega na protoboard
http://arduino.cc/forum/index.php/topic,154120.0.html


Fala ai mmoscz,

Valeu! Eu acompanhei o tópico do watchdog, mais adiante verificarei como programar o ATMEGA sem o bootloader do arduino. Vou a pequenos passos rs. Se tiver dicas ou tutorais, serão bem vindos e ficarei muito grato, apesar de que amanhã acabam minhas férias e terei de deixar o arduino um pouco de lado. Hoje fiz um circuito usando uma dessas placas PCB ilhadas... que trabalho rs. Na Breadboard é mais fácil  :P

bubulindo


Percebi que o problema é a escolha do serial no sistema operacional, aqui no montain lion tem 12 seriais disponíveis e estão sempre mudando e tem os nomes parecidos....


Admito que não são muito indicativos, mas os nomes são sempre os mesmos para o interface do Arduino. Apenas tens de desligar a placa, ver os nomes, ligar a placa, ver os nomes de novo e estarão lá dois novos nomes. Precisas de escolher o que tem tty dos dois novos nomes.
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).

Go Up