Cours:Lo11Final : Différence entre versions

De troyesGEII
Aller à : navigation, rechercher
m
Ligne 12 : Ligne 12 :
 
={{Rouge|Préparation du timer}}=
 
={{Rouge|Préparation du timer}}=
  
 +
=={{Bleu|Compteur}}==
  
 
Commençons par réaliser un compteur 8 bits avec entrée '''enable''' et valeur '''maximum'''.
 
Commençons par réaliser un compteur 8 bits avec entrée '''enable''' et valeur '''maximum'''.
Ligne 42 : Ligne 43 :
  
  
 +
=={{Bleu|Prédivision}}==
  
Prediv 256
+
Limitons maintenant la vitesse de comptage à l'aide du signal '''enable'''.
 +
 
 +
On utilise pour ce faire un '''prédiviseur''' de fréquence :
 +
*décrivez un compteur modulo N(en l'occurrence modulo {{Rouge|256}})
 +
*le signal '''enable''' est à '1' toutes les N (ici {{Rouge|256}}) périodes d'horloge
 +
 
 +
<source lang=vhdl>
 +
prediv:process(clk)
 +
begin
 +
 
 +
end process prediv;
 +
 
 +
</source>
 +
 
 +
{{Todo|Décrire ce fonctionnement en utilisant le process prediv pour la partie comptage modulo N}}
 +
 
 +
=={{Bleu|Sortie}}==
 +
 
 +
Le signal de sortie doit tout simplement : {{Rouge|changer d'état à chaque débordement (passage à 0) du timer}}.
 +
 
 +
{{Todo|Compléter votre programme avec cette sortie}}
 +
 
 +
=={{Bleu|Tests}}==
 +
 
 +
{{Question|Vérifier le fonctionnement en utilisant les interrupteurs pour la valeur maximum et A6 comme sortie. Valider le fonctionnement à l'oscilloscope.}}
 +
 
 +
={{Rouge|Ajoutons le au µcontrôleur}}=
 +
 
 +
=={{Bleu|}}==

Version du 12 juin 2014 à 23:05

Il s’agit d’une page protégée.

Gestion du temps par µcontrôleur

Les timers sont des périphériques matériels qui permettent à un µcontrôleur une gestion précise du temps.

Il s'agit tout simplement d'un compteur(avec plus ou moins de fonctions annexes) dont la période de comptage est connue.

Il suffit ensuite de jouer sur les valeurs du compteur pour obtenir le temps souhaité.

Le µcontrôleurAtmega8 que nous utilisons ne dispose pas de timer, aussi nous allons nous efforcer de lui en ajouter une version modeste !

Préparation du timer

Compteur

Commençons par réaliser un compteur 8 bits avec entrée enable et valeur maximum.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

entity pseudoTimer is
Port ( clk : in STD_LOGIC;
max : in STD_LOGIC_VECTOR (7 downto 0);
s : out STD_LOGIC);
end pseudoTimer;

architecture Behavioral of pseudoTimer is
signal en : STD_LOGIC;

signal cpt : STD_LOGIC_VECTOR (7 downto 0);
begin

comptage:process(clk,en)
begin

end process comptage;

end Behavioral;

Todo.jpg Décrire le process comptage en implémentant les fonctions valeurs maximum et enable synchone


Prédivision

Limitons maintenant la vitesse de comptage à l'aide du signal enable.

On utilise pour ce faire un prédiviseur de fréquence :

  • décrivez un compteur modulo N(en l'occurrence modulo 256)
  • le signal enable est à '1' toutes les N (ici 256) périodes d'horloge
prediv:process(clk)
begin

end process prediv;

Todo.jpg Décrire ce fonctionnement en utilisant le process prediv pour la partie comptage modulo N

Sortie

Le signal de sortie doit tout simplement : changer d'état à chaque débordement (passage à 0) du timer.

Todo.jpg Compléter votre programme avec cette sortie

Tests

Question.jpg Vérifier le fonctionnement en utilisant les interrupteurs pour la valeur maximum et A6 comme sortie. Valider le fonctionnement à l'oscilloscope.

Ajoutons le au µcontrôleur