initiation au microcontrôleursti2dvox.patgue.com/tsin/pdf/sti2d sin debuter avec...p.g lycée...

Post on 18-Nov-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 1

Mise en oeuvre des microcontrôleurs

ATMega

1 Pour préparer la session de travail

Pour préparer la session de travail il faut recopier sur son poste dans son

dossier c:\Travail_eleves\[REPERTOIRE A MON NOM le dossier Prog_CodeVision_depart_eleve

disponible sur le serveur.

2 Le schéma de départ

INIT_CodeVision.DSN

Ce schéma très simple nous montre l’interconnexion des entrées sorties à savoir quatre leds, un

afficheur LCD de 4 lignes de 20 caractères et quatre interrupteurs.

Une version en mode paysage est à la fin du document.

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D

18

D0

7

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1

LM044L

PB0/ICP1/CLKO/PCINT014

PB1/OC1A/PCINT115

PB3/MOSI/OC2A/PCINT317

PB2/SS/OC1B/PCINT216

PD6/AIN0/OC0A/PCINT2212

PD5/T1/OC0B/PCINT2111

PD4/T0/XCK/PCINT206

PD3/INT1/OC2B/PCINT195

PD2/INT0/PCINT184

PD1/TXD/PCINT173

PD0/RXD/PCINT162

PB4/MISO/PCINT418

PB5/SCK/PCINT519

PB7/TOSC2/XTAL2/PCINT710

PB6/TOSC1/XTAL1/PCINT69

PC6/RESET/PCINT141

PC5/ADC5/SCL/PCINT1328

PC4/ADC4/SDA/PCINT1227

PC3/ADC3/PCINT1126

PC2/ADC2/PCINT1025

PC1/ADC1/PCINT924

PC0/ADC0/PCINT823

AVCC20

AREF21

PD7/AIN1/PCINT2313

ATMEGA88

BP1

Initiation au microcontrôleur

INIT_CodeVision.DSN

pour simuler en continu

D1LED-BLUE

D2LED-GREEN

D3LED-RED

D4LED-YELLOW

Mise en oeuvre de départ

BP2

BP3

BP4

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 2

3 Le premier projet utilisation du CodeWizard de CodeVision

Le logiciel Codevision est un EDI qui permet de programmer en langage c les microcontrôleurs Atmel. Il

est beaucoup moins performant que des outils comme AVRco que nous verrons plus tard. La version

utilisée ici est une version d’évaluation disponible sur le site en téléchargement.

Lancer le logiciel CodeVision version 2.04.4a

Création d’un nouveau projet : New \ Project

Choix du microcontrôleur :

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 3

Configuration des ports du microcontrôleur : il y a trois ports à configurer, nous ne configurons que

les ports pour les entrées sorties sur une broche individuelle :

Le port B est connecté sur l’afficheur LCD il est géré par un onglet

particulier donc il n’y a rien à configurer pour les bits de manière

individuelle.

Le port C est configuré pour les deux entrées PC2 et PC3 qui

reçoivent chacune un bouton poussoir.

PB0/ICP1/CLKO/PCINT014

PB1/OC1A/PCINT115

PB3/MOSI/OC2A/PCINT317

PB2/SS/OC1B/PCINT216

PD6/AIN0/OC0A/PCINT2212

PD5/T1/OC0B/PCINT2111

PD4/T0/XCK/PCINT206

PD3/INT1/OC2B/PCINT195

PD2/INT0/PCINT184

PD1/TXD/PCINT173

PD0/RXD/PCINT162

PB4/MISO/PCINT418

PB5/SCK/PCINT519

PB7/TOSC2/XTAL2/PCINT710

PB6/TOSC1/XTAL1/PCINT69

PC6/RESET/PCINT141

PC5/ADC5/SCL/PCINT1328

PC4/ADC4/SDA/PCINT1227

PC3/ADC3/PCINT1126

PC2/ADC2/PCINT1025

PC1/ADC1/PCINT924

PC0/ADC0/PCINT823

AVCC20

AREF21

PD7/AIN1/PCINT2313

ATMEGA88

BP1

BP2

P : PullUp pour fixer le potentiel haut de l’entrée quand l’interrupteur est ouvert.

in : la broche fonctionne en entrée logique

T : la broche fonctionne en entrée logique elle reçoit les deux niveaux logiques 0 et 1.

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 4

Le Port B est connecté aux leds et à deux entrées de type bouton poussoir :

PB0/ICP1/CLKO/PCINT014

PB1/OC1A/PCINT115

PB3/MOSI/OC2A/PCINT317

PB2/SS/OC1B/PCINT216

PD6/AIN0/OC0A/PCINT2212

PD5/T1/OC0B/PCINT2111

PD4/T0/XCK/PCINT206

PD3/INT1/OC2B/PCINT195

PD2/INT0/PCINT184

PD1/TXD/PCINT173

PD0/RXD/PCINT162

PB4/MISO/PCINT418

PB5/SCK/PCINT519

PB7/TOSC2/XTAL2/PCINT710

PB6/TOSC1/XTAL1/PCINT69

PC6/RESET/PCINT141

PC5/ADC5/SCL/PCINT1328

PC4/ADC4/SDA/PCINT1227

PC3/ADC3/PCINT1126

PC2/ADC2/PCINT1025

PC1/ADC1/PCINT924

PC0/ADC0/PCINT823

AVCC20

AREF21

PD7/AIN1/PCINT2313

ATMEGA88

D1LED-BLUE

D2LED-GREEN

D3LED-RED

D4LED-YELLOW

BP3

BP4

out : la broche fonctionne en sortie logique

out : valeur initiale de la sortie

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 5

Configuration de l’afficheur LCD :

Sauvegarde du projet attention à vérifier que vous êtes dans le bon répertoire.

choix du Port

choix du nombre de caractères par lignes

Nom générique du projet utilisé trois fois avec des types de fichiers différents.

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 6

Voilà le résultat de la génération automatique du châssis du programme de votre application quelques

ajouts ont été effectués après en utilisant l’éditeur de code :

/***************************************************** This program was produced by the CodeWizardAVR V2.04.4a Evaluation Automatic Program Generator © Copyright 1998-2009 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 10/10/2013 Author : Freeware, for evaluation and non-commercial use only Company : Comments: Chip type : ATmega88 Program type : Application AVR Core Clock frequency: 10,000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega88.h> #include <delay.h> #define Led_Rouge PORTB.1 #define ALLUME 0 #define ETEINT 1 // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x0B ;PORTD #endasm #include <lcd.h>

!! Insertion des procédures personnelles ici !!

Ajout de l’appel de la

bibliothèque des délais en mS et

µS

Les directives #define permettent de

rendre le programme plus lisible elles

se situent au début du programme.

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 7

// Declare your global variables here void main(void) { // Declare your local variables here // Crystal Oscillator division factor: 1 #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif // Input/Output Ports initialization // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=T State6=T State5=P State4=P State3=1 State2=1 State1=1 State0=1 PORTB=0x3F; DDRB=0x0F; // Port C initialization // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State6=T State5=T State4=T State3=P State2=P State1=T State0=T PORTC=0x0C; DDRC=0x00; // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T PORTD=0x00; DDRD=0x08; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0A output: Disconnected // OC0B output: Disconnected TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00;

Les choix de configurations des ports ont

été pris en compte.

Les instructions d’initialisation du

microcontrôleurs sont générées

automatiquement.

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 8

OCR0B=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=FFh // OC2A output: Disconnected // OC2B output: Disconnected ASSR=0x00; TCCR2A=0x00; TCCR2B=0x00; TCNT2=0x00; OCR2A=0x00; OCR2B=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // Interrupt on any change on pins PCINT0-7: Off // Interrupt on any change on pins PCINT8-14: Off // Interrupt on any change on pins PCINT16-23: Off EICRA=0x00; EIMSK=0x00;

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 9

PCICR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x00; // Timer/Counter 2 Interrupt(s) initialization TIMSK2=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; ADCSRB=0x00; // LCD module initialization lcd_init(20); L’initialisation est terminée zoom sur la partie fonctionnelle de notre code :

lcd_putsf("BIENVENUE"); lcd_gotoxy(0,1); lcd_putsf("EN STI2D SIN"); delay_ms(500); lcd_clear(); while (1) { // Place your code here // Clignotement de la LED ROUGE Led_Rouge=ALLUME; delay_ms(200); Led_Rouge=ETEINT; delay_ms(200); }; }

Ajoutez le

commentaire

de ces lignes

de codes !

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 10

Pour compiler et construire l’exécutable il faut cliquer sur le bouton :

Complément prise en compte des trois autres leds.

En recopiant le principe de la prise en compte de la Led rouge ajouter la gestion des trois autres leds.

Définir les équivalences pour les boutons poussoirs, voilà le modèle pour BP1 :

// définitions d'équivalences

// pour la meilleure

// gestion du programme :

#define BP1 PINC.3

#define BP2 ?

#define BP3 ?

#define BP4 ?

#define APPUYE 0

#define REPOS 1

#define ALLUME 0

#define ETEINT 1

On peut ajouter un test et un affichage de l’état de l’interrupteur :

// Test BP numéro 1

lcd_gotoxy(0,0);

lcd_putsf("PORT PC");

ConverHexa(3);

lcd_putchar(LSB);

if (BP1==APPUYE)

lcd_putsf(" APPUI ");

else

lcd_putsf(" REPOS ");

Tester ce code puis faites de même pour les trois autres boutons poussoirs.

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 11

Ecriture en hexadécimale sur l’afficheur LCD

Pour écrire en hexadécimal sur l’afficheur cette procédure reçoit un octet data et renvoie les deux

caractères ASCII de l’hexadécimal correspondant dans les variables globales MSB et LSB. Ce code est

à recopier avant la procédure main.

unsigned char MSB ='0';

unsigned char LSB ='0';

ConverHexa(unsigned char data) // D'après D.L

{

LSB = data & 0x0F ;

if (LSB > 9) LSB = (LSB + 'A' - 10);

else LSB = (LSB + '0');

MSB = data & 0xF0 ;

MSB = (MSB >> 4) ;

if (MSB > 9) MSB = (MSB + 'A' - 10);

else MSB = (MSB + '0');

}

P.G Lycée Vaucanson

17 novembre 2014

STI2D SIN Debuter avec CodeVision.docx STI2D SIN Page 12

Indique un document ressource

Retour au sommaire

Retour à la page courante

D7

14

D6

13

D5

12

D4

11

D3

10

D2

9D

18

D0

7

E6

RW

5R

S4

VS

S1

VD

D2

VE

E3

LCD1

LM044L

PB0/ICP1/CLKO/PCINT014

PB1/OC1A/PCINT115

PB3/MOSI/OC2A/PCINT317

PB2/SS/OC1B/PCINT216

PD6/AIN0/OC0A/PCINT2212

PD5/T1/OC0B/PCINT2111

PD4/T0/XCK/PCINT206

PD3/INT1/OC2B/PCINT195

PD2/INT0/PCINT184

PD1/TXD/PCINT173

PD0/RXD/PCINT162

PB4/MISO/PCINT418

PB5/SCK/PCINT519

PB7/TOSC2/XTAL2/PCINT710

PB6/TOSC1/XTAL1/PCINT69

PC6/RESET/PCINT141

PC5/ADC5/SCL/PCINT1328

PC4/ADC4/SDA/PCINT1227

PC3/ADC3/PCINT1126

PC2/ADC2/PCINT1025

PC1/ADC1/PCINT924

PC0/ADC0/PCINT823

AVCC20

AREF21

PD7/AIN1/PCINT2313

ATMEGA88

BP1

Initiation au microcontrôleur

INIT_CodeVision.DSN

pour simuler en continu

D1LED-BLUE

D2LED-GREEN

D3LED-RED

D4LED-YELLOW

Mise en oeuvre de départ

BP2

BP3

BP4

top related