Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
On parle des Pics, sans rapport avec le langage ou la programmation

Modérateur : Jérémy

microcontroleur PIC
hicp124
Membre
Membre
Messages : 2
Enregistré en : juillet 2016

#1 Message par hicp124 » lun. 25 juil. 2016 14:18

Bonjour,
je débute avec les microcontrôleurs et je dois répondre à ces questions:
Q1 : L’avantage d’un microprocesseur à architecture RISC par rapport à un autre à architecture CISC est que?
1) La programmation des microprocesseurs RISC est moins complexe que ceux en CISC.
2) La taille d’un programme pour un microprocesseur RISC est beaucoup plus réduite.
3) Le cycle d’instruction des microprocesseurs RISC est plus court.
4) Les microprocesseurs RISC sont les plus répandus.
j'ai choisi les réponses 1,3 et 4

Q2 : Un programmeur en MikroC souhaite calculer la valeur moyenne de lecture de 5 entrées analogiques. En supposant que le montage électronique est correct, quelle affirmation décrit correctement le code ?

Code : Tout sélectionner



int i
;
float avesum;
sum 0.0;
for ( 
i=1i<=5i++) {
sum sum ADC_Read(5);
}
ave float(sum)/5.0;
 


1)La portion de code contient une erreur et ne va pas se compiler
2) La portion de code se compile, mais le compteur de boucle i ne va pas fonctionner correctement
3) La portion de code se compile et le montage fonctionne, mais renvoie une valeur incorrecte parce que la plage de tension des entrées n’est pas incluse dans le calcul de ave.
4) Le montage fonctionne, mais produit une valeur incorrecte, car la variable sum ne peut pas s’ajouter elle-même.
5) La portion de code calcule correctement la moyenne.
j'ai choisi la réponse 5.
Mes réponses sont-elles correctes?
Merci d'avance!

microcontroleur PIC
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#2 Message par Jérémy » lun. 25 juil. 2016 19:11

Bonjour hicp124,

Tout d'abord Bienvenue sur FantasPic !

Pour ta question qui ressemble fort à un devoir, je te laisse chercher sur la toile, car je Risque( avec jeu de mots) de te dire des bêtises !.

Pour la seconde, j'ai tester ton code, avec MikroC pro et il ne compile pas , en m'indiquant des erreurs . je pense qu'il s'agit du format Float qui pose probléme .

Pour utiliser un ADC_Read, il faut avant le déclarer avec un ADC_Init(); sinon la fonction n'est pas reconnu; je dirais donc la 1

Mais je suis aussi un débutant et j'apprends. attends l'avis d'un expert pour être sûr !

Ca , ca compile , mais je n'ai pas testé en vrai.

Code : Tout sélectionner

int i,sum=0;
float ave;

ADC_Init();

void main() {

for ( i=1; i<=5; i++) {
      sum = sum + ADC_Read(5);
      delay_ms(5);
    }
ave = sum/5;
}
C'est en faisant des erreurs, que l'on apprend le mieux !!!

microcontroleur PIC
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#3 Message par Guest » lun. 25 juil. 2016 19:36

salut
Tu as la réponse pour la 2 sur ABCelectronique pour ma part elle sera la même donc..
pour la 1 je dirais la 1 et la 4
car RISC veut dire jeux d'instruction réduit donc décodage rapide ce qui augmente la vitesse de fonctionnement.

Pour tout problème en ASM a ton service et voir en C mais c'est pas ma tasse de thé

Bien sur plaisir de te lire

A+

microcontroleur PIC
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#4 Message par paulfjujo » lun. 25 juil. 2016 20:38

le 5 de ADC_read(5) c'est toujours la voie 5
ADC_Init(); n'est pas executé en dehors du main

Code : Tout sélectionner


int i
,sum=0;
float ave;

void main()
 {

ADC_Init();

for ( 
i=1i<5i++) {
      
sum sum ADC_Read(i);
      
delay_ms(5);
    }
ave =(float) sum/5.0;
while(
1);
}
 
Aide toi, le ciel ou FantasPic t'aidera

microcontroleur PIC
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » lun. 25 juil. 2016 20:47

Hummm ... à voir

J'ai mal interprété l’ennoncé peut-être.....

Je pensais que les 5 lectures analogiques étaient 5 fois sur la même ( la broche 5 donc) , sinon ca risque d'être coton pour faire une moyenne ?
L’énoncé est trés ambigüe
C'est en faisant des erreurs, que l'on apprend le mieux !!!

microcontroleur PIC
hicp124
Membre
Membre
Messages : 2
Enregistré en : juillet 2016

#6 Message par hicp124 » lun. 25 juil. 2016 23:05

Pour Q2, je vais choisir la 2 donc.
Merci à tous pour votre aide!

microcontroleur PIC
sylvain54
Avatar de l’utilisateur
Amateur
Amateur
Messages : 194
Âge : 51
Enregistré en : août 2015
Localisation : Dans l'est de la France

#7 Message par sylvain54 » mar. 26 juil. 2016 08:37

Salut,

Pour Q2, la bonne réponse est 2, car comme l'a dit Paul, ADC_Read(5) n'ira scruter que la voie 5 du port analogique. Dans l'exemple donnée la boucle for ne sert à rien puisque i n'est pas utilisé.
Pour Q1, je dirais bien que toutes les réponses sont justes car jeu d'instruction réduit => plus court => plus rapide => Moins complexe => on les préfère

++ Sylvain


Retourner vers « Généralités sur les PICs »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 33 invités