RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Srv: irc.moteurprog.com
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 prog. asm(str912 arm9)ou est l'erreur ??

Forum : ASSEMBLEUR
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ ASSEMBLEUR

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM ASSEMBLEUR

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
maczdecarpate
Nouveau membre
Inscrit : 03/08/2007
Messages : 1
Message
#140019
Posté le 03/08/07 à 23:56
Bonjour,

Je programme pour le moment un str912, je dois faire l'acquisition de 12 bits provenant d'un ADC chaque fois qu'une interruption apparait.

Je dois ensuite incrémenter des canaux 16 bits selon la valeur(12bits) que j'ai obtenu (4096 canaux vu que j'ai un adc 12 bits).

J'arrive à incrémenter les canaux correctement sauf quelques uns qui s'incrémente de 2 (parfois).

Habituellement ceux qui finisse par l'adresse 0x_ _ _ 0 mais ce n'est vrai que dans le cas ou l'adc (délivre des valeurs qui se suives (voir l'exemple en dessous)).

Si vous pouviez me dire quel est mon erreur ca me serait d'un grand secours (ca fait quelques temps que je cherche).

Voici la partie du programme:
**********************************************************************
LDR R7, =0x04002BB0 /*;Adresse pour traitement octet 1*/
LDR R11, =0x5800C3FC /*;Adresse des 4bits de poids fort Port4*/
LDRB R11, [R11] /* R11 = contenu de l'adresse 0x5800C3FC*/
STRB R11, [R7] /*;Place les 4bits de poids fort à l'adresse de traitement*/

LDR R7, =0x04002BB1 /*;Adresse de traitement octet 2 */
LDR R11, =0x5800A3FC /*;Adresse des 8bits de poids faibles P6*/
LDRB R11, [R11] /* R11 = Contenu de 0x5800A3FC */
STRB R11, [R7] /*;Place les 8bits de poids faibles à l'adresse de traitement*/
LDR R7, =0x04002BB0 /* R7 = 0x04002bb0 */
LDR R7, [R7] /* Places la valeur des 12 bits reçus dans le registres R7 (adresse 0x04002BB0*/

ADD R10,R7,R7 /* R10 = 2 * valeur 12 bits réceptionnée */
LDR R8, =0x04002BC0 /* Charge adresse du début de tableau contenant les 4096 canaux */
ADD R10,R8,R10 /* R10 = Valeur 12 bit(16 bits)*2 + Adresse début tableau => ad. canal */

LDRH R11, [R10] /* On pointe R11 sur l'adresse du canal*/

ADD R11, R11,#1 /* R11 = R11+1 ;La valeur du canal est incrémenté */
STRH R11, [R10] /* On place R11 dans le canal correspondant*/
*******************************************************************





Voici ce que j'obtient en mémoire :l' adc émettant une fois les nombres de 1 à 53:

0x0400BC0 0000 0001 0001 0001 0001 0001 0001 0001 [Canaux 0 à 7]
0x0400BD0 0002 0001 0001 0001 0001 0001 0001 0001 [Canaux 8 à 15]
0x0400BE0 0002 0001 0001 0001 0001 0001 0001 0001 [Canaux 16 à 23]
0x0400BF0 0001 0001 0001 0001 0001 0001 0001 0001 [Canaux 24 à 31]
0x0400C00 0002 0001 0001 0001 0001 0001 0001 0001 [Canaux 32 à 39]
0x0400C10 0001 0001 0001 0001 0001 0001 0001 0001 [Canaux 40 à 47]
0x0400C20 0002 0001 0001 0001 0001 0001 0001 0001 [Canaux 48 à 53]


Merci bcp pour votre aide...

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 


    PAGE : [1]



.: Site Web développé par Yann Pingot et l'équipe MPWG avec www.evolvia-web.com :.