Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« on: November 13, 2012, 11:08:30 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #1 on: November 13, 2012, 11:32:16 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4451
Arduino Hacker
|
 |
« Reply #2 on: November 13, 2012, 12:38:48 pm » |
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, ...)
|
|
|
|
|
Logged
|
|
|
|
|
Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« Reply #3 on: November 13, 2012, 02:24:19 pm » |
Ok pour le RX TX, je vais pas y toucher pour le moment alors.  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 ? 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 ?
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4451
Arduino Hacker
|
 |
« Reply #4 on: November 13, 2012, 02:29:42 pm » |
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, ...)
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #5 on: November 13, 2012, 02:33:02 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« Reply #6 on: November 13, 2012, 02:45:26 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
France
Offline
Faraday Member
Karma: 36
Posts: 4451
Arduino Hacker
|
 |
« Reply #7 on: November 13, 2012, 02:50:45 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #8 on: November 13, 2012, 02:52:38 pm » |
En gros c'est des compteurs logiques (hardware)
|
|
|
|
|
Logged
|
|
|
|
|
Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« Reply #9 on: November 13, 2012, 03:29:50 pm » |
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 ?
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #10 on: November 13, 2012, 03:42:11 pm » |
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
|
|
|
|
|
Logged
|
|
|
|
|
Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« Reply #11 on: November 13, 2012, 04:01:39 pm » |
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 ?
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 1
Posts: 18
|
 |
« Reply #12 on: November 14, 2012, 06:03:53 am » |
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/BlinkWithoutDelayAprè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.
|
|
|
|
|
Logged
|
|
|
|
|
Vallée de Joux (Suisse)
Offline
Newbie
Karma: 1
Posts: 43
|
 |
« Reply #13 on: November 14, 2012, 07:04:54 am » |
Mais ce signal PWM ne peut pas être défini en fréquence, c'est noté ici : http://arduino.cc/en/Reference/AnalogWriteThe 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 ?
|
|
|
|
|
Logged
|
|
|
|
|
Ales
Offline
Edison Member
Karma: 8
Posts: 1803
Do or DIY
|
 |
« Reply #14 on: November 14, 2012, 08:52:41 am » |
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
|
|
|
|
|
Logged
|
|
|
|
|
|