La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Examen final de pratique GPA787 Session Été 2014.

Présentations similaires


Présentation au sujet: "Examen final de pratique GPA787 Session Été 2014."— Transcription de la présentation:

1 Examen final de pratique GPA787 Session Été 2014

2 Calcul d’une FFT à 8 points dans la bonne vieille TI92 Signal de 8 points

3 Notez le calcul de la somme

4

5

6

7 La FFT à 8 points approximée

8 Les amplitudes

9

10 Spectre en fréquence Fréquence en Hertz Amplitude Maximums à 20.81 et 145.69 Hertz

11 Calcul d’une FFT inverse à 8 points dans la bonne vieille TI92 J’ai conservé n et wn du calcul de la FFT fait précédemment. Spectre de 8 points Notez le calcul de la somme

12

13

14

15 Le signal de 8 points approximé

16 L’évolution du signal dans le temps Temps en seconde Amplitude du signal

17 Décodage entropique (6):39…(1,3):7…(1,3):5…(6,4):10…(1,3):6 (1,3):5…(15,0)…(1,1):1…(0,1):1…(2,2):3 (4,1):1…(0,0) Erreur sur la figure Ton moyen de gris On passe de 64 x 8 bits à 66 bits, donc taux de compression d’environ 7.76

18 Collisions de la communication CANbus La communication CAN gère les collisions de données avec un système de bits dominants et récessifs. Chaque message ayant un identifiant différent, tant que les bits des deux identifiants sont identiques, les deux émettent. Mais dès qu’un bit diffère, l’équipement ayant émis le bit récessif cesse de transmettre permettant à l’équipement ayant le bit dominant de transmettre son message.

19 Bits dominants et récessifs La notion de bits dominants et récessifs vient du fait que si les deux sont présentés simultanément, le bit dominant l’emporte. Cela peut être obtenu par le câblage de transistors dont les collecteurs sont en parallèles. Dès qu’un transistor est en saturation, la tension du collecteur descend près de 0, en dépit de l’état des bases des autres transistors.

20 Codage entropique Le codage entropique consiste au codage des amplitudes des coefficients quantifiés de la DCT 2D. Ce codage est en deux parties: – un code de 8 bits contenant 4 bits pour indiquer le nombre de zéros à intercaler, 4 bits pour indiquer le nombre de bits de l’information. – L’amplitude exprimée en un certain nombre de bits (identifié dans le code mentionné précédemment). L’élimination des 0 et la réduction du nombre de bits requis pour représenter l’amplitude permet de comprimer les données. Le codage de Hufmann augmentera ce taux de compression.

21 Routine d’interruption Bp1 void ISR_Bp1(void) { – static unsigned int lastPress = 0; – if (!PIO_Get(&pinsBTN[0])) { if ((timestamp - lastPress) > DEBOUNCE_TIME) { – lastPress = timestamp; – if (hor<639) hor+=hor; } – } } Position horizontale du curseur

22 Routine d’interruption Bp3 void ISR_Bp3(void) { – static unsigned int lastPress = 0; – if (!PIO_Get(&pinsBTN[0])) { if ((timestamp - lastPress) > DEBOUNCE_TIME) { – lastPress = timestamp; – if (hor>0) hor-=hor; } – } } Position horizontale du curseur

23 Configuration des interruptions static void ConfigurePins() { – PIO_InitializeInterrupts(AT91C_AIC_PRIOR_LOWEST); – PIO_ConfigureIt(&pinsBTN[0], (void (*)(const Pin *)) ISR_Bp1); – PIO_ConfigureIt(&pinsBTN[1], (void (*)(const Pin *)) ISR_Bp2); – PIO_ConfigureIt(&pinsBTN[2], (void (*)(const Pin *)) ISR_Bp3); – PIO_ConfigureIt(&pinsBTN[3], (void (*)(const Pin *)) ISR_Bp4); – PIO_EnableIt(&pinsBTN[0]); – PIO_EnableIt(&pinsBTN[1]); – PIO_EnableIt(&pinsBTN[2]); – PIO_EnableIt(&pinsBTN[3]); }

24 Variables utilisées static const Pin pinsBTN[] = {PIN_PUSHBUTTON_1, PIN_PUSHBUTTON_2, PIN_PUSHBUTTON_3, PIN_PUSHBUTTON_4}; PIO_Configure(pinsBTN, PIO_LISTSIZE(pinsBTN)); volatile int hor = 0; /* Position horizontale */ volatile int ver = 0; /* Position verticale */ A définir dans Board.h

25 Tentative d’interruptions aux 3 secondes static void ConfigureTc(void) { unsigned int tcclks = 3; // Choix de l'horloge; unsigned int div = 128; // Diviseur de la fréquence de l'horloge (133 MHz) unsigned int freqd = 16; // Paramètre pour le compteur (intervalles de 0.0625 sec) // Enable peripheral clock AT91C_BASE_PMC->PMC_PCER = 1 << AT91C_ID_TC0; //TC_Configure(AT91C_BASE_TC0, tcclks | AT91C_TC_CPCTRG); TC_Configure(AT91C_BASE_TC0, tcclks | AT91C_TC_CPCTRG); AT91C_BASE_TC0->TC_RC = (BOARD_MCK / div) /(freqd) ; // timerFreq / desiredFreq // Configure and enable interrupt on RC compare IRQ_ConfigureIT(AT91C_ID_TC0, AT91C_AIC_PRIOR_LOWEST, ISR_Tc0); AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS; IRQ_EnableIT(AT91C_ID_TC0); TC_Start(AT91C_BASE_TC0); } C’est le plus long possible Prévoir un compteur dans la routine d’interruption. Si le compteur est égal à 48, on exécute l’interruption.

26 Fréquence de l’onde sinusoidale La fréquence sera très lente, car la période sera 50 x 3 sec = 150 sec. La fréquence sera de 1/500 Hz.

27 Pourquoi lire deux fois le CAN (ADC en anglais) Parce que l’information sur 12 bits est envoyée en deux tranches. Les 3 premiers bits lors de la première lecture et les 9 derniers bits pour la seconde lecture.


Télécharger ppt "Examen final de pratique GPA787 Session Été 2014."

Présentations similaires


Annonces Google