collapse

* Posts Recentes

Arame de Estendal por almamater
[Ontem às 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Emulador NES em ESP32 por dropes
[10 de Abril de 2024, 15:30]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]  (Lida 116384 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #180 em: 18 de Janeiro de 2013, 22:20 »
O condensador ligado ao pino 1 e ao DTR? Tá ligado, ele faz reset que eu vejo o led 13 a piscar.

Eu quando conseguia fazer upload usava um bootloader que ao fazer auto reset o led do sistema piscava varias vezes . Agora com este bootloader pisca so 3 vezes. Pode ser do bootloader?

"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #181 em: 18 de Janeiro de 2013, 22:22 »
Que bootloader é?
Se for mais recente o baud-rate é 115200 e não 57600.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #182 em: 18 de Janeiro de 2013, 22:35 »
Boa senso era mesmo isso  ;D Muito obrigado, agora vou começar o teu tutorial.

Cumps
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #183 em: 19 de Janeiro de 2013, 19:00 »
Boas senso.
Estou aqui com um problema basico. Como posso ver o printf do codigo?
Eu compilei e depois fiz build and run (penso que seja isso), mas acontece isto:

http://i46.tinypic.com/2lly5b7.jpg

Ja agora encontrei um tutorial teu, do Cynary e do Njay na net muito bom!!!

Este teu tutorial bem como o que encontrei na net deviam estar fixos no inicio do subforum "Arduino/AVR" (bem como outros importantes para a malta poder estudar). Ou ter um topico fixo no inicio do subforum com todos os links dos tutoriais. Mas isto é so uma sugestão minha para o forum.
Não tinha reparado no subforum "Tutoriais"  :P

Cumps

« Última modificação: 20 de Janeiro de 2013, 00:23 por c3dr1c »
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #184 em: 20 de Janeiro de 2013, 12:49 »
Tens de escolher para onde queres que o printf mande o que queres imprimir, podes usar a USART.
Tens aqui um exemplo, http://www.appelsiini.net/2011/simple-usart-with-avr-libc

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #185 em: 20 de Janeiro de 2013, 12:59 »
Eu nunca uso o printf, uso o sprintf, e depois faço o uartPuts para imprimir o buffer.
Avr fanboy

Offline c3dr1c

  • Mini Robot
  • *
  • Mensagens: 854
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #186 em: 20 de Janeiro de 2013, 15:42 »
Vou ver isso.
O que é o uartPuts? Isso faz-se dentro do avrstudio?

Thanks
"O único modo de descobrir os limites do possivel é aventurarmo-nos um pouco para além deles em direcção ao impossivel."

Uma das Três Leis de Arthur C. Clarke

Offline vdr

  • Mini Robot
  • *
  • Mensagens: 78
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #187 em: 20 de Janeiro de 2013, 16:49 »
Vou ver isso.
O que é o uartPuts? Isso faz-se dentro do avrstudio?

Thanks

Penso que o uartPuts que o senso referiu era a função que ele colocou num dos primeiros tutoriais neste tópico "USART_send(unsigned char data)"

Basicamente, fazes a formatação através do sprintf e colocas a string num array de chars, depois é so ir mandando para a USART char a char.

Offline DLM

  • Mini Robot
  • *
  • Mensagens: 115
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #188 em: 06 de Março de 2013, 10:43 »
Se eu estiver a usar o Arduino como ISP, qual opção seleciono no menu "Debug plataform"?
O Atmega em questão é um atmega8A.

Offline migvalsan

  • Mini Robot
  • *
  • Mensagens: 39
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #189 em: 25 de Setembro de 2014, 14:31 »
Boas :D

tenho estado a seguir este topico e tambem eu quero largar a IDE do arduino. estou na parte do USART fiz aquele desafio do senso e correu bem, agora o que queria tentar fazer era em vez de ligar ou desligar o led com '1' ou '0', queria fazer o mesmo efeito mas por exemplo com palavras do genero ligava o led quando eu enviasse  a palavra 'Ligar' e desligava quando enviava a palavra 'desligar'.
como posso fazer isto?

cumps

Miguel

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #190 em: 25 de Setembro de 2014, 23:38 »
Isso é manipulação (básica) de strings, idealmente devias passar a usar a UART por interrupção, depois vais metendo os caracteres que recebes num buffer, remover os /n e /r que podem por lá andar e fazer um strcmp entre a palavra ligar/desligar e a string que recebeste pela UART.
Avr fanboy

Offline migvalsan

  • Mini Robot
  • *
  • Mensagens: 39
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #191 em: 26 de Setembro de 2014, 20:58 »
Isso é manipulação (básica) de strings, idealmente devias passar a usar a UART por interrupção, depois vais metendo os caracteres que recebes num buffer, remover os /n e /r que podem por lá andar e fazer um strcmp entre a palavra ligar/desligar e a string que recebeste pela UART.

ok percebi essa parte mas antes disso tenho de criar uma função para chamar cada vez que quero receber uma string, andei a pesquisar na internet e achei esta função:

Código: [Seleccione]
char * UART_GetString(char *st)

// string is returned when <enter> key is pressed
{
char c;
int count = 0;
while ((c = USART_receive()) != '\r')
{
//UART_Write(c); // echo char back to console
st[count++] = c; // add char to string
}
st[count]='\0'; // add NULL termination
USART_send('c');
return st;
}

eu entendo o que ela faz, não sei é como interagir com ela, por exemplo quero chamar esta função e guardar a string numa variavel na funão que a chamou.
como é que posso fazer isso?

Cumps

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.948
  • NERD!
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #192 em: 26 de Setembro de 2014, 21:47 »
Crias um array de char (em C a única maneira standard de definir uma string) e passas como parâmetro para essa função.
Se queres largar a IDE do Arduino precisas de aprender C no mínimo. Tens muita informação e não é difícil encontrar o Kernighan&Ritchie ("The C Programming Language"), a bíblia do C escrita pelos autores da linguagem.

Essa função tem uma falha grave, culpada da maior parte dos hacks, não está protegida para um buffer overrrun, se tiveres reservado 10 bytes de memória  para a string, e enviares mais para a UART vai continuar a escrever a memória com efeitos nefastos. Devia tem um parâmetro extra com o numero máximo de caracteres a ler, e dentro uma condição para limitar o count a esse valor.
« Última modificação: 26 de Setembro de 2014, 21:50 por jm_araujo »

Offline artur36

  • Mini Robot
  • *
  • Mensagens: 795
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #193 em: 26 de Setembro de 2014, 21:49 »
Basicamente tens de chamar a função "para dentro de uma variável".
Qualquer coisa do género:

Variável= função();

Na função que deste em cima a última linha vai retornar o valor de st para a variável que definiste ao chamar a função.

Ou então usas na função uma variável que declaras-te como geral e depois no restante código podes testar directamente essa variável (funciona mas não é o correcto/ideal).

Isto é C geral, não sei se é exactamente assim que o avr-gcc funciona, mas deve ser minimamente parecido.

Edit: Parece que dei calinada, fica rasurado para não induzir em erro, sigam as indicaçãoes de quem tem mais "calo".
« Última modificação: 26 de Setembro de 2014, 22:14 por artur36 »

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.948
  • NERD!
Re: Introdução ao avr-gcc usando o AvrStudio [Mais timers/mood light]
« Responder #194 em: 26 de Setembro de 2014, 21:55 »
Basicamente tens de chamar a função "para dentro de uma variável".
Qualquer coisa do género:

Variável= função();

Na função que deste em cima a última linha vai retornar o valor de st para a variável que definiste ao chamar a função.

Ou então usas na função uma variável que declaras-te como geral e depois no restante código podes testar directamente essa variável (funciona mas não é o correcto/ideal).

Isto é C geral, não sei se é exactamente assim que o avr-gcc funciona, mas deve ser minimamente parecido.
Errado, isso não vai funcionar porque não estás a passar o apontador da string como parâmetro para a função.

Com o código mostrado precisas de ter um array de chars definido:
Código: [Seleccione]
char s[10];E para atribuir o valor basta usar o nome do array como parâmetro:
Código: [Seleccione]
UART_GetString(s);
Trabalhar com apontadores é um bocado diferente, estudem sobre o assunto.