collapse

* Posts Recentes

Como reproteger as pontas de cobre do ferros de soldar? por Hugu
[Ontem às 21:57]


é preciso ter cuidado com ESD? por vasco
[Ontem às 21:26]


Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[14 de Dezembro de 2018, 12:12]


Potênciometro 4.7 ou 5 KOhm com switch por brunus
[13 de Dezembro de 2018, 19:35]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]


LusoRobótica - Website - Estado actual por Tech_JA
[06 de Dezembro de 2018, 09:18]

Autor Tópico: QDEC XMEGA  (Lida 1156 vezes)

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

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
QDEC XMEGA
« em: 27 de Agosto de 2015, 21:24 »
Boas pessoal,

no projecto em que estou a trabalhar preciso de utilizar o módulo QDEC (Quadrature Decoder) presente nos microcontroladores XMEGA.

ao pesquisar pela web encontrei a application note AVR1600 e respectivo software, tentei inicializar o módulo da seguinte forma:

Código: [Seleccione]
QDEC_Total_Setup( &PORTB,                    /*PORT_t * qPort*/
6,                         /*uint8_t qPin*/
false,                     /*bool invIO*/
0,                         /*uint8_t qEvMux*/
EVSYS_CHMUX_PORTB_PIN6_gc, /*EVSYS_CHMUX_t qPinInput*/
false,                     /*bool useIndex*/
EVSYS_QDIRM_00_gc,         /*EVSYS_QDIRM_t qIndexState*/
&TCC0,                     /*TC0_t * qTimer*/
TC_EVSEL_CH0_gc,           /*TC_EVSEL_t qEventChannel*/
0); /*uint8_t lineCount*/


e ler do timer/counter da seguinte forma:

Código: [Seleccione]
while(1){

PORTA.OUTTGL=PIN0_bm;
delay_ms(500);

printf("Counts %u\r",TCC0.CNT);

}

infelizmente o numero de contagens está sempre a 0.

fiz nova tentativa configurando os registos manualmente da seguinte forma:

Código: [Seleccione]
PORTB.DIRCLR = (PIN6_bm | PIN7_bm);
PORTB.PIN6CTRL=PORT_ISC_LEVEL_gc;
EVSYS.CH0MUX=0b01011110;
EVSYS.CH0CTRL=EVSYS_QDIRM_00_gc| EVSYS_QDEN_bm | EVSYS_DIGFILT_2SAMPLES_gc;
TCC0.CTRLD=(TC_EVSEL_CH0_gc | TC_EVACT_QDEC_gc);

mas os resultados mantém-se. Estou a utilizar os portos PB6 e PB7 num atxmega128a3u a 32MHz. Os sinais do enconder estão OK como se pode verificar:



Se tiverem algum sugestão, agradecia.

Cumprimentos, Mauro.

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.586
  • Helpdesk do sitio
Re: QDEC XMEGA
« Responder #1 em: 27 de Agosto de 2015, 23:02 »
Documentação da Atmel anda pelas ruas da amargura, então o ASF é para esquecer..
Isso não precisas de lhe activar o clock?
Tenho ideia que nos Xmega já tens algum clock gating.
Avr fanboy

Offline maurosmartins

  • Mini Robot
  • *
  • Mensagens: 483
    • msm
Re: QDEC XMEGA
« Responder #2 em: 28 de Agosto de 2015, 13:55 »
Boas Senso,

obrigado pela resposta, infelizmente já tinha tentado com:

sysclk_enable_module(SYSCLK_PORT_C, PR_TC0_bm); para activar o timer counter, para o modulo QDEC nao encontro nada.

Cumprimentos, Mauro.