Cours:TPS XR207 tpTimer : Différence entre versions
(Page créée avec « générer un signal carré (on pourra faire varier la valeur avec un bouton par interruption par ex) => méthode en utilisant un delay => usage du timer mode comparaiso... ») |
|||
Ligne 1 : | Ligne 1 : | ||
+ | {| | ||
+ | |- | ||
+ | | [[Cours:TPs_2103|{{Rouge|<big>'''Retour à la liste des Tps'''</big>}}]] | ||
+ | |||
+ | [[Cours:TPS_2103_tp2_corrige|{{Vert|<big>'''Éléments de correction'''</big>}}]] | ||
+ | |||
+ | Nous allons dans ce TP nous pencher sur l'utilisation des timers, notamment pour générer un signal, ceci en utilisant le moins possible les ressources du µcontrôleur. | ||
+ | || [[Fichier:ArduinoPinout.png|vignette]] | ||
+ | |} | ||
+ | |||
+ | ={{Rouge|Comment générer un signal périodique}}= | ||
+ | |||
+ | Nous allons dans cette partie comparer les 2 principales méthodes pour générer un signal périodique. | ||
+ | |||
+ | Dans toute cette partie, nous considérerons une sortie périodique telle que : | ||
+ | *le signal est {{Rouge|carré}} (2 états '0' ou '1') | ||
+ | *de fréquence {{Rouge|1kHz}} | ||
+ | *de {{Rouge|rapport cyclique}} 1/2 | ||
+ | *sortie sur la patte {{Rouge|PB3}} | ||
+ | |||
+ | =={{Bleu|avec une attente .... méthode basique !}}== | ||
+ | |||
+ | Commençons tout simplement par utiliser une attente, comme nous l'avons fait dans le tp précédent. | ||
+ | |||
+ | Il suffit tout bonnement de configurer correctement la valeur d'attente. | ||
+ | |||
+ | Remarquons que pour plus de précision, il est possible d'utiliser la fonction _delay_us(xxx), dont le nom est suffisamment explicite pour se passer d'une description ! | ||
+ | |||
+ | {{Question|Écrire un programme générant le signal souhaité, et le visualiser avec un oscilloscope.}} | ||
+ | |||
+ | |||
+ | <source lang=c> | ||
+ | #include <util/delay.h> | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | // configuration e/s | ||
+ | |||
+ | while(1) // boucle | ||
+ | { | ||
+ | // modification de la sortie | ||
+ | |||
+ | // attente | ||
+ | _dela..... | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | '''Remarque :''' Comme expliqué en TD, cette méthode fonctionne mais entraîne une {{Rouge|occupation à 100% du processeur}}, qui ne peut donc réaliser que cette action ! | ||
+ | |||
− | |||
=> méthode en utilisant un delay | => méthode en utilisant un delay |
Version du 3 avril 2015 à 12:58
Retour à la liste des Tps
Nous allons dans ce TP nous pencher sur l'utilisation des timers, notamment pour générer un signal, ceci en utilisant le moins possible les ressources du µcontrôleur. |
Comment générer un signal périodique
Nous allons dans cette partie comparer les 2 principales méthodes pour générer un signal périodique.
Dans toute cette partie, nous considérerons une sortie périodique telle que :
- le signal est carré (2 états '0' ou '1')
- de fréquence 1kHz
- de rapport cyclique 1/2
- sortie sur la patte PB3
avec une attente .... méthode basique !
Commençons tout simplement par utiliser une attente, comme nous l'avons fait dans le tp précédent.
Il suffit tout bonnement de configurer correctement la valeur d'attente.
Remarquons que pour plus de précision, il est possible d'utiliser la fonction _delay_us(xxx), dont le nom est suffisamment explicite pour se passer d'une description !
Écrire un programme générant le signal souhaité, et le visualiser avec un oscilloscope.
#include <util/delay.h>
int main()
{
// configuration e/s
while(1) // boucle
{
// modification de la sortie
// attente
_dela.....
}
}
Remarque : Comme expliqué en TD, cette méthode fonctionne mais entraîne une occupation à 100% du processeur, qui ne peut donc réaliser que cette action !
=> méthode en utilisant un delay
=> usage du timer mode comparaison avec interruption
=> sortie directe du timer sur patte
=> buzzer
=> mélodie
=> changer les notes avec 2ème timer