Futura Sciences
Image de la rubrique en cours

Forum FS Generation

Précédent   Vous êtes ici : Forum FS Generation » Futura Technique » Électronique

Découvrir d'autres sujets sur ces thèmes : , ,


Réponse
Vieux 09/09/2006, 12h17   Sujet Dac 16F877 Basic - Message #1
ledinblue
 
Date d'inscription: septembre 2006
Âge: 20
Messages: 12
Dac 16F877 Basic
Bonjour à tous,
Je suis débutant dans la programmation des pic et je me suis tourné vers le Basic. Mon premier montage est assez simple, afficher une tension sur un lcd. La partie afficheur fonctionne mais par contre la partie DAC elle ne fonctionne pas. Peux-etre un problème au niveau des registres?
Voici le code du PIC
Merci de votre aide
Code:
'**************************************************************** '* Name : UNTITLED.BAS * '* Author : [Ancion Frédéiric] * '* Notice : Copyright (c) 2006 [Xtremelaser] * '* : All Rights Reserved * '* Date : 05/09/2006 * '* Version : 1.0 * '* Notes : Controle de la consigne du laser méditec 3w+ feed back du courant sur afficheur lcd 4*20 * '* : * '**************************************************************** 'Voir page 21 pour interruot AD xtal = 20 DECLARE LCD_DTPIN PORTB.4 'Port des données data DECLARE LCD_ENPIN PORTB.3 'Pin de la broche En du lcd DECLARE LCD_RSPIN PORTB.2 'Pin de la broche RS du lcd DECLARE LCD_INTERFACE 4 'Interface 4Bits DECLARE LCD_LINES 2 'Nombres de lignes du lcd Pause 500 print $FE '**************************************************************** 'Config des Registres '**************************************************************** device = 16F877A 'adcon 0 = %10 ADIN_RES 10 ' Set the resolution to 10 ADIN_TAD FRC ' Choose the RC osc for ADC samples ADIN_STIME 100 ' Allow 100us for charge time Dim Raw as Word Dim Value as Word Dim Volts as Byte Dim Millivolts as Word Delayms 500 ' Wait for PICmicro to stabilise Cls ' Clear the LCD TRISA. = 1 ' Setup bit-0 of PortA as an input ADCON1 = %10000000 ' Set PORTA analog and right justify result Again: Raw = ADIN 0 ' Read the ADC Print at 2,1,"RAW= ",@Raw," " ' Display the RAW data Value = 489 *(Raw / 10) ' Quantasize the result Volts = Value / 10000 Millivolts = (Value // 10000) / 100 Print at 1,5,Dec1 Volts,".",Dec2 Millivolts,"V" ' Display the result pause 500 Goto Again ' Do
ledinblue est déconnecté   Réponse avec citation
Alt Aujourd'hui
Publicité

Beitrag Liens sponsorisés

   
Vieux 09/09/2006, 19h57   Sujet Dac 16F877 Basic - Message #2
freepicbasic
 
Date d'inscription: août 2006
Localisation: France
Âge: 52
Messages: 1 795
Re : Dac 16F877 Basic
effacer ça
'adcon 0 = %10

et mettre adcon0 = %01
qui met le convertisseur ON

Je ne suis pas sur que le ADIN le gère !
donc le mettre en clair


Millivolts = (Value // 10000) / 100
La double / c'est normal ?

Tu es sur qu'il reste quelque chose au bout de ta division, le type est "WORD" donc un entier !
Pour avoir un chiffre à virgule c'est des "float" qu'il faut.

un conseils ; evite les fonctions mathématiques très gourmandes en ressources prog et cycles machines.
freepicbasic est déconnecté   Réponse avec citation
Vieux 09/09/2006, 20h07   Sujet Dac 16F877 Basic - Message #3
ledinblue
 
Date d'inscription: septembre 2006
Âge: 20
Messages: 12
Re : Dac 16F877 Basic
Merci de ta réponse, que me conseilles tu à la place d'une fonction mathématique ? je vais tester ca demain avec les nouveau paramètres.
merci de ton aide
ledinblue est déconnecté   Réponse avec citation
Vieux 09/09/2006, 20h53   Sujet Dac 16F877 Basic - Message #4
freepicbasic
 
Date d'inscription: août 2006
Localisation: France
Âge: 52
Messages: 1 795
Re : Dac 16F877 Basic
Il est préférable d'utiliser les décalages qui correspondent au division et multiplication par 2 , et les soustractions additions.

Le fait de bien calibrer ses chiffres , je veux dire utiliser le type le plus petit possible.
Utiliser un float pour une variable qui varie entre 1 et 10 , c'est très mal adapté ...
bien sur, si c'est possible.
freepicbasic est déconnecté   Réponse avec citation
Vieux 10/09/2006, 21h43   Sujet Dac 16F877 Basic - Message #5
mister_e
 
Date d'inscription: août 2006
Localisation: Montréal, Canada
Âge: 35
Messages: 155
Re : Dac 16F877 Basic
en fait, les floats sont a peu pres inutile dans 90% des cas, et comme precedement mentionné, elles sont longues a executer et demande beaucoup d'espace code pour pas grands chose... en générale du moins.

Disons que 12345 représente 12.345 volts... pourquoi utiliser les float pour afficher? Tu afficher les 2 premiers chiffres, affiche le point et ensuite les trois derniers chiffres.

Avec PROTON, a ce que je me souviens....
Code:
Dim WordA As Word Dim WordB As Word WordA=12345 WordB=WordA/1000 Print Dec WordB, ".",DEC3 WordA," Volts"
mister_e est déconnecté   Réponse avec citation
Vieux 10/09/2006, 21h49   Sujet Dac 16F877 Basic - Message #6
mister_e
 
Date d'inscription: août 2006
Localisation: Montréal, Canada
Âge: 35
Messages: 155
Re : Dac 16F877 Basic
PicBasic Pro
Code:
WordA var word Worda=12345 lcdout dec worda dig 0,dec worda dig 1,".",dec3 worda," Volt"
Il se peut que PROTON suporte aussi la fonction DIG dans PRINT... pas certain.
__________________
Steve
mister_e est déconnecté   Réponse avec citation
Bienvenue
Si ceci est votre première visite, vous devez vous inscrire avant de pouvoir envoyer des messages. En étant inscrit vous pourrez poster votre question, participer aux débats, joindre vos images... alors n'attendez-plus, cela vous prendra 1 minute !

Pour commencer à lire les messages, depuis la page d'accueil des forums, sélectionnez le forum qui vous tente et partez ensuite à sa découverte...

Publicité

A voir aussi
DAC et connecteur VGA (Forum Électronique)
Pic 16f877 Pic basic pro conseil (Forum Électronique)
emetteur/recepteur avec adc/dac (Forum Électronique)
DAC 16 bits := DAC715P (Forum Électronique)
calcul AOP et DAC ? (Forum Électronique)






A voir aussi (Futura Sciences n'est pas responsable du contenu de ces publicités)
Réponse



Outils
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Navigation rapide


Les dernières actualités
05/07 17:28 - En bref : Galileo réussit ses premiers essais
04/07 14:09 - La Lodamine : un anticancéreux porté par des nanoparticules
04/07 11:33 - Structure de l'héliosphère : Stereo donne raison aux sondes Voyager
04/07 09:28 - Les marées en direct sur Géoportail
03/07 15:38 - Les boîtes quantiques sont-elles dangereuses pour la santé ?
03/07 14:55 - Les résultats du BAC 2008 gratuitement sur Internet
03/07 13:33 - Métastases du cancer du sein : un mécanisme élucidé

Fuseau horaire GMT +2. Il est actuellement 23h57.

Propulsé par vBulletin
Copyright © 2000 - 2008, Jelsoft Enterprises Ltd. Tous droits réservés.
Traduction par l'association vBulletin francophone