Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : programmation d'un timer avec un microprocesseur ADuC812 en C [ Archives / Au secours ] (sissi2005)

mercredi 16 mars 2005 à 09:15:22 | programmation d'un timer avec un microprocesseur ADuC812 en C

sissi2005

bonjour,

je dois realiser une rampe de tension allant de 0 a 5V en utilisant le DAC 12 bits du microprocesseur ADuC812. il possede 3 registres : un avec les 8 bits de point fort, un avec les 8 bits de point faible ou est stockee la valeur numerique qui sera convertie et le dernier le registre de controle pour le DAC. Pour le timer  il y en a 2 : le registre de commande et le registre de donnee.

Je suis loin de maitriser le C et on m'impose de l'utiliser. Je ne sais pas comment realiser ce programme en C gerant le timer?  j'ai bien regarde les programme deja propose mais je n'y ai rien compris!  Cette rampe doit mettre 40s pour passer de 0 a 5V. Il y a donc $1000 valeurs (4096 valeurs) à répartir sur 40 s, soit un changement tous les 9.76 ms. Quelau'un peut m'aider?

merci d'avance 

Sylvie 
 

jeudi 17 mars 2005 à 11:51:31 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

cleter

heu la, c'est tres spécifique, et les timer que tu doi utilisé son ceux de ton proc, et non pas ceux de windows ou linux!!

je connai pas ce proc la, mais je suppose qu'il n'y a pas d'os qui tourne dessus.

Pour programmé ton timer, tu doi deja te munir de la doc de ton proc, regardé comment lancer les timers (quel son les registre a modifer etc...). Et en suite, dans ton programme en C tu modifie les registre qui von bien pr lancé, arreter ton timer.

Je ne connai pas ce proc, et ca fai longtps que j'ai pas fai du si bas niveau (jai la mémoir qui flanche) mai je pense que c'est la démarche a suivre. Si tu arrive a le faire en assembleur, c pas plus dur en C.

jeudi 17 mars 2005 à 16:39:45 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

sissi2005

bonjour,

En gros le timer a deux registres de 8 bits:
TMOD et TCON qui controlent les timers 0 et 1 du uP.
TCON:
bit7 :TF1 qui est un flag qui signal un depassement de la valeur pour le timer 1
bit6 :TR1 qui permet d'eteindre ou de lancer le timer 1
bit5,bit4 : c'est les meme qu'au dessus mais pour le timer 0
bit3 : IE1 interruption externe sur la pin INT1 (pour moi ca ne sert a rien je pense)
bit2 : IT1 interruption externe mais je n'ai pas bien compris ce qu'elle faisait.
c'est dit : external interrupt Trigger type
set or cleared by software to specify edge-sensitive detection. tu comprends ce que ca fait??
TMOD est constitue
bit1,bit0 : c'est les meme qu'au dessus mais pour le timer 0

pour TMOD :
bit7 : gate Si c'est a 0 on ne declenche le compteur que lorsqu'il  a une interruption sur INT1 donc detecte par le bit 3 de TCON1 et que TR1=1 (donc que le timer est lance)
si c'est a 1 le timer se met en route des que TR1=1 (donc je le mettrai a 1)
bit6 : C/T permet de choisir si on veut utiliser le timer (0) ou le compteur (1) (donc je met 0)

bit5 et 4 : la ca se complique un peu. Il gere les registres TH1 et TL1 ou sont stockees les donnees du timer.
si bit5=bit4=0 alors on a  8 bits pour le timer et 5 bits appele prescaler qui doit surement donner une valeur approchee.
si bit5=0 bit4=1 alors on a 16 bit de donnee pour le timer
si bit5=1 bit4=0 alors on a 8 bit qui se recharge automatiquement. on charge dans TH1 une valeur qui est automatiquement recharge dans TL1 quand il y a un debordement
bit5=bit4=1 alors on arrete le timer.

Je pense qu'il faut choisir  bit5=0 et bit4=1 mais je n'en sais rien.

bit3, bit2, bit1, bit 0 on a la meme chose pour le timer0
D'apres mois il faut mettre 0001XXXX pour TMOD et 01000000 pour TCON

donc d'apres toi je cree une procedure qui met la valeur que je souhaite dans les registres TH1 et TL1 apres je valide le bit6 :TR1 du registre TCON qui lance le timer et j'attends le depassement en scutant le bit7 :TF1 du registre TCON. lorsqu'il est passe a 1 ,j'arrete le timer et je remet a 0 le TF1 et je sors de la procedure. t'es d'accord?

j'ai une autre question toute simple pour toi. pour declarer une variable 8 bits en C on met Byte et pour 16 bits c'est quoi ? int?

merci de m'avoir guider je compte encore su toi!!!

Sylvie

jeudi 17 mars 2005 à 19:23:10 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

cleter

Heu bah ca ressemble bcp au 8051 ca :D

Heu, pr ton 16bits je dirai surtou pa int (car la taille du int depen des compilateur) mais plutot WORD (si ca existe) sinon, je tavou ke j'en c rien, mais ton proc, c'est un proc 16bits?

Par contre pour savoir quand ton timer a fini, je serai toi j'utiliserai les interruptions
c'est plus propre, et plus simple (kan on a compri commen ca fonctionne) mais je sais pas si tu les a vu.

c pour un projet d'ecole?



vendredi 18 mars 2005 à 12:01:33 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

sissi2005

bonjour,

Oui c'est un projet d'ecole. Ce projet me permettra en autre de valider mon diplome. Pour ma part, je fais plutot de l'electronique et la programmation je n'en ai pas fait bcp et encore moi en C donc c'est pas facile.

J'ai vu les interruptions mais il y a longtemps. Je sais qu'il faut valider les interruptions generales a l'aide d'un registre et apres l'interruption liee au timer. Il me semble aussi qu'il faut indiquer l'adresse du vecteur d'interruption dans certain cas et sauver toous les registres avant de renter dans l'interruption. C'est ca?
je ne sais pas si c'est vraiment utile d'utiliser les interruptions car dans mon cas, tant que je n'ai pas atteins le temps voullu je ne peux rien faire. donc une scrutation suffit tu ne crois pas?

Mon proc est un proc 8 bits mais je me demandais s'il n'etait pas possible de declarer une variable sur 16 bits et de la mettre par exemple dans une autre variable 16bits correspondant a TH1+TL1 (tous deux sur 8bits), etant donnee les adresses de ces deux registres se suivent. Comme ca au lieu d'adresser en deux fois je le fait une fois et automatiquement les deux registres sont configues. Je ne peux pas?


vendredi 18 mars 2005 à 16:10:05 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

cleter

slt,
bein, moi aussi je sui plutot electronique, et la programmation, on y echappe pas (surtout si on est branché info-indus).
Et pour ce qui est des interruptions, oui il me semble que tu as raison. Mais meme si tu ne peux rien faire, c'est quand meme plus propre. Et puis si a un moment donné tu te décides d'afficher des infos sur un ptit afficheur, ou autres chose ds le genre, tu verras qu'avec les interruptions ca genera pas. Alors qu'avec les scrutations ca va etre plus tendu pour faire des modifs.
En plus, si tu es noté sur ce projet, les prof appréciront bcp si tu utilises les interruption (enfin je pense, du moin c'est le cas ds mon ecole). maintenant c'est toi qui voi, mais si tu la deja vu, je pense pas que ca soit bcp plus dur pour toi de les utiliser, surtout que tu a l'air d'avoir compris le fonctionnement. Et si tu veux un peu plus d'aide sur ce point la, je veux bien faire un effort. (histoire de voir si je suis encore capable de le faire ).
Pour ce qui est de ta variable 16bits, je tique un peu, perso je prendrai pas le risque, car a la compilation, je sais pas trop comment il va te pondre ca. Peu etre que ca marche, mais je prendrai pas le risque, en plus tu modifira pas les 2 registre (TH1 et TL1) en mm tps, donc autant les modifier indépendement. Mais bon pour ca, c'est a toi de tester. Et tient moi au courant, j'aimerai bien savoir ce que ca donne.

Et puis, juste par curiosité, c'est quoi le but du projet? et c'est quoi le diplome que tu prépare?

vendredi 18 mars 2005 à 16:38:38 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

sissi2005

salut,

je suis en ecole d'ingenieur. Je prepare un diplome de physique appliquee et instrumentation. Donc il y a un peu de programmation (vraiment un tout petit peu), beaucoup de physique theorique, pas mal d'electronique, de capteur mais aussi tout ce qui est programmation Labview.

Je suis daccord avec toi sur les interruptions mais comment je stoppe mon prog pendant le temps que mon timer tout. Il y a moyen en C de faire ca?
Pour les profs je ne suis pas sur qu'il y verra quelque chose. Il y connait rien en programmation. Il me suit surtout sur labview. C'est mon tuteur de stage peut etre qui apprecira et encore. Si j'ai un pbs avec le timer je te demenderai sans soucis.

En fait pour la variable 16 bits, c'etait un de mes prof qui nous avait dis ca mais je n'ai jamais essaye.

Pour mon projet je dois tester un cable qui peut mesurer jusqu'a 800m de long. Il y a deux coax et deux paires torsade. Pour les paires torsade je dois tester sur l'une le conductivite et sur l'autre ellle me servira de bus de dialogue entre mon uP et de l'autre cote Labview. Pour les coax, sur l'un je dois generer une tension 0 a -1250V et sur l'autre un courant de qq fA soit pas bcp.

voila en gros.
A+

vendredi 18 mars 2005 à 17:20:34 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

cleter

Heu bein ca me parle pas des masse ton projet! lol, mais bon, si ca sert a quelque chose tant mieu.
Et heu, pour les interruptions,
quand tu autorise les interruptions, ton programme principal doit contenir une boucle infini qui fait ce quel a besoin, et quan une interruption intervien, ca va voir dans le vecteur d'interruption quel est la fonction a appler, et hop ca lance cette fonction (elle doit etre la plus courte possible, enfin c'est préférable) pdt que cette fonction est en route, ton programme principal est arreté. Il reprendra la ou il s'est arrété des que la fonction d'interruption ce sera fini.
En général on essaye de faire ces fonctions d'interruption en assembleur afin que ce soit vraiment le plus cour possible). mais dans ton cas, tu devra surtout vérifier que le tps d'execution de ta fonction soi plus courte que celui de ton timer.



mercredi 6 avril 2005 à 16:34:06 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C

sissi2005

Réponse acceptée !
salut,

j'ai essaye l'affectation des deux registres en un ca ne marche pas. Sinon je m'en suis sortie avec mon timer. ca marche.
A+

jeudi 7 avril 2005 à 18:50:13 | Re : programmation d'un timer avec un microprocesseur ADuC812 en C


Cette discussion est classé dans : timer, registre, bits, microprocesseur, aduc812


Répondre à ce message

Sujets en rapport avec ce message

comment écrire dans la base registre ??? [ par wres ] salut,je voulais juste savoir comment faire pour créer une clé dans la base de registre de windows!merci d'avance !wres comment créer une chaîne dans une clé dans la base registre ? [ par wres ] salut,je voulais savoir comment créer une chaîne, une valeur binaire ou un DWORD dans une clé de la base de registre ?car j'arrive à créer une clé mai AIDEZ MOI !!!!!! [ par mathieu ] salut,je viens de monter un pc :carte mère : MSI K7T 266 PROcarte graphique : Geforce 2 GTS winfast (LeadTek)256 mo de ram DDRet je rencontre un probl Registre ou API windows [ par Will ] Je souhaite recuperer les infos d'un pc (c a d la carte reseau, la carte son, le type de clavier etc...).Que dois-je utiliser, la base de registe wind base de registre [ par ciberfred ] C quoi les fonctions pour creer/ecrire/supprimerqqch dans la base de registre.genre je veus que dans la base de registre au 1erlancement de mon apli j Comment savoir le temps que prend un instruction? [ par Samoul ] Je voudrait savoir comment calculer a l'aide d'un chronomètre ou de nimporte quel autres manière le temps qye peut prendre un instruction.Ex:Timer sta Lire dans la base de registre en C++ [ par chris ] BonjourJe recherche un petit programme C++ qui me permette de lire dans la base de registre.Merci pour votre aide. ecriture de champ de bits dans un fichier [ par obasileus ] Salut, est-ce que quelqu'un sait comment ecrire un champ de bits (9 bits) dans un fichier ?merci d'avance@+obasileus base de registre [ par skysee ] bonjour,je voulais savoir si qqun avait une liste de clé de la base de registre ou un site ou il 'yen a beaucoup de répertoriées.merci Utilisation de Timer [ par nunette ] Je fais clignoter un bouton sur l'appel de SetTimer, mon problème: impossible de le killer pourtant je passe bien le même id à KillTimer que celui pas


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,296 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.