Vous êtes sur la page 1sur 12

PIC: Blocos Timer, Capture/Compare/PWM

e Interrupo
OBJETIVOS
Compreender a operao dos trs timers implementados no PIC;
Compreender como funciona o bloco Capture/Compare/PWM;
Compreender como os timers 1 e 2 esto associados com o bloco Capture/Compare/PWM;
Utiliar as interrup!es dos "imers e do bloco Capture/Compare/PWM para identificar
e#entos/$erar e#entos;
TIMER 0
% m&dulo do "imer ' possui as se$uintes caracter(sticas)
Contador/"imer de * bits;
+e$istrador de conta$em de escrita e leitura;
Pr,-escalonador .di#isor de fre/0ncia1 pro$ram2#el;
Utilia sinal de cloc3 interno ou e4terno;
5era interrupo /uando a conta$em muda de 66 para '';
Permite selecionar o tipo de transio /uando usa cloc3 e4terno .7orda de subida ou
descida18
% modo de operao do "imer ' , definido a partir do bit "'C9 .bit : do +e$8 %P"I%;18 ;o
modo timer< o "imer ' incrementa a cada ciclo de instruo .sem pr,-escalonador18 9e ocorrer
uma escrita no re$istrador "M+'< o incremento , inibido pelos dois ciclos de instruo se$uintes8
% modo de conta$em , selecionado setando o bit "'C98 ;o modo de conta$em < o "imer '
incrementar2 a cada subida ou descida do sinal no pino +=>/"%C?@8 = borda , definida pelo bit
"'9A .bit > do +e$8 %P"I%;18
Interrupo do Timer 0
= interrupo "M+' , $erada /uando o re$istrador "M+' estoura .o#erfloB1< conta de 66 para
''8 Aste o#erfloB seta o bit "'I6 .bit 2 do +e$8 I;"C%;18 = interrupo pode ser mascarada
resetando o bit "'IA .bit : do +e$8 I;"C%;18 % bit "'I6 de#e ser apa$ado por softBare .na
rotina de ser#io de interrupo do "imer '1 antes de reabilitar a pr&pria8
Pr-escalonador
C2 um Dnico pr,-escalonador /ue , compartilEado com o WatcEFo$"imer de forma mutuamente
e4cludente .se o "imer ' usa o pr,-escalonador o WatcEFo$ no pode usar e #ice #ersa18 %s bits
P9= e P92)P9' .bits G a ' do +e$8 %P"I%;1 determinam o fator de escalonamento da fre/0ncia
do sinal de cloc3 do "imer '8 Huando atribu(do ao "imer '< todas as instru!es /ue escre#em
para o re$istrador "M+' .C@+6 1< M%IW6 1< 796 1<48881 apa$aro o contador do pr,-
escalonador mas no alteraro a sua confi$urao8
1
MDULO
M 0
Registrador OPTION
Registradores associados ao Timer 0
TIMER !
% m&dulo "imer 1 , um timer/contador de 1J bits< di#idido em dois re$istradores de * bits
."M+1C e "M+1@1< /ue so de escrita e leitura8 % par de re$istradores ."M+1C e "M+1@1
incrementa de ''''E a 6666E e retorna a ''''E .o#erfloB18 = interrupo "M+1< se Eabilitada<
seta o bit de fla$ "M+1I6 .bit ' do +e$8 PI+I1 /uando ocorre o o#erfloB8 Assa interrupo pode
ser Eabilitada/desabilitada setando/resentando< respecti#amente< o bit de Eabilitao de
interrupo "M+1IA .bit ' do +e$8 PIA118
% "imer 1 pode operar de dois modos)
Como timer) ;este modo o "imer 1 incrementa a cada ciclo de instruo;
Como contador) ;este modo o "imer 1 incrementa a cada transio do sinal de cloc3 e4terno8
% modo de operao , determinado pelo bit de seleo de cloc3< "M+1C9 .bit 1 do +e$8
"1C%;18
2
% "imer 1 pode ser Eabilitado/desabilitado setando/resetando< respecti#amente< o bit de controle
"M+1%; .bit ' do re$istrador18 % "imer tamb,m possui um reset interno /ue pode ser $erado
pelos m&dulos KCapture/Compare/PWM - CCPL8 Huando o oscilador do "imer 1 est2 Eabilitado
."1%9CA; setado1< os pinos +C1/"1%9I/CCP2 e +C'/"1%9%/"1C?@ tornam-se entradas
independente do #alor dos bits 1 e ' do re$istrador "+I9< /ue so i$norados8
Resetando o Timer ! usando uma sa"da de Tri##er do m$dulo %%P
9e o m&dulo CCP1 ou CCP2 .este apenas no PIC 1J6*MM1 , confi$urado no modo de comparao
para $erar um Kspecial e#ent tri$$erL .CCP1MG)CCP1M' N 1'111< esse sinal resetar2 o "imer 18
;os casos em /ue uma escrita coincide com um Kspecial e#ent tri$$erL de CCP1 ou CCP2< a
escrita ter2 precedncia8 ;esse modo de operao os re$istradores CCP+4C)CCP+4@ tornam-se
os re$istradores de per(odo do "imer 18
Pr-escalonador do Timer !
% contador pr,-escalonador , apa$ado /uando so escritos #alores para os re$istradores "M+1C
e "M+1@8
+e$istrador de controle do "imer 1 O "1C%;
G
+e$istradores associados ao "imer 1 como "imer/Contador
TIMER &
% "imer 2 , um timer de * bits com um pr,-escalonador e p&s-escalonador8 % mesmo pode ser
usado como a base de tempo no modo PWM dos m&dulos CCP8 % "M+2 , um re$istrador de
escrita e leitura e , apa$ado em /ual/uer e#ento de reset8
= entrada de cloc3 .6osc/>1 possui uma opo de escalonamento de 1)1< 1)> ou 1)1J< selecionada
pelos bits de controle "2C?P91)"2C?P9' .bits 1 e ' do +e$8 "2C%;1< /ue fa com /ue o sinal
de cloc3 do timer 2 sePa di#idido< respecti#amente< por 1< > e 1J8 % m&dulo do "imer 2 possui um
re$istrador de per(odo de * bits P+2< /ue indica o #alor m24imo /ue pode ser atin$ido pelo
"M+2< assim o timer 2 incrementa de ''E at, atin$ir P+2 e ento reseta para ''E no ciclo de
incremento se$uinte8 P+2 , um re$istrador de escrita e leitura e , inicialiado com 66E ap&s
/ual/uer +A9A"8
% sinal de sa(da resultante da comparao do P+2 com o "M+2 passa por um p&s-escalonador
.escalas de 1)1< 1)> e 1)1J1 para $erar a interrupo "M+2 ./uando ocorre< o bit 1 ."M+2I61 do
+e$8 PI+1 , setado1< ou sePa< /uando a interrupo est2 Eabilitada a mesma ocorrer2 ap&s 1< 2< G<
>< 88888 ou 1J #ees em /ue o #alor do contador do timer 2 ."M+21 atin$ir o #alor $ra#ado no
re$istrador P+28
% "imer 2 pode ser desli$ado resetando o bit de controle "M+2%; .bit 2 do re$istrador
"2C%;18
Pr-Escalonador e P$s-Escalonador do Timer &
%s contadores do pr,-escalonador e do p&s-escalonador so apa$ados /uando al$um dos e#entos
abai4o ocorre)
Uma escrita para o re$istrador "M+2;
Uma escrita para o re$istrador "2C%;;
Hual/uer reset do dispositi#o .P%+< MC@+ reset< WF" reset ou 7%+18
% "imer 2 no , apa$ado /uando ocorre uma escrita para re$istrador de confi$urao do timer 2
"2C%;8
>
+e$istrador de Controle do "imer 2 O "2C%;
+e$istradores associados com o "imer 2 como timer/contador
M$dulo de %aptura' %omparao e P(M
%9 m&dulos CCP .Captura/Comparao/PWM1 so formados por um re$istrador de 1J bits /ue
pode operar como)
+e$istrador de captura de 1J bits;
+e$istrador de comparao de 1J bits
+e$istrador de KdutQ cQcleL no modo PWM Mestre/Ascra#o8
=mbos os m&dulos CCP1 e CCP2 .apenas o PIC1J6*MM possui dois CCPs1 so idnticos em
operao < com e4ceo do Kspecial e#ent tri$$erL
M$dulo %%P!
% re$istrador CCP do m&dulo CCP1 .CCP+11 , formado por dois re$istradores de * bits)
CCP+1@ .bQte menos si$nificati#o1 e CCP+1C .bQte mais si$nificati#o18 % Kspecial e#ent
tri$$erL , $erado /uando o conteDdo deste re$istrador e o conteDdo do re$istrador de conta$em
do "imer 1 so i$uais< resetando este Dltimo8
:
M$dulo %%P&
% re$istrador CCP do m&dulo CCP2 .CCP+21 , formado por dois re$istradores de * bits)
CCP+2@ .bQte menos si$nificati#o1 e CCP+2C .bQte mais si$nificati#o18 % re$istrador
CCP2C%; controla a operao do CCP28 Fa mesma forma como para o CCP1< o Kspecial e#ent
tri$$erL , $erado /uando o conteDdo deste re$istrador e o conteDdo do re$istrador de conta$em
do "imer 1 so i$uais< resetando este Dltimo8 ;o caso do CCP2< al,m de resetar o "imer 1<
tamb,m , iniciada uma con#erso =/F8
Modo de operao do m&dulo CCP e recursos de "imer necess2rios
Interao entre dois m&dulos CCP
+e$istradores de Controle CCP1C%; e CCP2C%;
Modo %aptura
J
;o modo captura o #alor de 1J bits do re$istrador "M+1 , copiado para os re$istradores
CCP+1C)CCP+1@ e/ou CCP+2C)CCP+2@ .apenas PIC 1J6*MM1< /uando um dos e#entos ocorre
no pino +C2/CCP1 e/ou +C1/CCP2 .PIC1J6*MM1 ou no pino +7G/CCP1 .PIC 1J6J2*1)
= cada borda de descida do sinal no pino +C2< +C1 .PIC 1J6*MM1 ou +7G .PIC
1J6J2*1;
= cada borda de subida do sinal no pino +C2< +C1 .PIC 1J6*MM1 ou +7G .PIC 1J6J2*1;
= cada > bordas de subida do sinal no pino +C2< +C1 .PIC 1J6*MM1 ou +7G .PIC
1J6J2*1;
= cada 1J bordas de subida do sinal no pino +C2< +C1 .PIC 1J6*MM1 ou +7G .PIC
1J6J2*1;
% tipo de e#ento , selecionado pelos bits de controle CCP1MG)CCP1M' .bits de G a ' do +e$8
CCP1C%;18 Huando uma captura , realiada< o fla$ de re/uisio de interrupo< bit CCP1I6
.bit 2 do +e$8 PI+11 , setado8 Aste bit de#e ser apa$ado por softBare8 9e uma outra captura
ocorrer antes /ue o #alor no re$istrador CCP+1 for lido< o #alor anterior ser2 perdido8
;o modo captura os pinos +C2/CCP1< +C1/CCP2 .PIC 1J6*MM1 e +7G/CCP1 .PIC 1J6J2*1
de#em ser confi$urados como uma entrada< setando o bit 1 e 2 do re$istrador "+I9C .PIC
1J6*MM1 ou o bit G do re$istrador "+I97 .PIC 1J6J2*18 % "imer 1 de#e estar operando no modo
timer ou no modo contador com sincroniao do sinal de cloc3 e4terno com o cloc3 interno8
Pr-escalonador do m$dulo %%P
C2 /uatro aPustes do pr,-escalonador< especificados pelos bits CCP1MG)CCP1M'8 9empre /ue o
m&dulo CCP , desli$ado< ou o m&dulo CCP no est2 no modo captura< o contador do pr,-
escalonador , apa$ado8 "amb,m< /ual/uer +eset apa$ar2 o pr,-escalonador8
O)*ER+,-.O/ *e os pinos R%&0%%P!' R%!0%%P& e R)10%%P! so con2i#urados como
uma entrada' uma escrita para a porta pode causar uma condio de captura3
Modo %omparao
;o modo comparao o #alor do re$istrador CCP+1 .1J bits1 e/ou CCP+2 .1J bits1 .apenas para
o PIC 1J6*MM1 , .so1 constantemente comparado.s1 com o #alor do re$istrador "M+18 Huando
os #alores se i$ualam< o pino +C2/CCP1 e/ou +C1/CCP2 .PIC 1J6*MM1 ou o pino +7G/CCP1
.PIC 1J6J2*1 , .so1)
=ti#ado;
Fesati#ado
Permanece inalterado
= ao no.s1 pino.s1 , definida pelos bits de controle CCP1MG)CCP1M' .bits de G a ' do +e$8
CCP1C%;18 =o mesmo tempo o fla$ de interrupo , setado< bit CCP1I6< $erando uma
interrupo< se Eabilitada8
;o modo comparao os pinos +C2/CCP1< +C1/CCP2 e +7G/CCP1 de#em ser confi$urados
como sa(das< resetando os bits 1 e 2 do re$istrador "+I9C .PIC 1J6*MM1 ou o bit G do re$istrador
"+I97 .PIC 1J6J2*18 % "imer 1 de#e estar operando no modo timer ou no modo contador com
sincroniao do sinal de cloc3 e4terno com o cloc3 interno8
;o modo de comparao pode ser $erado um Kspecial e#ent tri$$erL< a partir de um tri$$er
interno8 Aste e#ento< no m&dulo CCP1< reseta o par de re$istradores /ue forma o "M+18 ;o
m&dulo CCP2 .apenas PIC 1J6*MM1< a mesma operao , realiada< al,m de iniciar uma
con#erso =/F .se o m&dulo =/F est2 Eabilitado18
M
Modo P(M
;o modo PWM o pino CCP4 produ um sinal de PWM com uma resoluo de at, 1' bits8 Como
os pinos +C2/CCP1 e +C1/CCP2 so multiple4ados com o latcE de dados da porta C no PIC
1J6*MM e o pino +7G/CCP1 , multiple4ado com o latcE de dados da porta 7 no PIC 1J6J2*< os
bits 1 e 2 de "+I9C< PIC 1J6*MM e bit G de "+I97< PIC 1J6J2*< de#em ser resetados para tornar
os pinos +C2/CCP1< +C1/CCP2 e/ou +7G/CCP1 uma sa(da8
Um sinal PWM , caracteriado pelo seu per(odo e um o KdutQ cQcleL< /ue corresponde ao tempo
em /ue o sinal permanece em n(#el alto8 % per(odo do sinal PWM , especificado pelo re$istrador
P+2< sendo calculando se$undo a f&rmula) Per(odo PWM N R.P+21 S 1T U > U "%9C U ."M+2
prescale #alue18
Huando "M+2 , i$ual a P+2< os se$uintes e#entos ocorrem)
% "M+2 , apa$ado;
% pino CCP1 , setado .e4ceto se o dutQ cQcle do PWM N 'V< /uando o CCP1 no ser2
setado1;
% PWM dutQ cQcle , copiado de CCP+1@ para CCP+1C8
% dutQ cQcle do PWM , definido escre#endo para o re$istrador CCP+1@ e para os bits : e > do
re$istrador CCP1C%;< onde os * bits do re$istrador CCP+1@ representa os * bits mais
si$nificati#os e os bits : e > de CCP1C%;< representam os dois bits menos si$nificati#os8 =
partir da e/uao abai4o , poss(#el determinar o dutQ cQcle em termos de tempo)
FutQ CQcle do PWM N .CCP+1@)CCP1C%;W:)>X1 U "osc U ."M+2 prescale #alue1
%s #alores podem ser copiados para o re$istrador CCP+1@ e para os bits : e > do re$istrador
CCP1C%; em /ual/uer instante< mas o no#o #alor do dutQ cQcle s& ser2 copiado para o
CCP+1C< /uando os #alores dos re$istradores P+2 e "M+2 coincidirem .ao fim do per(odo
PWM18 ;o modo PWM CCP+1C , um re$istrador apenas de leitura8
%s se$uintes passos de#em ser se$uidos /uando aPustando o m&dulo CCP para funcionar no
modo PWM)
18 =Pustar o per(odo do sinal PWM< escre#endo um #alor ade/uado no re$istrador P+2;
28 =Pustar o dutQ cQcle do sinal PWM< escre#endo um #alor ade/uado para o re$istrador
CCP+1@ e para os bits : e > do re$istrador CCP1C%;;
G8 Confi$urar o pino +C2/CCP1< +C1/CCP2 .PIC 1J6*MM1 ou +7G/CCP1 .PIC 1J6J2*1 como
uma sa(da .resetar o bit 1 e/ou 2 do re$8 "+I9C< PIC 1J6*MM ou o bit G do re$8 "+I97< PIC
1J6J2*1;
>8 =Pustar o #alor do pr,-escalonador e Eabilitar o "imer 2 confi$urando o re$istrador "2C%;;
:8 Confi$urar o m&dulo CCP1 e/ou CCP2 .apenas PIC 1J6*MM1 para operao no modo PWM;
+e$istradores associados com o PWM e "imer 2
*
Y
+e$istradores associados com o Capture< Compare e "imer 1
PREP,R,-.O
18 Fescre#a a operao realiada por cada uma das fun!es abai4o e tamb,m o /ue representa
cada opo dos parZmetros da funo em termos do funcionamento do bloco ao /ual a funo
est2 associada)
9A"UP["IMA+[' .mode1
mode) +"CC[I;"A+;=@< +"CC[A\"[@["%[C or +"CC[A\"[C["%[@
+"CC[FII[2< +"CC[FII[>< +"CC[FII[*< +"CC[FII[1J< +"CC[FII[G2<
+"CC[FII[J>< +"CC[FII[12*< +"CC[FII[2:J
9A"UP["IMA+[1 .mode1
mode) "1[FI9=7@AF< "1[I;"A+;=@< "1[A\"A+;=@< "1[A\"A+;=@[9];C
"1[C@?[%U"
"1[FII[7][1< "1[FII[7][2< "1[FII[7][>< "1[FII[7][*
Constantes de $rupos diferentes podem ser associadas usando o operador K%+L - ^8
9A"UP["IMA+[2 .mode< period< postscale1
mode) "2[FI9=7@AF< "2[FII[7][1< "2[FII[7][>< "2[FII[7][1J
period) _ um inteiro entre ' e 2:: /ue determina /uando o #alor do contador do "imer 2 ,
erado;
postscale) _ um nDmero entre 1 e 1J /ue determina /uantos resetes do contador do "imer 2 de#em
ocorrer para /ue uma interrupo sePa ati#ada .1 indica um resete< 2 indica dois resetes18
9A"["IMA+4 .#alue1
5A"["IMA+4 . 1
9A"UP[CCP4 .mode1
1'
mode) _ uma constante8 Ialores #2lidos para KmodeL so)
Fesabilita o bloco CCP) CCP[%66
Confi$ura o bloco CCP para o modo captura)
CCP[C=P"U+A[6A - Capture on fallin$ ed$e
CCP[C=P"U+A[+A - Capture on risin$ ed$e
CCP[C=P"U+A[FII[> - Capture after > pulses
CCP[C=P"U+A[FII[1J - Capture after 1J pulses
Confi$ura o bloco CCP para o modo comparao)
CCP[C%MP=+A[9A"[%;[M="CC
CCP[C%MP=+A[C@+[%;[M="CC
CCP[C%MP=+A[I;"
CCP[C%MP=+A[+A9A"["IMA+
Confi$ura o bloco CCP para o modo PWM
CCP[PWM
9A"[PWM4[FU"] .#alue1
9A"UP[WF" .mode1
mode) F"[1*M9< WF"[GJM9< WF"[M2M9< WF"[1>>M9<WF"[2**M9< WF"[:MJM9<
WF"[11:2M9< WF"[2G'>M9
+A9"=+"[WF" . 1
FI9=7@A[I;"A++UP"9 .le#el1
A;=7@A[I;"A++UP"9 .le#el1
le#el) 5@%7=@< I;"[+"CC< I;"[+7< I;"[A\"< I;"[=F< I;"["7A< I;"[+F=<
I;"["IMA+1< I;"["IMA+2< I;"[CCP1< I;"[CCP2< I;"[99P< I;"[P9P<
I;"[7U9C%@< I;"[AAP+%M< I;"["IMA+'
28 Fetermine o #alor do bQte a ser $ra#ado no re$istrador P+2< para faer o m&dulo CCP1 $erar
um sinal PWM< com um per(odo de :12`s e o #alor do KdutQ cQcleL< para $erar um pulso alto
de 12*`s< sabendo /ue) 6oscN>MC8
G8 Alabore uma rotina em C /ue Eabilite as interrup!es dos "imers '< 1 e 2 a cada J:<:ms<
:2>ms e J:<:ms< respecti#amente8 Am cada rotina faa o /ue , pedido abai4o)
Interrupo do "imer' O = cada * entradas na rotina de interrupo do "imer' o estado
do pino 7' de#e ser trocado .'a11 e .1a'1;
Interrupo do "imer1 O = cada 2 entradas na rotina de interrupo do "imer1 o estado
do pino 71 de#e ser trocado .'a11 e .1a'1;
Interrupo do "imer2 O = cada > entradas na rotina de interrupo do "imer2 o estado
do pino 72 de#e ser trocado .'a11 e .1a'1;
>8 Alabore uma rotina em C /ue Eabilite a interrupo de captura do bloco CCP18 ;a rotina da
interrupo de captura incremente um contador .uma #ari2#el int1 e escre#a o #alor dessa
#ari2#el nos * bits da porta F8 Utilie um boto da placa para ati#ar a interrupo de captura8
:8 Alabore uma rotina em C /ue Eabilite a interrupo de comparao do bloco CCP28 ;a rotina
da interrupo de comparao incremente um contador .uma #ari2#el @%;51 e use o #alor
do contador para atualiar o conteDdo do re$istrador CCP+28 % re$istrador CCP+2 ,
acessado atra#,s da #ari2#el CCP[2< definida no ar/ui#o 1J6*MM=8E8 Fefina uma #ari2#el do
tipo K7I"L e faa com /ue o estado dela fi/ue sendo trocado a cada #e /ue a interrupo de
comparao for e4ecutada8 % #alor dessa #ari2#el de#e ati#ar um @AF8 Use o pino 7' para
isso8
11
O)*/ O ar4ui5o 6re#s7!839:' pode ser encontrado no endereo
69ttp/00;;;3dee3u2c#3edu3<r0=aco0La<7,r4uitetura0Re#s7PI%3>ip:
J8 Alabore uma rotina em C /ue ati#e o WatcEdo$ e o confi$ure para resetar o sistema a cada
2G'>ms8 % pro$rama de#e Eabilitar as interrup!es de captura do bloco CCP1 e do timer 2<
esta Dltima com uma periodicidade de J:<:ms8 ;as rotinas de interrupo implemente as
opera!es abai4o)
Interrupo de captura O = interrupo de captura ser2 ati#ada por um boto da placa e
nela de#e ser implementado o reset do BatcEdo$ de modo a e#itar /ue o mesmo resete o
sistema;
Interrupo do "imer 2 O Incremente uma #ari2#el do tipo I;" e escre#a seu #alor nos *
bits da porta F8
M8 Alabore uma rotina em C /ue Eabilite o modo PWM do bloco CCP1 e $ere um sinal PWM
com as caracter(sticas descritas no item 2 da preparao8
O)*/ , 2re4?@ncia do clocA interno do Timer 0' ! e & i#ual B 2re4?@ncia do
oscilador 4ue aciona o PI%' CMD>' di5idida por C3
La<els de2inidos nos ar4ui5os de5ice39
PIE7,0' PIE7,!' PIE7,&' PIE7,1' PIE7,C' PIE7,F G ,cesso aos pinos da porta ,H
PIE7)0' PIE7)!' PIE7)&' PIE7)1' PIE7)C' PIE7)F' PIE7)8' PIE7)I G ,cesso aos pinos
da porta )H
PIE7%0' PIE7%!' PIE7%&' PIE7%1' PIE7%C' PIE7%F' PIE7%8' PIE7%I G ,cesso aos pinos
da porta %H
PIE7D0' PIE7D!' PIE7D&' PIE7D1' PIE7DC' PIE7DF' PIE7D8' PIE7DI G ,cesso aos pinos
da porta DH
PIE7E0' PIE7E!' PIE7E& G ,cesso aos pinos da porta EH
%%P7! - ,cessa o re#istrador %%P! Jtodos os !8 <itsKH
%%P7!7LO( G ,cessa os <its menos si#ni2icati5os do re#istrador %%P!H
%%P7!7DILD G ,cessa os <its mais si#ni2icati5os do re#istrador %%P!H
%%P7& - ,cessa o re#istrador %%P& Jtodos os !8 <itsKH
%%P7&7LO( G ,cessa os <its menos si#ni2icati5os do re#istrador %%P&H
%%P7&7DILD G ,cessa os <its mais si#ni2icati5os do re#istrador %%P&H
12

Vous aimerez peut-être aussi