Go Down

Topic: serial não funciona (Read 2698 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.
This... is a hobby.

Go Up