Go Down

Topic: Connexions (pins) PWM et RX, TX (Read 1 time) previous topic - next topic

Phoenix65

Bonjour.

En regardant les pins de l'Arduino, je me rends compte qu'il y a 3 choses que je connais pas.
Premièrement les sorties digitales marquées PWM ont quel différence avec les autres ?
Je sais ce qu'est le PWN (signal carré avec longueur variable), mais pourquoi seulement certaines broches l'accepte ?

Ensuite je ne vois pas comment utiliser/l'utilité des Pins RX et TX, c'est quoi ?


Merci d'avance.

B@tto

Pour les PWM je vais peut-être dire une connerie, le PWM utilise les timer du µC, donc il faut que le dit timer soit relié au timer et tu auras aussi des contraintes vis à vis de la gestion séparée des pins (sur chacun des pins tu peux définir un PWM indépendant).

Pour les RX et TX ce sont les connexions série du µC. En gros tu as :

USB <==> FTDI <==> Atmega


Le FTDI (ou at-bidule sur la UNO) va émuler un port RS-232 (qui utilise du +/-12V) sur ton PC. L'Atmega lui utilise du série TTL (qui utilise du 0-5V et polarité inversée au RS-232). Le FTDI fait donc l'interface PC/Atmega, et les pin RX-TX sont deux piquages entre le FTDI et l'ATMEGA.

Si tu ne te sers pas de la liaison série avec le PC sur une UNO, tu peux par exemple communiquer avec une autre UNO.
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

skywodd

Bonjour,


En regardant les pins de l'Arduino, je me rends compte qu'il y a 3 choses que je connais pas.
Premièrement les sorties digitales marquées PWM ont quel différence avec les autres ?
Je sais ce qu'est le PWN (signal carré avec longueur variable), mais pourquoi seulement certaines broches l'accepte ?

C'est lié au hardware, comme le précise B@tto il ya un timer derrière chaque broche PWM (enfin 1 timer pour deux broches PWM pour être précis).
-> 3 timers = 6 broches PWM, le fabricant (ATMEL) à choisi les broches en question de manière arbitraire.


Ensuite je ne vois pas comment utiliser/l'utilité des Pins RX et TX, c'est quoi ?

- upload du code (le port série usb et Rx/Tx sont relié en interne)
- communication avec l'ordinateur
- communication en série avec divers modules si besoin (gps, lcd, ...)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Phoenix65

Ok pour le RX TX, je vais pas y toucher pour le moment alors.  XD
Quote
Pour les PWM je vais peut-être dire une connerie, le PWM utilise les timer du µC

Donc il utilise pas le quartz présent sur la carte ?

Quote
il faut que le dit timer soit relié au timer

Pas bien compris la...
Pourquoi avoir plusieurs timers séparés ? Un seul (quartz) ne suffirait pas ? Après c'est généré par la puce, non ?

skywodd


Donc il utilise pas le quartz présent sur la carte ?

Si, tout utilise la source d'horloge (le quartz) dans un microcontrôleur.


Pourquoi avoir plusieurs timers séparés ? Un seul (quartz) ne suffirait pas ? Après c'est généré par la puce, non ?

Timer = interruption(s) à un intervalle de temps précis -> applications gérant le temps de manière précise

Quartz = source du signal d'horloge, il ne faut pas tout mélanger.
Le quartz génère un signal qui cadence :
- le cpu, à chaque "tick" une action est effectué,
- les périphériques hardware (timers, port série, convertisseur analogique, ...)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto


Quote
il faut que le dit timer soit relié au timer

Pas bien compris la...

Erreur ^^' je voulais dire "il faut que le timer soit relié au pin". Et encore la bien sur c'est un raccourci que je prends, mais dans le principe c'est ça
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Phoenix65

Quote
Timer = interruption(s) à un intervalle de temps précis -> applications gérant le temps de manière précise

Donc les timer sont des parties de code de bas niveau incorporé au firmware qui gère les I/O si je suis bien l'explication.

skywodd


Donc les timer sont des parties de code de bas niveau incorporé au firmware qui gère les I/O si je suis bien l'explication.

Les timers sont des composants hardware, qui permettent via des interruptions d'appeler des morceaux de code dits "d'interruptions".
Pour mieux comprendre : http://www.atmel.com/Images/doc8161.pdf à partir de la page 94
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

B@tto

En gros c'est des compteurs logiques (hardware)
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Phoenix65

Ok je vois en gros le principe. Pour le PDF c'est franchement trop complexe pour moi...

Et donc il est impossible de générer un PWM sur les sorties non notée PWM ?
Par exemple en mettant une sortie non PWM à HIGH pendant 2ms, puis LOW pendant 18ms avec une boucle ça irait pas ?

B@tto

Si si, mais l'avantage du pwm c'est qu'il n'est pas interféré par le reste du code (dès que tu as une pause ça va perturber ton timing). D'ailleurs il y a une lib : http://code.google.com/p/rogue-code/wiki/SoftPWMLibraryDocumentation
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Phoenix65

Du coup question bête, mais comment avoir plusieurs codes qui s'exécute en même temps ?
Genre avoir des tâches en parallèle de la principale ?

CaptainNapalm

Tu peux utiliser les timers justement, pour éviter que ton programme ne reste "bloqué" que sur une action pendant un delay(). C'est pas réellement du multitaches mais ça s'en approche.
La base c'est cet exemple: http://www.arduino.cc/en/Tutorial/BlinkWithoutDelay
Après j'ai vu qu'il y avait des choses à faire avec les timers et les librairies qui vont bien, mais je me suis pas encore penché dessus suffisamment, je peux pas t'en dire plus pour le moment.

Phoenix65

Mais ce signal PWM ne peut pas être défini en fréquence, c'est noté ici :
http://arduino.cc/en/Reference/AnalogWrite

Quote
The frequency of the PWM signal is approximately 490 Hz.


Donc comment par exemple avoir un PWM de 20ms de long (50Hz donc) pour un servomoteur ?

B@tto

Tu peux modifier la frequence du PWM mais il y aura des effets de bord, c'est à dire que par exemple les delay ne seront plus exact : http://www.pobot.org/Modifier-la-frequence-d-un-PWM.html
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Go Up