collapse

* Posts Recentes

Odin - A better alternative to C, C++ and maybe Rust. por blabla
[Ontem às 17:52]


Philips BT7900 - Falhas por almamater
[20 de Setembro de 2023, 14:37]


Desmultiplicar quadro sinotico por filjoa
[18 de Setembro de 2023, 11:01]


USB 3.0 vs 3.1 vs 3.2 vs 4.0: What's the difference? por SerraCabo
[30 de Agosto de 2023, 16:29]


EU Just Changed Smartphones Forever por SerraCabo
[18 de Agosto de 2023, 13:05]


Motor de destruidora de papel por dropes
[04 de Agosto de 2023, 15:02]


Introdução à eletrónica para miudos/as por dropes
[16 de Julho de 2023, 16:11]


Coleção de motores e cenas por dropes
[23 de Junho de 2023, 18:02]


Reprodutores de CD por SerraCabo
[21 de Junho de 2023, 19:47]


procuro motor desumidificador por SerraCabo
[21 de Junho de 2023, 19:24]

Autor Tópico: tutorial de pwm em avr  (Lida 3889 vezes)

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

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
tutorial de pwm em avr
« em: 31 de Dezembro de 2012, 00:05 »
ainda na minha procura de como configurar os timers de pwm e entender mesmo como tudo funciona, pois não basta so saber aplicar senão temos problemas a adaptar, encontrei este tutorial que ainda não acabei de ler mas acho que é muito bom:

http://www.societyofrobots.com/member_tutorials/book/export/html/228

acho que ,para quem não tem ninguem para lhes ensinar sobre o tema, isto é mesmo muito bom.

« Última modificação: 31 de Dezembro de 2012, 00:13 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: tutorial de pwm em avr
« Responder #1 em: 31 de Dezembro de 2012, 01:07 »
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=50106

Outro que tinha aqui nos favoritos e que me ajudou bastante.

Cumps.

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: tutorial de pwm em avr
« Responder #2 em: 31 de Dezembro de 2012, 19:45 »
o tutorial ajudou muito a entender como funciona tudo. mas agora as notações a programar isso ja não entendo nada.
coisas como isto:

TCCR2A |= (1<<WGM20);

ta a dizer que nos 8 bits A do timer 2 que: o WGM0 do timer 2 é?
não entendo não devia ser WGM20=1?
e depois parece que isso configura logo o WGM21.

não posso configurar os 8 bits assim (números arbitrários)
00000001 (o ultimo é o WGMx0)

e depois passar para TCCRxA=0x21 (exemplo não sei se é mesmo isso a conversão)
 nesta notação que não tenho a certeza qual é, nunca tive aulas de binario nem nada

pode ser assim talvez?: TCCRxA=bx0000_0001

tou a pensar no esquema que ta nesta datasheet:http://www.atmel.com/Images/doc2586.pdf
façam CTRL+F: 11.9.2
« Última modificação: 31 de Dezembro de 2012, 20:01 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: tutorial de pwm em avr
« Responder #3 em: 31 de Dezembro de 2012, 22:19 »
Tens ai duvidas básicas..
E tambem tens tutoriais aqui no fórum, aconselho-te a ler isto:
http://lusorobotica.com/index.php?topic=2838.0

Não podes escrever directamente por exemplo em WGM20 porque é um bit de um registo e não um registo por si, é claro que podes usar notação em binário ou hex, mas é muito mais legivel ter o nome dos bits que estás a ligar ou desligar do que olhar para um valor em hex e ter de ir abrir a datasheet e ver o que o código está a fazer.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: tutorial de pwm em avr
« Responder #4 em: 01 de Janeiro de 2013, 00:05 »
pois eu nunca trabalhei em C. so em basic. e pwm so no picaxe ainda por cima...pwm? basta escrever pwmout B.1 175,200 (arbitrario) e tinha logo configurado a frequencia e o duty no pin especifico.
e não tenho quem me ensine que o stor do clube não é de informatica e so sabe trabalhar em basic
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: tutorial de pwm em avr
« Responder #5 em: 01 de Janeiro de 2013, 00:13 »
Se usares um arduino fazes basicamente a mesma coisa com um analogWrite..
Mas lê esse link, mas lê tudo e com atenção.
Avr fanboy

Offline LuísR.A.

  • Mini Robot
  • *
  • Mensagens: 1.224
    • Clube de Robotica
Re: tutorial de pwm em avr
« Responder #6 em: 01 de Janeiro de 2013, 00:19 »
eu sei que faço o mesmo com o analogue write. mas o pwm é sempre uns 500hz, ou que é. com o analogue write só se pode alterar o duty.
eu quero configura-lo à vontade para controlar um motor. penso que 15khz era bom para para um timer de 8 bits

leio amanha quando tiver tempo e cabeça para ler tudo direitinho
« Última modificação: 01 de Janeiro de 2013, 00:24 por LuísR.A. »
Tiva MCU é que é.

Tutoriais Tiva+codigos exemplo:
https://sites.google.com/site/luiselectronicprojects/

Offline rglove

  • Mini Robot
  • *
  • Mensagens: 527
Re: tutorial de pwm em avr
« Responder #7 em: 01 de Janeiro de 2013, 02:23 »
Sim, o senso tem uns tutoriais fixes aqui no fórum em que explica as operações binárias todas... O "|" significa "ou".
Imaginemos que tens 01001001 | 10001000.
Isto é igual a 11001001.
No tutorial do senso está muito bem explicado isto tudo... Lê com atenção.

Daí usar-se: Registo |= (1<<bit)
Isso significa que o registo=registo|(1<<bit)
O "<<" é uma operação chamado shifting (acho eu). No fundo é empurrar os bits x posições para a esquerda.

Imaginemos que tens 1<<5.
Estás a empurrar 00000001(1 em decimal) 5 posições para a esquerda, portanto fica: 00100000
Para meter o bit a 0, usa-se: registo &= ~(1<<bit)

Claro que podes configurar logo o registo todo de uma vez.

Mais uma vez, pesquisa no google também por bitwise operations e procura pelo forum avrfreaks, tem bons tutoriais.

Cumps e bom ano novo!
« Última modificação: 01 de Janeiro de 2013, 21:43 por rglove »

Offline iyahdub

  • Mini Robot
  • *
  • Mensagens: 280
Re: tutorial de pwm em avr
« Responder #8 em: 01 de Janeiro de 2013, 07:45 »
o tutorial ajudou muito a entender como funciona tudo. mas agora as notações a programar isso ja não entendo nada.
coisas como isto:

TCCR2A |= (1<<WGM20);

ta a dizer que nos 8 bits A do timer 2 que: o WGM0 do timer 2 é?
não entendo não devia ser WGM20=1?
e depois parece que isso configura logo o WGM21.

não posso configurar os 8 bits assim (números arbitrários)
00000001 (o ultimo é o WGMx0)

e depois passar para TCCRxA=0x21 (exemplo não sei se é mesmo isso a conversão)
 nesta notação que não tenho a certeza qual é, nunca tive aulas de binario nem nada

pode ser assim talvez?: TCCRxA=bx0000_0001

tou a pensar no esquema que ta nesta datasheet:http://www.atmel.com/Images/doc2586.pdf
façam CTRL+F: 11.9.2

Em avr/iom328p.h ( para  o 328p, claro) encontras varias definicoes que podes usar, de forma a que seja mais pratico e mais legivel, facilitando a portabilidade do codigo, se vier a ser necessario.

por exemplo, parcialmente, diz
Código: [Seleccione]
#define TCCR2A _SFR_MEM8(0xB0)
#define WGM20 0
#define WGM21 1
#define COM2B0 4
#define COM2B1 5
#define COM2A0 6
#define COM2A1 7

ps-Desculpen a falta de pontuacao, mas vivo no estrangeiro e os teclados sao xenofobos !!