conversion numerique/resistance

Jean-Christophe se fendait de cette prose :

Ben tu viens de l'expliquer juste au-dessus ! Faut suivre :)

--
LeLapin
Reply to
LeLapin
Loading thread data ...

uts

non, c'est juste que mon montage n'avait pas de filtrage en sortie suffisant (il aurait fallu des capas =E9normes) et l'oeil peut distinguer des sauts de luminosit=E9 faibles et lent, m=EAme quand il y a= 256 pas.

avec une lampe =E0 incandescence =E7a ne se verrait pas mais avec des LED= s... yg

--=20

formatting link
/
formatting link

Reply to
whygee

On 20 juil, 18:04, LeLapin

es

en

J'aime bien ton approche pluridisciplinaire du cahier des charges :-) Bon, oui, mais non, car avec ce genre de soft, il y a beaucoup de trajectoires qui vont finir par reboucler sur elles-memes, comme par exemple une ligne droite entre deux murs (c'est le cas le plus simple) ou un rectangle entre les six murs. Si on tombe sur une telle figure "fermee" alors c'est pas bon.

Ensuite on a les meme figures, mais qui se decalent legerement a chaque rebond, qui vont decrire progressivement une rotation dans l'espace 3D pour revenir au point de depart, sans etre passe par tous les points.

Dans le cas que tu proposes, pour eviter cela, lors d'un rebond sur un mur j'implementerai un angle de rebond aleatoire (dans une fourchette donnee)

Mais mon analyse m'amene a considerer trois fonctions scalaires x,y,z dont le rapport serait irrationnel, car sans facteur commun entre ces

3 coordonnees, par definition on ne doit pas repasser par les meme points. C'est vrai qu'une trajectoire fractale remplirait ces conditions, mais alors je doute de l'aspect "hypnotique" des variations de couleurs ...
Reply to
Jean-Christophe

On 20 juil, 12:23, whygee

Tu as un exemple precis ? ( j'espere que c'est a la MJC du coin plutot que chez EADS ;-)

Mais tu ne controles pas precisement dans le temps l'instant d'execution de cette macro, c'est ce que je voulais souligner. L'instant de rafraichissement de la sortie du uC n'est pas determine : donc des fois ce sera un peu trop tard, d'autres fois un peu trop tot, et meme si en moyenne ces retards se compensent, c'est plus hasardeux que rigoureux.

Desole, j'ai vraiment du mal a lire l'ASM Microchip, je trouve Motorola ou Intel beaucoup plus clair.

port A.

Ok

Ouais mais c'est pas la meme chose ... si tu as de beaux crenaux avec un temps de montee tres bref, que tu sois a 50Hz ou a 5KHz il y aura toujours des composantes frequentielles dans le haut du spectre dues a la brievete du temps de montee de l'impulsion. Apres pour la CEM, tu agis sur le blindage de ton montage.

Mais ca depend de la frequence d'horloge de ton uC. J'ai un proto avec un Xtal a 16 MHz, la PLL interne monte a 64 MHz, mes 4 interruptions ont tout le temps necessaire pour faire leur boulot, et bien sur en laissant du temps processeur pour d'autres taches.

Ce n'est pas ce que je voulais dire, hein ... mais perso, j'aurais plutot implemente une interruption.

Ben non, puisque l'instant d'execution de la macro n'est pas nettement determine dans le temps ...

ts

Tu est bien sur que ca vient de la ? Il fait quoi d'autre ton programme ?

Oui c'est vrai. Bien qu'un decoupage a frequence fixe a ses avantages. Enfin bon, je ne defends pas plus une technique qu'une autre, tant que ca repond bien au cahier des charges, c'est ok.

6 instructions,

C'est justement ce "saupoudrage" que je trouve discutable. Dans le contexte ou tu as un uC qui tourne assez vite, qu'est-ce que ca te coute d'implementer ton code dans une interruption ?

e

Yep.

;-P

Toutaf.

Je suis nul en test :o| (tu ne m'auras pas comme ca)

Reply to
Jean-Christophe

beaucoup de programmes dans des PIC par exemple.

pas "pr=E9cis=E9ment" mais tant qu'elle est ex=E9cut=E9e "le plus souvent possible", =E7a allait dans mon cas.

c'est statistique. Va pr=E9tendre =E0 des matheux que les stats c'est pas pr=E9cis ;-P En plus, sur ce coup l=E0, c'est pas comme si je contr=F4lais un truc hypercritique...

D'autre part pour r=E9duire les couts, j'ai pas mis d'osc 20MHz externe, donc je tournais =E0 2MIPS (8MHz osc RC interne). donc pour maximiser la vitesse de changement de la sortie, j'ai mis des macros partout partout, un bloc de 3 =E0 5 instructions =3D> 1 macro de 3 instructions. Etant donn=E9 qu'une IRQ prend une dizaine ou quinzaine d'instructions rien que pour le traitement, la technique de saupoudrage est plus performante (et malgr=E9 le presque doublement de taille, =E7a tenait largement dans un PIC16F818).

l'assembleur de YASEP est plus clair ?

formatting link
formatting link
(shameless plug, je sais /o\)

du port A.

t.

C'est aussi utilis=E9 par les convertisseurs sigma-delta...

C'est mieux de ne pas avoir =E0 filtrer ce qu'on n'=E9met pas, donc =E0 la base il est pr=E9f=E9rable de ne pas =E9mettre d'EMI...

je le conc=E8de.

s. bon ben parfait alors :-)

sur ce coup-ci, puisqu'il y a une plus faible contrainte en fr=E9quence d= e toggle, =E7a semble effectivement jouable.

il n'y a pas besoin de "d=E9terminer pr=E9cis=E9ment dans le temps" avec la densit=E9 d'impulsion, contrairement au PWM. Il faut juste s'assurer que les intervalles moyens sont courts et que la probabilit=E9 d'un intervalle long entre deux macros est tr=E8s= faible. c'est sta-tis-ti-que :-)

,

Evidemment. J'ai eu largement le temps de tester le syst=E8me. Depuis, je passe =E0 16 bits de r=E9solution (12 bits minimum)

il attend des ordres sur ses broches et met =E0 jour la luminosit=E9. la macro est saupoudr=E9e PARTOUT, pas de boucle cach=E9e sans cela...

effectivement.

ou 6 instructions,

nce

le temps d'entr=E9e et de sortie des IRQ. chaque toggle "coute" 3 instructions et en moyenne peut avoir lieu toutes=

les 4 instructions. Une IRQ de PIC "coute" au moins 10 instructions. C'est encore pire s'il y a plusieurs sources d'IRQ !! =E7a met en l'air le principe de "d=E9terminer pr=E9cis=E9ment l'intervalle d'ex=E9cution",=

donc on en revient au point z=E9ro si la fr=E9quence de toggle doit =EAtr= e maximale.

bon alors c'est un clicodrome dynamique en Javascript qui en plus est en cours de traduction en fran=E7ais... on peut cliquer sur les opcodes et voir leur d=E9finition, cliquer sur les instructions et les assembler ... et c'est que le d=E9but :-)

yg

--=20

formatting link
/
formatting link

Reply to
whygee

Jean-Christophe se fendait de cette prose :

C'est pourquoi lors du choix par le µC des données initiales, le vecteur doit être choisi pour ne *pas* donner des conditions initiales qui amènent à une figure fermée.

Je serais plus fan d'un changement de l'impulsion (du vecteur) tous les X minutes pour un autre vecteur aléatoire ne donnant pas une figure fermée (ça s'est simple, il suffit d'interdire les valeurs -5° à 5°, 85 à 95,

175 à 185, 265 à 275 sur chaque axe.

De cette façon, on a un comportement particulier qui se dégage à chaque vecteur, et même certainement unique, mais qui change de temps en temps (ça peut se choisir par un switch, on peut aussi prévoir un switch pour "resetter" le vecteur si on sent que le précédent sera moche.)

--
LeLapin
Reply to
LeLapin

On Jul 20, 7:27 pm, LeLapin

eur

Mais ce probleme n'est pas trivial : si au bout de, disons, 6 rebonds sur les 6 parois du cube, la figure n'est pas fermee, elle pourrait l'etre apres 2 * 6 rebonds, ou meme apres 1,5 * 6 rebonds, tu vois ? Le fait est qu'une repetition exacte apres 6 rebonds donne R=3D1/1, une repetition exacte apres 2*6 rebonds donne R=3D2/1, donc c'est le rapport R de deux nombres (un rationnel) qui implique le fait que ce sera repetitif ... C'est pourquoi je suis convaincu qu'un nombre R irrationnel serait une solution simple pour ce probleme.

=E9e

=E0 95,

Je ne vois pas comment ces angles garantiraient la non-repetition ? Mais je suis tout a fait d'accord sur l'idee introduire des varations (angulaires ou autres) de temps a autre.

aque

ur

Ah, ok, mais je prefererais supprimer toute intervention exterieure. On alimente, la LED commence sa feerie, et ne se repete jamais.

As-tu fait tourner le soft que j'ai poste sur fr.sci.maths ? Ca fait exactement ce que je voudrais faire ... un fondu des couleurs les unes dans les autres, en continu, un regal pour les yeux, quasiment hypnotique (pour moi en tout cas)

Je devine ta question : oui bien sur, j'ai desassemble l'executable pour decoder l'asm, mais c'est pas du reverse-engineering trivial !

Reply to
Jean-Christophe

On Jul 20, 7:10 pm, whygee

Pour des applis maison, ou professionnelles ?

Par definition, c'est precis en moyenne, mais pas sur un seul echantillon :-p A mon avis c'est plutot pour ca que de temps en temps tu vois des sauts de luminosite ... mais bon.

Ok, la je suis d'accord :-)

Ah bon, je me demandais pourquoi ton PIC ramait a 8 MHz ... De plus, le RC interne n'est pas super-stable en frequence.

Plutot qu'un bon p'tit quartz, un seul ?

Oui, je trouve ces mnemoniques plus lisibles et parlantes que les horribles mutants Microchipiens ... et vive le C !

Oui c'est sur, mais a la limite pour ne rien emettre, il faut faire de l'electrostatique (et sans eteincelles :-)

faible.

Si on retombe sur la stat, je te redis que ca marche sur un grand nombre de valeurs, mais ca ne te garantit absolument rien pour *chaque* valeur. ( tout en acceptant cette technique pour une appli non-critique )

Bon ben alors tu devrais pouvoir y integrer une interruption :-)

Tsss ... ils auraient pu optimiser ca quand meme !

e maximale.

Oui.

Alors bon courage a toi pour la suite, Whygee.

Reply to
Jean-Christophe

Jean-Christophe se fendait de cette prose :

Et c'est pour la même raison que, sollicitant bien moins le µC, je suggère de changer le vecteur tous les T.

Non, je ne fréquente pas ce ng. Tu peux mettre le lien ici ?

--
LeLapin
Reply to
LeLapin

tu as l'avis que tu veux. les sautes de luminosit=E9 sont uniquement d=FBs =E0 la sensibilit=E9 de l'oeil, et au nombre de pas limit=E9s =E0 8 bits. Fais un jour l'essai avec une LED...

la stabilit=E9, m=EAme +/-10% ne change rien...

=E0 quoi bon, puisque le code fonctionne super bien sans IRQ ? j'avais g=E9r=E9 le changement de la luminosit=E9 par IRQ et =E7a a foutu le dawa... c'est seulement plus tard que je me suis rendu compte que la macro aurait d=FB =EAtre dans une section critique, ce qui aurait consomm=E9 2 instructions de macro en plus. donc j'ai vir=E9 les IRQ tout simplement.

euh... qu'est-ce que tu lui trouves de si chouette au C ? o_O

ouaiche mais bon, pour allumer des LEDs faudra trouver une technique...

s faible.

e

=2E

la garantie vient de l'examen du code, en mesurant le nb d'instructions entre chaque macro. Vu qu'il n'y a plus d'IRQ, aucun chemin cach=E9 n'int= ervient. L'=E9cart maximal devait =EAtre 8 ou 10 instructions...

ben non, cf calcul de nb d'instructions.

c'est pas =E0 moi qu'il faut le dire. j'ai d=E9j=E0 t=E2t=E9 des archis avec multiples bancs de registres, IRQ vectoris=E9es ultra-rapides... l=E0 c'est la mis=E8re :-( raison de plus pour zapper.

de toutes fa=E7on c'est simple : pour mes prochains montages un peu "chauds", je fous un FPGA et on en parle plus. fini les gruikeries =E0 cause des archis minables !

tant qu'on s'amuse, on avance tranquillement :-) tiens, cette nuit j'ai avanc=E9 sur comment masquer des colonnes dans l'=E9diteur de listing

formatting link
faut que j'int=E8gre =E7a, =E7a me d=E9mange ;-)

Au fait, donc, une sortie par impulsions sur une broche du PIC, une cellule RC et un MOSFET, =E7a le fait pour le probl=E8me initial ?

yg

--=20

formatting link
/
formatting link

Reply to
whygee

On Jul 21, 5:48 am, whygee

=E8s faible.

e
.

ervient.

Ok, ok.

C'est a Laurent qu'il faut poser cette question.

Reply to
Jean-Christophe

A part le c=F4t=E9 suggestif, c'est quoi les arguments ?

Si les interruptions sont si peu efficaces, on se demande pourquoi elles sont pr=E9sentes dans tous les procs depuis belle lurette ...

--

-Stan

Reply to
Stan

Stan se fendait de cette prose :

Et pourquoi les microprocesseurs actuels contiennent-ils des interruptions logicielles sur lesquelles sont basés la plupart des OS ?

--
LeLapin
Reply to
LeLapin

On Jul 21, 12:26 pm, LeLapin

s

Son probleme est du au uC qui tourne a 8 MHz en horloge interne sur un RC (donc pas tres stable, donc variation de la vitesse d'execution du code, donc non-respect de l'instant d'ecriture sur la sortie) et qui ne peut (dit-il) servir des interruptions avec une recurrence de 12 KHz.

Au lieu de mettre un quartz (qui n'est pas hors de prix) et tourner 10 fois plus vite pour gerer la sortie via une routine d'IRQ, il prefere "saupoudrer" du code inline, plutot que de simplement resoudre le probleme a la source. Il se propose meme d'opter pour un FPGA ... alors que dire ? Pour moi c'est du mercurochrome sur une jambe de bois.

Le PWM est largement utilise parce-qu'il est aussi simple qu'efficace : on peut lui preferer de l'exotique, mais alors il faut assumer ce choix.

Reply to
Jean-Christophe

ons

Je veux bien qu'on adopte une solution marginale pour un cas particulier, mais quand je lis :

"

" je suis tr=E8s, tr=E8s curieux de recevoir les arguments...

--

-Stan

Reply to
Stan

Entre autre parce que c'est le seul moyen pour changer de ring (au moins sur intel et compatibles...)...

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

Mathieu Chouquet-Stringer se fendait de cette prose :

Vous êtes fan de Wagner ?

--
LeLapin
Reply to
LeLapin

On Jul 21, 1:58=A0pm, LeLapin

S

Je ne savais pas que Wagner etait boxeur ?

Reply to
Jean-Christophe

lol non moi c'est plutôt Von Neumann...

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

Plus sérieusement, c'est un moyen pour passer des appels systèmes : quand tu es en mode utilisateur et que tu as besoin du noyau, tu déclenches une interruption avec les paramètres qui vont bien... Bon ça c'est la théorie, après ils ont ajouté sysenter/sysexit pour justement que ça aille plus vite que via des interruptions...

--
Mathieu Chouquet-Stringer
            The sun itself sees not till heaven clears.
	             -- William Shakespeare --
Reply to
Mathieu Chouquet-Stringer

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.