Page 1 of 1

besoin d'aide programmation C atmega16

Posted: Wed 11 Mar, 2009 3:41 pm
by dj_richu
Hello,

a tous ceux ayant des notions de C et surtout qui connaissent l'uc atmega16 de chez atmel, j ai besoin de votre aide a tout prix!!

je dois réaliser la chose suivante:

1 capteur de temperature (schematisé par une tension variable), qui sera branché sur le port ADC0 du microcontroleur.

Port B: 8 led qui s allumeront progressivement en fonction de la température (en fonction de la tension en ADC0).

J ai absolument besoin d aide au plus vite... c est pour un projet noté...
Merci à tous ceux qui pourront m aider! :D

Posted: Wed 11 Mar, 2009 5:27 pm
by shrad
pas eu l'occasion de te le dire sur msn ^^

http://microcontrollershop.com/product_ ... cts_id=185

pour le compilateur C (surement livre avec les librairies)

et

http://microcontrollershop.com/product_ ... cts_id=352

pour le compilateur basic, surement avec les librairies aussi

et il doit y avoir plein de tutos

ces compilateurs sont limites a 4Ko de code apres expiration de la demo ce qui reste largement suffisant

basiquement, il suffit de regler les parametres du convertisseur A/D (reference de tension interne, etc..) en debut de programme (ainsi que parametrer l'horloge ou autres si necessaire), puis de faire une boucle infinie qui lache la valeur mesuree sur le portB

Code: Select all


while(1)
{
    PortB = ADC0value;
}

avec peut etre besoin d'une fonction genre "waitforADC()" avant de sortir la valeur

ca va sans dire que c'est le principe et que je ne connais pas les arcanes des atmel, mais ca devrait etre valable :)

Posted: Wed 11 Mar, 2009 5:30 pm
by biduleohm
je pense à une boucle qui prend la valeur de la T° avec 8 conditions qui allument chacune une led de plus :roll:

Par ex:

Code: Select all

while(1)
{

   prend la valeur sur le port a;

   if(10 < T && T < 15)
   {
       envoi telle valeur sur le port b
   }

   if(.....)
   {
       .....
   }

   ......

}

edit: grilled :lol:

Posted: Wed 11 Mar, 2009 5:40 pm
by shrad
si on a un LM35 par exemple qui donne 10mV par °C et que dans sa datasheet il a disons 0mV pour 0°C, il suffit de soustraire ton minimum a la valeur mesuree, pour que la valeur binaire minimum du portB soit de 00000000

apres, choisir un coefficient multiplicateur pour que ta valeur max soit a 255, c-a-d 11111111 sur le portB