' Micro-Info asbl ' --------------- ' ' La Vague version 4 ' ------------------ ' ' Par rapport à la version 3, nous n'allons utiliser qu'un ' seul bouton. ' Les fonction à contrôler sont : ' 1 - La vitesse de défilement. ' 2 - Le sens de défilement. ' Pour ce faire, nous allons utiliser la méthode suivante : ' 1 - Un appuis bref (moins de 0.1s)sur le bouton ' inverse le sens de défilement. ' 2 - Un appuis long (plus de 1s) change la vitesse. ' La vitesse varie selon une une fonction triangle. ' La dernière valeur et le sens de variation ' sont mis en mémoire pour reprendre ' ' Pour utiliser ces fonctions nous allons cabler le Mi-Bus ' de la manière suivante : ' La carte ATMega16 sera connectée au bus par le petit côté. ' Le bouton poussoir utilisé sera le bouton S5. Le jumper ' sur P10 sera enlevé (connexion n° 11), et un bout de fil ' raccordera le contact supérieur de P10 de la carte MiTest ' à l'entrée PD2/(INT0) du grand côté de la carte ATMega16 ' (connexion n°3). Nous aurrons donc le tableau de connexion ' suivant : ' ' MI-Bus - Port A (Petit Côté) - Carte MI-Test ' --------------------------------------------------------------------------- ' 1 - P00 - PA7 (ADC7) - Led 1 à la masse via 1K ' 2 - P01 - PA6 (ADC6) - Led 2 à la masse via 1K ' 3 - P02 - PA5 (ADC5) - Led 3 à la masse via 1K ' 4 - P03 - PA4 (ADC4) - Led 4 à la masse via 1K ' 5 - P04 - PA3 (ADC3) - Led 5 à la masse via 1K ' 6 - P05 - PA2 (ADC2) - Led 6 à la masse via 1K ' 7 - P06 - PA1 (ADC1) - Led 7 à la masse via 1K ' 8 - P07 - PA0 (ADC0) - Led 8 à la masse via 1K ' 9 - P08 - PB7 (SX) - Poussoir S3 (CC au +5V, tiré à la masse par 100K) ' 10 - P09 - PB6 (MISO) - Poussoir S4 (CC au +5V, tiré à la masse par 100K) ' 11 X P10 X PD2 (INT0) X Poussoir S5 (CC à la masse, poussé au +5V par 100K) ' 12 - P11 - PB4 (SS) - Poussoir S6 (CC à la masse, poussé au +5V par 100K) ' 13 - P12 - PB3 (AIN1/OC0) - Haut-Parleur Piezzo ' 14 - P13 - PB2 (AIN0/INT2) - Inverseur vers +5V ou masse ' 15 - P14 - PB1 (T1) - Résistance P10 (2K5) au +5V et condensateur de 47nF à la masse ' 16 - P15 - PB0 (T0/XCK) - Résistance P9 (2K5) à la masse et condensateur de 47nF au +5V ' 17 - 5V - 5V ' 18 - Reset - RST ' 19 - Masse - GND ' 20 - 12V - NC ' ' Cette manière de faire nous permettra de travailler par intéruption ' sur le bouton S5 raccordé sur l'entrée d'intéruption 0. ' ' La routine d'intéruption sera activée par les instructions : ' On Int0 Poussoir ' Définition de la routine d'intérupt ' Enable Int0 ' Activation de l'interupt 0 ' Config Int0 = Falling ' Définition du mode de déclanchement ' Enable Interrupts ' Activation des intérupts sur le µP. ' Où "Int0" est l'entrée d'activation de l'intéruption. ' "Poussoir" est la routine d'intéruption. ' "Int0 = Falling" pour dire que nous allons utiliser la transition ' Haut->Bas pour provoquer l'intérupt. ' ' ' ' ' ' ' ' ' ' ' ' ' Layout pour ATMega16 ' -------------------- ' ' $regfile = "m16def.dat" ' Chargement de la bibliothèque $crystal = 8000000 ' Définition de la fréquence du quartz $baud = 19200 ' Définition de la vitesse RS232 $hwstack = 32 ' Valeur par défaut pour hardware stack $swstack = 10 ' Valeur par défaut pour SW stack $framesize = 40 ' Valeur par défaut pour frame space ' Attention de ne pas activer le port série par la commande $baud = 19200 ' sinon les lignes RX & TX (PD0 & PD1) sont portées à des potentiels indéfinis! ' Les fusibles du controleur sont programmés de la manière suivante ' Lock Bit Byte : L_RS_HEAD_PTR0BB=%11111111=$FF=255 ' (Pas de protection) ' Fuse High Byte : FHB=%10011001=$99=153 ' (OCDEN=Disable, JTAGEN=Enable, SPIEN=Enable, CKOPT=1 ' EESAVE=Mémoire non sauvegardée, BOOTSZ=00, BOOTRST=1) ' Fuse Low Byte : FLB=%00011111=$1F=31 ' (BODLEVEL=4V,BODEN=Enabled,SUT1..0=01 ' CKSEL3..0=1111) ' '